| 1 | /* Generated from pkinit.asn1 */ | 
| 2 | /* Do not edit */ | 
| 3 |  | 
| 4 | #ifndef __pkinit_asn1_h__ | 
| 5 | #define __pkinit_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/krb5_asn1.h> | 
| 93 | #include <krb5/cms_asn1.h> | 
| 94 | #include <krb5/rfc2459_asn1.h> | 
| 95 | #include <krb5/heim_asn1.h> | 
| 96 | /* OBJECT IDENTIFIER id-pkinit ::= { iso(1) org(3) dod(6) internet(1) security(5) kerberosv5(2) pkinit(3) } */ | 
| 97 | extern ASN1EXP const heim_oid asn1_oid_id_pkinit; | 
| 98 | #define ASN1_OID_ID_PKINIT (&asn1_oid_id_pkinit) | 
| 99 |  | 
| 100 | /* OBJECT IDENTIFIER id-pkauthdata ::= { iso(1) org(3) dod(6) internet(1) security(5) kerberosv5(2) pkinit(3) label-less(1) } */ | 
| 101 | extern ASN1EXP const heim_oid asn1_oid_id_pkauthdata; | 
| 102 | #define ASN1_OID_ID_PKAUTHDATA (&asn1_oid_id_pkauthdata) | 
| 103 |  | 
| 104 | /* OBJECT IDENTIFIER id-pkdhkeydata ::= { iso(1) org(3) dod(6) internet(1) security(5) kerberosv5(2) pkinit(3) label-less(2) } */ | 
| 105 | extern ASN1EXP const heim_oid asn1_oid_id_pkdhkeydata; | 
| 106 | #define ASN1_OID_ID_PKDHKEYDATA (&asn1_oid_id_pkdhkeydata) | 
| 107 |  | 
| 108 | /* OBJECT IDENTIFIER id-pkrkeydata ::= { iso(1) org(3) dod(6) internet(1) security(5) kerberosv5(2) pkinit(3) label-less(3) } */ | 
| 109 | extern ASN1EXP const heim_oid asn1_oid_id_pkrkeydata; | 
| 110 | #define ASN1_OID_ID_PKRKEYDATA (&asn1_oid_id_pkrkeydata) | 
| 111 |  | 
| 112 | /* OBJECT IDENTIFIER id-pkekuoid ::= { iso(1) org(3) dod(6) internet(1) security(5) kerberosv5(2) pkinit(3) label-less(4) } */ | 
| 113 | extern ASN1EXP const heim_oid asn1_oid_id_pkekuoid; | 
| 114 | #define ASN1_OID_ID_PKEKUOID (&asn1_oid_id_pkekuoid) | 
| 115 |  | 
| 116 | /* OBJECT IDENTIFIER id-pkkdcekuoid ::= { iso(1) org(3) dod(6) internet(1) security(5) kerberosv5(2) pkinit(3) label-less(5) } */ | 
| 117 | extern ASN1EXP const heim_oid asn1_oid_id_pkkdcekuoid; | 
| 118 | #define ASN1_OID_ID_PKKDCEKUOID (&asn1_oid_id_pkkdcekuoid) | 
| 119 |  | 
| 120 | /* OBJECT IDENTIFIER id-apple-system-id ::= { label-less(1) label-less(2) label-less(840) label-less(113635) label-less(100) label-less(4) label-less(4) } */ | 
| 121 | extern ASN1EXP const heim_oid asn1_oid_id_apple_system_id; | 
| 122 | #define ASN1_OID_ID_APPLE_SYSTEM_ID (&asn1_oid_id_apple_system_id) | 
| 123 |  | 
| 124 | /* OBJECT IDENTIFIER id-pkinit-kdf ::= { iso(1) org(3) dod(6) internet(1) security(5) kerberosv5(2) pkinit(3) label-less(6) } */ | 
| 125 | extern ASN1EXP const heim_oid asn1_oid_id_pkinit_kdf; | 
| 126 | #define ASN1_OID_ID_PKINIT_KDF (&asn1_oid_id_pkinit_kdf) | 
| 127 |  | 
| 128 | /* OBJECT IDENTIFIER id-pkinit-kdf-ah-sha1 ::= { iso(1) org(3) dod(6) internet(1) security(5) kerberosv5(2) pkinit(3) label-less(6) label-less(1) } */ | 
| 129 | extern ASN1EXP const heim_oid asn1_oid_id_pkinit_kdf_ah_sha1; | 
| 130 | #define ASN1_OID_ID_PKINIT_KDF_AH_SHA1 (&asn1_oid_id_pkinit_kdf_ah_sha1) | 
| 131 |  | 
| 132 | /* OBJECT IDENTIFIER id-pkinit-kdf-ah-sha256 ::= { iso(1) org(3) dod(6) internet(1) security(5) kerberosv5(2) pkinit(3) label-less(6) label-less(2) } */ | 
| 133 | extern ASN1EXP const heim_oid asn1_oid_id_pkinit_kdf_ah_sha256; | 
| 134 | #define ASN1_OID_ID_PKINIT_KDF_AH_SHA256 (&asn1_oid_id_pkinit_kdf_ah_sha256) | 
| 135 |  | 
| 136 | /* OBJECT IDENTIFIER id-pkinit-kdf-ah-sha512 ::= { iso(1) org(3) dod(6) internet(1) security(5) kerberosv5(2) pkinit(3) label-less(6) label-less(3) } */ | 
| 137 | extern ASN1EXP const heim_oid asn1_oid_id_pkinit_kdf_ah_sha512; | 
| 138 | #define ASN1_OID_ID_PKINIT_KDF_AH_SHA512 (&asn1_oid_id_pkinit_kdf_ah_sha512) | 
| 139 |  | 
| 140 | /* OBJECT IDENTIFIER id-pkinit-san ::= { iso(1) org(3) dod(6) internet(1) security(5) kerberosv5(2) x509-sanan(2) } */ | 
| 141 | extern ASN1EXP const heim_oid asn1_oid_id_pkinit_san; | 
| 142 | #define ASN1_OID_ID_PKINIT_SAN (&asn1_oid_id_pkinit_san) | 
| 143 |  | 
| 144 | /* OBJECT IDENTIFIER id-pkinit-ms-eku ::= { iso(1) org(3) dod(6) internet(1) private(4) enterprise(1) microsoft(311) label-less(20) label-less(2) label-less(2) } */ | 
| 145 | extern ASN1EXP const heim_oid asn1_oid_id_pkinit_ms_eku; | 
| 146 | #define ASN1_OID_ID_PKINIT_MS_EKU (&asn1_oid_id_pkinit_ms_eku) | 
| 147 |  | 
| 148 | /* OBJECT IDENTIFIER id-pkinit-ms-san ::= { iso(1) org(3) dod(6) internet(1) private(4) enterprise(1) microsoft(311) label-less(20) label-less(2) label-less(3) } */ | 
| 149 | extern ASN1EXP const heim_oid asn1_oid_id_pkinit_ms_san; | 
| 150 | #define ASN1_OID_ID_PKINIT_MS_SAN (&asn1_oid_id_pkinit_ms_san) | 
| 151 |  | 
| 152 | /* | 
| 153 | MS-UPN-SAN ::= UTF8String | 
| 154 | */ | 
| 155 |  | 
| 156 | typedef heim_utf8_string MS_UPN_SAN; | 
| 157 |  | 
| 158 | ASN1EXP int    ASN1CALL decode_MS_UPN_SAN(const unsigned char *, size_t, MS_UPN_SAN *, size_t *); | 
| 159 | ASN1EXP int    ASN1CALL encode_MS_UPN_SAN(unsigned char *, size_t, const MS_UPN_SAN *, size_t *); | 
| 160 | ASN1EXP size_t ASN1CALL length_MS_UPN_SAN(const MS_UPN_SAN *); | 
| 161 | ASN1EXP int    ASN1CALL copy_MS_UPN_SAN  (const MS_UPN_SAN *, MS_UPN_SAN *); | 
| 162 | ASN1EXP void   ASN1CALL free_MS_UPN_SAN  (MS_UPN_SAN *); | 
| 163 |  | 
| 164 |  | 
| 165 | enum { pa_pk_as_req = 16 }; | 
| 166 |  | 
| 167 | enum { pa_pk_as_rep = 17 }; | 
| 168 |  | 
| 169 | enum { td_trusted_certifiers = 104 }; | 
| 170 |  | 
| 171 | enum { td_invalid_certificates = 105 }; | 
| 172 |  | 
| 173 | enum { td_dh_parameters = 109 }; | 
| 174 |  | 
| 175 | /* | 
| 176 | DHNonce ::= OCTET STRING | 
| 177 | */ | 
| 178 |  | 
| 179 | typedef heim_octet_string DHNonce; | 
| 180 |  | 
| 181 | ASN1EXP int    ASN1CALL decode_DHNonce(const unsigned char *, size_t, DHNonce *, size_t *); | 
| 182 | ASN1EXP int    ASN1CALL encode_DHNonce(unsigned char *, size_t, const DHNonce *, size_t *); | 
| 183 | ASN1EXP size_t ASN1CALL length_DHNonce(const DHNonce *); | 
| 184 | ASN1EXP int    ASN1CALL copy_DHNonce  (const DHNonce *, DHNonce *); | 
| 185 | ASN1EXP void   ASN1CALL free_DHNonce  (DHNonce *); | 
| 186 |  | 
| 187 |  | 
| 188 | /* | 
| 189 | KDFAlgorithmId ::= SEQUENCE { | 
| 190 |   kdf-id          [0]   OBJECT IDENTIFIER, | 
| 191 |   ..., | 
| 192 | } | 
| 193 | */ | 
| 194 |  | 
| 195 | typedef struct KDFAlgorithmId { | 
| 196 |   heim_oid kdf_id; | 
| 197 | } KDFAlgorithmId; | 
| 198 |  | 
| 199 | ASN1EXP int    ASN1CALL decode_KDFAlgorithmId(const unsigned char *, size_t, KDFAlgorithmId *, size_t *); | 
| 200 | ASN1EXP int    ASN1CALL encode_KDFAlgorithmId(unsigned char *, size_t, const KDFAlgorithmId *, size_t *); | 
| 201 | ASN1EXP size_t ASN1CALL length_KDFAlgorithmId(const KDFAlgorithmId *); | 
| 202 | ASN1EXP int    ASN1CALL copy_KDFAlgorithmId  (const KDFAlgorithmId *, KDFAlgorithmId *); | 
| 203 | ASN1EXP void   ASN1CALL free_KDFAlgorithmId  (KDFAlgorithmId *); | 
| 204 |  | 
| 205 |  | 
| 206 | /* | 
| 207 | TrustedCA ::= SEQUENCE { | 
| 208 |   caName                    [0] IMPLICIT OCTET STRING, | 
| 209 |   certificateSerialNumber   [1] INTEGER OPTIONAL, | 
| 210 |   subjectKeyIdentifier      [2] OCTET STRING OPTIONAL, | 
| 211 |   ..., | 
| 212 | } | 
| 213 | */ | 
| 214 |  | 
| 215 | typedef struct TrustedCA { | 
| 216 |   heim_octet_string caName; | 
| 217 |   heim_integer *certificateSerialNumber; | 
| 218 |   heim_octet_string *subjectKeyIdentifier; | 
| 219 | } TrustedCA; | 
| 220 |  | 
| 221 | ASN1EXP int    ASN1CALL decode_TrustedCA(const unsigned char *, size_t, TrustedCA *, size_t *); | 
| 222 | ASN1EXP int    ASN1CALL encode_TrustedCA(unsigned char *, size_t, const TrustedCA *, size_t *); | 
| 223 | ASN1EXP size_t ASN1CALL length_TrustedCA(const TrustedCA *); | 
| 224 | ASN1EXP int    ASN1CALL copy_TrustedCA  (const TrustedCA *, TrustedCA *); | 
| 225 | ASN1EXP void   ASN1CALL free_TrustedCA  (TrustedCA *); | 
| 226 |  | 
| 227 |  | 
| 228 | /* | 
| 229 | ExternalPrincipalIdentifier ::= SEQUENCE { | 
| 230 |   subjectName             [0] IMPLICIT OCTET STRING OPTIONAL, | 
| 231 |   issuerAndSerialNumber   [1] IMPLICIT OCTET STRING OPTIONAL, | 
| 232 |   subjectKeyIdentifier    [2] IMPLICIT OCTET STRING OPTIONAL, | 
| 233 |   ..., | 
| 234 | } | 
| 235 | */ | 
| 236 |  | 
| 237 | typedef struct ExternalPrincipalIdentifier { | 
| 238 |   heim_octet_string *subjectName; | 
| 239 |   heim_octet_string *issuerAndSerialNumber; | 
| 240 |   heim_octet_string *subjectKeyIdentifier; | 
| 241 | } ExternalPrincipalIdentifier; | 
| 242 |  | 
| 243 | ASN1EXP int    ASN1CALL decode_ExternalPrincipalIdentifier(const unsigned char *, size_t, ExternalPrincipalIdentifier *, size_t *); | 
| 244 | ASN1EXP int    ASN1CALL encode_ExternalPrincipalIdentifier(unsigned char *, size_t, const ExternalPrincipalIdentifier *, size_t *); | 
| 245 | ASN1EXP size_t ASN1CALL length_ExternalPrincipalIdentifier(const ExternalPrincipalIdentifier *); | 
| 246 | ASN1EXP int    ASN1CALL copy_ExternalPrincipalIdentifier  (const ExternalPrincipalIdentifier *, ExternalPrincipalIdentifier *); | 
| 247 | ASN1EXP void   ASN1CALL free_ExternalPrincipalIdentifier  (ExternalPrincipalIdentifier *); | 
| 248 |  | 
| 249 |  | 
| 250 | /* | 
| 251 | ExternalPrincipalIdentifiers ::= SEQUENCE OF ExternalPrincipalIdentifier | 
| 252 | */ | 
| 253 |  | 
| 254 | typedef struct ExternalPrincipalIdentifiers { | 
| 255 |   unsigned int len; | 
| 256 |   ExternalPrincipalIdentifier *val; | 
| 257 | } ExternalPrincipalIdentifiers; | 
| 258 |  | 
| 259 | ASN1EXP int    ASN1CALL decode_ExternalPrincipalIdentifiers(const unsigned char *, size_t, ExternalPrincipalIdentifiers *, size_t *); | 
| 260 | ASN1EXP int    ASN1CALL encode_ExternalPrincipalIdentifiers(unsigned char *, size_t, const ExternalPrincipalIdentifiers *, size_t *); | 
| 261 | ASN1EXP size_t ASN1CALL length_ExternalPrincipalIdentifiers(const ExternalPrincipalIdentifiers *); | 
| 262 | ASN1EXP int    ASN1CALL copy_ExternalPrincipalIdentifiers  (const ExternalPrincipalIdentifiers *, ExternalPrincipalIdentifiers *); | 
| 263 | ASN1EXP void   ASN1CALL free_ExternalPrincipalIdentifiers  (ExternalPrincipalIdentifiers *); | 
| 264 |  | 
| 265 |  | 
| 266 | /* | 
| 267 | PA-PK-AS-REQ ::= SEQUENCE { | 
| 268 |   signedAuthPack      [0] IMPLICIT OCTET STRING, | 
| 269 |   trustedCertifiers   [1] ExternalPrincipalIdentifiers OPTIONAL, | 
| 270 |   kdcPkId             [2] IMPLICIT OCTET STRING OPTIONAL, | 
| 271 |   ..., | 
| 272 | } | 
| 273 | */ | 
| 274 |  | 
| 275 | typedef struct PA_PK_AS_REQ { | 
| 276 |   heim_octet_string signedAuthPack; | 
| 277 |   ExternalPrincipalIdentifiers *trustedCertifiers; | 
| 278 |   heim_octet_string *kdcPkId; | 
| 279 | } PA_PK_AS_REQ; | 
| 280 |  | 
| 281 | ASN1EXP int    ASN1CALL decode_PA_PK_AS_REQ(const unsigned char *, size_t, PA_PK_AS_REQ *, size_t *); | 
| 282 | ASN1EXP int    ASN1CALL encode_PA_PK_AS_REQ(unsigned char *, size_t, const PA_PK_AS_REQ *, size_t *); | 
| 283 | ASN1EXP size_t ASN1CALL length_PA_PK_AS_REQ(const PA_PK_AS_REQ *); | 
| 284 | ASN1EXP int    ASN1CALL copy_PA_PK_AS_REQ  (const PA_PK_AS_REQ *, PA_PK_AS_REQ *); | 
| 285 | ASN1EXP void   ASN1CALL free_PA_PK_AS_REQ  (PA_PK_AS_REQ *); | 
| 286 |  | 
| 287 |  | 
| 288 | /* | 
| 289 | PKAuthenticator ::= SEQUENCE { | 
| 290 |   cusec           [0] INTEGER, | 
| 291 |   ctime           [1] KerberosTime, | 
| 292 |   nonce           [2] INTEGER (0..4294967295), | 
| 293 |   paChecksum      [3] OCTET STRING OPTIONAL, | 
| 294 |   ..., | 
| 295 | } | 
| 296 | */ | 
| 297 |  | 
| 298 | typedef struct PKAuthenticator { | 
| 299 |   heim_integer cusec; | 
| 300 |   KerberosTime ctime; | 
| 301 |   unsigned int nonce; | 
| 302 |   heim_octet_string *paChecksum; | 
| 303 | } PKAuthenticator; | 
| 304 |  | 
| 305 | ASN1EXP int    ASN1CALL decode_PKAuthenticator(const unsigned char *, size_t, PKAuthenticator *, size_t *); | 
| 306 | ASN1EXP int    ASN1CALL encode_PKAuthenticator(unsigned char *, size_t, const PKAuthenticator *, size_t *); | 
| 307 | ASN1EXP size_t ASN1CALL length_PKAuthenticator(const PKAuthenticator *); | 
| 308 | ASN1EXP int    ASN1CALL copy_PKAuthenticator  (const PKAuthenticator *, PKAuthenticator *); | 
| 309 | ASN1EXP void   ASN1CALL free_PKAuthenticator  (PKAuthenticator *); | 
| 310 |  | 
| 311 |  | 
| 312 | /* | 
| 313 | AuthPack ::= SEQUENCE { | 
| 314 |   pkAuthenticator     [0] PKAuthenticator, | 
| 315 |   clientPublicValue   [1] SubjectPublicKeyInfo OPTIONAL, | 
| 316 |   supportedCMSTypes   [2] SEQUENCE OF AlgorithmIdentifier OPTIONAL, | 
| 317 |   clientDHNonce       [3] DHNonce OPTIONAL, | 
| 318 |   ..., | 
| 319 |   supportedKDFs       [4] SEQUENCE OF KDFAlgorithmId OPTIONAL, | 
| 320 |   ..., | 
| 321 | } | 
| 322 | */ | 
| 323 |  | 
| 324 | typedef struct AuthPack { | 
| 325 |   PKAuthenticator pkAuthenticator; | 
| 326 |   SubjectPublicKeyInfo *clientPublicValue; | 
| 327 |   struct AuthPack_supportedCMSTypes { | 
| 328 |     unsigned int len; | 
| 329 |     AlgorithmIdentifier *val; | 
| 330 |   } *supportedCMSTypes; | 
| 331 |   DHNonce *clientDHNonce; | 
| 332 |   struct AuthPack_supportedKDFs { | 
| 333 |     unsigned int len; | 
| 334 |     KDFAlgorithmId *val; | 
| 335 |   } *supportedKDFs; | 
| 336 | } AuthPack; | 
| 337 |  | 
| 338 | ASN1EXP int    ASN1CALL decode_AuthPack(const unsigned char *, size_t, AuthPack *, size_t *); | 
| 339 | ASN1EXP int    ASN1CALL encode_AuthPack(unsigned char *, size_t, const AuthPack *, size_t *); | 
| 340 | ASN1EXP size_t ASN1CALL length_AuthPack(const AuthPack *); | 
| 341 | ASN1EXP int    ASN1CALL copy_AuthPack  (const AuthPack *, AuthPack *); | 
| 342 | ASN1EXP void   ASN1CALL free_AuthPack  (AuthPack *); | 
| 343 |  | 
| 344 |  | 
| 345 | /* | 
| 346 | TD-TRUSTED-CERTIFIERS ::= ExternalPrincipalIdentifiers | 
| 347 | */ | 
| 348 |  | 
| 349 | typedef ExternalPrincipalIdentifiers TD_TRUSTED_CERTIFIERS; | 
| 350 |  | 
| 351 | ASN1EXP int    ASN1CALL decode_TD_TRUSTED_CERTIFIERS(const unsigned char *, size_t, TD_TRUSTED_CERTIFIERS *, size_t *); | 
| 352 | ASN1EXP int    ASN1CALL encode_TD_TRUSTED_CERTIFIERS(unsigned char *, size_t, const TD_TRUSTED_CERTIFIERS *, size_t *); | 
| 353 | ASN1EXP size_t ASN1CALL length_TD_TRUSTED_CERTIFIERS(const TD_TRUSTED_CERTIFIERS *); | 
| 354 | ASN1EXP int    ASN1CALL copy_TD_TRUSTED_CERTIFIERS  (const TD_TRUSTED_CERTIFIERS *, TD_TRUSTED_CERTIFIERS *); | 
| 355 | ASN1EXP void   ASN1CALL free_TD_TRUSTED_CERTIFIERS  (TD_TRUSTED_CERTIFIERS *); | 
| 356 |  | 
| 357 |  | 
| 358 | /* | 
| 359 | TD-INVALID-CERTIFICATES ::= ExternalPrincipalIdentifiers | 
| 360 | */ | 
| 361 |  | 
| 362 | typedef ExternalPrincipalIdentifiers TD_INVALID_CERTIFICATES; | 
| 363 |  | 
| 364 | ASN1EXP int    ASN1CALL decode_TD_INVALID_CERTIFICATES(const unsigned char *, size_t, TD_INVALID_CERTIFICATES *, size_t *); | 
| 365 | ASN1EXP int    ASN1CALL encode_TD_INVALID_CERTIFICATES(unsigned char *, size_t, const TD_INVALID_CERTIFICATES *, size_t *); | 
| 366 | ASN1EXP size_t ASN1CALL length_TD_INVALID_CERTIFICATES(const TD_INVALID_CERTIFICATES *); | 
| 367 | ASN1EXP int    ASN1CALL copy_TD_INVALID_CERTIFICATES  (const TD_INVALID_CERTIFICATES *, TD_INVALID_CERTIFICATES *); | 
| 368 | ASN1EXP void   ASN1CALL free_TD_INVALID_CERTIFICATES  (TD_INVALID_CERTIFICATES *); | 
| 369 |  | 
| 370 |  | 
| 371 | /* | 
| 372 | KRB5PrincipalName ::= SEQUENCE { | 
| 373 |   realm           [0] Realm, | 
| 374 |   principalName   [1] PrincipalName, | 
| 375 | } | 
| 376 | */ | 
| 377 |  | 
| 378 | typedef struct KRB5PrincipalName { | 
| 379 |   Realm realm; | 
| 380 |   PrincipalName principalName; | 
| 381 | } KRB5PrincipalName; | 
| 382 |  | 
| 383 | ASN1EXP int    ASN1CALL decode_KRB5PrincipalName(const unsigned char *, size_t, KRB5PrincipalName *, size_t *); | 
| 384 | ASN1EXP int    ASN1CALL encode_KRB5PrincipalName(unsigned char *, size_t, const KRB5PrincipalName *, size_t *); | 
| 385 | ASN1EXP size_t ASN1CALL length_KRB5PrincipalName(const KRB5PrincipalName *); | 
| 386 | ASN1EXP int    ASN1CALL copy_KRB5PrincipalName  (const KRB5PrincipalName *, KRB5PrincipalName *); | 
| 387 | ASN1EXP void   ASN1CALL free_KRB5PrincipalName  (KRB5PrincipalName *); | 
| 388 |  | 
| 389 |  | 
| 390 | /* | 
| 391 | AD-INITIAL-VERIFIED-CAS ::= SEQUENCE OF ExternalPrincipalIdentifier | 
| 392 | */ | 
| 393 |  | 
| 394 | typedef struct AD_INITIAL_VERIFIED_CAS { | 
| 395 |   unsigned int len; | 
| 396 |   ExternalPrincipalIdentifier *val; | 
| 397 | } AD_INITIAL_VERIFIED_CAS; | 
| 398 |  | 
| 399 | ASN1EXP int    ASN1CALL decode_AD_INITIAL_VERIFIED_CAS(const unsigned char *, size_t, AD_INITIAL_VERIFIED_CAS *, size_t *); | 
| 400 | ASN1EXP int    ASN1CALL encode_AD_INITIAL_VERIFIED_CAS(unsigned char *, size_t, const AD_INITIAL_VERIFIED_CAS *, size_t *); | 
| 401 | ASN1EXP size_t ASN1CALL length_AD_INITIAL_VERIFIED_CAS(const AD_INITIAL_VERIFIED_CAS *); | 
| 402 | ASN1EXP int    ASN1CALL copy_AD_INITIAL_VERIFIED_CAS  (const AD_INITIAL_VERIFIED_CAS *, AD_INITIAL_VERIFIED_CAS *); | 
| 403 | ASN1EXP void   ASN1CALL free_AD_INITIAL_VERIFIED_CAS  (AD_INITIAL_VERIFIED_CAS *); | 
| 404 |  | 
| 405 |  | 
| 406 | /* | 
| 407 | DHRepInfo ::= SEQUENCE { | 
| 408 |   dhSignedData    [0] IMPLICIT OCTET STRING, | 
| 409 |   serverDHNonce   [1] DHNonce OPTIONAL, | 
| 410 |   ..., | 
| 411 |   kdf             [2] KDFAlgorithmId OPTIONAL, | 
| 412 |   ..., | 
| 413 | } | 
| 414 | */ | 
| 415 |  | 
| 416 | typedef struct DHRepInfo { | 
| 417 |   heim_octet_string dhSignedData; | 
| 418 |   DHNonce *serverDHNonce; | 
| 419 |   KDFAlgorithmId *kdf; | 
| 420 | } DHRepInfo; | 
| 421 |  | 
| 422 | ASN1EXP int    ASN1CALL decode_DHRepInfo(const unsigned char *, size_t, DHRepInfo *, size_t *); | 
| 423 | ASN1EXP int    ASN1CALL encode_DHRepInfo(unsigned char *, size_t, const DHRepInfo *, size_t *); | 
| 424 | ASN1EXP size_t ASN1CALL length_DHRepInfo(const DHRepInfo *); | 
| 425 | ASN1EXP int    ASN1CALL copy_DHRepInfo  (const DHRepInfo *, DHRepInfo *); | 
| 426 | ASN1EXP void   ASN1CALL free_DHRepInfo  (DHRepInfo *); | 
| 427 |  | 
| 428 |  | 
| 429 | /* | 
| 430 | PA-PK-AS-REP ::= CHOICE { | 
| 431 |   dhInfo          [0] DHRepInfo, | 
| 432 |   encKeyPack      [1] IMPLICIT OCTET STRING, | 
| 433 |   ..., | 
| 434 | } | 
| 435 | */ | 
| 436 |  | 
| 437 | typedef struct PA_PK_AS_REP { | 
| 438 |   enum PA_PK_AS_REP_enum { | 
| 439 |     choice_PA_PK_AS_REP_asn1_ellipsis = 0, | 
| 440 |     choice_PA_PK_AS_REP_dhInfo, | 
| 441 |     choice_PA_PK_AS_REP_encKeyPack | 
| 442 |     /* ... */ | 
| 443 |   } element; | 
| 444 |   union { | 
| 445 |     DHRepInfo dhInfo; | 
| 446 |     heim_octet_string encKeyPack; | 
| 447 |     heim_octet_string asn1_ellipsis; | 
| 448 |   } u; | 
| 449 | } PA_PK_AS_REP; | 
| 450 |  | 
| 451 | ASN1EXP int    ASN1CALL decode_PA_PK_AS_REP(const unsigned char *, size_t, PA_PK_AS_REP *, size_t *); | 
| 452 | ASN1EXP int    ASN1CALL encode_PA_PK_AS_REP(unsigned char *, size_t, const PA_PK_AS_REP *, size_t *); | 
| 453 | ASN1EXP size_t ASN1CALL length_PA_PK_AS_REP(const PA_PK_AS_REP *); | 
| 454 | ASN1EXP int    ASN1CALL copy_PA_PK_AS_REP  (const PA_PK_AS_REP *, PA_PK_AS_REP *); | 
| 455 | ASN1EXP void   ASN1CALL free_PA_PK_AS_REP  (PA_PK_AS_REP *); | 
| 456 |  | 
| 457 |  | 
| 458 | /* | 
| 459 | KDCDHKeyInfo ::= SEQUENCE { | 
| 460 |   subjectPublicKey   [0]   BIT STRING { | 
| 461 |   }, | 
| 462 |   nonce              [1] INTEGER (0..4294967295), | 
| 463 |   dhKeyExpiration    [2] KerberosTime OPTIONAL, | 
| 464 |   ..., | 
| 465 | } | 
| 466 | */ | 
| 467 |  | 
| 468 | typedef struct KDCDHKeyInfo { | 
| 469 |   heim_bit_string subjectPublicKey; | 
| 470 |   unsigned int nonce; | 
| 471 |   KerberosTime *dhKeyExpiration; | 
| 472 | } KDCDHKeyInfo; | 
| 473 |  | 
| 474 | ASN1EXP int    ASN1CALL decode_KDCDHKeyInfo(const unsigned char *, size_t, KDCDHKeyInfo *, size_t *); | 
| 475 | ASN1EXP int    ASN1CALL encode_KDCDHKeyInfo(unsigned char *, size_t, const KDCDHKeyInfo *, size_t *); | 
| 476 | ASN1EXP size_t ASN1CALL length_KDCDHKeyInfo(const KDCDHKeyInfo *); | 
| 477 | ASN1EXP int    ASN1CALL copy_KDCDHKeyInfo  (const KDCDHKeyInfo *, KDCDHKeyInfo *); | 
| 478 | ASN1EXP void   ASN1CALL free_KDCDHKeyInfo  (KDCDHKeyInfo *); | 
| 479 |  | 
| 480 |  | 
| 481 | /* | 
| 482 | ReplyKeyPack ::= SEQUENCE { | 
| 483 |   replyKey        [0] EncryptionKey, | 
| 484 |   asChecksum      [1] Checksum, | 
| 485 |   ..., | 
| 486 | } | 
| 487 | */ | 
| 488 |  | 
| 489 | typedef struct ReplyKeyPack { | 
| 490 |   EncryptionKey replyKey; | 
| 491 |   Checksum asChecksum; | 
| 492 | } ReplyKeyPack; | 
| 493 |  | 
| 494 | ASN1EXP int    ASN1CALL decode_ReplyKeyPack(const unsigned char *, size_t, ReplyKeyPack *, size_t *); | 
| 495 | ASN1EXP int    ASN1CALL encode_ReplyKeyPack(unsigned char *, size_t, const ReplyKeyPack *, size_t *); | 
| 496 | ASN1EXP size_t ASN1CALL length_ReplyKeyPack(const ReplyKeyPack *); | 
| 497 | ASN1EXP int    ASN1CALL copy_ReplyKeyPack  (const ReplyKeyPack *, ReplyKeyPack *); | 
| 498 | ASN1EXP void   ASN1CALL free_ReplyKeyPack  (ReplyKeyPack *); | 
| 499 |  | 
| 500 |  | 
| 501 | /* | 
| 502 | TD-DH-PARAMETERS ::= SEQUENCE OF AlgorithmIdentifier | 
| 503 | */ | 
| 504 |  | 
| 505 | typedef struct TD_DH_PARAMETERS { | 
| 506 |   unsigned int len; | 
| 507 |   AlgorithmIdentifier *val; | 
| 508 | } TD_DH_PARAMETERS; | 
| 509 |  | 
| 510 | ASN1EXP int    ASN1CALL decode_TD_DH_PARAMETERS(const unsigned char *, size_t, TD_DH_PARAMETERS *, size_t *); | 
| 511 | ASN1EXP int    ASN1CALL encode_TD_DH_PARAMETERS(unsigned char *, size_t, const TD_DH_PARAMETERS *, size_t *); | 
| 512 | ASN1EXP size_t ASN1CALL length_TD_DH_PARAMETERS(const TD_DH_PARAMETERS *); | 
| 513 | ASN1EXP int    ASN1CALL copy_TD_DH_PARAMETERS  (const TD_DH_PARAMETERS *, TD_DH_PARAMETERS *); | 
| 514 | ASN1EXP void   ASN1CALL free_TD_DH_PARAMETERS  (TD_DH_PARAMETERS *); | 
| 515 |  | 
| 516 |  | 
| 517 | /* | 
| 518 | PKAuthenticator-Win2k ::= SEQUENCE { | 
| 519 |   kdcName         [0] PrincipalName, | 
| 520 |   kdcRealm        [1] Realm, | 
| 521 |   cusec           [2] INTEGER (0..4294967295), | 
| 522 |   ctime           [3] KerberosTime, | 
| 523 |   nonce           [4] INTEGER (-2147483648..2147483647), | 
| 524 | } | 
| 525 | */ | 
| 526 |  | 
| 527 | typedef struct PKAuthenticator_Win2k { | 
| 528 |   PrincipalName kdcName; | 
| 529 |   Realm kdcRealm; | 
| 530 |   unsigned int cusec; | 
| 531 |   KerberosTime ctime; | 
| 532 |   int nonce; | 
| 533 | } PKAuthenticator_Win2k; | 
| 534 |  | 
| 535 | ASN1EXP int    ASN1CALL decode_PKAuthenticator_Win2k(const unsigned char *, size_t, PKAuthenticator_Win2k *, size_t *); | 
| 536 | ASN1EXP int    ASN1CALL encode_PKAuthenticator_Win2k(unsigned char *, size_t, const PKAuthenticator_Win2k *, size_t *); | 
| 537 | ASN1EXP size_t ASN1CALL length_PKAuthenticator_Win2k(const PKAuthenticator_Win2k *); | 
| 538 | ASN1EXP int    ASN1CALL copy_PKAuthenticator_Win2k  (const PKAuthenticator_Win2k *, PKAuthenticator_Win2k *); | 
| 539 | ASN1EXP void   ASN1CALL free_PKAuthenticator_Win2k  (PKAuthenticator_Win2k *); | 
| 540 |  | 
| 541 |  | 
| 542 | /* | 
| 543 | AuthPack-Win2k ::= SEQUENCE { | 
| 544 |   pkAuthenticator     [0] PKAuthenticator-Win2k, | 
| 545 |   clientPublicValue   [1] SubjectPublicKeyInfo OPTIONAL, | 
| 546 | } | 
| 547 | */ | 
| 548 |  | 
| 549 | typedef struct AuthPack_Win2k { | 
| 550 |   PKAuthenticator_Win2k pkAuthenticator; | 
| 551 |   SubjectPublicKeyInfo *clientPublicValue; | 
| 552 | } AuthPack_Win2k; | 
| 553 |  | 
| 554 | ASN1EXP int    ASN1CALL decode_AuthPack_Win2k(const unsigned char *, size_t, AuthPack_Win2k *, size_t *); | 
| 555 | ASN1EXP int    ASN1CALL encode_AuthPack_Win2k(unsigned char *, size_t, const AuthPack_Win2k *, size_t *); | 
| 556 | ASN1EXP size_t ASN1CALL length_AuthPack_Win2k(const AuthPack_Win2k *); | 
| 557 | ASN1EXP int    ASN1CALL copy_AuthPack_Win2k  (const AuthPack_Win2k *, AuthPack_Win2k *); | 
| 558 | ASN1EXP void   ASN1CALL free_AuthPack_Win2k  (AuthPack_Win2k *); | 
| 559 |  | 
| 560 |  | 
| 561 | /* | 
| 562 | TrustedCA-Win2k ::= CHOICE { | 
| 563 |   caName            [1] heim_any, | 
| 564 |   issuerAndSerial   [2] IssuerAndSerialNumber, | 
| 565 | } | 
| 566 | */ | 
| 567 |  | 
| 568 | typedef struct TrustedCA_Win2k { | 
| 569 |   enum TrustedCA_Win2k_enum { | 
| 570 |     choice_TrustedCA_Win2k_caName = 1, | 
| 571 |     choice_TrustedCA_Win2k_issuerAndSerial | 
| 572 |   } element; | 
| 573 |   union { | 
| 574 |     heim_any caName; | 
| 575 |     IssuerAndSerialNumber issuerAndSerial; | 
| 576 |   } u; | 
| 577 | } TrustedCA_Win2k; | 
| 578 |  | 
| 579 | ASN1EXP int    ASN1CALL decode_TrustedCA_Win2k(const unsigned char *, size_t, TrustedCA_Win2k *, size_t *); | 
| 580 | ASN1EXP int    ASN1CALL encode_TrustedCA_Win2k(unsigned char *, size_t, const TrustedCA_Win2k *, size_t *); | 
| 581 | ASN1EXP size_t ASN1CALL length_TrustedCA_Win2k(const TrustedCA_Win2k *); | 
| 582 | ASN1EXP int    ASN1CALL copy_TrustedCA_Win2k  (const TrustedCA_Win2k *, TrustedCA_Win2k *); | 
| 583 | ASN1EXP void   ASN1CALL free_TrustedCA_Win2k  (TrustedCA_Win2k *); | 
| 584 |  | 
| 585 |  | 
| 586 | /* | 
| 587 | PA-PK-AS-REQ-Win2k ::= SEQUENCE { | 
| 588 |   signed-auth-pack     [0] IMPLICIT OCTET STRING, | 
| 589 |   trusted-certifiers   [2] SEQUENCE OF TrustedCA-Win2k OPTIONAL, | 
| 590 |   kdc-cert             [3] IMPLICIT OCTET STRING OPTIONAL, | 
| 591 |   encryption-cert      [4] IMPLICIT OCTET STRING OPTIONAL, | 
| 592 | } | 
| 593 | */ | 
| 594 |  | 
| 595 | typedef struct PA_PK_AS_REQ_Win2k { | 
| 596 |   heim_octet_string signed_auth_pack; | 
| 597 |   struct PA_PK_AS_REQ_Win2k_trusted_certifiers { | 
| 598 |     unsigned int len; | 
| 599 |     TrustedCA_Win2k *val; | 
| 600 |   } *trusted_certifiers; | 
| 601 |   heim_octet_string *kdc_cert; | 
| 602 |   heim_octet_string *encryption_cert; | 
| 603 | } PA_PK_AS_REQ_Win2k; | 
| 604 |  | 
| 605 | ASN1EXP int    ASN1CALL decode_PA_PK_AS_REQ_Win2k(const unsigned char *, size_t, PA_PK_AS_REQ_Win2k *, size_t *); | 
| 606 | ASN1EXP int    ASN1CALL encode_PA_PK_AS_REQ_Win2k(unsigned char *, size_t, const PA_PK_AS_REQ_Win2k *, size_t *); | 
| 607 | ASN1EXP size_t ASN1CALL length_PA_PK_AS_REQ_Win2k(const PA_PK_AS_REQ_Win2k *); | 
| 608 | ASN1EXP int    ASN1CALL copy_PA_PK_AS_REQ_Win2k  (const PA_PK_AS_REQ_Win2k *, PA_PK_AS_REQ_Win2k *); | 
| 609 | ASN1EXP void   ASN1CALL free_PA_PK_AS_REQ_Win2k  (PA_PK_AS_REQ_Win2k *); | 
| 610 |  | 
| 611 |  | 
| 612 | /* | 
| 613 | PA-PK-AS-REP-Win2k ::= CHOICE { | 
| 614 |   dhSignedData    [0] IMPLICIT OCTET STRING, | 
| 615 |   encKeyPack      [1] IMPLICIT OCTET STRING, | 
| 616 | } | 
| 617 | */ | 
| 618 |  | 
| 619 | typedef struct PA_PK_AS_REP_Win2k { | 
| 620 |   enum PA_PK_AS_REP_Win2k_enum { | 
| 621 |     choice_PA_PK_AS_REP_Win2k_dhSignedData = 1, | 
| 622 |     choice_PA_PK_AS_REP_Win2k_encKeyPack | 
| 623 |   } element; | 
| 624 |   union { | 
| 625 |     heim_octet_string dhSignedData; | 
| 626 |     heim_octet_string encKeyPack; | 
| 627 |   } u; | 
| 628 | } PA_PK_AS_REP_Win2k; | 
| 629 |  | 
| 630 | ASN1EXP int    ASN1CALL decode_PA_PK_AS_REP_Win2k(const unsigned char *, size_t, PA_PK_AS_REP_Win2k *, size_t *); | 
| 631 | ASN1EXP int    ASN1CALL encode_PA_PK_AS_REP_Win2k(unsigned char *, size_t, const PA_PK_AS_REP_Win2k *, size_t *); | 
| 632 | ASN1EXP size_t ASN1CALL length_PA_PK_AS_REP_Win2k(const PA_PK_AS_REP_Win2k *); | 
| 633 | ASN1EXP int    ASN1CALL copy_PA_PK_AS_REP_Win2k  (const PA_PK_AS_REP_Win2k *, PA_PK_AS_REP_Win2k *); | 
| 634 | ASN1EXP void   ASN1CALL free_PA_PK_AS_REP_Win2k  (PA_PK_AS_REP_Win2k *); | 
| 635 |  | 
| 636 |  | 
| 637 | /* | 
| 638 | KDCDHKeyInfo-Win2k ::= SEQUENCE { | 
| 639 |   nonce              [0] INTEGER (-2147483648..2147483647), | 
| 640 |   subjectPublicKey   [2]   BIT STRING { | 
| 641 |   }, | 
| 642 | } | 
| 643 | */ | 
| 644 |  | 
| 645 | typedef struct KDCDHKeyInfo_Win2k { | 
| 646 |   int nonce; | 
| 647 |   heim_bit_string subjectPublicKey; | 
| 648 | } KDCDHKeyInfo_Win2k; | 
| 649 |  | 
| 650 | ASN1EXP int    ASN1CALL decode_KDCDHKeyInfo_Win2k(const unsigned char *, size_t, KDCDHKeyInfo_Win2k *, size_t *); | 
| 651 | ASN1EXP int    ASN1CALL encode_KDCDHKeyInfo_Win2k(unsigned char *, size_t, const KDCDHKeyInfo_Win2k *, size_t *); | 
| 652 | ASN1EXP size_t ASN1CALL length_KDCDHKeyInfo_Win2k(const KDCDHKeyInfo_Win2k *); | 
| 653 | ASN1EXP int    ASN1CALL copy_KDCDHKeyInfo_Win2k  (const KDCDHKeyInfo_Win2k *, KDCDHKeyInfo_Win2k *); | 
| 654 | ASN1EXP void   ASN1CALL free_KDCDHKeyInfo_Win2k  (KDCDHKeyInfo_Win2k *); | 
| 655 |  | 
| 656 |  | 
| 657 | /* | 
| 658 | ReplyKeyPack-Win2k ::= SEQUENCE { | 
| 659 |   replyKey        [0] EncryptionKey, | 
| 660 |   nonce           [1] INTEGER (-2147483648..2147483647), | 
| 661 |   ..., | 
| 662 | } | 
| 663 | */ | 
| 664 |  | 
| 665 | typedef struct ReplyKeyPack_Win2k { | 
| 666 |   EncryptionKey replyKey; | 
| 667 |   int nonce; | 
| 668 | } ReplyKeyPack_Win2k; | 
| 669 |  | 
| 670 | ASN1EXP int    ASN1CALL decode_ReplyKeyPack_Win2k(const unsigned char *, size_t, ReplyKeyPack_Win2k *, size_t *); | 
| 671 | ASN1EXP int    ASN1CALL encode_ReplyKeyPack_Win2k(unsigned char *, size_t, const ReplyKeyPack_Win2k *, size_t *); | 
| 672 | ASN1EXP size_t ASN1CALL length_ReplyKeyPack_Win2k(const ReplyKeyPack_Win2k *); | 
| 673 | ASN1EXP int    ASN1CALL copy_ReplyKeyPack_Win2k  (const ReplyKeyPack_Win2k *, ReplyKeyPack_Win2k *); | 
| 674 | ASN1EXP void   ASN1CALL free_ReplyKeyPack_Win2k  (ReplyKeyPack_Win2k *); | 
| 675 |  | 
| 676 |  | 
| 677 | /* | 
| 678 | PA-PK-AS-REP-BTMM ::= SEQUENCE { | 
| 679 |   dhSignedData    [0] heim_any OPTIONAL, | 
| 680 |   encKeyPack      [1] heim_any OPTIONAL, | 
| 681 | } | 
| 682 | */ | 
| 683 |  | 
| 684 | typedef struct PA_PK_AS_REP_BTMM { | 
| 685 |   heim_any *dhSignedData; | 
| 686 |   heim_any *encKeyPack; | 
| 687 | } PA_PK_AS_REP_BTMM; | 
| 688 |  | 
| 689 | ASN1EXP int    ASN1CALL decode_PA_PK_AS_REP_BTMM(const unsigned char *, size_t, PA_PK_AS_REP_BTMM *, size_t *); | 
| 690 | ASN1EXP int    ASN1CALL encode_PA_PK_AS_REP_BTMM(unsigned char *, size_t, const PA_PK_AS_REP_BTMM *, size_t *); | 
| 691 | ASN1EXP size_t ASN1CALL length_PA_PK_AS_REP_BTMM(const PA_PK_AS_REP_BTMM *); | 
| 692 | ASN1EXP int    ASN1CALL copy_PA_PK_AS_REP_BTMM  (const PA_PK_AS_REP_BTMM *, PA_PK_AS_REP_BTMM *); | 
| 693 | ASN1EXP void   ASN1CALL free_PA_PK_AS_REP_BTMM  (PA_PK_AS_REP_BTMM *); | 
| 694 |  | 
| 695 |  | 
| 696 | /* | 
| 697 | PkinitSP80056AOtherInfo ::= SEQUENCE { | 
| 698 |   algorithmID     AlgorithmIdentifier, | 
| 699 |   partyUInfo      [0] OCTET STRING, | 
| 700 |   partyVInfo      [1] OCTET STRING, | 
| 701 |   suppPubInfo     [2] OCTET STRING OPTIONAL, | 
| 702 |   suppPrivInfo    [3] OCTET STRING OPTIONAL, | 
| 703 | } | 
| 704 | */ | 
| 705 |  | 
| 706 | typedef struct PkinitSP80056AOtherInfo { | 
| 707 |   AlgorithmIdentifier algorithmID; | 
| 708 |   heim_octet_string partyUInfo; | 
| 709 |   heim_octet_string partyVInfo; | 
| 710 |   heim_octet_string *suppPubInfo; | 
| 711 |   heim_octet_string *suppPrivInfo; | 
| 712 | } PkinitSP80056AOtherInfo; | 
| 713 |  | 
| 714 | ASN1EXP int    ASN1CALL decode_PkinitSP80056AOtherInfo(const unsigned char *, size_t, PkinitSP80056AOtherInfo *, size_t *); | 
| 715 | ASN1EXP int    ASN1CALL encode_PkinitSP80056AOtherInfo(unsigned char *, size_t, const PkinitSP80056AOtherInfo *, size_t *); | 
| 716 | ASN1EXP size_t ASN1CALL length_PkinitSP80056AOtherInfo(const PkinitSP80056AOtherInfo *); | 
| 717 | ASN1EXP int    ASN1CALL copy_PkinitSP80056AOtherInfo  (const PkinitSP80056AOtherInfo *, PkinitSP80056AOtherInfo *); | 
| 718 | ASN1EXP void   ASN1CALL free_PkinitSP80056AOtherInfo  (PkinitSP80056AOtherInfo *); | 
| 719 |  | 
| 720 |  | 
| 721 | /* | 
| 722 | PkinitSuppPubInfo ::= SEQUENCE { | 
| 723 |   enctype         [0] INTEGER (-2147483648..2147483647), | 
| 724 |   as-REQ          [1] OCTET STRING, | 
| 725 |   pk-as-rep       [2] OCTET STRING, | 
| 726 |   ticket          [3] Ticket, | 
| 727 |   ..., | 
| 728 | } | 
| 729 | */ | 
| 730 |  | 
| 731 | typedef struct PkinitSuppPubInfo { | 
| 732 |   int enctype; | 
| 733 |   heim_octet_string as_REQ; | 
| 734 |   heim_octet_string pk_as_rep; | 
| 735 |   Ticket ticket; | 
| 736 | } PkinitSuppPubInfo; | 
| 737 |  | 
| 738 | ASN1EXP int    ASN1CALL decode_PkinitSuppPubInfo(const unsigned char *, size_t, PkinitSuppPubInfo *, size_t *); | 
| 739 | ASN1EXP int    ASN1CALL encode_PkinitSuppPubInfo(unsigned char *, size_t, const PkinitSuppPubInfo *, size_t *); | 
| 740 | ASN1EXP size_t ASN1CALL length_PkinitSuppPubInfo(const PkinitSuppPubInfo *); | 
| 741 | ASN1EXP int    ASN1CALL copy_PkinitSuppPubInfo  (const PkinitSuppPubInfo *, PkinitSuppPubInfo *); | 
| 742 | ASN1EXP void   ASN1CALL free_PkinitSuppPubInfo  (PkinitSuppPubInfo *); | 
| 743 |  | 
| 744 |  | 
| 745 | #endif /* __pkinit_asn1_h__ */ | 
| 746 |  |