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
15struct heim_base_data {
16 size_t length;
17 void *data;
18};
19typedef struct heim_base_data heim_octet_string;
20#endif
21
22typedef struct heim_integer {
23 size_t length;
24 void *data;
25 int negative;
26} heim_integer;
27
28typedef char *heim_general_string;
29
30typedef char *heim_utf8_string;
31
32typedef struct heim_base_data heim_printable_string;
33
34typedef struct heim_base_data heim_ia5_string;
35
36typedef struct heim_bmp_string {
37 size_t length;
38 uint16_t *data;
39} heim_bmp_string;
40
41typedef struct heim_universal_string {
42 size_t length;
43 uint32_t *data;
44} heim_universal_string;
45
46typedef char *heim_visible_string;
47
48typedef struct heim_oid {
49 size_t length;
50 unsigned *components;
51} heim_oid;
52
53typedef struct heim_bit_string {
54 size_t length;
55 void *data;
56} heim_bit_string;
57
58typedef struct heim_base_data heim_any;
59typedef 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
88struct 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) } */
97extern 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) } */
101extern 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) } */
105extern 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) } */
109extern 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) } */
113extern 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) } */
117extern 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) } */
121extern 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) } */
125extern 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) } */
129extern 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) } */
133extern 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) } */
137extern 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) } */
141extern 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) } */
145extern 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) } */
149extern 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/*
153MS-UPN-SAN ::= UTF8String
154*/
155
156typedef heim_utf8_string MS_UPN_SAN;
157
158ASN1EXP int ASN1CALL decode_MS_UPN_SAN(const unsigned char *, size_t, MS_UPN_SAN *, size_t *);
159ASN1EXP int ASN1CALL encode_MS_UPN_SAN(unsigned char *, size_t, const MS_UPN_SAN *, size_t *);
160ASN1EXP size_t ASN1CALL length_MS_UPN_SAN(const MS_UPN_SAN *);
161ASN1EXP int ASN1CALL copy_MS_UPN_SAN (const MS_UPN_SAN *, MS_UPN_SAN *);
162ASN1EXP void ASN1CALL free_MS_UPN_SAN (MS_UPN_SAN *);
163
164
165enum { pa_pk_as_req = 16 };
166
167enum { pa_pk_as_rep = 17 };
168
169enum { td_trusted_certifiers = 104 };
170
171enum { td_invalid_certificates = 105 };
172
173enum { td_dh_parameters = 109 };
174
175/*
176DHNonce ::= OCTET STRING
177*/
178
179typedef heim_octet_string DHNonce;
180
181ASN1EXP int ASN1CALL decode_DHNonce(const unsigned char *, size_t, DHNonce *, size_t *);
182ASN1EXP int ASN1CALL encode_DHNonce(unsigned char *, size_t, const DHNonce *, size_t *);
183ASN1EXP size_t ASN1CALL length_DHNonce(const DHNonce *);
184ASN1EXP int ASN1CALL copy_DHNonce (const DHNonce *, DHNonce *);
185ASN1EXP void ASN1CALL free_DHNonce (DHNonce *);
186
187
188/*
189KDFAlgorithmId ::= SEQUENCE {
190 kdf-id [0] OBJECT IDENTIFIER,
191 ...,
192}
193*/
194
195typedef struct KDFAlgorithmId {
196 heim_oid kdf_id;
197} KDFAlgorithmId;
198
199ASN1EXP int ASN1CALL decode_KDFAlgorithmId(const unsigned char *, size_t, KDFAlgorithmId *, size_t *);
200ASN1EXP int ASN1CALL encode_KDFAlgorithmId(unsigned char *, size_t, const KDFAlgorithmId *, size_t *);
201ASN1EXP size_t ASN1CALL length_KDFAlgorithmId(const KDFAlgorithmId *);
202ASN1EXP int ASN1CALL copy_KDFAlgorithmId (const KDFAlgorithmId *, KDFAlgorithmId *);
203ASN1EXP void ASN1CALL free_KDFAlgorithmId (KDFAlgorithmId *);
204
205
206/*
207TrustedCA ::= SEQUENCE {
208 caName [0] IMPLICIT OCTET STRING,
209 certificateSerialNumber [1] INTEGER OPTIONAL,
210 subjectKeyIdentifier [2] OCTET STRING OPTIONAL,
211 ...,
212}
213*/
214
215typedef struct TrustedCA {
216 heim_octet_string caName;
217 heim_integer *certificateSerialNumber;
218 heim_octet_string *subjectKeyIdentifier;
219} TrustedCA;
220
221ASN1EXP int ASN1CALL decode_TrustedCA(const unsigned char *, size_t, TrustedCA *, size_t *);
222ASN1EXP int ASN1CALL encode_TrustedCA(unsigned char *, size_t, const TrustedCA *, size_t *);
223ASN1EXP size_t ASN1CALL length_TrustedCA(const TrustedCA *);
224ASN1EXP int ASN1CALL copy_TrustedCA (const TrustedCA *, TrustedCA *);
225ASN1EXP void ASN1CALL free_TrustedCA (TrustedCA *);
226
227
228/*
229ExternalPrincipalIdentifier ::= 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
237typedef struct ExternalPrincipalIdentifier {
238 heim_octet_string *subjectName;
239 heim_octet_string *issuerAndSerialNumber;
240 heim_octet_string *subjectKeyIdentifier;
241} ExternalPrincipalIdentifier;
242
243ASN1EXP int ASN1CALL decode_ExternalPrincipalIdentifier(const unsigned char *, size_t, ExternalPrincipalIdentifier *, size_t *);
244ASN1EXP int ASN1CALL encode_ExternalPrincipalIdentifier(unsigned char *, size_t, const ExternalPrincipalIdentifier *, size_t *);
245ASN1EXP size_t ASN1CALL length_ExternalPrincipalIdentifier(const ExternalPrincipalIdentifier *);
246ASN1EXP int ASN1CALL copy_ExternalPrincipalIdentifier (const ExternalPrincipalIdentifier *, ExternalPrincipalIdentifier *);
247ASN1EXP void ASN1CALL free_ExternalPrincipalIdentifier (ExternalPrincipalIdentifier *);
248
249
250/*
251ExternalPrincipalIdentifiers ::= SEQUENCE OF ExternalPrincipalIdentifier
252*/
253
254typedef struct ExternalPrincipalIdentifiers {
255 unsigned int len;
256 ExternalPrincipalIdentifier *val;
257} ExternalPrincipalIdentifiers;
258
259ASN1EXP int ASN1CALL decode_ExternalPrincipalIdentifiers(const unsigned char *, size_t, ExternalPrincipalIdentifiers *, size_t *);
260ASN1EXP int ASN1CALL encode_ExternalPrincipalIdentifiers(unsigned char *, size_t, const ExternalPrincipalIdentifiers *, size_t *);
261ASN1EXP size_t ASN1CALL length_ExternalPrincipalIdentifiers(const ExternalPrincipalIdentifiers *);
262ASN1EXP int ASN1CALL copy_ExternalPrincipalIdentifiers (const ExternalPrincipalIdentifiers *, ExternalPrincipalIdentifiers *);
263ASN1EXP void ASN1CALL free_ExternalPrincipalIdentifiers (ExternalPrincipalIdentifiers *);
264
265
266/*
267PA-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
275typedef struct PA_PK_AS_REQ {
276 heim_octet_string signedAuthPack;
277 ExternalPrincipalIdentifiers *trustedCertifiers;
278 heim_octet_string *kdcPkId;
279} PA_PK_AS_REQ;
280
281ASN1EXP int ASN1CALL decode_PA_PK_AS_REQ(const unsigned char *, size_t, PA_PK_AS_REQ *, size_t *);
282ASN1EXP int ASN1CALL encode_PA_PK_AS_REQ(unsigned char *, size_t, const PA_PK_AS_REQ *, size_t *);
283ASN1EXP size_t ASN1CALL length_PA_PK_AS_REQ(const PA_PK_AS_REQ *);
284ASN1EXP int ASN1CALL copy_PA_PK_AS_REQ (const PA_PK_AS_REQ *, PA_PK_AS_REQ *);
285ASN1EXP void ASN1CALL free_PA_PK_AS_REQ (PA_PK_AS_REQ *);
286
287
288/*
289PKAuthenticator ::= 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
298typedef struct PKAuthenticator {
299 heim_integer cusec;
300 KerberosTime ctime;
301 unsigned int nonce;
302 heim_octet_string *paChecksum;
303} PKAuthenticator;
304
305ASN1EXP int ASN1CALL decode_PKAuthenticator(const unsigned char *, size_t, PKAuthenticator *, size_t *);
306ASN1EXP int ASN1CALL encode_PKAuthenticator(unsigned char *, size_t, const PKAuthenticator *, size_t *);
307ASN1EXP size_t ASN1CALL length_PKAuthenticator(const PKAuthenticator *);
308ASN1EXP int ASN1CALL copy_PKAuthenticator (const PKAuthenticator *, PKAuthenticator *);
309ASN1EXP void ASN1CALL free_PKAuthenticator (PKAuthenticator *);
310
311
312/*
313AuthPack ::= 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
324typedef 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
338ASN1EXP int ASN1CALL decode_AuthPack(const unsigned char *, size_t, AuthPack *, size_t *);
339ASN1EXP int ASN1CALL encode_AuthPack(unsigned char *, size_t, const AuthPack *, size_t *);
340ASN1EXP size_t ASN1CALL length_AuthPack(const AuthPack *);
341ASN1EXP int ASN1CALL copy_AuthPack (const AuthPack *, AuthPack *);
342ASN1EXP void ASN1CALL free_AuthPack (AuthPack *);
343
344
345/*
346TD-TRUSTED-CERTIFIERS ::= ExternalPrincipalIdentifiers
347*/
348
349typedef ExternalPrincipalIdentifiers TD_TRUSTED_CERTIFIERS;
350
351ASN1EXP int ASN1CALL decode_TD_TRUSTED_CERTIFIERS(const unsigned char *, size_t, TD_TRUSTED_CERTIFIERS *, size_t *);
352ASN1EXP int ASN1CALL encode_TD_TRUSTED_CERTIFIERS(unsigned char *, size_t, const TD_TRUSTED_CERTIFIERS *, size_t *);
353ASN1EXP size_t ASN1CALL length_TD_TRUSTED_CERTIFIERS(const TD_TRUSTED_CERTIFIERS *);
354ASN1EXP int ASN1CALL copy_TD_TRUSTED_CERTIFIERS (const TD_TRUSTED_CERTIFIERS *, TD_TRUSTED_CERTIFIERS *);
355ASN1EXP void ASN1CALL free_TD_TRUSTED_CERTIFIERS (TD_TRUSTED_CERTIFIERS *);
356
357
358/*
359TD-INVALID-CERTIFICATES ::= ExternalPrincipalIdentifiers
360*/
361
362typedef ExternalPrincipalIdentifiers TD_INVALID_CERTIFICATES;
363
364ASN1EXP int ASN1CALL decode_TD_INVALID_CERTIFICATES(const unsigned char *, size_t, TD_INVALID_CERTIFICATES *, size_t *);
365ASN1EXP int ASN1CALL encode_TD_INVALID_CERTIFICATES(unsigned char *, size_t, const TD_INVALID_CERTIFICATES *, size_t *);
366ASN1EXP size_t ASN1CALL length_TD_INVALID_CERTIFICATES(const TD_INVALID_CERTIFICATES *);
367ASN1EXP int ASN1CALL copy_TD_INVALID_CERTIFICATES (const TD_INVALID_CERTIFICATES *, TD_INVALID_CERTIFICATES *);
368ASN1EXP void ASN1CALL free_TD_INVALID_CERTIFICATES (TD_INVALID_CERTIFICATES *);
369
370
371/*
372KRB5PrincipalName ::= SEQUENCE {
373 realm [0] Realm,
374 principalName [1] PrincipalName,
375}
376*/
377
378typedef struct KRB5PrincipalName {
379 Realm realm;
380 PrincipalName principalName;
381} KRB5PrincipalName;
382
383ASN1EXP int ASN1CALL decode_KRB5PrincipalName(const unsigned char *, size_t, KRB5PrincipalName *, size_t *);
384ASN1EXP int ASN1CALL encode_KRB5PrincipalName(unsigned char *, size_t, const KRB5PrincipalName *, size_t *);
385ASN1EXP size_t ASN1CALL length_KRB5PrincipalName(const KRB5PrincipalName *);
386ASN1EXP int ASN1CALL copy_KRB5PrincipalName (const KRB5PrincipalName *, KRB5PrincipalName *);
387ASN1EXP void ASN1CALL free_KRB5PrincipalName (KRB5PrincipalName *);
388
389
390/*
391AD-INITIAL-VERIFIED-CAS ::= SEQUENCE OF ExternalPrincipalIdentifier
392*/
393
394typedef struct AD_INITIAL_VERIFIED_CAS {
395 unsigned int len;
396 ExternalPrincipalIdentifier *val;
397} AD_INITIAL_VERIFIED_CAS;
398
399ASN1EXP int ASN1CALL decode_AD_INITIAL_VERIFIED_CAS(const unsigned char *, size_t, AD_INITIAL_VERIFIED_CAS *, size_t *);
400ASN1EXP int ASN1CALL encode_AD_INITIAL_VERIFIED_CAS(unsigned char *, size_t, const AD_INITIAL_VERIFIED_CAS *, size_t *);
401ASN1EXP size_t ASN1CALL length_AD_INITIAL_VERIFIED_CAS(const AD_INITIAL_VERIFIED_CAS *);
402ASN1EXP int ASN1CALL copy_AD_INITIAL_VERIFIED_CAS (const AD_INITIAL_VERIFIED_CAS *, AD_INITIAL_VERIFIED_CAS *);
403ASN1EXP void ASN1CALL free_AD_INITIAL_VERIFIED_CAS (AD_INITIAL_VERIFIED_CAS *);
404
405
406/*
407DHRepInfo ::= SEQUENCE {
408 dhSignedData [0] IMPLICIT OCTET STRING,
409 serverDHNonce [1] DHNonce OPTIONAL,
410 ...,
411 kdf [2] KDFAlgorithmId OPTIONAL,
412 ...,
413}
414*/
415
416typedef struct DHRepInfo {
417 heim_octet_string dhSignedData;
418 DHNonce *serverDHNonce;
419 KDFAlgorithmId *kdf;
420} DHRepInfo;
421
422ASN1EXP int ASN1CALL decode_DHRepInfo(const unsigned char *, size_t, DHRepInfo *, size_t *);
423ASN1EXP int ASN1CALL encode_DHRepInfo(unsigned char *, size_t, const DHRepInfo *, size_t *);
424ASN1EXP size_t ASN1CALL length_DHRepInfo(const DHRepInfo *);
425ASN1EXP int ASN1CALL copy_DHRepInfo (const DHRepInfo *, DHRepInfo *);
426ASN1EXP void ASN1CALL free_DHRepInfo (DHRepInfo *);
427
428
429/*
430PA-PK-AS-REP ::= CHOICE {
431 dhInfo [0] DHRepInfo,
432 encKeyPack [1] IMPLICIT OCTET STRING,
433 ...,
434}
435*/
436
437typedef 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
451ASN1EXP int ASN1CALL decode_PA_PK_AS_REP(const unsigned char *, size_t, PA_PK_AS_REP *, size_t *);
452ASN1EXP int ASN1CALL encode_PA_PK_AS_REP(unsigned char *, size_t, const PA_PK_AS_REP *, size_t *);
453ASN1EXP size_t ASN1CALL length_PA_PK_AS_REP(const PA_PK_AS_REP *);
454ASN1EXP int ASN1CALL copy_PA_PK_AS_REP (const PA_PK_AS_REP *, PA_PK_AS_REP *);
455ASN1EXP void ASN1CALL free_PA_PK_AS_REP (PA_PK_AS_REP *);
456
457
458/*
459KDCDHKeyInfo ::= SEQUENCE {
460 subjectPublicKey [0] BIT STRING {
461 },
462 nonce [1] INTEGER (0..4294967295),
463 dhKeyExpiration [2] KerberosTime OPTIONAL,
464 ...,
465}
466*/
467
468typedef struct KDCDHKeyInfo {
469 heim_bit_string subjectPublicKey;
470 unsigned int nonce;
471 KerberosTime *dhKeyExpiration;
472} KDCDHKeyInfo;
473
474ASN1EXP int ASN1CALL decode_KDCDHKeyInfo(const unsigned char *, size_t, KDCDHKeyInfo *, size_t *);
475ASN1EXP int ASN1CALL encode_KDCDHKeyInfo(unsigned char *, size_t, const KDCDHKeyInfo *, size_t *);
476ASN1EXP size_t ASN1CALL length_KDCDHKeyInfo(const KDCDHKeyInfo *);
477ASN1EXP int ASN1CALL copy_KDCDHKeyInfo (const KDCDHKeyInfo *, KDCDHKeyInfo *);
478ASN1EXP void ASN1CALL free_KDCDHKeyInfo (KDCDHKeyInfo *);
479
480
481/*
482ReplyKeyPack ::= SEQUENCE {
483 replyKey [0] EncryptionKey,
484 asChecksum [1] Checksum,
485 ...,
486}
487*/
488
489typedef struct ReplyKeyPack {
490 EncryptionKey replyKey;
491 Checksum asChecksum;
492} ReplyKeyPack;
493
494ASN1EXP int ASN1CALL decode_ReplyKeyPack(const unsigned char *, size_t, ReplyKeyPack *, size_t *);
495ASN1EXP int ASN1CALL encode_ReplyKeyPack(unsigned char *, size_t, const ReplyKeyPack *, size_t *);
496ASN1EXP size_t ASN1CALL length_ReplyKeyPack(const ReplyKeyPack *);
497ASN1EXP int ASN1CALL copy_ReplyKeyPack (const ReplyKeyPack *, ReplyKeyPack *);
498ASN1EXP void ASN1CALL free_ReplyKeyPack (ReplyKeyPack *);
499
500
501/*
502TD-DH-PARAMETERS ::= SEQUENCE OF AlgorithmIdentifier
503*/
504
505typedef struct TD_DH_PARAMETERS {
506 unsigned int len;
507 AlgorithmIdentifier *val;
508} TD_DH_PARAMETERS;
509
510ASN1EXP int ASN1CALL decode_TD_DH_PARAMETERS(const unsigned char *, size_t, TD_DH_PARAMETERS *, size_t *);
511ASN1EXP int ASN1CALL encode_TD_DH_PARAMETERS(unsigned char *, size_t, const TD_DH_PARAMETERS *, size_t *);
512ASN1EXP size_t ASN1CALL length_TD_DH_PARAMETERS(const TD_DH_PARAMETERS *);
513ASN1EXP int ASN1CALL copy_TD_DH_PARAMETERS (const TD_DH_PARAMETERS *, TD_DH_PARAMETERS *);
514ASN1EXP void ASN1CALL free_TD_DH_PARAMETERS (TD_DH_PARAMETERS *);
515
516
517/*
518PKAuthenticator-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
527typedef struct PKAuthenticator_Win2k {
528 PrincipalName kdcName;
529 Realm kdcRealm;
530 unsigned int cusec;
531 KerberosTime ctime;
532 int nonce;
533} PKAuthenticator_Win2k;
534
535ASN1EXP int ASN1CALL decode_PKAuthenticator_Win2k(const unsigned char *, size_t, PKAuthenticator_Win2k *, size_t *);
536ASN1EXP int ASN1CALL encode_PKAuthenticator_Win2k(unsigned char *, size_t, const PKAuthenticator_Win2k *, size_t *);
537ASN1EXP size_t ASN1CALL length_PKAuthenticator_Win2k(const PKAuthenticator_Win2k *);
538ASN1EXP int ASN1CALL copy_PKAuthenticator_Win2k (const PKAuthenticator_Win2k *, PKAuthenticator_Win2k *);
539ASN1EXP void ASN1CALL free_PKAuthenticator_Win2k (PKAuthenticator_Win2k *);
540
541
542/*
543AuthPack-Win2k ::= SEQUENCE {
544 pkAuthenticator [0] PKAuthenticator-Win2k,
545 clientPublicValue [1] SubjectPublicKeyInfo OPTIONAL,
546}
547*/
548
549typedef struct AuthPack_Win2k {
550 PKAuthenticator_Win2k pkAuthenticator;
551 SubjectPublicKeyInfo *clientPublicValue;
552} AuthPack_Win2k;
553
554ASN1EXP int ASN1CALL decode_AuthPack_Win2k(const unsigned char *, size_t, AuthPack_Win2k *, size_t *);
555ASN1EXP int ASN1CALL encode_AuthPack_Win2k(unsigned char *, size_t, const AuthPack_Win2k *, size_t *);
556ASN1EXP size_t ASN1CALL length_AuthPack_Win2k(const AuthPack_Win2k *);
557ASN1EXP int ASN1CALL copy_AuthPack_Win2k (const AuthPack_Win2k *, AuthPack_Win2k *);
558ASN1EXP void ASN1CALL free_AuthPack_Win2k (AuthPack_Win2k *);
559
560
561/*
562TrustedCA-Win2k ::= CHOICE {
563 caName [1] heim_any,
564 issuerAndSerial [2] IssuerAndSerialNumber,
565}
566*/
567
568typedef 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
579ASN1EXP int ASN1CALL decode_TrustedCA_Win2k(const unsigned char *, size_t, TrustedCA_Win2k *, size_t *);
580ASN1EXP int ASN1CALL encode_TrustedCA_Win2k(unsigned char *, size_t, const TrustedCA_Win2k *, size_t *);
581ASN1EXP size_t ASN1CALL length_TrustedCA_Win2k(const TrustedCA_Win2k *);
582ASN1EXP int ASN1CALL copy_TrustedCA_Win2k (const TrustedCA_Win2k *, TrustedCA_Win2k *);
583ASN1EXP void ASN1CALL free_TrustedCA_Win2k (TrustedCA_Win2k *);
584
585
586/*
587PA-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
595typedef 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
605ASN1EXP int ASN1CALL decode_PA_PK_AS_REQ_Win2k(const unsigned char *, size_t, PA_PK_AS_REQ_Win2k *, size_t *);
606ASN1EXP int ASN1CALL encode_PA_PK_AS_REQ_Win2k(unsigned char *, size_t, const PA_PK_AS_REQ_Win2k *, size_t *);
607ASN1EXP size_t ASN1CALL length_PA_PK_AS_REQ_Win2k(const PA_PK_AS_REQ_Win2k *);
608ASN1EXP int ASN1CALL copy_PA_PK_AS_REQ_Win2k (const PA_PK_AS_REQ_Win2k *, PA_PK_AS_REQ_Win2k *);
609ASN1EXP void ASN1CALL free_PA_PK_AS_REQ_Win2k (PA_PK_AS_REQ_Win2k *);
610
611
612/*
613PA-PK-AS-REP-Win2k ::= CHOICE {
614 dhSignedData [0] IMPLICIT OCTET STRING,
615 encKeyPack [1] IMPLICIT OCTET STRING,
616}
617*/
618
619typedef 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
630ASN1EXP int ASN1CALL decode_PA_PK_AS_REP_Win2k(const unsigned char *, size_t, PA_PK_AS_REP_Win2k *, size_t *);
631ASN1EXP int ASN1CALL encode_PA_PK_AS_REP_Win2k(unsigned char *, size_t, const PA_PK_AS_REP_Win2k *, size_t *);
632ASN1EXP size_t ASN1CALL length_PA_PK_AS_REP_Win2k(const PA_PK_AS_REP_Win2k *);
633ASN1EXP int ASN1CALL copy_PA_PK_AS_REP_Win2k (const PA_PK_AS_REP_Win2k *, PA_PK_AS_REP_Win2k *);
634ASN1EXP void ASN1CALL free_PA_PK_AS_REP_Win2k (PA_PK_AS_REP_Win2k *);
635
636
637/*
638KDCDHKeyInfo-Win2k ::= SEQUENCE {
639 nonce [0] INTEGER (-2147483648..2147483647),
640 subjectPublicKey [2] BIT STRING {
641 },
642}
643*/
644
645typedef struct KDCDHKeyInfo_Win2k {
646 int nonce;
647 heim_bit_string subjectPublicKey;
648} KDCDHKeyInfo_Win2k;
649
650ASN1EXP int ASN1CALL decode_KDCDHKeyInfo_Win2k(const unsigned char *, size_t, KDCDHKeyInfo_Win2k *, size_t *);
651ASN1EXP int ASN1CALL encode_KDCDHKeyInfo_Win2k(unsigned char *, size_t, const KDCDHKeyInfo_Win2k *, size_t *);
652ASN1EXP size_t ASN1CALL length_KDCDHKeyInfo_Win2k(const KDCDHKeyInfo_Win2k *);
653ASN1EXP int ASN1CALL copy_KDCDHKeyInfo_Win2k (const KDCDHKeyInfo_Win2k *, KDCDHKeyInfo_Win2k *);
654ASN1EXP void ASN1CALL free_KDCDHKeyInfo_Win2k (KDCDHKeyInfo_Win2k *);
655
656
657/*
658ReplyKeyPack-Win2k ::= SEQUENCE {
659 replyKey [0] EncryptionKey,
660 nonce [1] INTEGER (-2147483648..2147483647),
661 ...,
662}
663*/
664
665typedef struct ReplyKeyPack_Win2k {
666 EncryptionKey replyKey;
667 int nonce;
668} ReplyKeyPack_Win2k;
669
670ASN1EXP int ASN1CALL decode_ReplyKeyPack_Win2k(const unsigned char *, size_t, ReplyKeyPack_Win2k *, size_t *);
671ASN1EXP int ASN1CALL encode_ReplyKeyPack_Win2k(unsigned char *, size_t, const ReplyKeyPack_Win2k *, size_t *);
672ASN1EXP size_t ASN1CALL length_ReplyKeyPack_Win2k(const ReplyKeyPack_Win2k *);
673ASN1EXP int ASN1CALL copy_ReplyKeyPack_Win2k (const ReplyKeyPack_Win2k *, ReplyKeyPack_Win2k *);
674ASN1EXP void ASN1CALL free_ReplyKeyPack_Win2k (ReplyKeyPack_Win2k *);
675
676
677/*
678PA-PK-AS-REP-BTMM ::= SEQUENCE {
679 dhSignedData [0] heim_any OPTIONAL,
680 encKeyPack [1] heim_any OPTIONAL,
681}
682*/
683
684typedef struct PA_PK_AS_REP_BTMM {
685 heim_any *dhSignedData;
686 heim_any *encKeyPack;
687} PA_PK_AS_REP_BTMM;
688
689ASN1EXP int ASN1CALL decode_PA_PK_AS_REP_BTMM(const unsigned char *, size_t, PA_PK_AS_REP_BTMM *, size_t *);
690ASN1EXP int ASN1CALL encode_PA_PK_AS_REP_BTMM(unsigned char *, size_t, const PA_PK_AS_REP_BTMM *, size_t *);
691ASN1EXP size_t ASN1CALL length_PA_PK_AS_REP_BTMM(const PA_PK_AS_REP_BTMM *);
692ASN1EXP int ASN1CALL copy_PA_PK_AS_REP_BTMM (const PA_PK_AS_REP_BTMM *, PA_PK_AS_REP_BTMM *);
693ASN1EXP void ASN1CALL free_PA_PK_AS_REP_BTMM (PA_PK_AS_REP_BTMM *);
694
695
696/*
697PkinitSP80056AOtherInfo ::= 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
706typedef 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
714ASN1EXP int ASN1CALL decode_PkinitSP80056AOtherInfo(const unsigned char *, size_t, PkinitSP80056AOtherInfo *, size_t *);
715ASN1EXP int ASN1CALL encode_PkinitSP80056AOtherInfo(unsigned char *, size_t, const PkinitSP80056AOtherInfo *, size_t *);
716ASN1EXP size_t ASN1CALL length_PkinitSP80056AOtherInfo(const PkinitSP80056AOtherInfo *);
717ASN1EXP int ASN1CALL copy_PkinitSP80056AOtherInfo (const PkinitSP80056AOtherInfo *, PkinitSP80056AOtherInfo *);
718ASN1EXP void ASN1CALL free_PkinitSP80056AOtherInfo (PkinitSP80056AOtherInfo *);
719
720
721/*
722PkinitSuppPubInfo ::= 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
731typedef struct PkinitSuppPubInfo {
732 int enctype;
733 heim_octet_string as_REQ;
734 heim_octet_string pk_as_rep;
735 Ticket ticket;
736} PkinitSuppPubInfo;
737
738ASN1EXP int ASN1CALL decode_PkinitSuppPubInfo(const unsigned char *, size_t, PkinitSuppPubInfo *, size_t *);
739ASN1EXP int ASN1CALL encode_PkinitSuppPubInfo(unsigned char *, size_t, const PkinitSuppPubInfo *, size_t *);
740ASN1EXP size_t ASN1CALL length_PkinitSuppPubInfo(const PkinitSuppPubInfo *);
741ASN1EXP int ASN1CALL copy_PkinitSuppPubInfo (const PkinitSuppPubInfo *, PkinitSuppPubInfo *);
742ASN1EXP void ASN1CALL free_PkinitSuppPubInfo (PkinitSuppPubInfo *);
743
744
745#endif /* __pkinit_asn1_h__ */
746