1.1 --- a/epoc32/include/pkcs10attr.h Wed Mar 31 12:27:01 2010 +0100
1.2 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000
1.3 @@ -1,234 +0,0 @@
1.4 -/*
1.5 -* Copyright (c) 2002-2009 Nokia Corporation and/or its subsidiary(-ies).
1.6 -* All rights reserved.
1.7 -* This component and the accompanying materials are made available
1.8 -* under the terms of the License "Eclipse Public License v1.0"
1.9 -* which accompanies this distribution, and is available
1.10 -* at the URL "http://www.eclipse.org/legal/epl-v10.html".
1.11 -*
1.12 -* Initial Contributors:
1.13 -* Nokia Corporation - initial contribution.
1.14 -*
1.15 -* Contributors:
1.16 -*
1.17 -* Description:
1.18 -* PKCS#10 Certificate Request Attributes class.
1.19 -*
1.20 -*/
1.21 -
1.22 -
1.23 -
1.24 -
1.25 -/**
1.26 - @file
1.27 - @publishedPartner
1.28 - @released
1.29 -*/
1.30 -
1.31 -#if !defined (__PKCS10ATTR_H__)
1.32 -#define __PKCS10ATTR_H__
1.33 -
1.34 -class CASN1EncBase;
1.35 -class CASN1EncSequence;
1.36 -
1.37 -//
1.38 -// Class capturing common functionality of a PKCS attribute.
1.39 -//
1.40 -class CPKCSAttributeBase : public CBase
1.41 - {
1.42 -public:
1.43 -
1.44 - /** Get the ASN.1 encoding of the attribute and relinquish ownership of it,
1.45 - leaving it on the cleanup stack. This is called by CPKCS10Attribtues
1.46 - when AddAttribute() is called.
1.47 - @panic E32USER-CBase 66 if a stack frame for the next PushL() cannot be allocated.
1.48 - @return ASN.1 encoding object
1.49 - */
1.50 - virtual CASN1EncBase* GetEncodingLC() = 0;
1.51 -
1.52 - virtual ~CPKCSAttributeBase();
1.53 -
1.54 -protected:
1.55 - /** @internalComponent */
1.56 - CPKCSAttributeBase();
1.57 - CASN1EncSequence* iRoot;
1.58 - CASN1EncSet* iValueSet;
1.59 - };
1.60 -
1.61 -/** Class representing a generic certificate attribute. Attributes have an
1.62 - object identifier and one or more values.
1.63 -*/
1.64 -class CPKCS10Attribute : public CPKCSAttributeBase
1.65 - {
1.66 -public:
1.67 -
1.68 - /** Create an attribute with a specified OID and no values, leaving it on
1.69 - the cleanup stack.
1.70 - NOTE: This method is deprecated. Use the other forms of NewLC instead.
1.71 - @param aAttrOID The specified OID in the form a.b.c. etc.
1.72 - @return New PKCS10 attribute object on the cleanup stack
1.73 - @deprecated
1.74 - */
1.75 - IMPORT_C static CPKCS10Attribute* NewLC(const TDesC& aAttrOID);
1.76 -
1.77 - /** Create an attribute with a specified OID and one value, leaving it on
1.78 - the cleanup stack. The value forms part of a set. Additional values can
1.79 - be added by calling the AddValueL method.
1.80 - @param aAttrOID The specified OID in the form a.b.c. etc.
1.81 - @param aASN1 ASN1 encoding object for attribute value
1.82 - -- this method takes ownership.
1.83 - @return New PKCS10 attribute object on the cleanup stack
1.84 - */
1.85 - IMPORT_C static CPKCS10Attribute* NewLC(const TDesC& aAttrOID, CASN1EncBase* aASN1);
1.86 -
1.87 - /** Create an attribute with a specified OID and one value. The value forms
1.88 - part of a set. Additional values can be added by calling the AddValueL method.
1.89 - @param aAttrOID The specified OID in the form a.b.c. etc.
1.90 - @param aASN1 ASN1 encoding object for attribute value
1.91 - -- this method takes ownership.
1.92 - @return New PKCS10 attribute object
1.93 - */
1.94 - IMPORT_C static CPKCS10Attribute* NewL(const TDesC& aAttrOID, CASN1EncBase* aASN1);
1.95 -
1.96 - /** Add a value to the attribute.
1.97 - @param aASN1 ASN1 encoding object for attribute value
1.98 - -- this method takes ownership.
1.99 - */
1.100 - IMPORT_C void AddValueL(CASN1EncBase* aASN1);
1.101 -
1.102 - /** ResetL method to allow for re-use of the generic attribute object.
1.103 - Additional values can be added by calling the AddValueL method.
1.104 - @param aAttrOID The specified OID in the form a.b.c. etc.
1.105 - @param aASN1 ASN1 encoding object for attribute value
1.106 - -- this method takes ownership.
1.107 - */
1.108 - IMPORT_C void ResetL(const TDesC& aAttrOID, CASN1EncBase* aASN1);
1.109 -
1.110 - virtual ~CPKCS10Attribute();
1.111 -
1.112 - /**
1.113 - * @internalComponent
1.114 - *
1.115 - * Get the ASN1 encoding of the attribute and relinquish ownership of it,
1.116 - leaving it on the cleanup stack. This is called by CPKCS10Attribtues
1.117 - when AddAttribute() is called. This method may leave with E32USER-CBase:66
1.118 - if a stack frame for the next PushL() cannot be allocated.
1.119 - NOTE: This method is deprecated. Use GetEncodingLC() instead.
1.120 - @deprecated
1.121 - */
1.122 - CASN1EncBase* TakeEncodingC();
1.123 -
1.124 - /**
1.125 - * @internalComponent
1.126 - *
1.127 - * Get the ASN1 encoding of the attribute and relinquish ownership of it,
1.128 - leaving it on the cleanup stack. This is called by CPKCS10Attribtues
1.129 - when AddAttribute() is called. This method may leave with E32USER-CBase:66
1.130 - if a stack frame for the next PushL() cannot be allocated.
1.131 - NOTE: This method is deprecated. Use GetEncodingLC() instead.
1.132 - @deprecated
1.133 - */
1.134 - CASN1EncBase* TakeEncodingLC();
1.135 -
1.136 - /** Calls the base class implementation for getting the ASN1 encoding of the attribute.
1.137 - Note that this method cannot be reused unless ResetL() has been called.
1.138 - @panic E32USER-CBase 66 if a stack frame for the next PushL() cannot be allocated.
1.139 - @return ASN.1 encoding object
1.140 - */
1.141 - virtual CASN1EncBase* GetEncodingLC();
1.142 -
1.143 -private:
1.144 - // Default constructor.
1.145 - CPKCS10Attribute();
1.146 -
1.147 - // Second phase construction function.
1.148 - void ConstructL(const TDesC& aAttrOID, CASN1EncBase* aASN1);
1.149 - };
1.150 -
1.151 -/** Class for encoding a collection of certificate attributes and passing them
1.152 - to the CPKCS10Request class. Some possible attributes are described in
1.153 - PKCS#9.
1.154 -
1.155 - @publishedPartner
1.156 - @released
1.157 -*/
1.158 -class CPKCS10Attributes : public CBase
1.159 - {
1.160 -public:
1.161 - /** Creates an instance of the class.
1.162 - @return New attributes object on the cleanup stack.
1.163 - */
1.164 - IMPORT_C static CPKCS10Attributes* NewLC();
1.165 -
1.166 - /** Creates an instance of the class.
1.167 - @return New attributes object.
1.168 - */
1.169 - IMPORT_C static CPKCS10Attributes* NewL();
1.170 -
1.171 - /** Adds a new attribute for the certificate request.
1.172 - @param aAttr The attribute to add - this method takes ownership.
1.173 - @deprecated
1.174 - */
1.175 - IMPORT_C void AddAttributeL(CPKCS10Attribute* aAttr);
1.176 -
1.177 - /** Adds a new attribute for the certificate request.
1.178 - @param aAttr The attribute to add - this method takes ownership.
1.179 - */
1.180 - IMPORT_C void AddPKCSAttributeL(CPKCSAttributeBase* aAttr);
1.181 -
1.182 - IMPORT_C ~CPKCS10Attributes(); // virtual from base
1.183 -
1.184 - /**
1.185 - * @internalComponent
1.186 - *
1.187 - * Get the ASN1 encoding of the attributes and relinquish ownership of it,
1.188 - leaving it on the cleanup stack. This is called by CPKCS10Request when
1.189 - SetAttributes() is called. This method may leave with E32USER-CBase:66
1.190 - if a stack frame for the next PushL() cannot be allocated.
1.191 - @deprecated
1.192 - */
1.193 - CASN1EncBase* TakeEncodingC();
1.194 -
1.195 - /**
1.196 - * @internalComponent
1.197 - *
1.198 - * Get the ASN.1 encoding of the attribute and relinquish ownership of it,
1.199 - leaving it on the cleanup stack. This is called by CPKCS10Request when
1.200 - SetAttributes() is called.
1.201 - @panic E32USER-CBase 66 if a stack frame for the next PushL() cannot be allocated.
1.202 - @return ASN.1 encoding object
1.203 - */
1.204 - CASN1EncBase* TakeEncodingLC();
1.205 -
1.206 -private:
1.207 - /** Default constructor.
1.208 - */
1.209 - CPKCS10Attributes();
1.210 -
1.211 - /** Second phase construction function.
1.212 - @note The structure of the attribute node is as follows:
1.213 - @code
1.214 - SET
1.215 - SEQUENCE
1.216 - OID of attribute
1.217 - SET values
1.218 - ...
1.219 - @endcode
1.220 - */
1.221 - void ConstructL();
1.222 -
1.223 -private:
1.224 - /** Pointer to sequence of user-supplied certificate attributes.
1.225 - #AddAttributeL method is used to create and fill this member.
1.226 - If it is initialized by the time #CalculateEncodingL method
1.227 - is called, the latter uses attributes from this member variable
1.228 - for the request, otherwise no attributes are inserted into
1.229 - the request.
1.230 -
1.231 - See #AddAttributeL for the explanation of ASN.1 encoding of
1.232 - attributes.
1.233 - */
1.234 - CASN1EncSequence* iRoot;
1.235 - };
1.236 -
1.237 -#endif // __PKCS10ATTR_H__