| 
    Crypto++ 8.9
    
   Free C++ class library of cryptographic schemes 
   | 
 
Classes and functions for working with ANS.1 objects. More...
Go to the source code of this file.
Classes | |
| class | UnknownOID | 
| Exception thrown when an unknown object identifier is encountered.  More... | |
| class | OID | 
| Object Identifier.  More... | |
| class | EncodedObjectFilter | 
| ASN.1 encoded object filter.  More... | |
| class | BERGeneralDecoder | 
| BER General Decoder.  More... | |
| class | DERGeneralEncoder | 
| DER General Encoder.  More... | |
| class | BERSequenceDecoder | 
| BER Sequence Decoder.  More... | |
| class | DERSequenceEncoder | 
| DER Sequence Encoder.  More... | |
| class | BERSetDecoder | 
| BER Set Decoder.  More... | |
| class | DERSetEncoder | 
| DER Set Encoder.  More... | |
| class | ASNOptional< T > | 
| Optional data encoder and decoder.  More... | |
| class | ASN1CryptoMaterial< BASE > | 
| Encode and decode ASN.1 objects with additional information.  More... | |
| class | X509PublicKey | 
| Encodes and decodes subjectPublicKeyInfo.  More... | |
| class | PKCS8PrivateKey | 
| Encodes and Decodes privateKeyInfo.  More... | |
Enumerations | |
| enum | ASNTag {  BOOLEAN = 0x01 , INTEGER = 0x02 , BIT_STRING = 0x03 , OCTET_STRING = 0x04 , TAG_NULL = 0x05 , OBJECT_IDENTIFIER = 0x06 , OBJECT_DESCRIPTOR = 0x07 , EXTERNAL = 0x08 , REAL = 0x09 , ENUMERATED = 0x0a , UTF8_STRING = 0x0c , SEQUENCE = 0x10 , SET = 0x11 , NUMERIC_STRING = 0x12 , PRINTABLE_STRING = 0x13 , T61_STRING = 0x14 , VIDEOTEXT_STRING = 0x15 , IA5_STRING = 0x16 , UTC_TIME = 0x17 , GENERALIZED_TIME = 0x18 , GRAPHIC_STRING = 0x19 , VISIBLE_STRING = 0x1a , GENERAL_STRING = 0x1b , UNIVERSAL_STRING = 0x1c , BMP_STRING = 0x1e }  | 
| ASN.1 types.  More... | |
| enum | ASNIdFlag {  UNIVERSAL = 0x00 , PRIMITIVE = 0x00 , CONSTRUCTED = 0x20 , APPLICATION = 0x40 , CONTEXT_SPECIFIC = 0x80 , PRIVATE = 0xc0 }  | 
| ASN.1 flags.  More... | |
Functions | |
| void | BERDecodeError () | 
| Raises a BERDecodeErr.   | |
| CRYPTOPP_DLL size_t | DERLengthEncode (BufferedTransformation &bt, lword length) | 
| DER encode a length.   | |
| CRYPTOPP_DLL bool | BERLengthDecode (BufferedTransformation &bt, size_t &length) | 
| BER decode a length.   | |
| CRYPTOPP_DLL void | DEREncodeNull (BufferedTransformation &bt) | 
| DER encode NULL.   | |
| CRYPTOPP_DLL void | BERDecodeNull (BufferedTransformation &bt) | 
| BER decode NULL.   | |
| CRYPTOPP_DLL size_t | DEREncodeOctetString (BufferedTransformation &bt, const byte *str, size_t strLen) | 
| DER encode octet string.   | |
| CRYPTOPP_DLL size_t | DEREncodeOctetString (BufferedTransformation &bt, const SecByteBlock &str) | 
| DER encode octet string.   | |
| CRYPTOPP_DLL size_t | BERDecodeOctetString (BufferedTransformation &bt, SecByteBlock &str) | 
| BER decode octet string.   | |
| CRYPTOPP_DLL size_t | BERDecodeOctetString (BufferedTransformation &bt, BufferedTransformation &str) | 
| BER decode octet string.   | |
| CRYPTOPP_DLL size_t | DEREncodeTextString (BufferedTransformation &bt, const byte *str, size_t strLen, byte asnTag) | 
| DER encode text string.   | |
| CRYPTOPP_DLL size_t | DEREncodeTextString (BufferedTransformation &bt, const SecByteBlock &str, byte asnTag) | 
| DER encode text string.   | |
| CRYPTOPP_DLL size_t | DEREncodeTextString (BufferedTransformation &bt, const std::string &str, byte asnTag) | 
| DER encode text string.   | |
| CRYPTOPP_DLL size_t | BERDecodeTextString (BufferedTransformation &bt, SecByteBlock &str, byte asnTag) | 
| BER decode text string.   | |
| CRYPTOPP_DLL size_t | BERDecodeTextString (BufferedTransformation &bt, std::string &str, byte asnTag) | 
| BER decode text string.   | |
| CRYPTOPP_DLL size_t | DEREncodeDate (BufferedTransformation &bt, const SecByteBlock &str, byte asnTag) | 
| DER encode date.   | |
| CRYPTOPP_DLL size_t | BERDecodeDate (BufferedTransformation &bt, SecByteBlock &str, byte asnTag) | 
| BER decode date.   | |
| CRYPTOPP_DLL size_t | DEREncodeBitString (BufferedTransformation &bt, const byte *str, size_t strLen, unsigned int unusedBits=0) | 
| DER encode bit string.   | |
| CRYPTOPP_DLL size_t | BERDecodeBitString (BufferedTransformation &bt, SecByteBlock &str, unsigned int &unusedBits) | 
| DER decode bit string.   | |
| CRYPTOPP_DLL void | DERReencode (BufferedTransformation &bt, BufferedTransformation &dest) | 
| BER decode and DER re-encode.   | |
| CRYPTOPP_DLL size_t | BERDecodePeekLength (const BufferedTransformation &bt) | 
| BER decode size.   | |
| template<class T > | |
| size_t | DEREncodeUnsigned (BufferedTransformation &out, T w, byte asnTag=INTEGER) | 
| DER Encode unsigned value.   | |
| template<class T > | |
| void | BERDecodeUnsigned (BufferedTransformation &in, T &w, byte asnTag=INTEGER, T minValue=0, T maxValue=T(0xffffffff)) | 
| BER Decode unsigned value.   | |
| bool | operator== (const OID &lhs, const OID &rhs) | 
| Compare two OIDs for equality.   | |
| bool | operator!= (const OID &lhs, const OID &rhs) | 
| Compare two OIDs for inequality.   | |
| bool | operator< (const OID &lhs, const OID &rhs) | 
| Compare two OIDs for ordering.   | |
| bool | operator<= (const OID &lhs, const OID &rhs) | 
| Compare two OIDs for ordering.   | |
| bool | operator>= (const OID &lhs, const OID &rhs) | 
| Compare two OIDs for ordering.   | |
| OID | operator+ (const OID &lhs, unsigned long rhs) | 
| Append a value to an OID.   | |
| std::ostream & | operator<< (std::ostream &out, const OID &oid) | 
| Print a OID value.   | |
Classes and functions for working with ANS.1 objects.
Definition in file asn.h.
| enum ASNTag | 
ASN.1 types.
| Enumerator | |
|---|---|
| BOOLEAN | ASN.1 Boolean.  | 
| INTEGER | ASN.1 Integer.  | 
| BIT_STRING | ASN.1 Bit string.  | 
| OCTET_STRING | ASN.1 Octet string.  | 
| TAG_NULL | ASN.1 Null.  | 
| OBJECT_IDENTIFIER | ASN.1 Object identifier.  | 
| OBJECT_DESCRIPTOR | ASN.1 Object descriptor.  | 
| EXTERNAL | ASN.1 External reference.  | 
| REAL | ASN.1 Real integer.  | 
| ENUMERATED | ASN.1 Enumerated value.  | 
| UTF8_STRING | ASN.1 UTF-8 string.  | 
| SEQUENCE | ASN.1 Sequence.  | 
| SET | ASN.1 Set.  | 
| NUMERIC_STRING | ASN.1 Numeric string.  | 
| PRINTABLE_STRING | ASN.1 Printable string.  | 
| T61_STRING | ASN.1 T61 string.  | 
| VIDEOTEXT_STRING | ASN.1 Videotext string.  | 
| IA5_STRING | ASN.1 IA5 string.  | 
| UTC_TIME | ASN.1 UTC time.  | 
| GENERALIZED_TIME | ASN.1 Generalized time.  | 
| GRAPHIC_STRING | ASN.1 Graphic string.  | 
| VISIBLE_STRING | ASN.1 Visible string.  | 
| GENERAL_STRING | ASN.1 General string.  | 
| UNIVERSAL_STRING | ASN.1 Universal string.  | 
| BMP_STRING | ASN.1 BMP string.  | 
| enum ASNIdFlag | 
      
  | 
  inline | 
