| 1 | /* Generated from cms.asn1 */ |
| 2 | /* Do not edit */ |
| 3 | |
| 4 | #ifndef __cms_asn1_h__ |
| 5 | #define __cms_asn1_h__ |
| 6 | |
| 7 | #include <stddef.h> |
| 8 | #include <time.h> |
| 9 | |
| 10 | #ifndef __asn1_common_definitions__ |
| 11 | #define __asn1_common_definitions__ |
| 12 | |
| 13 | #ifndef __HEIM_BASE_DATA__ |
| 14 | #define __HEIM_BASE_DATA__ 1 |
| 15 | struct heim_base_data { |
| 16 | size_t length; |
| 17 | void *data; |
| 18 | }; |
| 19 | typedef struct heim_base_data heim_octet_string; |
| 20 | #endif |
| 21 | |
| 22 | typedef struct heim_integer { |
| 23 | size_t length; |
| 24 | void *data; |
| 25 | int negative; |
| 26 | } heim_integer; |
| 27 | |
| 28 | typedef char *heim_general_string; |
| 29 | |
| 30 | typedef char *heim_utf8_string; |
| 31 | |
| 32 | typedef struct heim_base_data heim_printable_string; |
| 33 | |
| 34 | typedef struct heim_base_data heim_ia5_string; |
| 35 | |
| 36 | typedef struct heim_bmp_string { |
| 37 | size_t length; |
| 38 | uint16_t *data; |
| 39 | } heim_bmp_string; |
| 40 | |
| 41 | typedef struct heim_universal_string { |
| 42 | size_t length; |
| 43 | uint32_t *data; |
| 44 | } heim_universal_string; |
| 45 | |
| 46 | typedef char *heim_visible_string; |
| 47 | |
| 48 | typedef struct heim_oid { |
| 49 | size_t length; |
| 50 | unsigned *components; |
| 51 | } heim_oid; |
| 52 | |
| 53 | typedef struct heim_bit_string { |
| 54 | size_t length; |
| 55 | void *data; |
| 56 | } heim_bit_string; |
| 57 | |
| 58 | typedef struct heim_base_data heim_any; |
| 59 | typedef struct heim_base_data heim_any_set; |
| 60 | |
| 61 | #define ASN1_MALLOC_ENCODE(T, B, BL, S, L, R) \ |
| 62 | do { \ |
| 63 | (BL) = length_##T((S)); \ |
| 64 | (B) = malloc((BL)); \ |
| 65 | if((B) == NULL) { \ |
| 66 | (R) = ENOMEM; \ |
| 67 | } else { \ |
| 68 | (R) = encode_##T(((unsigned char*)(B)) + (BL) - 1, (BL), \ |
| 69 | (S), (L)); \ |
| 70 | if((R) != 0) { \ |
| 71 | free((B)); \ |
| 72 | (B) = NULL; \ |
| 73 | } \ |
| 74 | } \ |
| 75 | } while (0) |
| 76 | |
| 77 | #ifdef _WIN32 |
| 78 | #ifndef ASN1_LIB |
| 79 | #define ASN1EXP __declspec(dllimport) |
| 80 | #else |
| 81 | #define ASN1EXP |
| 82 | #endif |
| 83 | #define ASN1CALL __stdcall |
| 84 | #else |
| 85 | #define ASN1EXP |
| 86 | #define ASN1CALL |
| 87 | #endif |
| 88 | struct units; |
| 89 | |
| 90 | #endif |
| 91 | |
| 92 | #include <krb5/rfc2459_asn1.h> |
| 93 | #include <krb5/heim_asn1.h> |
| 94 | /* OBJECT IDENTIFIER id-pkcs7 ::= { iso(1) member-body(2) us(840) rsadsi(113549) pkcs(1) pkcs7(7) } */ |
| 95 | extern ASN1EXP const heim_oid asn1_oid_id_pkcs7; |
| 96 | #define ASN1_OID_ID_PKCS7 (&asn1_oid_id_pkcs7) |
| 97 | |
| 98 | /* OBJECT IDENTIFIER id-pkcs7-data ::= { iso(1) member-body(2) us(840) rsadsi(113549) pkcs(1) pkcs7(7) label-less(1) } */ |
| 99 | extern ASN1EXP const heim_oid asn1_oid_id_pkcs7_data; |
| 100 | #define ASN1_OID_ID_PKCS7_DATA (&asn1_oid_id_pkcs7_data) |
| 101 | |
| 102 | /* OBJECT IDENTIFIER id-pkcs7-signedData ::= { iso(1) member-body(2) us(840) rsadsi(113549) pkcs(1) pkcs7(7) label-less(2) } */ |
| 103 | extern ASN1EXP const heim_oid asn1_oid_id_pkcs7_signedData; |
| 104 | #define ASN1_OID_ID_PKCS7_SIGNEDDATA (&asn1_oid_id_pkcs7_signedData) |
| 105 | |
| 106 | /* OBJECT IDENTIFIER id-pkcs7-envelopedData ::= { iso(1) member-body(2) us(840) rsadsi(113549) pkcs(1) pkcs7(7) label-less(3) } */ |
| 107 | extern ASN1EXP const heim_oid asn1_oid_id_pkcs7_envelopedData; |
| 108 | #define ASN1_OID_ID_PKCS7_ENVELOPEDDATA (&asn1_oid_id_pkcs7_envelopedData) |
| 109 | |
| 110 | /* OBJECT IDENTIFIER id-pkcs7-signedAndEnvelopedData ::= { iso(1) member-body(2) us(840) rsadsi(113549) pkcs(1) pkcs7(7) label-less(4) } */ |
| 111 | extern ASN1EXP const heim_oid asn1_oid_id_pkcs7_signedAndEnvelopedData; |
| 112 | #define ASN1_OID_ID_PKCS7_SIGNEDANDENVELOPEDDATA (&asn1_oid_id_pkcs7_signedAndEnvelopedData) |
| 113 | |
| 114 | /* OBJECT IDENTIFIER id-pkcs7-digestedData ::= { iso(1) member-body(2) us(840) rsadsi(113549) pkcs(1) pkcs7(7) label-less(5) } */ |
| 115 | extern ASN1EXP const heim_oid asn1_oid_id_pkcs7_digestedData; |
| 116 | #define ASN1_OID_ID_PKCS7_DIGESTEDDATA (&asn1_oid_id_pkcs7_digestedData) |
| 117 | |
| 118 | /* OBJECT IDENTIFIER id-pkcs7-encryptedData ::= { iso(1) member-body(2) us(840) rsadsi(113549) pkcs(1) pkcs7(7) label-less(6) } */ |
| 119 | extern ASN1EXP const heim_oid asn1_oid_id_pkcs7_encryptedData; |
| 120 | #define ASN1_OID_ID_PKCS7_ENCRYPTEDDATA (&asn1_oid_id_pkcs7_encryptedData) |
| 121 | |
| 122 | /* |
| 123 | CMSVersion ::= INTEGER { |
| 124 | CMSVersion_v0(0), |
| 125 | CMSVersion_v1(1), |
| 126 | CMSVersion_v2(2), |
| 127 | CMSVersion_v3(3), |
| 128 | CMSVersion_v4(4) |
| 129 | } |
| 130 | */ |
| 131 | |
| 132 | typedef enum CMSVersion { |
| 133 | CMSVersion_v0 = 0, |
| 134 | CMSVersion_v1 = 1, |
| 135 | CMSVersion_v2 = 2, |
| 136 | CMSVersion_v3 = 3, |
| 137 | CMSVersion_v4 = 4 |
| 138 | } CMSVersion; |
| 139 | |
| 140 | ASN1EXP int ASN1CALL decode_CMSVersion(const unsigned char *, size_t, CMSVersion *, size_t *); |
| 141 | ASN1EXP int ASN1CALL encode_CMSVersion(unsigned char *, size_t, const CMSVersion *, size_t *); |
| 142 | ASN1EXP size_t ASN1CALL length_CMSVersion(const CMSVersion *); |
| 143 | ASN1EXP int ASN1CALL copy_CMSVersion (const CMSVersion *, CMSVersion *); |
| 144 | ASN1EXP void ASN1CALL free_CMSVersion (CMSVersion *); |
| 145 | |
| 146 | |
| 147 | /* |
| 148 | DigestAlgorithmIdentifier ::= AlgorithmIdentifier |
| 149 | */ |
| 150 | |
| 151 | typedef AlgorithmIdentifier DigestAlgorithmIdentifier; |
| 152 | |
| 153 | ASN1EXP int ASN1CALL decode_DigestAlgorithmIdentifier(const unsigned char *, size_t, DigestAlgorithmIdentifier *, size_t *); |
| 154 | ASN1EXP int ASN1CALL encode_DigestAlgorithmIdentifier(unsigned char *, size_t, const DigestAlgorithmIdentifier *, size_t *); |
| 155 | ASN1EXP size_t ASN1CALL length_DigestAlgorithmIdentifier(const DigestAlgorithmIdentifier *); |
| 156 | ASN1EXP int ASN1CALL copy_DigestAlgorithmIdentifier (const DigestAlgorithmIdentifier *, DigestAlgorithmIdentifier *); |
| 157 | ASN1EXP void ASN1CALL free_DigestAlgorithmIdentifier (DigestAlgorithmIdentifier *); |
| 158 | |
| 159 | |
| 160 | /* |
| 161 | DigestAlgorithmIdentifiers ::= SET OF DigestAlgorithmIdentifier |
| 162 | */ |
| 163 | |
| 164 | typedef struct DigestAlgorithmIdentifiers { |
| 165 | unsigned int len; |
| 166 | DigestAlgorithmIdentifier *val; |
| 167 | } DigestAlgorithmIdentifiers; |
| 168 | |
| 169 | ASN1EXP int ASN1CALL add_DigestAlgorithmIdentifiers (DigestAlgorithmIdentifiers *, const DigestAlgorithmIdentifier *); |
| 170 | ASN1EXP int ASN1CALL remove_DigestAlgorithmIdentifiers (DigestAlgorithmIdentifiers *, unsigned int); |
| 171 | ASN1EXP int ASN1CALL decode_DigestAlgorithmIdentifiers(const unsigned char *, size_t, DigestAlgorithmIdentifiers *, size_t *); |
| 172 | ASN1EXP int ASN1CALL encode_DigestAlgorithmIdentifiers(unsigned char *, size_t, const DigestAlgorithmIdentifiers *, size_t *); |
| 173 | ASN1EXP size_t ASN1CALL length_DigestAlgorithmIdentifiers(const DigestAlgorithmIdentifiers *); |
| 174 | ASN1EXP int ASN1CALL copy_DigestAlgorithmIdentifiers (const DigestAlgorithmIdentifiers *, DigestAlgorithmIdentifiers *); |
| 175 | ASN1EXP void ASN1CALL free_DigestAlgorithmIdentifiers (DigestAlgorithmIdentifiers *); |
| 176 | |
| 177 | |
| 178 | /* |
| 179 | SignatureAlgorithmIdentifier ::= AlgorithmIdentifier |
| 180 | */ |
| 181 | |
| 182 | typedef AlgorithmIdentifier SignatureAlgorithmIdentifier; |
| 183 | |
| 184 | ASN1EXP int ASN1CALL decode_SignatureAlgorithmIdentifier(const unsigned char *, size_t, SignatureAlgorithmIdentifier *, size_t *); |
| 185 | ASN1EXP int ASN1CALL encode_SignatureAlgorithmIdentifier(unsigned char *, size_t, const SignatureAlgorithmIdentifier *, size_t *); |
| 186 | ASN1EXP size_t ASN1CALL length_SignatureAlgorithmIdentifier(const SignatureAlgorithmIdentifier *); |
| 187 | ASN1EXP int ASN1CALL copy_SignatureAlgorithmIdentifier (const SignatureAlgorithmIdentifier *, SignatureAlgorithmIdentifier *); |
| 188 | ASN1EXP void ASN1CALL free_SignatureAlgorithmIdentifier (SignatureAlgorithmIdentifier *); |
| 189 | |
| 190 | |
| 191 | /* |
| 192 | ContentType ::= OBJECT IDENTIFIER |
| 193 | */ |
| 194 | |
| 195 | typedef heim_oid ContentType; |
| 196 | |
| 197 | ASN1EXP int ASN1CALL decode_ContentType(const unsigned char *, size_t, ContentType *, size_t *); |
| 198 | ASN1EXP int ASN1CALL encode_ContentType(unsigned char *, size_t, const ContentType *, size_t *); |
| 199 | ASN1EXP size_t ASN1CALL length_ContentType(const ContentType *); |
| 200 | ASN1EXP int ASN1CALL copy_ContentType (const ContentType *, ContentType *); |
| 201 | ASN1EXP void ASN1CALL free_ContentType (ContentType *); |
| 202 | |
| 203 | |
| 204 | /* |
| 205 | MessageDigest ::= OCTET STRING |
| 206 | */ |
| 207 | |
| 208 | typedef heim_octet_string MessageDigest; |
| 209 | |
| 210 | ASN1EXP int ASN1CALL decode_MessageDigest(const unsigned char *, size_t, MessageDigest *, size_t *); |
| 211 | ASN1EXP int ASN1CALL encode_MessageDigest(unsigned char *, size_t, const MessageDigest *, size_t *); |
| 212 | ASN1EXP size_t ASN1CALL length_MessageDigest(const MessageDigest *); |
| 213 | ASN1EXP int ASN1CALL copy_MessageDigest (const MessageDigest *, MessageDigest *); |
| 214 | ASN1EXP void ASN1CALL free_MessageDigest (MessageDigest *); |
| 215 | |
| 216 | |
| 217 | /* |
| 218 | ContentInfo ::= SEQUENCE { |
| 219 | contentType ContentType, |
| 220 | content [0] heim_any OPTIONAL, |
| 221 | } |
| 222 | */ |
| 223 | |
| 224 | typedef struct ContentInfo { |
| 225 | ContentType contentType; |
| 226 | heim_any *content; |
| 227 | } ContentInfo; |
| 228 | |
| 229 | ASN1EXP int ASN1CALL decode_ContentInfo(const unsigned char *, size_t, ContentInfo *, size_t *); |
| 230 | ASN1EXP int ASN1CALL encode_ContentInfo(unsigned char *, size_t, const ContentInfo *, size_t *); |
| 231 | ASN1EXP size_t ASN1CALL length_ContentInfo(const ContentInfo *); |
| 232 | ASN1EXP int ASN1CALL copy_ContentInfo (const ContentInfo *, ContentInfo *); |
| 233 | ASN1EXP void ASN1CALL free_ContentInfo (ContentInfo *); |
| 234 | |
| 235 | |
| 236 | /* |
| 237 | EncapsulatedContentInfo ::= SEQUENCE { |
| 238 | eContentType ContentType, |
| 239 | eContent [0] OCTET STRING OPTIONAL, |
| 240 | } |
| 241 | */ |
| 242 | |
| 243 | typedef struct EncapsulatedContentInfo { |
| 244 | ContentType eContentType; |
| 245 | heim_octet_string *eContent; |
| 246 | } EncapsulatedContentInfo; |
| 247 | |
| 248 | ASN1EXP int ASN1CALL decode_EncapsulatedContentInfo(const unsigned char *, size_t, EncapsulatedContentInfo *, size_t *); |
| 249 | ASN1EXP int ASN1CALL encode_EncapsulatedContentInfo(unsigned char *, size_t, const EncapsulatedContentInfo *, size_t *); |
| 250 | ASN1EXP size_t ASN1CALL length_EncapsulatedContentInfo(const EncapsulatedContentInfo *); |
| 251 | ASN1EXP int ASN1CALL copy_EncapsulatedContentInfo (const EncapsulatedContentInfo *, EncapsulatedContentInfo *); |
| 252 | ASN1EXP void ASN1CALL free_EncapsulatedContentInfo (EncapsulatedContentInfo *); |
| 253 | |
| 254 | |
| 255 | /* |
| 256 | CertificateSet ::= SET OF heim_any |
| 257 | */ |
| 258 | |
| 259 | typedef struct CertificateSet { |
| 260 | unsigned int len; |
| 261 | heim_any *val; |
| 262 | } CertificateSet; |
| 263 | |
| 264 | ASN1EXP int ASN1CALL decode_CertificateSet(const unsigned char *, size_t, CertificateSet *, size_t *); |
| 265 | ASN1EXP int ASN1CALL encode_CertificateSet(unsigned char *, size_t, const CertificateSet *, size_t *); |
| 266 | ASN1EXP size_t ASN1CALL length_CertificateSet(const CertificateSet *); |
| 267 | ASN1EXP int ASN1CALL copy_CertificateSet (const CertificateSet *, CertificateSet *); |
| 268 | ASN1EXP void ASN1CALL free_CertificateSet (CertificateSet *); |
| 269 | |
| 270 | |
| 271 | /* |
| 272 | CertificateList ::= Certificate |
| 273 | */ |
| 274 | |
| 275 | typedef Certificate CertificateList; |
| 276 | |
| 277 | ASN1EXP int ASN1CALL decode_CertificateList(const unsigned char *, size_t, CertificateList *, size_t *); |
| 278 | ASN1EXP int ASN1CALL encode_CertificateList(unsigned char *, size_t, const CertificateList *, size_t *); |
| 279 | ASN1EXP size_t ASN1CALL length_CertificateList(const CertificateList *); |
| 280 | ASN1EXP int ASN1CALL copy_CertificateList (const CertificateList *, CertificateList *); |
| 281 | ASN1EXP void ASN1CALL free_CertificateList (CertificateList *); |
| 282 | |
| 283 | |
| 284 | /* |
| 285 | CertificateRevocationLists ::= SET OF CertificateList |
| 286 | */ |
| 287 | |
| 288 | typedef struct CertificateRevocationLists { |
| 289 | unsigned int len; |
| 290 | CertificateList *val; |
| 291 | } CertificateRevocationLists; |
| 292 | |
| 293 | ASN1EXP int ASN1CALL decode_CertificateRevocationLists(const unsigned char *, size_t, CertificateRevocationLists *, size_t *); |
| 294 | ASN1EXP int ASN1CALL encode_CertificateRevocationLists(unsigned char *, size_t, const CertificateRevocationLists *, size_t *); |
| 295 | ASN1EXP size_t ASN1CALL length_CertificateRevocationLists(const CertificateRevocationLists *); |
| 296 | ASN1EXP int ASN1CALL copy_CertificateRevocationLists (const CertificateRevocationLists *, CertificateRevocationLists *); |
| 297 | ASN1EXP void ASN1CALL free_CertificateRevocationLists (CertificateRevocationLists *); |
| 298 | |
| 299 | |
| 300 | /* |
| 301 | IssuerAndSerialNumber ::= SEQUENCE { |
| 302 | issuer Name, |
| 303 | serialNumber CertificateSerialNumber, |
| 304 | } |
| 305 | */ |
| 306 | |
| 307 | typedef struct IssuerAndSerialNumber { |
| 308 | Name issuer; |
| 309 | CertificateSerialNumber serialNumber; |
| 310 | } IssuerAndSerialNumber; |
| 311 | |
| 312 | ASN1EXP int ASN1CALL decode_IssuerAndSerialNumber(const unsigned char *, size_t, IssuerAndSerialNumber *, size_t *); |
| 313 | ASN1EXP int ASN1CALL encode_IssuerAndSerialNumber(unsigned char *, size_t, const IssuerAndSerialNumber *, size_t *); |
| 314 | ASN1EXP size_t ASN1CALL length_IssuerAndSerialNumber(const IssuerAndSerialNumber *); |
| 315 | ASN1EXP int ASN1CALL copy_IssuerAndSerialNumber (const IssuerAndSerialNumber *, IssuerAndSerialNumber *); |
| 316 | ASN1EXP void ASN1CALL free_IssuerAndSerialNumber (IssuerAndSerialNumber *); |
| 317 | |
| 318 | |
| 319 | /* |
| 320 | CMSIdentifier ::= CHOICE { |
| 321 | issuerAndSerialNumber IssuerAndSerialNumber, |
| 322 | subjectKeyIdentifier [0] SubjectKeyIdentifier, |
| 323 | } |
| 324 | */ |
| 325 | |
| 326 | typedef struct CMSIdentifier { |
| 327 | enum CMSIdentifier_enum { |
| 328 | choice_CMSIdentifier_issuerAndSerialNumber = 1, |
| 329 | choice_CMSIdentifier_subjectKeyIdentifier |
| 330 | } element; |
| 331 | union { |
| 332 | IssuerAndSerialNumber issuerAndSerialNumber; |
| 333 | SubjectKeyIdentifier subjectKeyIdentifier; |
| 334 | } u; |
| 335 | } CMSIdentifier; |
| 336 | |
| 337 | ASN1EXP int ASN1CALL decode_CMSIdentifier(const unsigned char *, size_t, CMSIdentifier *, size_t *); |
| 338 | ASN1EXP int ASN1CALL encode_CMSIdentifier(unsigned char *, size_t, const CMSIdentifier *, size_t *); |
| 339 | ASN1EXP size_t ASN1CALL length_CMSIdentifier(const CMSIdentifier *); |
| 340 | ASN1EXP int ASN1CALL copy_CMSIdentifier (const CMSIdentifier *, CMSIdentifier *); |
| 341 | ASN1EXP void ASN1CALL free_CMSIdentifier (CMSIdentifier *); |
| 342 | |
| 343 | |
| 344 | /* |
| 345 | SignerIdentifier ::= CMSIdentifier |
| 346 | */ |
| 347 | |
| 348 | typedef CMSIdentifier SignerIdentifier; |
| 349 | |
| 350 | ASN1EXP int ASN1CALL decode_SignerIdentifier(const unsigned char *, size_t, SignerIdentifier *, size_t *); |
| 351 | ASN1EXP int ASN1CALL encode_SignerIdentifier(unsigned char *, size_t, const SignerIdentifier *, size_t *); |
| 352 | ASN1EXP size_t ASN1CALL length_SignerIdentifier(const SignerIdentifier *); |
| 353 | ASN1EXP int ASN1CALL copy_SignerIdentifier (const SignerIdentifier *, SignerIdentifier *); |
| 354 | ASN1EXP void ASN1CALL free_SignerIdentifier (SignerIdentifier *); |
| 355 | |
| 356 | |
| 357 | /* |
| 358 | RecipientIdentifier ::= CMSIdentifier |
| 359 | */ |
| 360 | |
| 361 | typedef CMSIdentifier RecipientIdentifier; |
| 362 | |
| 363 | ASN1EXP int ASN1CALL decode_RecipientIdentifier(const unsigned char *, size_t, RecipientIdentifier *, size_t *); |
| 364 | ASN1EXP int ASN1CALL encode_RecipientIdentifier(unsigned char *, size_t, const RecipientIdentifier *, size_t *); |
| 365 | ASN1EXP size_t ASN1CALL length_RecipientIdentifier(const RecipientIdentifier *); |
| 366 | ASN1EXP int ASN1CALL copy_RecipientIdentifier (const RecipientIdentifier *, RecipientIdentifier *); |
| 367 | ASN1EXP void ASN1CALL free_RecipientIdentifier (RecipientIdentifier *); |
| 368 | |
| 369 | |
| 370 | /* |
| 371 | CMSAttributes ::= SET OF Attribute |
| 372 | */ |
| 373 | |
| 374 | typedef struct CMSAttributes { |
| 375 | unsigned int len; |
| 376 | Attribute *val; |
| 377 | } CMSAttributes; |
| 378 | |
| 379 | ASN1EXP int ASN1CALL decode_CMSAttributes(const unsigned char *, size_t, CMSAttributes *, size_t *); |
| 380 | ASN1EXP int ASN1CALL encode_CMSAttributes(unsigned char *, size_t, const CMSAttributes *, size_t *); |
| 381 | ASN1EXP size_t ASN1CALL length_CMSAttributes(const CMSAttributes *); |
| 382 | ASN1EXP int ASN1CALL copy_CMSAttributes (const CMSAttributes *, CMSAttributes *); |
| 383 | ASN1EXP void ASN1CALL free_CMSAttributes (CMSAttributes *); |
| 384 | |
| 385 | |
| 386 | /* |
| 387 | SignatureValue ::= OCTET STRING |
| 388 | */ |
| 389 | |
| 390 | typedef heim_octet_string SignatureValue; |
| 391 | |
| 392 | ASN1EXP int ASN1CALL decode_SignatureValue(const unsigned char *, size_t, SignatureValue *, size_t *); |
| 393 | ASN1EXP int ASN1CALL encode_SignatureValue(unsigned char *, size_t, const SignatureValue *, size_t *); |
| 394 | ASN1EXP size_t ASN1CALL length_SignatureValue(const SignatureValue *); |
| 395 | ASN1EXP int ASN1CALL copy_SignatureValue (const SignatureValue *, SignatureValue *); |
| 396 | ASN1EXP void ASN1CALL free_SignatureValue (SignatureValue *); |
| 397 | |
| 398 | |
| 399 | /* |
| 400 | SignerInfo ::= SEQUENCE { |
| 401 | version CMSVersion, |
| 402 | sid SignerIdentifier, |
| 403 | digestAlgorithm DigestAlgorithmIdentifier, |
| 404 | signedAttrs [0] IMPLICIT SET OF Attribute OPTIONAL, |
| 405 | signatureAlgorithm SignatureAlgorithmIdentifier, |
| 406 | signature SignatureValue, |
| 407 | unsignedAttrs [1] IMPLICIT SET OF Attribute OPTIONAL, |
| 408 | } |
| 409 | */ |
| 410 | |
| 411 | typedef struct SignerInfo { |
| 412 | CMSVersion version; |
| 413 | SignerIdentifier sid; |
| 414 | DigestAlgorithmIdentifier digestAlgorithm; |
| 415 | struct SignerInfo_signedAttrs { |
| 416 | unsigned int len; |
| 417 | Attribute *val; |
| 418 | } *signedAttrs; |
| 419 | SignatureAlgorithmIdentifier signatureAlgorithm; |
| 420 | SignatureValue signature; |
| 421 | struct SignerInfo_unsignedAttrs { |
| 422 | unsigned int len; |
| 423 | Attribute *val; |
| 424 | } *unsignedAttrs; |
| 425 | } SignerInfo; |
| 426 | |
| 427 | ASN1EXP int ASN1CALL decode_SignerInfo(const unsigned char *, size_t, SignerInfo *, size_t *); |
| 428 | ASN1EXP int ASN1CALL encode_SignerInfo(unsigned char *, size_t, const SignerInfo *, size_t *); |
| 429 | ASN1EXP size_t ASN1CALL length_SignerInfo(const SignerInfo *); |
| 430 | ASN1EXP int ASN1CALL copy_SignerInfo (const SignerInfo *, SignerInfo *); |
| 431 | ASN1EXP void ASN1CALL free_SignerInfo (SignerInfo *); |
| 432 | |
| 433 | |
| 434 | /* |
| 435 | SignerInfos ::= SET OF SignerInfo |
| 436 | */ |
| 437 | |
| 438 | typedef struct SignerInfos { |
| 439 | unsigned int len; |
| 440 | SignerInfo *val; |
| 441 | } SignerInfos; |
| 442 | |
| 443 | ASN1EXP int ASN1CALL decode_SignerInfos(const unsigned char *, size_t, SignerInfos *, size_t *); |
| 444 | ASN1EXP int ASN1CALL encode_SignerInfos(unsigned char *, size_t, const SignerInfos *, size_t *); |
| 445 | ASN1EXP size_t ASN1CALL length_SignerInfos(const SignerInfos *); |
| 446 | ASN1EXP int ASN1CALL copy_SignerInfos (const SignerInfos *, SignerInfos *); |
| 447 | ASN1EXP void ASN1CALL free_SignerInfos (SignerInfos *); |
| 448 | |
| 449 | |
| 450 | /* |
| 451 | SignedData ::= SEQUENCE { |
| 452 | version CMSVersion, |
| 453 | digestAlgorithms DigestAlgorithmIdentifiers, |
| 454 | encapContentInfo EncapsulatedContentInfo, |
| 455 | certificates [0] IMPLICIT SET OF heim_any OPTIONAL, |
| 456 | crls [1] IMPLICIT heim_any OPTIONAL, |
| 457 | signerInfos SignerInfos, |
| 458 | } |
| 459 | */ |
| 460 | |
| 461 | typedef struct SignedData { |
| 462 | CMSVersion version; |
| 463 | DigestAlgorithmIdentifiers digestAlgorithms; |
| 464 | EncapsulatedContentInfo encapContentInfo; |
| 465 | struct SignedData_certificates { |
| 466 | unsigned int len; |
| 467 | heim_any *val; |
| 468 | } *certificates; |
| 469 | heim_any *crls; |
| 470 | SignerInfos signerInfos; |
| 471 | } SignedData; |
| 472 | |
| 473 | ASN1EXP int ASN1CALL decode_SignedData(const unsigned char *, size_t, SignedData *, size_t *); |
| 474 | ASN1EXP int ASN1CALL encode_SignedData(unsigned char *, size_t, const SignedData *, size_t *); |
| 475 | ASN1EXP size_t ASN1CALL length_SignedData(const SignedData *); |
| 476 | ASN1EXP int ASN1CALL copy_SignedData (const SignedData *, SignedData *); |
| 477 | ASN1EXP void ASN1CALL free_SignedData (SignedData *); |
| 478 | |
| 479 | |
| 480 | /* |
| 481 | OriginatorInfo ::= SEQUENCE { |
| 482 | certs [0] IMPLICIT SET OF heim_any OPTIONAL, |
| 483 | crls [1] IMPLICIT heim_any OPTIONAL, |
| 484 | } |
| 485 | */ |
| 486 | |
| 487 | typedef struct OriginatorInfo { |
| 488 | struct OriginatorInfo_certs { |
| 489 | unsigned int len; |
| 490 | heim_any *val; |
| 491 | } *certs; |
| 492 | heim_any *crls; |
| 493 | } OriginatorInfo; |
| 494 | |
| 495 | ASN1EXP int ASN1CALL decode_OriginatorInfo(const unsigned char *, size_t, OriginatorInfo *, size_t *); |
| 496 | ASN1EXP int ASN1CALL encode_OriginatorInfo(unsigned char *, size_t, const OriginatorInfo *, size_t *); |
| 497 | ASN1EXP size_t ASN1CALL length_OriginatorInfo(const OriginatorInfo *); |
| 498 | ASN1EXP int ASN1CALL copy_OriginatorInfo (const OriginatorInfo *, OriginatorInfo *); |
| 499 | ASN1EXP void ASN1CALL free_OriginatorInfo (OriginatorInfo *); |
| 500 | |
| 501 | |
| 502 | /* |
| 503 | KeyEncryptionAlgorithmIdentifier ::= AlgorithmIdentifier |
| 504 | */ |
| 505 | |
| 506 | typedef AlgorithmIdentifier KeyEncryptionAlgorithmIdentifier; |
| 507 | |
| 508 | ASN1EXP int ASN1CALL decode_KeyEncryptionAlgorithmIdentifier(const unsigned char *, size_t, KeyEncryptionAlgorithmIdentifier *, size_t *); |
| 509 | ASN1EXP int ASN1CALL encode_KeyEncryptionAlgorithmIdentifier(unsigned char *, size_t, const KeyEncryptionAlgorithmIdentifier *, size_t *); |
| 510 | ASN1EXP size_t ASN1CALL length_KeyEncryptionAlgorithmIdentifier(const KeyEncryptionAlgorithmIdentifier *); |
| 511 | ASN1EXP int ASN1CALL copy_KeyEncryptionAlgorithmIdentifier (const KeyEncryptionAlgorithmIdentifier *, KeyEncryptionAlgorithmIdentifier *); |
| 512 | ASN1EXP void ASN1CALL free_KeyEncryptionAlgorithmIdentifier (KeyEncryptionAlgorithmIdentifier *); |
| 513 | |
| 514 | |
| 515 | /* |
| 516 | ContentEncryptionAlgorithmIdentifier ::= AlgorithmIdentifier |
| 517 | */ |
| 518 | |
| 519 | typedef AlgorithmIdentifier ContentEncryptionAlgorithmIdentifier; |
| 520 | |
| 521 | ASN1EXP int ASN1CALL decode_ContentEncryptionAlgorithmIdentifier(const unsigned char *, size_t, ContentEncryptionAlgorithmIdentifier *, size_t *); |
| 522 | ASN1EXP int ASN1CALL encode_ContentEncryptionAlgorithmIdentifier(unsigned char *, size_t, const ContentEncryptionAlgorithmIdentifier *, size_t *); |
| 523 | ASN1EXP size_t ASN1CALL length_ContentEncryptionAlgorithmIdentifier(const ContentEncryptionAlgorithmIdentifier *); |
| 524 | ASN1EXP int ASN1CALL copy_ContentEncryptionAlgorithmIdentifier (const ContentEncryptionAlgorithmIdentifier *, ContentEncryptionAlgorithmIdentifier *); |
| 525 | ASN1EXP void ASN1CALL free_ContentEncryptionAlgorithmIdentifier (ContentEncryptionAlgorithmIdentifier *); |
| 526 | |
| 527 | |
| 528 | /* |
| 529 | EncryptedKey ::= OCTET STRING |
| 530 | */ |
| 531 | |
| 532 | typedef heim_octet_string EncryptedKey; |
| 533 | |
| 534 | ASN1EXP int ASN1CALL decode_EncryptedKey(const unsigned char *, size_t, EncryptedKey *, size_t *); |
| 535 | ASN1EXP int ASN1CALL encode_EncryptedKey(unsigned char *, size_t, const EncryptedKey *, size_t *); |
| 536 | ASN1EXP size_t ASN1CALL length_EncryptedKey(const EncryptedKey *); |
| 537 | ASN1EXP int ASN1CALL copy_EncryptedKey (const EncryptedKey *, EncryptedKey *); |
| 538 | ASN1EXP void ASN1CALL free_EncryptedKey (EncryptedKey *); |
| 539 | |
| 540 | |
| 541 | /* |
| 542 | KeyTransRecipientInfo ::= SEQUENCE { |
| 543 | version CMSVersion, |
| 544 | rid RecipientIdentifier, |
| 545 | keyEncryptionAlgorithm KeyEncryptionAlgorithmIdentifier, |
| 546 | encryptedKey EncryptedKey, |
| 547 | } |
| 548 | */ |
| 549 | |
| 550 | typedef struct KeyTransRecipientInfo { |
| 551 | CMSVersion version; |
| 552 | RecipientIdentifier rid; |
| 553 | KeyEncryptionAlgorithmIdentifier keyEncryptionAlgorithm; |
| 554 | EncryptedKey encryptedKey; |
| 555 | } KeyTransRecipientInfo; |
| 556 | |
| 557 | ASN1EXP int ASN1CALL decode_KeyTransRecipientInfo(const unsigned char *, size_t, KeyTransRecipientInfo *, size_t *); |
| 558 | ASN1EXP int ASN1CALL encode_KeyTransRecipientInfo(unsigned char *, size_t, const KeyTransRecipientInfo *, size_t *); |
| 559 | ASN1EXP size_t ASN1CALL length_KeyTransRecipientInfo(const KeyTransRecipientInfo *); |
| 560 | ASN1EXP int ASN1CALL copy_KeyTransRecipientInfo (const KeyTransRecipientInfo *, KeyTransRecipientInfo *); |
| 561 | ASN1EXP void ASN1CALL free_KeyTransRecipientInfo (KeyTransRecipientInfo *); |
| 562 | |
| 563 | |
| 564 | /* |
| 565 | RecipientInfo ::= KeyTransRecipientInfo |
| 566 | */ |
| 567 | |
| 568 | typedef KeyTransRecipientInfo RecipientInfo; |
| 569 | |
| 570 | ASN1EXP int ASN1CALL decode_RecipientInfo(const unsigned char *, size_t, RecipientInfo *, size_t *); |
| 571 | ASN1EXP int ASN1CALL encode_RecipientInfo(unsigned char *, size_t, const RecipientInfo *, size_t *); |
| 572 | ASN1EXP size_t ASN1CALL length_RecipientInfo(const RecipientInfo *); |
| 573 | ASN1EXP int ASN1CALL copy_RecipientInfo (const RecipientInfo *, RecipientInfo *); |
| 574 | ASN1EXP void ASN1CALL free_RecipientInfo (RecipientInfo *); |
| 575 | |
| 576 | |
| 577 | /* |
| 578 | RecipientInfos ::= SET OF RecipientInfo |
| 579 | */ |
| 580 | |
| 581 | typedef struct RecipientInfos { |
| 582 | unsigned int len; |
| 583 | RecipientInfo *val; |
| 584 | } RecipientInfos; |
| 585 | |
| 586 | ASN1EXP int ASN1CALL decode_RecipientInfos(const unsigned char *, size_t, RecipientInfos *, size_t *); |
| 587 | ASN1EXP int ASN1CALL encode_RecipientInfos(unsigned char *, size_t, const RecipientInfos *, size_t *); |
| 588 | ASN1EXP size_t ASN1CALL length_RecipientInfos(const RecipientInfos *); |
| 589 | ASN1EXP int ASN1CALL copy_RecipientInfos (const RecipientInfos *, RecipientInfos *); |
| 590 | ASN1EXP void ASN1CALL free_RecipientInfos (RecipientInfos *); |
| 591 | |
| 592 | |
| 593 | /* |
| 594 | EncryptedContent ::= OCTET STRING |
| 595 | */ |
| 596 | |
| 597 | typedef heim_octet_string EncryptedContent; |
| 598 | |
| 599 | ASN1EXP int ASN1CALL decode_EncryptedContent(const unsigned char *, size_t, EncryptedContent *, size_t *); |
| 600 | ASN1EXP int ASN1CALL encode_EncryptedContent(unsigned char *, size_t, const EncryptedContent *, size_t *); |
| 601 | ASN1EXP size_t ASN1CALL length_EncryptedContent(const EncryptedContent *); |
| 602 | ASN1EXP int ASN1CALL copy_EncryptedContent (const EncryptedContent *, EncryptedContent *); |
| 603 | ASN1EXP void ASN1CALL free_EncryptedContent (EncryptedContent *); |
| 604 | |
| 605 | |
| 606 | /* |
| 607 | EncryptedContentInfo ::= SEQUENCE { |
| 608 | contentType ContentType, |
| 609 | contentEncryptionAlgorithm ContentEncryptionAlgorithmIdentifier, |
| 610 | encryptedContent [0] IMPLICIT OCTET STRING OPTIONAL, |
| 611 | } |
| 612 | */ |
| 613 | |
| 614 | typedef struct EncryptedContentInfo { |
| 615 | ContentType contentType; |
| 616 | ContentEncryptionAlgorithmIdentifier contentEncryptionAlgorithm; |
| 617 | heim_octet_string *encryptedContent; |
| 618 | } EncryptedContentInfo; |
| 619 | |
| 620 | ASN1EXP int ASN1CALL decode_EncryptedContentInfo(const unsigned char *, size_t, EncryptedContentInfo *, size_t *); |
| 621 | ASN1EXP int ASN1CALL encode_EncryptedContentInfo(unsigned char *, size_t, const EncryptedContentInfo *, size_t *); |
| 622 | ASN1EXP size_t ASN1CALL length_EncryptedContentInfo(const EncryptedContentInfo *); |
| 623 | ASN1EXP int ASN1CALL copy_EncryptedContentInfo (const EncryptedContentInfo *, EncryptedContentInfo *); |
| 624 | ASN1EXP void ASN1CALL free_EncryptedContentInfo (EncryptedContentInfo *); |
| 625 | |
| 626 | |
| 627 | /* |
| 628 | UnprotectedAttributes ::= SET OF Attribute |
| 629 | */ |
| 630 | |
| 631 | typedef struct UnprotectedAttributes { |
| 632 | unsigned int len; |
| 633 | Attribute *val; |
| 634 | } UnprotectedAttributes; |
| 635 | |
| 636 | ASN1EXP int ASN1CALL decode_UnprotectedAttributes(const unsigned char *, size_t, UnprotectedAttributes *, size_t *); |
| 637 | ASN1EXP int ASN1CALL encode_UnprotectedAttributes(unsigned char *, size_t, const UnprotectedAttributes *, size_t *); |
| 638 | ASN1EXP size_t ASN1CALL length_UnprotectedAttributes(const UnprotectedAttributes *); |
| 639 | ASN1EXP int ASN1CALL copy_UnprotectedAttributes (const UnprotectedAttributes *, UnprotectedAttributes *); |
| 640 | ASN1EXP void ASN1CALL free_UnprotectedAttributes (UnprotectedAttributes *); |
| 641 | |
| 642 | |
| 643 | /* |
| 644 | CMSEncryptedData ::= SEQUENCE { |
| 645 | version CMSVersion, |
| 646 | encryptedContentInfo EncryptedContentInfo, |
| 647 | unprotectedAttrs [1] IMPLICIT heim_any OPTIONAL, |
| 648 | } |
| 649 | */ |
| 650 | |
| 651 | typedef struct CMSEncryptedData { |
| 652 | CMSVersion version; |
| 653 | EncryptedContentInfo encryptedContentInfo; |
| 654 | heim_any *unprotectedAttrs; |
| 655 | } CMSEncryptedData; |
| 656 | |
| 657 | ASN1EXP int ASN1CALL decode_CMSEncryptedData(const unsigned char *, size_t, CMSEncryptedData *, size_t *); |
| 658 | ASN1EXP int ASN1CALL encode_CMSEncryptedData(unsigned char *, size_t, const CMSEncryptedData *, size_t *); |
| 659 | ASN1EXP size_t ASN1CALL length_CMSEncryptedData(const CMSEncryptedData *); |
| 660 | ASN1EXP int ASN1CALL copy_CMSEncryptedData (const CMSEncryptedData *, CMSEncryptedData *); |
| 661 | ASN1EXP void ASN1CALL free_CMSEncryptedData (CMSEncryptedData *); |
| 662 | |
| 663 | |
| 664 | /* |
| 665 | EnvelopedData ::= SEQUENCE { |
| 666 | version CMSVersion, |
| 667 | originatorInfo [0] IMPLICIT heim_any OPTIONAL, |
| 668 | recipientInfos RecipientInfos, |
| 669 | encryptedContentInfo EncryptedContentInfo, |
| 670 | unprotectedAttrs [1] IMPLICIT heim_any OPTIONAL, |
| 671 | } |
| 672 | */ |
| 673 | |
| 674 | typedef struct EnvelopedData { |
| 675 | CMSVersion version; |
| 676 | heim_any *originatorInfo; |
| 677 | RecipientInfos recipientInfos; |
| 678 | EncryptedContentInfo encryptedContentInfo; |
| 679 | heim_any *unprotectedAttrs; |
| 680 | } EnvelopedData; |
| 681 | |
| 682 | ASN1EXP int ASN1CALL decode_EnvelopedData(const unsigned char *, size_t, EnvelopedData *, size_t *); |
| 683 | ASN1EXP int ASN1CALL encode_EnvelopedData(unsigned char *, size_t, const EnvelopedData *, size_t *); |
| 684 | ASN1EXP size_t ASN1CALL length_EnvelopedData(const EnvelopedData *); |
| 685 | ASN1EXP int ASN1CALL copy_EnvelopedData (const EnvelopedData *, EnvelopedData *); |
| 686 | ASN1EXP void ASN1CALL free_EnvelopedData (EnvelopedData *); |
| 687 | |
| 688 | |
| 689 | /* |
| 690 | CMSRC2CBCParameter ::= SEQUENCE { |
| 691 | rc2ParameterVersion INTEGER (0..4294967295), |
| 692 | iv OCTET STRING, |
| 693 | } |
| 694 | */ |
| 695 | |
| 696 | typedef struct CMSRC2CBCParameter { |
| 697 | unsigned int rc2ParameterVersion; |
| 698 | heim_octet_string iv; |
| 699 | } CMSRC2CBCParameter; |
| 700 | |
| 701 | ASN1EXP int ASN1CALL decode_CMSRC2CBCParameter(const unsigned char *, size_t, CMSRC2CBCParameter *, size_t *); |
| 702 | ASN1EXP int ASN1CALL encode_CMSRC2CBCParameter(unsigned char *, size_t, const CMSRC2CBCParameter *, size_t *); |
| 703 | ASN1EXP size_t ASN1CALL length_CMSRC2CBCParameter(const CMSRC2CBCParameter *); |
| 704 | ASN1EXP int ASN1CALL copy_CMSRC2CBCParameter (const CMSRC2CBCParameter *, CMSRC2CBCParameter *); |
| 705 | ASN1EXP void ASN1CALL free_CMSRC2CBCParameter (CMSRC2CBCParameter *); |
| 706 | |
| 707 | |
| 708 | /* |
| 709 | CMSCBCParameter ::= OCTET STRING |
| 710 | */ |
| 711 | |
| 712 | typedef heim_octet_string CMSCBCParameter; |
| 713 | |
| 714 | ASN1EXP int ASN1CALL decode_CMSCBCParameter(const unsigned char *, size_t, CMSCBCParameter *, size_t *); |
| 715 | ASN1EXP int ASN1CALL encode_CMSCBCParameter(unsigned char *, size_t, const CMSCBCParameter *, size_t *); |
| 716 | ASN1EXP size_t ASN1CALL length_CMSCBCParameter(const CMSCBCParameter *); |
| 717 | ASN1EXP int ASN1CALL copy_CMSCBCParameter (const CMSCBCParameter *, CMSCBCParameter *); |
| 718 | ASN1EXP void ASN1CALL free_CMSCBCParameter (CMSCBCParameter *); |
| 719 | |
| 720 | |
| 721 | #endif /* __cms_asn1_h__ */ |
| 722 | |