/* Copyright (C) Microsoft Corporation, 1996 - 1999 All rights reserved. */ /* ASN.1 definitions for GlobalDirectives */ #ifndef _PKCS_Module_H_ #define _PKCS_Module_H_ #include "msber.h" #ifdef __cplusplus extern "C" { #endif typedef ASN1open_t SignerInfosNC_Set; typedef ASN1open_t SetOfAny_Set; typedef ASN1open_t AttributeSetValueNC_Set; typedef ASN1open_t AttributeSetValue_Set; typedef ASN1objectidentifier2_t ObjectID; #define ObjectID_PDU 0 #define SIZE_PKCS_Module_PDU_0 sizeof(ObjectID) typedef ASN1open_t Any; typedef ObjectID ObjectIdentifierType; #define ObjectIdentifierType_PDU 1 #define SIZE_PKCS_Module_PDU_1 sizeof(ObjectIdentifierType) typedef ASN1octetstring_t OctetStringType; #define OctetStringType_PDU 2 #define SIZE_PKCS_Module_PDU_2 sizeof(OctetStringType) typedef ASN1int32_t IntegerType; #define IntegerType_PDU 3 #define SIZE_PKCS_Module_PDU_3 sizeof(IntegerType) typedef ASN1intx_t HugeIntegerType; #define HugeIntegerType_PDU 4 #define SIZE_PKCS_Module_PDU_4 sizeof(HugeIntegerType) typedef ASN1bitstring_t BitStringType; typedef ASN1octetstring_t Digest; typedef ASN1open_t CertificateRevocationList; typedef ASN1open_t CertificateRevocationListNC; typedef HugeIntegerType CertificateSerialNumber; typedef ASN1open_t Name; typedef ASN1open_t Certificate; typedef ASN1open_t CertificateNC; typedef ASN1open_t AlgorithmIdentifierNC; typedef AlgorithmIdentifierNC DigestAlgorithmIdentifierNC; typedef ASN1open_t AttributeNC; typedef AlgorithmIdentifierNC ContentEncryptionAlgIdNC; typedef ObjectID ContentType; typedef ASN1octetstring_t Data; typedef ASN1open_t DigestAlgorithmBlob; typedef ASN1octetstring_t EncryptedDigest; typedef ASN1octetstring_t EncryptedDigestNC; typedef ASN1octetstring_t EncryptedContent; typedef OctetStringType EncryptedKey; typedef ASN1open_t CertIdentifierNC; typedef OctetStringType SubjectKeyIdentifier; typedef OctetStringType UserKeyingMaterial; typedef struct AlgorithmIdentifier { union { ASN1uint16_t bit_mask; ASN1octet_t o[1]; }; ObjectID algorithm; # define AlgorithmIdentifier_parameters_present 0x80 ASN1open_t parameters; } AlgorithmIdentifier; #define AlgorithmIdentifier_PDU 5 #define SIZE_PKCS_Module_PDU_5 sizeof(AlgorithmIdentifier) typedef struct AlgorithmIdentifierNC2 { union { ASN1uint16_t bit_mask; ASN1octet_t o[1]; }; ObjectID algorithm; # define AlgorithmIdentifierNC2_parameters_present 0x80 ASN1open_t parameters; } AlgorithmIdentifierNC2; #define AlgorithmIdentifierNC2_PDU 6 #define SIZE_PKCS_Module_PDU_6 sizeof(AlgorithmIdentifierNC2) typedef AlgorithmIdentifier DigestAlgorithmIdentifier; typedef struct AlgorithmIdentifiers { ASN1uint32_t count; struct AlgorithmIdentifier *value; } AlgorithmIdentifiers; #define AlgorithmIdentifiers_PDU 7 #define SIZE_PKCS_Module_PDU_7 sizeof(AlgorithmIdentifiers) typedef struct AttributeSetValue { ASN1uint32_t count; AttributeSetValue_Set *value; } AttributeSetValue; #define AttributeSetValue_PDU 8 #define SIZE_PKCS_Module_PDU_8 sizeof(AttributeSetValue) typedef struct AttributeSetValueNC { ASN1uint32_t count; AttributeSetValueNC_Set *value; } AttributeSetValueNC; #define AttributeSetValueNC_PDU 9 #define SIZE_PKCS_Module_PDU_9 sizeof(AttributeSetValueNC) typedef struct SetOfAny { ASN1uint32_t count; SetOfAny_Set *value; } SetOfAny; #define SetOfAny_PDU 10 #define SIZE_PKCS_Module_PDU_10 sizeof(SetOfAny) typedef struct Attribute { ObjectID attributeType; AttributeSetValue attributeValue; } Attribute; typedef struct AttributeNC2 { ObjectID attributeType; AttributeSetValueNC attributeValue; } AttributeNC2; #define AttributeNC2_PDU 11 #define SIZE_PKCS_Module_PDU_11 sizeof(AttributeNC2) typedef struct Attributes { ASN1uint32_t count; struct Attribute *value; } Attributes; #define Attributes_PDU 12 #define SIZE_PKCS_Module_PDU_12 sizeof(Attributes) typedef struct AttributesNC { ASN1uint32_t count; AttributeNC *value; } AttributesNC; #define AttributesNC_PDU 13 #define SIZE_PKCS_Module_PDU_13 sizeof(AttributesNC) typedef struct AttributesNC2 { ASN1uint32_t count; struct AttributeNC2 *value; } AttributesNC2; #define AttributesNC2_PDU 14 #define SIZE_PKCS_Module_PDU_14 sizeof(AttributesNC2) typedef struct Crls { ASN1uint32_t count; CertificateRevocationList *value; } Crls; typedef struct CrlsNC { ASN1uint32_t count; CertificateRevocationListNC *value; } CrlsNC; #define CrlsNC_PDU 15 #define SIZE_PKCS_Module_PDU_15 sizeof(CrlsNC) typedef AlgorithmIdentifier ContentEncryptionAlgId; typedef AlgorithmIdentifier DigestEncryptionAlgId; typedef AlgorithmIdentifierNC2 DigestEncryptionAlgIdNC; typedef struct Certificates { ASN1uint32_t count; Certificate *value; } Certificates; typedef struct CertificatesNC { ASN1uint32_t count; CertificateNC *value; } CertificatesNC; #define CertificatesNC_PDU 16 #define SIZE_PKCS_Module_PDU_16 sizeof(CertificatesNC) typedef struct IssuerAndSerialNumber { Name issuer; CertificateSerialNumber serialNumber; } IssuerAndSerialNumber; #define IssuerAndSerialNumber_PDU 17 #define SIZE_PKCS_Module_PDU_17 sizeof(IssuerAndSerialNumber) typedef AlgorithmIdentifier KeyEncryptionAlgId; typedef struct ContentInfo { union { ASN1uint16_t bit_mask; ASN1octet_t o[1]; }; ContentType contentType; # define ContentInfo_content_present 0x80 ASN1open_t content; } ContentInfo; #define ContentInfo_PDU 18 #define SIZE_PKCS_Module_PDU_18 sizeof(ContentInfo) typedef struct ContentInfoNC { union { ASN1uint16_t bit_mask; ASN1octet_t o[1]; }; ContentType contentType; # define ContentInfoNC_content_present 0x80 ASN1open_t content; } ContentInfoNC; #define ContentInfoNC_PDU 19 #define SIZE_PKCS_Module_PDU_19 sizeof(ContentInfoNC) typedef struct DigestAlgorithmIdentifiers { ASN1uint32_t count; DigestAlgorithmIdentifier *value; } DigestAlgorithmIdentifiers; typedef struct DigestAlgorithmIdentifiersNC { ASN1uint32_t count; DigestAlgorithmIdentifierNC *value; } DigestAlgorithmIdentifiersNC; #define DigestAlgorithmIdentifiersNC_PDU 20 #define SIZE_PKCS_Module_PDU_20 sizeof(DigestAlgorithmIdentifiersNC) typedef struct SignerInfos { ASN1uint32_t count; struct SignerInfo *value; } SignerInfos; #define SignerInfos_PDU 21 #define SIZE_PKCS_Module_PDU_21 sizeof(SignerInfos) typedef struct DigestAlgorithmBlobs { ASN1uint32_t count; DigestAlgorithmBlob *value; } DigestAlgorithmBlobs; #define DigestAlgorithmBlobs_PDU 22 #define SIZE_PKCS_Module_PDU_22 sizeof(DigestAlgorithmBlobs) typedef struct SignerInfosNC { ASN1uint32_t count; SignerInfosNC_Set *value; } SignerInfosNC; #define SignerInfosNC_PDU 23 #define SIZE_PKCS_Module_PDU_23 sizeof(SignerInfosNC) typedef struct SignerInfoWithAABlobs { ASN1uint32_t count; struct SignerInfoWithAABlob *value; } SignerInfoWithAABlobs; #define SignerInfoWithAABlobs_PDU 24 #define SIZE_PKCS_Module_PDU_24 sizeof(SignerInfoWithAABlobs) typedef struct SignerInfoWithAABlob { union { ASN1uint16_t bit_mask; ASN1octet_t o[1]; }; ASN1open_t version; ASN1open_t sid; ASN1open_t digestAlgorithm; ASN1open_t authenticatedAttributes; ASN1open_t digestEncryptionAlgorithm; ASN1open_t encryptedDigest; # define dummyUAAs_present 0x80 AttributesNC dummyUAAs; } SignerInfoWithAABlob; #define SignerInfoWithAABlob_PDU 25 #define SIZE_PKCS_Module_PDU_25 sizeof(SignerInfoWithAABlob) typedef struct SignerInfoWithAttrBlobs { union { ASN1uint16_t bit_mask; ASN1octet_t o[1]; }; ASN1open_t version; ASN1open_t sid; ASN1open_t digestAlgorithm; # define SignerInfoWithAttrBlobs_authAttributes_present 0x80 AttributesNC authAttributes; DigestEncryptionAlgIdNC digestEncryptionAlgorithm; ASN1open_t encryptedDigest; # define SignerInfoWithAttrBlobs_unauthAttributes_present 0x40 AttributesNC unauthAttributes; } SignerInfoWithAttrBlobs; #define SignerInfoWithAttrBlobs_PDU 26 #define SIZE_PKCS_Module_PDU_26 sizeof(SignerInfoWithAttrBlobs) typedef struct SignerInfoWithBlobs { union { ASN1uint16_t bit_mask; ASN1octet_t o[1]; }; ASN1int32_t version; CertIdentifierNC sid; DigestAlgorithmIdentifierNC digestAlgorithm; # define SignerInfoWithBlobs_authAttributes_present 0x80 AttributesNC2 authAttributes; DigestEncryptionAlgIdNC digestEncryptionAlgorithm; EncryptedDigestNC encryptedDigest; # define SignerInfoWithBlobs_unauthAttributes_present 0x40 AttributesNC2 unauthAttributes; } SignerInfoWithBlobs; #define SignerInfoWithBlobs_PDU 27 #define SIZE_PKCS_Module_PDU_27 sizeof(SignerInfoWithBlobs) typedef struct RecipientInfos { ASN1uint32_t count; struct RecipientInfo *value; } RecipientInfos; #define RecipientInfos_PDU 28 #define SIZE_PKCS_Module_PDU_28 sizeof(RecipientInfos) typedef struct EncryptedContentInfo { union { ASN1uint16_t bit_mask; ASN1octet_t o[1]; }; ContentType contentType; ContentEncryptionAlgId contentEncryptionAlgorithm; # define encryptedContent_present 0x80 EncryptedContent encryptedContent; } EncryptedContentInfo; #define EncryptedContentInfo_PDU 29 #define SIZE_PKCS_Module_PDU_29 sizeof(EncryptedContentInfo) typedef struct RecipientInfo { ASN1int32_t version; IssuerAndSerialNumber issuerAndSerialNumber; KeyEncryptionAlgId keyEncryptionAlgorithm; EncryptedKey encryptedKey; } RecipientInfo; #define RecipientInfo_PDU 30 #define SIZE_PKCS_Module_PDU_30 sizeof(RecipientInfo) typedef struct SignedAndEnvelopedData { union { ASN1uint16_t bit_mask; ASN1octet_t o[1]; }; ASN1int32_t version; RecipientInfos recipientInfos; DigestAlgorithmIdentifiers digestAlgorithms; EncryptedContentInfo encryptedContentInfo; # define SignedAndEnvelopedData_certificates_present 0x80 Certificates certificates; # define SignedAndEnvelopedData_crls_present 0x40 Crls crls; SignerInfos signerInfos; } SignedAndEnvelopedData; #define SignedAndEnvelopedData_PDU 31 #define SIZE_PKCS_Module_PDU_31 sizeof(SignedAndEnvelopedData) typedef struct DigestedData { ASN1int32_t version; DigestAlgorithmIdentifier digestAlgorithm; ContentInfo contentInfo; Digest digest; } DigestedData; #define DigestedData_PDU 32 #define SIZE_PKCS_Module_PDU_32 sizeof(DigestedData) typedef struct EncryptedData { ASN1int32_t version; EncryptedContentInfo encryptedContentInfo; } EncryptedData; #define EncryptedData_PDU 33 #define SIZE_PKCS_Module_PDU_33 sizeof(EncryptedData) typedef struct CertIdentifier { ASN1choice_t choice; union { # define CertIdentifier_issuerAndSerialNumber_chosen 1 IssuerAndSerialNumber issuerAndSerialNumber; # define CertIdentifier_subjectKeyIdentifier_chosen 2 SubjectKeyIdentifier subjectKeyIdentifier; } u; } CertIdentifier; #define CertIdentifier_PDU 34 #define SIZE_PKCS_Module_PDU_34 sizeof(CertIdentifier) typedef struct OriginatorInfo { union { ASN1uint16_t bit_mask; ASN1octet_t o[1]; }; # define OriginatorInfo_certificates_present 0x80 Certificates certificates; # define OriginatorInfo_crls_present 0x40 Crls crls; } OriginatorInfo; #define OriginatorInfo_PDU 35 #define SIZE_PKCS_Module_PDU_35 sizeof(OriginatorInfo) typedef struct OriginatorInfoNC { union { ASN1uint16_t bit_mask; ASN1octet_t o[1]; }; # define OriginatorInfoNC_certificates_present 0x80 CertificatesNC certificates; # define OriginatorInfoNC_crls_present 0x40 CrlsNC crls; } OriginatorInfoNC; #define OriginatorInfoNC_PDU 36 #define SIZE_PKCS_Module_PDU_36 sizeof(OriginatorInfoNC) typedef struct CmsRecipientInfos { ASN1uint32_t count; struct CmsRecipientInfo *value; } CmsRecipientInfos; #define CmsRecipientInfos_PDU 37 #define SIZE_PKCS_Module_PDU_37 sizeof(CmsRecipientInfos) typedef struct KeyTransRecipientInfo { ASN1int32_t version; CertIdentifier rid; KeyEncryptionAlgId keyEncryptionAlgorithm; EncryptedKey encryptedKey; } KeyTransRecipientInfo; #define KeyTransRecipientInfo_PDU 38 #define SIZE_PKCS_Module_PDU_38 sizeof(KeyTransRecipientInfo) typedef struct OriginatorPublicKey { AlgorithmIdentifier algorithm; BitStringType publicKey; } OriginatorPublicKey; typedef struct RecipientEncryptedKeys { ASN1uint32_t count; struct RecipientEncryptedKey *value; } RecipientEncryptedKeys; typedef struct OtherKeyAttribute { union { ASN1uint16_t bit_mask; ASN1octet_t o[1]; }; ObjectID keyAttrId; # define keyAttr_present 0x80 ASN1open_t keyAttr; } OtherKeyAttribute; typedef struct MailListKeyIdentifier { union { ASN1uint16_t bit_mask; ASN1octet_t o[1]; }; OctetStringType kekIdentifier; # define MailListKeyIdentifier_date_present 0x80 ASN1generalizedtime_t date; # define MailListKeyIdentifier_other_present 0x40 OtherKeyAttribute other; } MailListKeyIdentifier; typedef struct DigestInfo { DigestAlgorithmIdentifier digestAlgorithm; Digest digest; } DigestInfo; #define DigestInfo_PDU 39 #define SIZE_PKCS_Module_PDU_39 sizeof(DigestInfo) typedef struct SignedData { union { ASN1uint16_t bit_mask; ASN1octet_t o[1]; }; ASN1int32_t version; DigestAlgorithmIdentifiers digestAlgorithms; ContentInfo contentInfo; # define SignedData_certificates_present 0x80 Certificates certificates; # define SignedData_crls_present 0x40 Crls crls; SignerInfos signerInfos; } SignedData; #define SignedData_PDU 40 #define SIZE_PKCS_Module_PDU_40 sizeof(SignedData) typedef struct SignerInfo { union { ASN1uint16_t bit_mask; ASN1octet_t o[1]; }; ASN1int32_t version; CertIdentifier sid; DigestAlgorithmIdentifier digestAlgorithm; # define authenticatedAttributes_present 0x80 Attributes authenticatedAttributes; DigestEncryptionAlgId digestEncryptionAlgorithm; EncryptedDigest encryptedDigest; # define SignerInfo_unauthAttributes_present 0x40 Attributes unauthAttributes; } SignerInfo; #define SignerInfo_PDU 41 #define SIZE_PKCS_Module_PDU_41 sizeof(SignerInfo) typedef struct SignedDataWithBlobs { union { ASN1uint16_t bit_mask; ASN1octet_t o[1]; }; ASN1int32_t version; DigestAlgorithmIdentifiersNC digestAlgorithms; ContentInfoNC contentInfo; # define SignedDataWithBlobs_certificates_present 0x80 CertificatesNC certificates; # define SignedDataWithBlobs_crls_present 0x40 CrlsNC crls; SignerInfosNC signerInfos; } SignedDataWithBlobs; #define SignedDataWithBlobs_PDU 42 #define SIZE_PKCS_Module_PDU_42 sizeof(SignedDataWithBlobs) typedef struct EnvelopedData { ASN1int32_t version; RecipientInfos recipientInfos; EncryptedContentInfo encryptedContentInfo; } EnvelopedData; #define EnvelopedData_PDU 43 #define SIZE_PKCS_Module_PDU_43 sizeof(EnvelopedData) typedef struct CmsEnvelopedData { union { ASN1uint16_t bit_mask; ASN1octet_t o[1]; }; ASN1int32_t version; # define originatorInfo_present 0x80 OriginatorInfo originatorInfo; CmsRecipientInfos recipientInfos; EncryptedContentInfo encryptedContentInfo; # define unprotectedAttrs_present 0x40 Attributes unprotectedAttrs; } CmsEnvelopedData; #define CmsEnvelopedData_PDU 44 #define SIZE_PKCS_Module_PDU_44 sizeof(CmsEnvelopedData) typedef struct OriginatorIdentifierOrKey { ASN1choice_t choice; union { # define OriginatorIdentifierOrKey_issuerAndSerialNumber_chosen 1 IssuerAndSerialNumber issuerAndSerialNumber; # define OriginatorIdentifierOrKey_subjectKeyIdentifier_chosen 2 SubjectKeyIdentifier subjectKeyIdentifier; # define originatorKey_chosen 3 OriginatorPublicKey originatorKey; } u; } OriginatorIdentifierOrKey; typedef struct RecipientKeyIdentifier { union { ASN1uint16_t bit_mask; ASN1octet_t o[1]; }; SubjectKeyIdentifier subjectKeyIdentifier; # define RecipientKeyIdentifier_date_present 0x80 ASN1generalizedtime_t date; # define RecipientKeyIdentifier_other_present 0x40 OtherKeyAttribute other; } RecipientKeyIdentifier; typedef struct MailListRecipientInfo { ASN1int32_t version; MailListKeyIdentifier mlid; KeyEncryptionAlgId keyEncryptionAlgorithm; EncryptedKey encryptedKey; } MailListRecipientInfo; #define MailListRecipientInfo_PDU 45 #define SIZE_PKCS_Module_PDU_45 sizeof(MailListRecipientInfo) typedef struct KeyAgreeRecipientInfo { union { ASN1uint16_t bit_mask; ASN1octet_t o[1]; }; ASN1int32_t version; OriginatorIdentifierOrKey originator; # define ukm_present 0x80 UserKeyingMaterial ukm; KeyEncryptionAlgId keyEncryptionAlgorithm; RecipientEncryptedKeys recipientEncryptedKeys; } KeyAgreeRecipientInfo; #define KeyAgreeRecipientInfo_PDU 46 #define SIZE_PKCS_Module_PDU_46 sizeof(KeyAgreeRecipientInfo) typedef struct RecipientIdentifier { ASN1choice_t choice; union { # define RecipientIdentifier_issuerAndSerialNumber_chosen 1 IssuerAndSerialNumber issuerAndSerialNumber; # define rKeyId_chosen 2 RecipientKeyIdentifier rKeyId; } u; } RecipientIdentifier; typedef struct CmsRecipientInfo { ASN1choice_t choice; union { # define keyTransRecipientInfo_chosen 1 KeyTransRecipientInfo keyTransRecipientInfo; # define keyAgreeRecipientInfo_chosen 2 KeyAgreeRecipientInfo keyAgreeRecipientInfo; # define mailListRecipientInfo_chosen 3 MailListRecipientInfo mailListRecipientInfo; } u; } CmsRecipientInfo; #define CmsRecipientInfo_PDU 47 #define SIZE_PKCS_Module_PDU_47 sizeof(CmsRecipientInfo) typedef struct RecipientEncryptedKey { RecipientIdentifier rid; EncryptedKey encryptedKey; } RecipientEncryptedKey; extern ASN1module_t PKCS_Module; extern void ASN1CALL PKCS_Module_Startup(void); extern void ASN1CALL PKCS_Module_Cleanup(void); /* Prototypes of element functions for SEQUENCE OF and SET OF constructs */ #ifdef __cplusplus } /* extern "C" */ #endif #endif /* _PKCS_Module_H_ */