Raises a BERDecodeErr.
| CRYPTOPP_DLL size_t DERLengthEncode | ( | BufferedTransformation & | bt, | 
| lword | length | ||
| ) | 
DER encode a length.
| bt | BufferedTransformation object for writing | 
| length | the size to encode | 
| CRYPTOPP_DLL bool BERLengthDecode | ( | BufferedTransformation & | bt, | 
| size_t & | length | ||
| ) | 
BER decode a length.
| bt | BufferedTransformation object for reading | 
| length | the decoded size | 
| BERDecodeError | if the value fails to decode or is too large for size_t | 
BERLengthDecode() returns false if the encoding is indefinite length.
| CRYPTOPP_DLL void DEREncodeNull | ( | BufferedTransformation & | bt | ) | 
DER encode NULL.
| bt | BufferedTransformation object for writing | 
| CRYPTOPP_DLL void BERDecodeNull | ( | BufferedTransformation & | bt | ) | 
BER decode NULL.
| bt | BufferedTransformation object for reading | 
| CRYPTOPP_DLL size_t DEREncodeOctetString | ( | BufferedTransformation & | bt, | 
| const byte * | str, | ||
| size_t | strLen | ||
| ) | 
DER encode octet string.
| bt | BufferedTransformation object for writing | 
| str | the string to encode | 
| strLen | the length of the string | 
| CRYPTOPP_DLL size_t DEREncodeOctetString | ( | BufferedTransformation & | bt, | 
| const SecByteBlock & | str | ||
| ) | 
DER encode octet string.
| bt | BufferedTransformation object for reading | 
| str | the string to encode | 
| CRYPTOPP_DLL size_t BERDecodeOctetString | ( | BufferedTransformation & | bt, | 
| SecByteBlock & | str | ||
| ) | 
BER decode octet string.
| bt | BufferedTransformation object for reading | 
| str | the decoded string | 
| CRYPTOPP_DLL size_t BERDecodeOctetString | ( | BufferedTransformation & | bt, | 
| BufferedTransformation & | str | ||
| ) | 
BER decode octet string.
| bt | BufferedTransformation object for reading | 
| str | the decoded string | 
| CRYPTOPP_DLL size_t DEREncodeTextString | ( | BufferedTransformation & | bt, | 
| const byte * | str, | ||
| size_t | strLen, | ||
| byte | asnTag | ||
| ) | 
DER encode text string.
| bt | BufferedTransformation object for writing | 
| str | the string to encode | 
| strLen | the length of the string, in bytes | 
| asnTag | the ASN.1 identifier | 
DEREncodeTextString() can be used for UTF8_STRING, PRINTABLE_STRING, and IA5_STRING
| CRYPTOPP_DLL size_t DEREncodeTextString | ( | BufferedTransformation & | bt, | 
| const SecByteBlock & | str, | ||
| byte | asnTag | ||
| ) | 
DER encode text string.
| bt | BufferedTransformation object for writing | 
| str | the string to encode | 
| asnTag | the ASN.1 identifier | 
DEREncodeTextString() can be used for UTF8_STRING, PRINTABLE_STRING, and IA5_STRING
| CRYPTOPP_DLL size_t DEREncodeTextString | ( | BufferedTransformation & | bt, | 
| const std::string & | str, | ||
| byte | asnTag | ||
| ) | 
DER encode text string.
| bt | BufferedTransformation object for writing | 
| str | the string to encode | 
| asnTag | the ASN.1 identifier | 
DEREncodeTextString() can be used for UTF8_STRING, PRINTABLE_STRING, and IA5_STRING
| CRYPTOPP_DLL size_t BERDecodeTextString | ( | BufferedTransformation & | bt, | 
| SecByteBlock & | str, | ||
| byte | asnTag | ||
| ) | 
BER decode text string.
| bt | BufferedTransformation object for reading | 
| str | the string to decode | 
| asnTag | the ASN.1 identifier | 
BERDecodeTextString() can be used for UTF8_STRING, PRINTABLE_STRING, and IA5_STRING
| CRYPTOPP_DLL size_t BERDecodeTextString | ( | BufferedTransformation & | bt, | 
| std::string & | str, | ||
| byte | asnTag | ||
| ) | 
BER decode text string.
| bt | BufferedTransformation object for reading | 
| str | the string to decode | 
| asnTag | the ASN.1 identifier | 
BERDecodeTextString() can be used for UTF8_STRING, PRINTABLE_STRING, and IA5_STRING
| CRYPTOPP_DLL size_t DEREncodeDate | ( | BufferedTransformation & | bt, | 
| const SecByteBlock & | str, | ||
| byte | asnTag | ||
| ) | 
DER encode date.
| bt | BufferedTransformation object for writing | 
| str | the date to encode | 
| asnTag | the ASN.1 identifier | 
BERDecodeDate() can be used for UTC_TIME and GENERALIZED_TIME
| CRYPTOPP_DLL size_t BERDecodeDate | ( | BufferedTransformation & | bt, | 
| SecByteBlock & | str, | ||
| byte | asnTag | ||
| ) | 
BER decode date.
| bt | BufferedTransformation object for reading | 
| str | the date to decode | 
| asnTag | the ASN.1 identifier | 
BERDecodeDate() can be used for UTC_TIME and GENERALIZED_TIME
| CRYPTOPP_DLL size_t DEREncodeBitString | ( | BufferedTransformation & | bt, | 
| const byte * | str, | ||
| size_t | strLen, | ||
| unsigned int | unusedBits = 0  | 
        ||
| ) | 
DER encode bit string.
| bt | BufferedTransformation object for writing | 
| str | the string to encode | 
| strLen | the length of the string | 
| unusedBits | the number of unused bits | 
The caller is responsible for shifting octets if unusedBits is not 0. For example, to DER encode a web server X.509 key usage, the 101b bit mask is often used (digitalSignature and keyEncipherment). In this case str is one octet with a value=0xa0 and unusedBits=5. The value 0xa0 is 101b << 5. 
| CRYPTOPP_DLL size_t BERDecodeBitString | ( | BufferedTransformation & | bt, | 
| SecByteBlock & | str, | ||
| unsigned int & | unusedBits | ||
| ) | 
DER decode bit string.
| bt | BufferedTransformation object for reading | 
| str | the decoded string | 
| unusedBits | the number of unused bits | 
The caller is responsible for shifting octets if unusedBits is not 0. For example, to DER encode a web server X.509 key usage, the 101b bit mask is often used (digitalSignature and keyEncipherment). In this case str is one octet with a value=0xa0 and unusedBits=5. The value 0xa0 is 101b << 5. 
| CRYPTOPP_DLL void DERReencode | ( | BufferedTransformation & | bt, | 
| BufferedTransformation & | dest | ||
| ) | 
BER decode and DER re-encode.
| bt | BufferedTransformation object for writing | 
| dest | BufferedTransformation object | 
| CRYPTOPP_DLL size_t BERDecodePeekLength | ( | const BufferedTransformation & | bt | ) | 
BER decode size.
| bt | BufferedTransformation object for reading | 
BERDecodePeekLength() determines the length of a value without consuming octets in the stream. The stream must use definite length encoding. If indefinite length encoding is used or an error occurs, then 0 is returned.
| size_t DEREncodeUnsigned | ( | BufferedTransformation & | out, | 
| T | w, | ||
| byte | asnTag = INTEGER  | 
        ||
| ) | 
DER Encode unsigned value.
| T | class or type | 
| out | BufferedTransformation object | 
| w | unsigned value to encode | 
| asnTag | the ASN.1 identifier | 
DEREncodeUnsigned() can be used with INTEGER, BOOLEAN, and ENUM
| void BERDecodeUnsigned | ( | BufferedTransformation & | in, | 
| T & | w, | ||
| byte | asnTag = INTEGER,  | 
        ||
| T | minValue = 0,  | 
        ||
| T | maxValue = T(0xffffffff)  | 
        ||
| ) | 
BER Decode unsigned value.
| T | fundamental C++ type | 
| in | BufferedTransformation object | 
| w | the decoded value | 
| asnTag | the ASN.1 identifier | 
| minValue | the minimum expected value | 
| maxValue | the maximum expected value | 
| BERDecodeErr() | if the value cannot be parsed or the decoded value is not within range. | 
DEREncodeUnsigned() can be used with INTEGER, BOOLEAN, and ENUM
Compare two OIDs for ordering.
operator<() calls std::lexicographical_compare() on each element in the array of values.
Compare two OIDs for ordering.
operator<=() is implemented in terms of operator==() and operator<().
Compare two OIDs for ordering.
operator>=() is implemented in terms of operator<().