asn.h File Reference

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 decodesprivateKeyInfo. 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
}

| 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.
size_t | DERLengthEncode (BufferedTransformation &bt, lword length)
| DER encode a length. More...
bool | BERLengthDecode (BufferedTransformation &bt, size_t &length)
| BER decode a length. More...
void | DEREncodeNull (BufferedTransformation &bt)
| DER encode NULL. More...
void | BERDecodeNull (BufferedTransformation &bt)
| BER decode NULL. More...
size_t | DEREncodeOctetString (BufferedTransformation &bt, const byte *str, size_t strLen)
| DER encode octet string. More...
size_t | DEREncodeOctetString (BufferedTransformation &bt, const SecByteBlock &str)
| DER encode octet string. More...
size_t | BERDecodeOctetString (BufferedTransformation &bt, SecByteBlock &str)
| BER decode octet string. More...
size_t | BERDecodeOctetString (BufferedTransformation &bt, BufferedTransformation &str)
| BER decode octet string. More...
size_t | DEREncodeTextString (BufferedTransformation &bt, const std::string &str, byte asnTag)
| DER encode text string. More...
size_t | BERDecodeTextString (BufferedTransformation &bt, std::string &str, byte asnTag)
| BER decode text string. More...
size_t | DEREncodeBitString (BufferedTransformation &bt, const byte *str, size_t strLen, unsigned int unusedBits=0)
| DER encode bit string. More...
size_t | BERDecodeBitString (BufferedTransformation &bt, SecByteBlock &str, unsigned int &unusedBits)
| DER decode bit string. More...
void | DERReencode (BufferedTransformation &bt, BufferedTransformation &dest)
| BER decode and DER re-encode. More...
template<class T >
size_t | DEREncodeUnsigned (BufferedTransformation &out, T w, byte asnTag=INTEGER)
| DER Encode unsigned value. More...
template<class T >
void | BERDecodeUnsigned (BufferedTransformation &in, T &w, byte asnTag=INTEGER, T minValue=0, T maxValue=T(0xffffffff))
| BER Decode unsigned value. More...
bool | operator== (const OID &lhs, const OID &rhs)
| Compare two OIDs for equality. More...
bool | operator!= (const OID &lhs, const OID &rhs)
| Compare two OIDs for inequality. More...
bool | operator< (const OID &lhs, const OID &rhs)
| Compare two OIDs for ordering. More...
OID | operator+ (const OID &lhs, unsigned long rhs)
| Append a value to an OID. More...

## Detailed Description

Classes and functions for working with ANS.1 objects.

Definition in file asn.h.

## Enumeration Type Documentation

## ASNTag

enum ASNTag

ASN.1 types.

Note
  These tags and flags are not complete

Definition at line 20 of file asn.h.

## ASNIdFlag

enum ASNIdFlag

ASN.1 flags.

Note
  These tags and flags are not complete

Definition at line 49 of file asn.h.

## Function Documentation

## DERLengthEncode()

size_t DERLengthEncode | ( | BufferedTransformation & | bt,
|  | lword | length
| ) |  |

DER encode a length.

Parameters

  bt | BufferedTransformation object for writing
  length | the size to encode

Returns
  the number of octets used for the encoding

DER encode a length.

Definition at line 17 of file asn.cpp.

## BERLengthDecode()

bool BERLengthDecode | ( | BufferedTransformation & | bt,
|  | size_t & | length
| ) |  |

BER decode a length.

Parameters

  bt | BufferedTransformation object for reading
  length | the decoded size

Returns
  true if the value was decoded

Exceptions

  BERDecodeError | if the value fails to decode or is too large for size_t

BERLengthDecode() returns false if the encoding is indefinite length.

Definition at line 76 of file asn.cpp.

## DEREncodeNull()

void DEREncodeNull | ( | BufferedTransformation & | bt | ) |

DER encode NULL.

Parameters

  bt | BufferedTransformation object for writing

Definition at line 87 of file asn.cpp.

## BERDecodeNull()

void BERDecodeNull | ( | BufferedTransformation & | bt | ) |

BER decode NULL.

Parameters

  bt | BufferedTransformation object for reading

Definition at line 93 of file asn.cpp.

## DEREncodeOctetString() [1/2]

size_t DEREncodeOctetString | ( | BufferedTransformation & | bt,
|  | const byte * | str,
|  | size_t | strLen
| ) |  |

DER encode octet string.

Parameters

  bt | BufferedTransformation object for writing
  str | the string to encode
  strLen | the length of the string

Returns
  the number of octets used for the encoding

DER encode octet string.

Definition at line 104 of file asn.cpp.

## DEREncodeOctetString() [2/2]

size_t DEREncodeOctetString | ( | BufferedTransformation & | bt,
|  | const SecByteBlock & | str
| ) |  |

DER encode octet string.

Parameters

  bt | BufferedTransformation object for reading
  str | the string to encode

Returns
  the number of octets used for the encoding

Definition at line 112 of file asn.cpp.

## BERDecodeOctetString() [1/2]

size_t BERDecodeOctetString | ( | BufferedTransformation & | bt,
|  | SecByteBlock & | str
| ) |  |

