/* Generated from /usr/src/kerberos5/lib/libhx509/../../../crypto/heimdal/lib/hx509/crmf.asn1 */
/* Do not edit */
#ifndef __crmf_asn1_h__
#define __crmf_asn1_h__
#include <stddef.h>
#include <time.h>
#ifndef __asn1_common_definitions__
#define __asn1_common_definitions__
typedef struct heim_integer {
size_t length;
void *data;
int negative;
} heim_integer;
typedef struct heim_octet_string {
size_t length;
void *data;
} heim_octet_string;
typedef char *heim_general_string;
typedef char *heim_utf8_string;
typedef struct heim_octet_string heim_printable_string;
typedef struct heim_octet_string heim_ia5_string;
typedef struct heim_bmp_string {
size_t length;
uint16_t *data;
} heim_bmp_string;
typedef struct heim_universal_string {
size_t length;
uint32_t *data;
} heim_universal_string;
typedef char *heim_visible_string;
typedef struct heim_oid {
size_t length;
unsigned *components;
} heim_oid;
typedef struct heim_bit_string {
size_t length;
void *data;
} heim_bit_string;
typedef struct heim_octet_string heim_any;
typedef struct heim_octet_string heim_any_set;
#define ASN1_MALLOC_ENCODE(T, B, BL, S, L, R) \
do { \
(BL) = length_##T((S)); \
(B) = malloc((BL)); \
if((B) == NULL) { \
(R) = ENOMEM; \
} else { \
(R) = encode_##T(((unsigned char*)(B)) + (BL) - 1, (BL), \
(S), (L)); \
if((R) != 0) { \
free((B)); \
(B) = NULL; \
} \
} \
} while (0)
#ifdef _WIN32
#ifndef ASN1_LIB
#define ASN1EXP __declspec(dllimport)
#else
#define ASN1EXP
#endif
#define ASN1CALL __stdcall
#else
#define ASN1EXP
#define ASN1CALL
#endif
struct units;
#endif
#include <rfc2459_asn1.h>
#include <heim_asn1.h>
/*
CRMFRDNSequence ::= SEQUENCE OF RelativeDistinguishedName
*/
typedef struct CRMFRDNSequence {
unsigned int len;
RelativeDistinguishedName *val;
} CRMFRDNSequence;
ASN1EXP int ASN1CALL decode_CRMFRDNSequence(const unsigned char *, size_t, CRMFRDNSequence *, size_t *);
ASN1EXP int ASN1CALL encode_CRMFRDNSequence(unsigned char *, size_t, const CRMFRDNSequence *, size_t *);
ASN1EXP size_t ASN1CALL length_CRMFRDNSequence(const CRMFRDNSequence *);
ASN1EXP int ASN1CALL copy_CRMFRDNSequence (const CRMFRDNSequence *, CRMFRDNSequence *);
ASN1EXP void ASN1CALL free_CRMFRDNSequence (CRMFRDNSequence *);
/*
Controls ::= SEQUENCE OF AttributeTypeAndValue
*/
typedef struct Controls {
unsigned int len;
AttributeTypeAndValue *val;
} Controls;
ASN1EXP int ASN1CALL decode_Controls(const unsigned char *, size_t, Controls *, size_t *);
ASN1EXP int ASN1CALL encode_Controls(unsigned char *, size_t, const Controls *, size_t *);
ASN1EXP size_t ASN1CALL length_Controls(const Controls *);
ASN1EXP int ASN1CALL copy_Controls (const Controls *, Controls *);
ASN1EXP void ASN1CALL free_Controls (Controls *);
/*
POPOSigningKey ::= SEQUENCE {
poposkInput [0] IMPLICIT POPOSigningKeyInput OPTIONAL,
algorithmIdentifier AlgorithmIdentifier,
signature BIT STRING {
},
}
*/
typedef struct POPOSigningKey {
POPOSigningKeyInput *poposkInput;
AlgorithmIdentifier algorithmIdentifier;
heim_bit_string signature;
} POPOSigningKey;
ASN1EXP int ASN1CALL decode_POPOSigningKey(const unsigned char *, size_t, POPOSigningKey *, size_t *);
ASN1EXP int ASN1CALL encode_POPOSigningKey(unsigned char *, size_t, const POPOSigningKey *, size_t *);
ASN1EXP size_t ASN1CALL length_POPOSigningKey(const POPOSigningKey *);
ASN1EXP int ASN1CALL copy_POPOSigningKey (const POPOSigningKey *, POPOSigningKey *);
ASN1EXP void ASN1CALL free_POPOSigningKey (POPOSigningKey *);
/*
PKMACValue ::= SEQUENCE {
algId AlgorithmIdentifier,
value BIT STRING {
},
}
*/
typedef struct PKMACValue {
AlgorithmIdentifier algId;
heim_bit_string value;
} PKMACValue;
ASN1EXP int ASN1CALL decode_PKMACValue(const unsigned char *, size_t, PKMACValue *, size_t *);
ASN1EXP int ASN1CALL encode_PKMACValue(unsigned char *, size_t, const PKMACValue *, size_t *);
ASN1EXP size_t ASN1CALL length_PKMACValue(const PKMACValue *);
ASN1EXP int ASN1CALL copy_PKMACValue (const PKMACValue *, PKMACValue *);
ASN1EXP void ASN1CALL free_PKMACValue (PKMACValue *);
/*
POPOSigningKeyInput ::= SEQUENCE {
authInfo CHOICE {
sender [0] IMPLICIT GeneralName,
publicKeyMAC PKMACValue,
},
publicKey SubjectPublicKeyInfo,
}
*/
typedef struct POPOSigningKeyInput {
struct POPOSigningKeyInput_authInfo {
enum {
choice_POPOSigningKeyInput_authInfo_sender = 1,
choice_POPOSigningKeyInput_authInfo_publicKeyMAC
} element;
union {
GeneralName sender;
PKMACValue publicKeyMAC;
} u;
} authInfo;
SubjectPublicKeyInfo publicKey;
} POPOSigningKeyInput;
ASN1EXP int ASN1CALL decode_POPOSigningKeyInput(const unsigned char *, size_t, POPOSigningKeyInput *, size_t *);
ASN1EXP int ASN1CALL encode_POPOSigningKeyInput(unsigned char *, size_t, const POPOSigningKeyInput *, size_t *);
ASN1EXP size_t ASN1CALL length_POPOSigningKeyInput(const POPOSigningKeyInput *);
ASN1EXP int ASN1CALL copy_POPOSigningKeyInput (const POPOSigningKeyInput *, POPOSigningKeyInput *);
ASN1EXP void ASN1CALL free_POPOSigningKeyInput (POPOSigningKeyInput *);
/*
PBMParameter ::= SEQUENCE {
salt OCTET STRING,
owf AlgorithmIdentifier,
iterationCount INTEGER,
mac AlgorithmIdentifier,
}
*/
typedef struct PBMParameter {
heim_octet_string salt;
AlgorithmIdentifier owf;
heim_integer iterationCount;
AlgorithmIdentifier mac;
} PBMParameter;
ASN1EXP int ASN1CALL decode_PBMParameter(const unsigned char *, size_t, PBMParameter *, size_t *);
ASN1EXP int ASN1CALL encode_PBMParameter(unsigned char *, size_t, const PBMParameter *, size_t *);
ASN1EXP size_t ASN1CALL length_PBMParameter(const PBMParameter *);
ASN1EXP int ASN1CALL copy_PBMParameter (const PBMParameter *, PBMParameter *);
ASN1EXP void ASN1CALL free_PBMParameter (PBMParameter *);
/*
SubsequentMessage ::= INTEGER {
encrCert(0),
challengeResp(1)
}
*/
typedef enum SubsequentMessage {
encrCert = 0,
challengeResp = 1
} SubsequentMessage;
ASN1EXP int ASN1CALL decode_SubsequentMessage(const unsigned char *, size_t, SubsequentMessage *, size_t *);
ASN1EXP int ASN1CALL encode_SubsequentMessage(unsigned char *, size_t, const SubsequentMessage *, size_t *);
ASN1EXP size_t ASN1CALL length_SubsequentMessage(const SubsequentMessage *);
ASN1EXP int ASN1CALL copy_SubsequentMessage (const SubsequentMessage *, SubsequentMessage *);
ASN1EXP void ASN1CALL free_SubsequentMessage (SubsequentMessage *);
/*
POPOPrivKey ::= CHOICE {
thisMessage [0] BIT STRING {
},
subsequentMessage [1] IMPLICIT SubsequentMessage,
dhMAC [2] BIT STRING {
},
agreeMAC [3] IMPLICIT PKMACValue,
encryptedKey [4] heim_any,
}
*/
typedef struct POPOPrivKey {
enum {
choice_POPOPrivKey_thisMessage = 1,
choice_POPOPrivKey_subsequentMessage,
choice_POPOPrivKey_dhMAC,
choice_POPOPrivKey_agreeMAC,
choice_POPOPrivKey_encryptedKey
} element;
union {
heim_bit_string thisMessage;
SubsequentMessage subsequentMessage;
heim_bit_string dhMAC;
PKMACValue agreeMAC;
heim_any encryptedKey;
} u;
} POPOPrivKey;
ASN1EXP int ASN1CALL decode_POPOPrivKey(const unsigned char *, size_t, POPOPrivKey *, size_t *);
ASN1EXP int ASN1CALL encode_POPOPrivKey(unsigned char *, size_t, const POPOPrivKey *, size_t *);
ASN1EXP size_t ASN1CALL length_POPOPrivKey(const POPOPrivKey *);
ASN1EXP int ASN1CALL copy_POPOPrivKey (const POPOPrivKey *, POPOPrivKey *);
ASN1EXP void ASN1CALL free_POPOPrivKey (POPOPrivKey *);
/*
ProofOfPossession ::= CHOICE {
raVerified [0] NULL,
signature [1] POPOSigningKey,
keyEncipherment [2] POPOPrivKey,
keyAgreement [3] POPOPrivKey,
}
*/
typedef struct ProofOfPossession {
enum {
choice_ProofOfPossession_raVerified = 1,
choice_ProofOfPossession_signature,
choice_ProofOfPossession_keyEncipherment,
choice_ProofOfPossession_keyAgreement
} element;
union {
int raVerified;
POPOSigningKey signature;
POPOPrivKey keyEncipherment;
POPOPrivKey keyAgreement;
} u;
} ProofOfPossession;
ASN1EXP int ASN1CALL decode_ProofOfPossession(const unsigned char *, size_t, ProofOfPossession *, size_t *);
ASN1EXP int ASN1CALL encode_ProofOfPossession(unsigned char *, size_t, const ProofOfPossession *, size_t *);
ASN1EXP size_t ASN1CALL length_ProofOfPossession(const ProofOfPossession *);
ASN1EXP int ASN1CALL copy_ProofOfPossession (const ProofOfPossession *, ProofOfPossession *);
ASN1EXP void ASN1CALL free_ProofOfPossession (ProofOfPossession *);
/*
CertTemplate ::= SEQUENCE {
version [0] INTEGER OPTIONAL,
serialNumber [1] INTEGER OPTIONAL,
signingAlg [2] SEQUENCE {
algorithm OBJECT IDENTIFIER,
parameters heim_any OPTIONAL,
} OPTIONAL,
issuer [3] IMPLICIT CHOICE {
rdnSequence CRMFRDNSequence,
} OPTIONAL,
validity [4] SEQUENCE {
notBefore [0] Time OPTIONAL,
notAfter [1] Time OPTIONAL,
} OPTIONAL,
subject [5] IMPLICIT CHOICE {
rdnSequence CRMFRDNSequence,
} OPTIONAL,
publicKey [6] IMPLICIT SEQUENCE {
algorithm AlgorithmIdentifier,
subjectPublicKey BIT STRING {
} OPTIONAL,
} OPTIONAL,
issuerUID [7] IMPLICIT BIT STRING {
} OPTIONAL,
subjectUID [8] IMPLICIT BIT STRING {
} OPTIONAL,
extensions [9] IMPLICIT SEQUENCE OF Extension OPTIONAL,
}
*/
typedef struct CertTemplate {
heim_integer *version;
heim_integer *serialNumber;
struct CertTemplate_signingAlg {
heim_oid algorithm;
heim_any *parameters;
} *signingAlg;
struct CertTemplate_issuer {
enum {
choice_CertTemplate_issuer_rdnSequence = 1
} element;
union {
CRMFRDNSequence rdnSequence;
} u;
} *issuer;
struct CertTemplate_validity {
Time *notBefore;
Time *notAfter;
} *validity;
struct CertTemplate_subject {
enum {
choice_CertTemplate_subject_rdnSequence = 1
} element;
union {
CRMFRDNSequence rdnSequence;
} u;
} *subject;
struct CertTemplate_publicKey {
AlgorithmIdentifier algorithm;
heim_bit_string *subjectPublicKey;
} *publicKey;
heim_bit_string *issuerUID;
heim_bit_string *subjectUID;
struct CertTemplate_extensions {
unsigned int len;
Extension *val;
} *extensions;
} CertTemplate;
ASN1EXP int ASN1CALL decode_CertTemplate(const unsigned char *, size_t, CertTemplate *, size_t *);
ASN1EXP int ASN1CALL encode_CertTemplate(unsigned char *, size_t, const CertTemplate *, size_t *);
ASN1EXP size_t ASN1CALL length_CertTemplate(const CertTemplate *);
ASN1EXP int ASN1CALL copy_CertTemplate (const CertTemplate *, CertTemplate *);
ASN1EXP void ASN1CALL free_CertTemplate (CertTemplate *);
/*
CertRequest ::= SEQUENCE {
certReqId INTEGER,
certTemplate CertTemplate,
controls Controls OPTIONAL,
}
*/
typedef struct CertRequest {
heim_integer certReqId;
CertTemplate certTemplate;
Controls *controls;
} CertRequest;
ASN1EXP int ASN1CALL decode_CertRequest(const unsigned char *, size_t, CertRequest *, size_t *);
ASN1EXP int ASN1CALL encode_CertRequest(unsigned char *, size_t, const CertRequest *, size_t *);
ASN1EXP size_t ASN1CALL length_CertRequest(const CertRequest *);
ASN1EXP int ASN1CALL copy_CertRequest (const CertRequest *, CertRequest *);
ASN1EXP void ASN1CALL free_CertRequest (CertRequest *);
/*
CertReqMsg ::= SEQUENCE {
certReq CertRequest,
popo ProofOfPossession OPTIONAL,
regInfo SEQUENCE OF AttributeTypeAndValue OPTIONAL,
}
*/
typedef struct CertReqMsg {
CertRequest certReq;
ProofOfPossession *popo;
struct CertReqMsg_regInfo {
unsigned int len;
AttributeTypeAndValue *val;
} *regInfo;
} CertReqMsg;
ASN1EXP int ASN1CALL decode_CertReqMsg(const unsigned char *, size_t, CertReqMsg *, size_t *);
ASN1EXP int ASN1CALL encode_CertReqMsg(unsigned char *, size_t, const CertReqMsg *, size_t *);
ASN1EXP size_t ASN1CALL length_CertReqMsg(const CertReqMsg *);
ASN1EXP int ASN1CALL copy_CertReqMsg (const CertReqMsg *, CertReqMsg *);
ASN1EXP void ASN1CALL free_CertReqMsg (CertReqMsg *);
/*
CertReqMessages ::= SEQUENCE OF CertReqMsg
*/
typedef struct CertReqMessages {
unsigned int len;
CertReqMsg *val;
} CertReqMessages;
ASN1EXP int ASN1CALL decode_CertReqMessages(const unsigned char *, size_t, CertReqMessages *, size_t *);
ASN1EXP int ASN1CALL encode_CertReqMessages(unsigned char *, size_t, const CertReqMessages *, size_t *);
ASN1EXP size_t ASN1CALL length_CertReqMessages(const CertReqMessages *);
ASN1EXP int ASN1CALL copy_CertReqMessages (const CertReqMessages *, CertReqMessages *);
ASN1EXP void ASN1CALL free_CertReqMessages (CertReqMessages *);
#endif /* __crmf_asn1_h__ */