| 1 | /* Generated from digest.asn1 */ | 
| 2 | /* Do not edit */ | 
| 3 |  | 
| 4 | #ifndef __digest_asn1_h__ | 
| 5 | #define __digest_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 | /* | 
| 94 | DigestTypes ::= BIT STRING { | 
| 95 |   ntlm-v1(0), | 
| 96 |   ntlm-v1-session(1), | 
| 97 |   ntlm-v2(2), | 
| 98 |   digest-md5(3), | 
| 99 |   chap-md5(4), | 
| 100 |   ms-chap-v2(5) | 
| 101 | } | 
| 102 | */ | 
| 103 |  | 
| 104 | typedef struct DigestTypes { | 
| 105 |   unsigned int ntlm_v1:1; | 
| 106 |   unsigned int ntlm_v1_session:1; | 
| 107 |   unsigned int ntlm_v2:1; | 
| 108 |   unsigned int digest_md5:1; | 
| 109 |   unsigned int chap_md5:1; | 
| 110 |   unsigned int ms_chap_v2:1; | 
| 111 |   unsigned int _unused6:1; | 
| 112 |   unsigned int _unused7:1; | 
| 113 |   unsigned int _unused8:1; | 
| 114 |   unsigned int _unused9:1; | 
| 115 |   unsigned int _unused10:1; | 
| 116 |   unsigned int _unused11:1; | 
| 117 |   unsigned int _unused12:1; | 
| 118 |   unsigned int _unused13:1; | 
| 119 |   unsigned int _unused14:1; | 
| 120 |   unsigned int _unused15:1; | 
| 121 |   unsigned int _unused16:1; | 
| 122 |   unsigned int _unused17:1; | 
| 123 |   unsigned int _unused18:1; | 
| 124 |   unsigned int _unused19:1; | 
| 125 |   unsigned int _unused20:1; | 
| 126 |   unsigned int _unused21:1; | 
| 127 |   unsigned int _unused22:1; | 
| 128 |   unsigned int _unused23:1; | 
| 129 |   unsigned int _unused24:1; | 
| 130 |   unsigned int _unused25:1; | 
| 131 |   unsigned int _unused26:1; | 
| 132 |   unsigned int _unused27:1; | 
| 133 |   unsigned int _unused28:1; | 
| 134 |   unsigned int _unused29:1; | 
| 135 |   unsigned int _unused30:1; | 
| 136 |   unsigned int _unused31:1; | 
| 137 | } DigestTypes; | 
| 138 |  | 
| 139 |  | 
| 140 | unsigned DigestTypes2int(DigestTypes); | 
| 141 | DigestTypes int2DigestTypes(unsigned); | 
| 142 | const struct units * asn1_DigestTypes_units(void); | 
| 143 | ASN1EXP int    ASN1CALL decode_DigestTypes(const unsigned char *, size_t, DigestTypes *, size_t *); | 
| 144 | ASN1EXP int    ASN1CALL encode_DigestTypes(unsigned char *, size_t, const DigestTypes *, size_t *); | 
| 145 | ASN1EXP size_t ASN1CALL length_DigestTypes(const DigestTypes *); | 
| 146 | ASN1EXP int    ASN1CALL copy_DigestTypes  (const DigestTypes *, DigestTypes *); | 
| 147 | ASN1EXP void   ASN1CALL free_DigestTypes  (DigestTypes *); | 
| 148 |  | 
| 149 |  | 
| 150 | /* | 
| 151 | DigestInit ::= SEQUENCE { | 
| 152 |   type              UTF8String, | 
| 153 |   channel         [0] SEQUENCE { | 
| 154 |     cb-type             UTF8String, | 
| 155 |     cb-binding          UTF8String, | 
| 156 |   } OPTIONAL, | 
| 157 |   hostname        [1]   UTF8String OPTIONAL, | 
| 158 | } | 
| 159 | */ | 
| 160 |  | 
| 161 | typedef struct DigestInit { | 
| 162 |   heim_utf8_string type; | 
| 163 |   struct DigestInit_channel { | 
| 164 |     heim_utf8_string cb_type; | 
| 165 |     heim_utf8_string cb_binding; | 
| 166 |   } *channel; | 
| 167 |   heim_utf8_string *hostname; | 
| 168 | } DigestInit; | 
| 169 |  | 
| 170 | ASN1EXP int    ASN1CALL decode_DigestInit(const unsigned char *, size_t, DigestInit *, size_t *); | 
| 171 | ASN1EXP int    ASN1CALL encode_DigestInit(unsigned char *, size_t, const DigestInit *, size_t *); | 
| 172 | ASN1EXP size_t ASN1CALL length_DigestInit(const DigestInit *); | 
| 173 | ASN1EXP int    ASN1CALL copy_DigestInit  (const DigestInit *, DigestInit *); | 
| 174 | ASN1EXP void   ASN1CALL free_DigestInit  (DigestInit *); | 
| 175 |  | 
| 176 |  | 
| 177 | /* | 
| 178 | DigestInitReply ::= SEQUENCE { | 
| 179 |   nonce             UTF8String, | 
| 180 |   opaque            UTF8String, | 
| 181 |   identifier      [0]   UTF8String OPTIONAL, | 
| 182 | } | 
| 183 | */ | 
| 184 |  | 
| 185 | typedef struct DigestInitReply { | 
| 186 |   heim_utf8_string nonce; | 
| 187 |   heim_utf8_string opaque; | 
| 188 |   heim_utf8_string *identifier; | 
| 189 | } DigestInitReply; | 
| 190 |  | 
| 191 | ASN1EXP int    ASN1CALL decode_DigestInitReply(const unsigned char *, size_t, DigestInitReply *, size_t *); | 
| 192 | ASN1EXP int    ASN1CALL encode_DigestInitReply(unsigned char *, size_t, const DigestInitReply *, size_t *); | 
| 193 | ASN1EXP size_t ASN1CALL length_DigestInitReply(const DigestInitReply *); | 
| 194 | ASN1EXP int    ASN1CALL copy_DigestInitReply  (const DigestInitReply *, DigestInitReply *); | 
| 195 | ASN1EXP void   ASN1CALL free_DigestInitReply  (DigestInitReply *); | 
| 196 |  | 
| 197 |  | 
| 198 | /* | 
| 199 | DigestRequest ::= SEQUENCE { | 
| 200 |   type                    UTF8String, | 
| 201 |   digest                  UTF8String, | 
| 202 |   username                UTF8String, | 
| 203 |   responseData            UTF8String, | 
| 204 |   authid                [0]   UTF8String OPTIONAL, | 
| 205 |   authentication-user   [1] Principal OPTIONAL, | 
| 206 |   realm                 [2]   UTF8String OPTIONAL, | 
| 207 |   method                [3]   UTF8String OPTIONAL, | 
| 208 |   uri                   [4]   UTF8String OPTIONAL, | 
| 209 |   serverNonce             UTF8String, | 
| 210 |   clientNonce           [5]   UTF8String OPTIONAL, | 
| 211 |   nonceCount            [6]   UTF8String OPTIONAL, | 
| 212 |   qop                   [7]   UTF8String OPTIONAL, | 
| 213 |   identifier            [8]   UTF8String OPTIONAL, | 
| 214 |   hostname              [9]   UTF8String OPTIONAL, | 
| 215 |   opaque                  UTF8String, | 
| 216 | } | 
| 217 | */ | 
| 218 |  | 
| 219 | typedef struct DigestRequest { | 
| 220 |   heim_utf8_string type; | 
| 221 |   heim_utf8_string digest; | 
| 222 |   heim_utf8_string username; | 
| 223 |   heim_utf8_string responseData; | 
| 224 |   heim_utf8_string *authid; | 
| 225 |   Principal *authentication_user; | 
| 226 |   heim_utf8_string *realm; | 
| 227 |   heim_utf8_string *method; | 
| 228 |   heim_utf8_string *uri; | 
| 229 |   heim_utf8_string serverNonce; | 
| 230 |   heim_utf8_string *clientNonce; | 
| 231 |   heim_utf8_string *nonceCount; | 
| 232 |   heim_utf8_string *qop; | 
| 233 |   heim_utf8_string *identifier; | 
| 234 |   heim_utf8_string *hostname; | 
| 235 |   heim_utf8_string opaque; | 
| 236 | } DigestRequest; | 
| 237 |  | 
| 238 | ASN1EXP int    ASN1CALL decode_DigestRequest(const unsigned char *, size_t, DigestRequest *, size_t *); | 
| 239 | ASN1EXP int    ASN1CALL encode_DigestRequest(unsigned char *, size_t, const DigestRequest *, size_t *); | 
| 240 | ASN1EXP size_t ASN1CALL length_DigestRequest(const DigestRequest *); | 
| 241 | ASN1EXP int    ASN1CALL copy_DigestRequest  (const DigestRequest *, DigestRequest *); | 
| 242 | ASN1EXP void   ASN1CALL free_DigestRequest  (DigestRequest *); | 
| 243 |  | 
| 244 |  | 
| 245 | /* | 
| 246 | DigestError ::= SEQUENCE { | 
| 247 |   reason            UTF8String, | 
| 248 |   code            INTEGER (-2147483648..2147483647), | 
| 249 | } | 
| 250 | */ | 
| 251 |  | 
| 252 | typedef struct DigestError { | 
| 253 |   heim_utf8_string reason; | 
| 254 |   int code; | 
| 255 | } DigestError; | 
| 256 |  | 
| 257 | ASN1EXP int    ASN1CALL decode_DigestError(const unsigned char *, size_t, DigestError *, size_t *); | 
| 258 | ASN1EXP int    ASN1CALL encode_DigestError(unsigned char *, size_t, const DigestError *, size_t *); | 
| 259 | ASN1EXP size_t ASN1CALL length_DigestError(const DigestError *); | 
| 260 | ASN1EXP int    ASN1CALL copy_DigestError  (const DigestError *, DigestError *); | 
| 261 | ASN1EXP void   ASN1CALL free_DigestError  (DigestError *); | 
| 262 |  | 
| 263 |  | 
| 264 | /* | 
| 265 | DigestResponse ::= SEQUENCE { | 
| 266 |   success         BOOLEAN, | 
| 267 |   rsp             [0]   UTF8String OPTIONAL, | 
| 268 |   tickets         [1] SEQUENCE OF OCTET STRING OPTIONAL, | 
| 269 |   channel         [2] SEQUENCE { | 
| 270 |     cb-type             UTF8String, | 
| 271 |     cb-binding          UTF8String, | 
| 272 |   } OPTIONAL, | 
| 273 |   session-key     [3] OCTET STRING OPTIONAL, | 
| 274 | } | 
| 275 | */ | 
| 276 |  | 
| 277 | typedef struct DigestResponse { | 
| 278 |   int success; | 
| 279 |   heim_utf8_string *rsp; | 
| 280 |   struct DigestResponse_tickets { | 
| 281 |     unsigned int len; | 
| 282 |     heim_octet_string *val; | 
| 283 |   } *tickets; | 
| 284 |   struct DigestResponse_channel { | 
| 285 |     heim_utf8_string cb_type; | 
| 286 |     heim_utf8_string cb_binding; | 
| 287 |   } *channel; | 
| 288 |   heim_octet_string *session_key; | 
| 289 | } DigestResponse; | 
| 290 |  | 
| 291 | ASN1EXP int    ASN1CALL decode_DigestResponse(const unsigned char *, size_t, DigestResponse *, size_t *); | 
| 292 | ASN1EXP int    ASN1CALL encode_DigestResponse(unsigned char *, size_t, const DigestResponse *, size_t *); | 
| 293 | ASN1EXP size_t ASN1CALL length_DigestResponse(const DigestResponse *); | 
| 294 | ASN1EXP int    ASN1CALL copy_DigestResponse  (const DigestResponse *, DigestResponse *); | 
| 295 | ASN1EXP void   ASN1CALL free_DigestResponse  (DigestResponse *); | 
| 296 |  | 
| 297 |  | 
| 298 | /* | 
| 299 | NTLMInit ::= SEQUENCE { | 
| 300 |   flags           [0] INTEGER (0..4294967295), | 
| 301 |   hostname        [1]   UTF8String OPTIONAL, | 
| 302 |   domain          [1]   UTF8String OPTIONAL, | 
| 303 | } | 
| 304 | */ | 
| 305 |  | 
| 306 | typedef struct NTLMInit { | 
| 307 |   unsigned int flags; | 
| 308 |   heim_utf8_string *hostname; | 
| 309 |   heim_utf8_string *domain; | 
| 310 | } NTLMInit; | 
| 311 |  | 
| 312 | ASN1EXP int    ASN1CALL decode_NTLMInit(const unsigned char *, size_t, NTLMInit *, size_t *); | 
| 313 | ASN1EXP int    ASN1CALL encode_NTLMInit(unsigned char *, size_t, const NTLMInit *, size_t *); | 
| 314 | ASN1EXP size_t ASN1CALL length_NTLMInit(const NTLMInit *); | 
| 315 | ASN1EXP int    ASN1CALL copy_NTLMInit  (const NTLMInit *, NTLMInit *); | 
| 316 | ASN1EXP void   ASN1CALL free_NTLMInit  (NTLMInit *); | 
| 317 |  | 
| 318 |  | 
| 319 | /* | 
| 320 | NTLMInitReply ::= SEQUENCE { | 
| 321 |   flags           [0] INTEGER (0..4294967295), | 
| 322 |   opaque          [1] OCTET STRING, | 
| 323 |   targetname      [2]   UTF8String, | 
| 324 |   challenge       [3] OCTET STRING, | 
| 325 |   targetinfo      [4] OCTET STRING OPTIONAL, | 
| 326 | } | 
| 327 | */ | 
| 328 |  | 
| 329 | typedef struct NTLMInitReply { | 
| 330 |   unsigned int flags; | 
| 331 |   heim_octet_string opaque; | 
| 332 |   heim_utf8_string targetname; | 
| 333 |   heim_octet_string challenge; | 
| 334 |   heim_octet_string *targetinfo; | 
| 335 | } NTLMInitReply; | 
| 336 |  | 
| 337 | ASN1EXP int    ASN1CALL decode_NTLMInitReply(const unsigned char *, size_t, NTLMInitReply *, size_t *); | 
| 338 | ASN1EXP int    ASN1CALL encode_NTLMInitReply(unsigned char *, size_t, const NTLMInitReply *, size_t *); | 
| 339 | ASN1EXP size_t ASN1CALL length_NTLMInitReply(const NTLMInitReply *); | 
| 340 | ASN1EXP int    ASN1CALL copy_NTLMInitReply  (const NTLMInitReply *, NTLMInitReply *); | 
| 341 | ASN1EXP void   ASN1CALL free_NTLMInitReply  (NTLMInitReply *); | 
| 342 |  | 
| 343 |  | 
| 344 | /* | 
| 345 | NTLMRequest ::= SEQUENCE { | 
| 346 |   flags           [0] INTEGER (0..4294967295), | 
| 347 |   opaque          [1] OCTET STRING, | 
| 348 |   username        [2]   UTF8String, | 
| 349 |   targetname      [3]   UTF8String, | 
| 350 |   targetinfo      [4] OCTET STRING OPTIONAL, | 
| 351 |   lm              [5] OCTET STRING, | 
| 352 |   ntlm            [6] OCTET STRING, | 
| 353 |   sessionkey      [7] OCTET STRING OPTIONAL, | 
| 354 | } | 
| 355 | */ | 
| 356 |  | 
| 357 | typedef struct NTLMRequest { | 
| 358 |   unsigned int flags; | 
| 359 |   heim_octet_string opaque; | 
| 360 |   heim_utf8_string username; | 
| 361 |   heim_utf8_string targetname; | 
| 362 |   heim_octet_string *targetinfo; | 
| 363 |   heim_octet_string lm; | 
| 364 |   heim_octet_string ntlm; | 
| 365 |   heim_octet_string *sessionkey; | 
| 366 | } NTLMRequest; | 
| 367 |  | 
| 368 | ASN1EXP int    ASN1CALL decode_NTLMRequest(const unsigned char *, size_t, NTLMRequest *, size_t *); | 
| 369 | ASN1EXP int    ASN1CALL encode_NTLMRequest(unsigned char *, size_t, const NTLMRequest *, size_t *); | 
| 370 | ASN1EXP size_t ASN1CALL length_NTLMRequest(const NTLMRequest *); | 
| 371 | ASN1EXP int    ASN1CALL copy_NTLMRequest  (const NTLMRequest *, NTLMRequest *); | 
| 372 | ASN1EXP void   ASN1CALL free_NTLMRequest  (NTLMRequest *); | 
| 373 |  | 
| 374 |  | 
| 375 | /* | 
| 376 | NTLMResponse ::= SEQUENCE { | 
| 377 |   success         [0] BOOLEAN, | 
| 378 |   flags           [1] INTEGER (0..4294967295), | 
| 379 |   sessionkey      [2] OCTET STRING OPTIONAL, | 
| 380 |   tickets         [3] SEQUENCE OF OCTET STRING OPTIONAL, | 
| 381 | } | 
| 382 | */ | 
| 383 |  | 
| 384 | typedef struct NTLMResponse { | 
| 385 |   int success; | 
| 386 |   unsigned int flags; | 
| 387 |   heim_octet_string *sessionkey; | 
| 388 |   struct NTLMResponse_tickets { | 
| 389 |     unsigned int len; | 
| 390 |     heim_octet_string *val; | 
| 391 |   } *tickets; | 
| 392 | } NTLMResponse; | 
| 393 |  | 
| 394 | ASN1EXP int    ASN1CALL decode_NTLMResponse(const unsigned char *, size_t, NTLMResponse *, size_t *); | 
| 395 | ASN1EXP int    ASN1CALL encode_NTLMResponse(unsigned char *, size_t, const NTLMResponse *, size_t *); | 
| 396 | ASN1EXP size_t ASN1CALL length_NTLMResponse(const NTLMResponse *); | 
| 397 | ASN1EXP int    ASN1CALL copy_NTLMResponse  (const NTLMResponse *, NTLMResponse *); | 
| 398 | ASN1EXP void   ASN1CALL free_NTLMResponse  (NTLMResponse *); | 
| 399 |  | 
| 400 |  | 
| 401 | /* | 
| 402 | NTLMRequest2 ::= SEQUENCE { | 
| 403 |   loginUserName         [0]   UTF8String, | 
| 404 |   loginDomainName       [1]   UTF8String, | 
| 405 |   flags                 [2] INTEGER (0..4294967295), | 
| 406 |   lmchallenge           [3] OCTET STRING, | 
| 407 |   ntChallengeResponce   [4] OCTET STRING, | 
| 408 |   lmChallengeResponce   [5] OCTET STRING, | 
| 409 | } | 
| 410 | */ | 
| 411 |  | 
| 412 | typedef struct NTLMRequest2 { | 
| 413 |   heim_utf8_string loginUserName; | 
| 414 |   heim_utf8_string loginDomainName; | 
| 415 |   unsigned int flags; | 
| 416 |   heim_octet_string lmchallenge; | 
| 417 |   heim_octet_string ntChallengeResponce; | 
| 418 |   heim_octet_string lmChallengeResponce; | 
| 419 | } NTLMRequest2; | 
| 420 |  | 
| 421 | ASN1EXP int    ASN1CALL decode_NTLMRequest2(const unsigned char *, size_t, NTLMRequest2 *, size_t *); | 
| 422 | ASN1EXP int    ASN1CALL encode_NTLMRequest2(unsigned char *, size_t, const NTLMRequest2 *, size_t *); | 
| 423 | ASN1EXP size_t ASN1CALL length_NTLMRequest2(const NTLMRequest2 *); | 
| 424 | ASN1EXP int    ASN1CALL copy_NTLMRequest2  (const NTLMRequest2 *, NTLMRequest2 *); | 
| 425 | ASN1EXP void   ASN1CALL free_NTLMRequest2  (NTLMRequest2 *); | 
| 426 |  | 
| 427 |  | 
| 428 | /* | 
| 429 | NTLMReply ::= SEQUENCE { | 
| 430 |   success         [0] BOOLEAN, | 
| 431 |   flags           [1] INTEGER (0..4294967295), | 
| 432 |   sessionkey      [2] OCTET STRING OPTIONAL, | 
| 433 | } | 
| 434 | */ | 
| 435 |  | 
| 436 | typedef struct NTLMReply { | 
| 437 |   int success; | 
| 438 |   unsigned int flags; | 
| 439 |   heim_octet_string *sessionkey; | 
| 440 | } NTLMReply; | 
| 441 |  | 
| 442 | ASN1EXP int    ASN1CALL decode_NTLMReply(const unsigned char *, size_t, NTLMReply *, size_t *); | 
| 443 | ASN1EXP int    ASN1CALL encode_NTLMReply(unsigned char *, size_t, const NTLMReply *, size_t *); | 
| 444 | ASN1EXP size_t ASN1CALL length_NTLMReply(const NTLMReply *); | 
| 445 | ASN1EXP int    ASN1CALL copy_NTLMReply  (const NTLMReply *, NTLMReply *); | 
| 446 | ASN1EXP void   ASN1CALL free_NTLMReply  (NTLMReply *); | 
| 447 |  | 
| 448 |  | 
| 449 | /* | 
| 450 | DigestReqInner ::= CHOICE { | 
| 451 |   init             [0] DigestInit, | 
| 452 |   digestRequest    [1] DigestRequest, | 
| 453 |   ntlmInit         [2] NTLMInit, | 
| 454 |   ntlmRequest      [3] NTLMRequest, | 
| 455 |   supportedMechs   [4]   NULL, | 
| 456 | } | 
| 457 | */ | 
| 458 |  | 
| 459 | typedef struct DigestReqInner { | 
| 460 |   enum DigestReqInner_enum { | 
| 461 |     choice_DigestReqInner_init = 1, | 
| 462 |     choice_DigestReqInner_digestRequest, | 
| 463 |     choice_DigestReqInner_ntlmInit, | 
| 464 |     choice_DigestReqInner_ntlmRequest, | 
| 465 |     choice_DigestReqInner_supportedMechs | 
| 466 |   } element; | 
| 467 |   union { | 
| 468 |     DigestInit init; | 
| 469 |     DigestRequest digestRequest; | 
| 470 |     NTLMInit ntlmInit; | 
| 471 |     NTLMRequest ntlmRequest; | 
| 472 |     int supportedMechs; | 
| 473 |   } u; | 
| 474 | } DigestReqInner; | 
| 475 |  | 
| 476 | ASN1EXP int    ASN1CALL decode_DigestReqInner(const unsigned char *, size_t, DigestReqInner *, size_t *); | 
| 477 | ASN1EXP int    ASN1CALL encode_DigestReqInner(unsigned char *, size_t, const DigestReqInner *, size_t *); | 
| 478 | ASN1EXP size_t ASN1CALL length_DigestReqInner(const DigestReqInner *); | 
| 479 | ASN1EXP int    ASN1CALL copy_DigestReqInner  (const DigestReqInner *, DigestReqInner *); | 
| 480 | ASN1EXP void   ASN1CALL free_DigestReqInner  (DigestReqInner *); | 
| 481 |  | 
| 482 |  | 
| 483 | /* | 
| 484 | DigestREQ ::= [APPLICATION 128] SEQUENCE { | 
| 485 |   apReq           [0] OCTET STRING, | 
| 486 |   innerReq        [1] EncryptedData, | 
| 487 | } | 
| 488 | */ | 
| 489 |  | 
| 490 | typedef struct DigestREQ { | 
| 491 |   heim_octet_string apReq; | 
| 492 |   EncryptedData innerReq; | 
| 493 | } DigestREQ; | 
| 494 |  | 
| 495 | ASN1EXP int    ASN1CALL decode_DigestREQ(const unsigned char *, size_t, DigestREQ *, size_t *); | 
| 496 | ASN1EXP int    ASN1CALL encode_DigestREQ(unsigned char *, size_t, const DigestREQ *, size_t *); | 
| 497 | ASN1EXP size_t ASN1CALL length_DigestREQ(const DigestREQ *); | 
| 498 | ASN1EXP int    ASN1CALL copy_DigestREQ  (const DigestREQ *, DigestREQ *); | 
| 499 | ASN1EXP void   ASN1CALL free_DigestREQ  (DigestREQ *); | 
| 500 |  | 
| 501 |  | 
| 502 | /* | 
| 503 | DigestRepInner ::= CHOICE { | 
| 504 |   error            [0] DigestError, | 
| 505 |   initReply        [1] DigestInitReply, | 
| 506 |   response         [2] DigestResponse, | 
| 507 |   ntlmInitReply    [3] NTLMInitReply, | 
| 508 |   ntlmResponse     [4] NTLMResponse, | 
| 509 |   supportedMechs   [5] DigestTypes, | 
| 510 |   ..., | 
| 511 | } | 
| 512 | */ | 
| 513 |  | 
| 514 | typedef struct DigestRepInner { | 
| 515 |   enum DigestRepInner_enum { | 
| 516 |     choice_DigestRepInner_asn1_ellipsis = 0, | 
| 517 |     choice_DigestRepInner_error, | 
| 518 |     choice_DigestRepInner_initReply, | 
| 519 |     choice_DigestRepInner_response, | 
| 520 |     choice_DigestRepInner_ntlmInitReply, | 
| 521 |     choice_DigestRepInner_ntlmResponse, | 
| 522 |     choice_DigestRepInner_supportedMechs | 
| 523 |     /* ... */ | 
| 524 |   } element; | 
| 525 |   union { | 
| 526 |     DigestError error; | 
| 527 |     DigestInitReply initReply; | 
| 528 |     DigestResponse response; | 
| 529 |     NTLMInitReply ntlmInitReply; | 
| 530 |     NTLMResponse ntlmResponse; | 
| 531 |     DigestTypes supportedMechs; | 
| 532 |     heim_octet_string asn1_ellipsis; | 
| 533 |   } u; | 
| 534 | } DigestRepInner; | 
| 535 |  | 
| 536 | ASN1EXP int    ASN1CALL decode_DigestRepInner(const unsigned char *, size_t, DigestRepInner *, size_t *); | 
| 537 | ASN1EXP int    ASN1CALL encode_DigestRepInner(unsigned char *, size_t, const DigestRepInner *, size_t *); | 
| 538 | ASN1EXP size_t ASN1CALL length_DigestRepInner(const DigestRepInner *); | 
| 539 | ASN1EXP int    ASN1CALL copy_DigestRepInner  (const DigestRepInner *, DigestRepInner *); | 
| 540 | ASN1EXP void   ASN1CALL free_DigestRepInner  (DigestRepInner *); | 
| 541 |  | 
| 542 |  | 
| 543 | /* | 
| 544 | DigestREP ::= [APPLICATION 129] SEQUENCE { | 
| 545 |   apRep           [0] OCTET STRING, | 
| 546 |   innerRep        [1] EncryptedData, | 
| 547 | } | 
| 548 | */ | 
| 549 |  | 
| 550 | typedef struct DigestREP { | 
| 551 |   heim_octet_string apRep; | 
| 552 |   EncryptedData innerRep; | 
| 553 | } DigestREP; | 
| 554 |  | 
| 555 | ASN1EXP int    ASN1CALL decode_DigestREP(const unsigned char *, size_t, DigestREP *, size_t *); | 
| 556 | ASN1EXP int    ASN1CALL encode_DigestREP(unsigned char *, size_t, const DigestREP *, size_t *); | 
| 557 | ASN1EXP size_t ASN1CALL length_DigestREP(const DigestREP *); | 
| 558 | ASN1EXP int    ASN1CALL copy_DigestREP  (const DigestREP *, DigestREP *); | 
| 559 | ASN1EXP void   ASN1CALL free_DigestREP  (DigestREP *); | 
| 560 |  | 
| 561 |  | 
| 562 | #endif /* __digest_asn1_h__ */ | 
| 563 |  |