#ifndef _KRB5_INT_PKINIT_H
#define _KRB5_INT_PKINIT_H
typedef struct _krb5_pk_authenticator {
krb5_int32 cusec;
krb5_timestamp ctime;
krb5_int32 nonce;
krb5_checksum paChecksum;
} krb5_pk_authenticator;
typedef struct _krb5_pk_authenticator_draft9 {
krb5_principal kdcName;
krb5_octet_data kdcRealm;
krb5_int32 cusec;
krb5_timestamp ctime;
krb5_int32 nonce;
} krb5_pk_authenticator_draft9;
typedef struct _krb5_algorithm_identifier {
krb5_octet_data algorithm;
krb5_octet_data parameters;
} krb5_algorithm_identifier;
typedef struct _krb5_subject_pk_info {
krb5_algorithm_identifier algorithm;
krb5_octet_data subjectPublicKey;
} krb5_subject_pk_info;
typedef struct _krb5_auth_pack {
krb5_pk_authenticator pkAuthenticator;
krb5_subject_pk_info *clientPublicValue;
krb5_algorithm_identifier **supportedCMSTypes;
krb5_octet_data clientDHNonce;
} krb5_auth_pack;
typedef struct _krb5_auth_pack_draft9 {
krb5_pk_authenticator_draft9 pkAuthenticator;
krb5_subject_pk_info *clientPublicValue;
} krb5_auth_pack_draft9;
typedef struct _krb5_external_principal_identifier {
krb5_octet_data subjectName;
krb5_octet_data issuerAndSerialNumber;
krb5_octet_data subjectKeyIdentifier;
} krb5_external_principal_identifier;
typedef struct _krb5_trusted_ca {
enum {
choice_trusted_cas_UNKNOWN = -1,
choice_trusted_cas_principalName = 0,
choice_trusted_cas_caName = 1,
choice_trusted_cas_issuerAndSerial = 2
} choice;
union {
krb5_principal principalName;
krb5_octet_data caName;
krb5_octet_data issuerAndSerial;
} u;
} krb5_trusted_ca;
typedef struct _krb5_typed_data {
krb5_magic magic;
krb5_int32 type;
unsigned int length;
krb5_octet *data;
} krb5_typed_data;
typedef struct _krb5_pa_pk_as_req_draft9 {
krb5_octet_data signedAuthPack;
krb5_trusted_ca **trustedCertifiers;
krb5_octet_data kdcCert;
krb5_octet_data encryptionCert;
} krb5_pa_pk_as_req_draft9;
typedef struct _krb5_pa_pk_as_req {
krb5_octet_data signedAuthPack;
krb5_external_principal_identifier **trustedCertifiers;
krb5_octet_data kdcPkId;
} krb5_pa_pk_as_req;
typedef struct _krb5_dh_rep_info {
krb5_octet_data dhSignedData;
krb5_octet_data serverDHNonce;
} krb5_dh_rep_info;
typedef struct _krb5_kdc_dh_key_info {
krb5_octet_data subjectPublicKey;
krb5_int32 nonce;
krb5_timestamp dhKeyExpiration;
} krb5_kdc_dh_key_info;
typedef struct _krb5_kdc_dh_key_info_draft9 {
krb5_octet_data subjectPublicKey;
krb5_int32 nonce;
} krb5_kdc_dh_key_info_draft9;
typedef struct _krb5_reply_key_pack {
krb5_keyblock replyKey;
krb5_checksum asChecksum;
} krb5_reply_key_pack;
typedef struct _krb5_reply_key_pack_draft9 {
krb5_keyblock replyKey;
krb5_int32 nonce;
} krb5_reply_key_pack_draft9;
typedef struct _krb5_pa_pk_as_rep_draft9 {
enum {
choice_pa_pk_as_rep_draft9_UNKNOWN = -1,
choice_pa_pk_as_rep_draft9_dhSignedData = 0,
choice_pa_pk_as_rep_draft9_encKeyPack = 1
} choice;
union {
krb5_octet_data dhSignedData;
krb5_octet_data encKeyPack;
} u;
} krb5_pa_pk_as_rep_draft9;
typedef struct _krb5_pa_pk_as_rep {
enum {
choice_pa_pk_as_rep_UNKNOWN = -1,
choice_pa_pk_as_rep_dhInfo = 0,
choice_pa_pk_as_rep_encKeyPack = 1
} choice;
union {
krb5_dh_rep_info dh_Info;
krb5_octet_data encKeyPack;
} u;
} krb5_pa_pk_as_rep;
krb5_error_code encode_krb5_pa_pk_as_req
(const krb5_pa_pk_as_req *rep, krb5_data **code);
krb5_error_code encode_krb5_pa_pk_as_req_draft9
(const krb5_pa_pk_as_req_draft9 *rep, krb5_data **code);
krb5_error_code encode_krb5_pa_pk_as_rep
(const krb5_pa_pk_as_rep *rep, krb5_data **code);
krb5_error_code encode_krb5_pa_pk_as_rep_draft9
(const krb5_pa_pk_as_rep_draft9 *rep, krb5_data **code);
krb5_error_code encode_krb5_auth_pack
(const krb5_auth_pack *rep, krb5_data **code);
krb5_error_code encode_krb5_auth_pack_draft9
(const krb5_auth_pack_draft9 *rep, krb5_data **code);
krb5_error_code encode_krb5_kdc_dh_key_info
(const krb5_kdc_dh_key_info *rep, krb5_data **code);
krb5_error_code encode_krb5_reply_key_pack
(const krb5_reply_key_pack *, krb5_data **code);
krb5_error_code encode_krb5_reply_key_pack_draft9
(const krb5_reply_key_pack_draft9 *, krb5_data **code);
krb5_error_code encode_krb5_typed_data
(const krb5_typed_data **, krb5_data **code);
krb5_error_code encode_krb5_td_trusted_certifiers
(const krb5_external_principal_identifier **, krb5_data **code);
krb5_error_code encode_krb5_td_dh_parameters
(const krb5_algorithm_identifier **, krb5_data **code);
krb5_error_code decode_krb5_pa_pk_as_req
(const krb5_data *, krb5_pa_pk_as_req **);
krb5_error_code decode_krb5_pa_pk_as_req_draft9
(const krb5_data *, krb5_pa_pk_as_req_draft9 **);
krb5_error_code decode_krb5_pa_pk_as_rep
(const krb5_data *, krb5_pa_pk_as_rep **);
krb5_error_code decode_krb5_pa_pk_as_rep_draft9
(const krb5_data *, krb5_pa_pk_as_rep_draft9 **);
krb5_error_code decode_krb5_auth_pack
(const krb5_data *, krb5_auth_pack **);
krb5_error_code decode_krb5_auth_pack_draft9
(const krb5_data *, krb5_auth_pack_draft9 **);
krb5_error_code decode_krb5_kdc_dh_key_info
(const krb5_data *, krb5_kdc_dh_key_info **);
krb5_error_code decode_krb5_principal_name
(const krb5_data *, krb5_principal_data **);
krb5_error_code decode_krb5_reply_key_pack
(const krb5_data *, krb5_reply_key_pack **);
krb5_error_code decode_krb5_reply_key_pack_draft9
(const krb5_data *, krb5_reply_key_pack_draft9 **);
krb5_error_code decode_krb5_typed_data
(const krb5_data *, krb5_typed_data ***);
krb5_error_code decode_krb5_td_trusted_certifiers
(const krb5_data *, krb5_external_principal_identifier ***);
krb5_error_code decode_krb5_td_dh_parameters
(const krb5_data *, krb5_algorithm_identifier ***);
#endif