15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
|
* file.
*/
#import "OFObject.h"
OF_ASSUME_NONNULL_BEGIN
/*! @file */
@class OFData;
/*!
* @brief ASN.1 tag class.
*/
typedef enum {
/*! Universal */
OF_ASN1_TAG_CLASS_UNIVERSAL = 0x0,
/*! Application */
OF_ASN1_TAG_CLASS_APPLICATION = 0x1,
/*! Context specific */
OF_ASN1_TAG_CLASS_CONTEXT_SPECIFIC = 0x2,
/*! Private */
OF_ASN1_TAG_CLASS_PRIVATE = 0x3
} of_asn1_tag_class_t;
/*!
* @brief ASN.1 tag number.
*/
typedef enum {
/*! Boolean */
OF_ASN1_TAG_NUMBER_BOOLEAN = 0x01,
/*! Integer */
OF_ASN1_TAG_NUMBER_INTEGER = 0x02,
/*! Bit string */
OF_ASN1_TAG_NUMBER_BIT_STRING = 0x03,
/*! Octet string */
OF_ASN1_TAG_NUMBER_OCTET_STRING = 0x04,
/*! Null */
OF_ASN1_TAG_NUMBER_NULL = 0x05,
/*! Object Identifier */
OF_ASN1_TAG_NUMBER_OBJECT_IDENTIFIER = 0x06,
/*! Enumerated */
OF_ASN1_TAG_NUMBER_ENUMERATED = 0x0A,
/*! UTF-8 string */
OF_ASN1_TAG_NUMBER_UTF8_STRING = 0x0C,
/*! Sequence */
OF_ASN1_TAG_NUMBER_SEQUENCE = 0x10,
/*! Set */
OF_ASN1_TAG_NUMBER_SET = 0x11,
/*! NumericString */
OF_ASN1_TAG_NUMBER_NUMERIC_STRING = 0x12,
/*! PrintableString */
OF_ASN1_TAG_NUMBER_PRINTABLE_STRING = 0x13,
/*! IA5String */
OF_ASN1_TAG_NUMBER_IA5_STRING = 0x16
} of_asn1_tag_number_t;
/*!
* @brief A class representing an ASN.1 value.
*/
OF_SUBCLASSING_RESTRICTED
@interface OFASN1Value: OFObject
{
of_asn1_tag_class_t _tagClass;
of_asn1_tag_number_t _tagNumber;
bool _constructed;
OFData *_DEREncodedContents;
}
/*!
* @brief The tag class of the value's type.
*/
@property (readonly, nonatomic) of_asn1_tag_class_t tagClass;
/*!
* @brief The tag number of the value's type.
*/
@property (readonly, nonatomic) of_asn1_tag_number_t tagNumber;
/*!
* @brief Whether the value if of a constructed type.
*/
@property (readonly, nonatomic, getter=isConstructed) bool constructed;
/*!
* @brief The DER-encoded contents octets of the value.
*/
@property (readonly, nonatomic) OFData *DEREncodedContents;
/*!
* @brief Creates a new ASN.1 value with the specified arguments.
*
* @param tagClass The tag class of the value's type
* @param tagNumber The tag number of the value's type
* @param constructed Whether the value if of a constructed type
* @param DEREncodedContents The DER-encoded contents octets of the value.
* @return A new ASN.1 value
*/
+ (instancetype)valueWithTagClass: (of_asn1_tag_class_t)tagClass
tagNumber: (of_asn1_tag_number_t)tagNumber
constructed: (bool)constructed
DEREncodedContents: (OFData *)DEREncodedContents;
- (instancetype)init OF_UNAVAILABLE;
/*!
* @brief Initializes an already allocated ASN.1 value with the specified
* arguments.
*
* @param tagClass The tag class of the value's type
* @param tagNumber The tag number of the value's type
* @param constructed Whether the value if of a constructed type
* @param DEREncodedContents The DER-encoded contents octets of the value.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
|
* file.
*/
#import "OFObject.h"
OF_ASSUME_NONNULL_BEGIN
/** @file */
@class OFData;
/**
* @brief ASN.1 tag class.
*/
typedef enum {
/** Universal */
OF_ASN1_TAG_CLASS_UNIVERSAL = 0x0,
/** Application */
OF_ASN1_TAG_CLASS_APPLICATION = 0x1,
/** Context specific */
OF_ASN1_TAG_CLASS_CONTEXT_SPECIFIC = 0x2,
/** Private */
OF_ASN1_TAG_CLASS_PRIVATE = 0x3
} of_asn1_tag_class_t;
/**
* @brief ASN.1 tag number.
*/
typedef enum {
/** Boolean */
OF_ASN1_TAG_NUMBER_BOOLEAN = 0x01,
/** Integer */
OF_ASN1_TAG_NUMBER_INTEGER = 0x02,
/** Bit string */
OF_ASN1_TAG_NUMBER_BIT_STRING = 0x03,
/** Octet string */
OF_ASN1_TAG_NUMBER_OCTET_STRING = 0x04,
/** Null */
OF_ASN1_TAG_NUMBER_NULL = 0x05,
/** Object Identifier */
OF_ASN1_TAG_NUMBER_OBJECT_IDENTIFIER = 0x06,
/** Enumerated */
OF_ASN1_TAG_NUMBER_ENUMERATED = 0x0A,
/** UTF-8 string */
OF_ASN1_TAG_NUMBER_UTF8_STRING = 0x0C,
/** Sequence */
OF_ASN1_TAG_NUMBER_SEQUENCE = 0x10,
/** Set */
OF_ASN1_TAG_NUMBER_SET = 0x11,
/** NumericString */
OF_ASN1_TAG_NUMBER_NUMERIC_STRING = 0x12,
/** PrintableString */
OF_ASN1_TAG_NUMBER_PRINTABLE_STRING = 0x13,
/** IA5String */
OF_ASN1_TAG_NUMBER_IA5_STRING = 0x16
} of_asn1_tag_number_t;
/**
* @brief A class representing an ASN.1 value.
*/
OF_SUBCLASSING_RESTRICTED
@interface OFASN1Value: OFObject
{
of_asn1_tag_class_t _tagClass;
of_asn1_tag_number_t _tagNumber;
bool _constructed;
OFData *_DEREncodedContents;
}
/**
* @brief The tag class of the value's type.
*/
@property (readonly, nonatomic) of_asn1_tag_class_t tagClass;
/**
* @brief The tag number of the value's type.
*/
@property (readonly, nonatomic) of_asn1_tag_number_t tagNumber;
/**
* @brief Whether the value if of a constructed type.
*/
@property (readonly, nonatomic, getter=isConstructed) bool constructed;
/**
* @brief The DER-encoded contents octets of the value.
*/
@property (readonly, nonatomic) OFData *DEREncodedContents;
/**
* @brief Creates a new ASN.1 value with the specified arguments.
*
* @param tagClass The tag class of the value's type
* @param tagNumber The tag number of the value's type
* @param constructed Whether the value if of a constructed type
* @param DEREncodedContents The DER-encoded contents octets of the value.
* @return A new ASN.1 value
*/
+ (instancetype)valueWithTagClass: (of_asn1_tag_class_t)tagClass
tagNumber: (of_asn1_tag_number_t)tagNumber
constructed: (bool)constructed
DEREncodedContents: (OFData *)DEREncodedContents;
- (instancetype)init OF_UNAVAILABLE;
/**
* @brief Initializes an already allocated ASN.1 value with the specified
* arguments.
*
* @param tagClass The tag class of the value's type
* @param tagNumber The tag number of the value's type
* @param constructed Whether the value if of a constructed type
* @param DEREncodedContents The DER-encoded contents octets of the value.
|