BER decode octet string.

Parameters

  bt | BufferedTransformation object for reading
  str | the decoded string

Returns
  the number of octets used for the encoding

Definition at line 117 of file asn.cpp.

## BERDecodeOctetString() [2/2]

size_t BERDecodeOctetString | ( | BufferedTransformation & | bt,
|  | BufferedTransformation & | str
| ) |  |

BER decode octet string.

Parameters

  bt | BufferedTransformation object for reading
  str | the decoded string

Returns
  the number of octets used for the encoding

Definition at line 135 of file asn.cpp.

## DEREncodeTextString()

size_t DEREncodeTextString | ( | BufferedTransformation & | bt,
|  | const std::string & | str,
|  | byte | asnTag
| ) |  |

DER encode text string.

Parameters

  bt | BufferedTransformation object for writing
  str | the string to encode
  asnTag | the ASN.1 type

Returns
  the number of octets used for the encoding

DEREncodeTextString() can be used for UTF8_STRING, PRINTABLE_STRING, and IA5_STRING

Definition at line 151 of file asn.cpp.

## BERDecodeTextString()

size_t BERDecodeTextString | ( | BufferedTransformation & | bt,
|  | std::string & | str,
|  | byte | asnTag
| ) |  |

BER decode text string.

Parameters

  bt | BufferedTransformation object for reading
  str | the string to encode
  asnTag | the ASN.1 type

DEREncodeTextString() can be used for UTF8_STRING, PRINTABLE_STRING, and IA5_STRING

Definition at line 159 of file asn.cpp.

## DEREncodeBitString()

size_t DEREncodeBitString | ( | BufferedTransformation & | bt,
|  | const byte * | str,
|  | size_t | strLen,
|  | unsigned int | unusedBits
| ) |  |

DER encode bit string.

Parameters

  bt | BufferedTransformation object for writing
  str | the string to encode
  strLen | the length of the string
  unusedBits | the number of unused bits

Returns
  the number of octets used for the encoding

DER encode bit string.

Definition at line 179 of file asn.cpp.

## BERDecodeBitString()

size_t BERDecodeBitString | ( | BufferedTransformation & | bt,
|  | SecByteBlock & | str,
|  | unsigned int & | unusedBits
| ) |  |

DER decode bit string.

Parameters

  bt | BufferedTransformation object for reading
  str | the decoded string
  unusedBits | the number of unused bits

Definition at line 188 of file asn.cpp.

## DERReencode()

void DERReencode | ( | BufferedTransformation & | bt,
|  | BufferedTransformation & | dest
| ) |  |

BER decode and DER re-encode.

Parameters

  bt | BufferedTransformation object for writing
  dest | BufferedTransformation object

Definition at line 213 of file asn.cpp.

## DEREncodeUnsigned()

template<class T >

size_t DEREncodeUnsigned | ( | BufferedTransformation & | out,
|  | T | w,
|  | byte | asnTag = `INTEGER`
| ) |  |

DER Encode unsigned value.

Template Parameters

  T | class or type

Parameters

  out | BufferedTransformation object
  w | unsigned value to encode
  asnTag | the ASN.1 type

DEREncodeUnsigned() can be used with INTEGER, BOOLEAN, and ENUM

Definition at line 443 of file asn.h.

## BERDecodeUnsigned()

template<class T >

void BERDecodeUnsigned | ( | BufferedTransformation & | in,
|  | T & | w,
|  | byte | asnTag = `INTEGER`,
|  | T | minValue = `0`,
|  | T | maxValue = `T(0xffffffff)`
| ) |  |

BER Decode unsigned value.

Template Parameters

  T | fundamental C++ type

Parameters

  in | BufferedTransformation object
  w | the decoded value
  asnTag | the ASN.1 type
  minValue | the minimum expected value
  maxValue | the maximum expected value

Exceptions

  BERDecodeErr() | if the value cannot be parsed or the decoded value is not within range.

DEREncodeUnsigned() can be used with INTEGER, BOOLEAN, and ENUM

Definition at line 479 of file asn.h.

## operator==()

bool operator== | ( | const OID & | lhs,
|  | const OID & | rhs
| ) |  |

inline

Compare two OIDs for equality.

Parameters

  lhs | the first OID
  rhs | the second OID

Returns
  true if the OIDs are equal, false otherwise

## operator!=()

bool operator!= | ( | const OID & | lhs,
|  | const OID & | rhs
| ) |  |

inline

Compare two OIDs for inequality.

Parameters

  lhs | the first OID
  rhs | the second OID

Returns
  true if the OIDs are not equal, false otherwise

## operator<()

bool operator< | ( | const OID & | lhs,
|  | const OID & | rhs
| ) |  |

inline

Compare two OIDs for ordering.

Parameters

  lhs | the first OID
  rhs | the second OID

Returns
  true if the first OID is less than the second OID, false otherwise

operator<() calls std::lexicographical_compare() on each element in the array of values.

## operator+()

OID operator+ | ( | const OID & | lhs,
|  | unsigned long | rhs
| ) |  |

inline

Append a value to an OID.

Parameters

  lhs | the OID
  rhs | the value to append