318 lines
7.7 KiB
C
318 lines
7.7 KiB
C
/* Copyright (C) Microsoft Corporation, 1996 - 1999 All rights reserved. */
|
|
/* ASN.1 definitions for PFXNSCP */
|
|
|
|
#ifndef _PFXNSCP_Module_H_
|
|
#define _PFXNSCP_Module_H_
|
|
|
|
#include "msber.h"
|
|
|
|
#ifdef __cplusplus
|
|
extern "C" {
|
|
#endif
|
|
|
|
typedef ASN1objectidentifier2_t ObjectID;
|
|
|
|
typedef ASN1objectidentifier2_t ObjID;
|
|
|
|
typedef ASN1int32_t Version;
|
|
#define Version_v1 1
|
|
|
|
typedef ObjectID ContentType;
|
|
|
|
typedef ASN1octetstring_t RSAData;
|
|
#define RSAData_PDU 0
|
|
#define SIZE_PFXNSCP_Module_PDU_0 sizeof(RSAData)
|
|
|
|
typedef ASN1open_t Attribute;
|
|
|
|
typedef ASN1octetstring_t EncryptedContent;
|
|
|
|
typedef ASN1octetstring_t Digest;
|
|
|
|
typedef ObjID TransportMode;
|
|
|
|
typedef struct BaggageItem_unencryptedSecrets {
|
|
ASN1uint32_t count;
|
|
struct SafeBag *value;
|
|
} BaggageItem_unencryptedSecrets;
|
|
|
|
typedef struct BaggageItem_espvks {
|
|
ASN1uint32_t count;
|
|
struct ESPVK *value;
|
|
} BaggageItem_espvks;
|
|
|
|
typedef struct ContentInfo {
|
|
union {
|
|
ASN1uint16_t bit_mask;
|
|
ASN1octet_t o[1];
|
|
};
|
|
ContentType contentType;
|
|
# define content_present 0x80
|
|
ASN1open_t content;
|
|
} ContentInfo;
|
|
|
|
typedef struct Attributes {
|
|
ASN1uint32_t count;
|
|
Attribute *value;
|
|
} Attributes;
|
|
#define Attributes_PDU 1
|
|
#define SIZE_PFXNSCP_Module_PDU_1 sizeof(Attributes)
|
|
|
|
typedef struct AlgorithmIdentifier {
|
|
union {
|
|
ASN1uint16_t bit_mask;
|
|
ASN1octet_t o[1];
|
|
};
|
|
ObjectID algorithm;
|
|
# define parameters_present 0x80
|
|
ASN1open_t parameters;
|
|
} AlgorithmIdentifier;
|
|
|
|
typedef struct PBEParameter {
|
|
ASN1octetstring_t salt;
|
|
ASN1int32_t iterationCount;
|
|
} PBEParameter;
|
|
#define PBEParameter_PDU 2
|
|
#define SIZE_PFXNSCP_Module_PDU_2 sizeof(PBEParameter)
|
|
|
|
typedef AlgorithmIdentifier DigestAlgorithmIdentifier;
|
|
|
|
typedef struct Baggage {
|
|
ASN1uint32_t count;
|
|
struct BaggageItem *value;
|
|
} Baggage;
|
|
|
|
typedef struct BaggageItem {
|
|
BaggageItem_espvks espvks;
|
|
BaggageItem_unencryptedSecrets unencryptedSecrets;
|
|
} BaggageItem;
|
|
|
|
typedef struct PvkAdditional {
|
|
ObjID pvkAdditionalType;
|
|
ASN1open_t pvkAdditionalContent;
|
|
} PvkAdditional;
|
|
#define PvkAdditional_PDU 3
|
|
#define SIZE_PFXNSCP_Module_PDU_3 sizeof(PvkAdditional)
|
|
|
|
typedef struct SafeContents {
|
|
ASN1uint32_t count;
|
|
struct SafeBag *value;
|
|
} SafeContents;
|
|
#define SafeContents_PDU 4
|
|
#define SIZE_PFXNSCP_Module_PDU_4 sizeof(SafeContents)
|
|
|
|
typedef struct SafeBag {
|
|
union {
|
|
ASN1uint16_t bit_mask;
|
|
ASN1octet_t o[1];
|
|
};
|
|
ObjID safeBagType;
|
|
ASN1open_t safeBagContent;
|
|
# define safeBagName_present 0x80
|
|
ASN1char16string_t safeBagName;
|
|
} SafeBag;
|
|
#define SafeBag_PDU 5
|
|
#define SIZE_PFXNSCP_Module_PDU_5 sizeof(SafeBag)
|
|
|
|
typedef struct KeyBag {
|
|
ASN1uint32_t count;
|
|
struct PrivateKey *value;
|
|
} KeyBag;
|
|
#define KeyBag_PDU 6
|
|
#define SIZE_PFXNSCP_Module_PDU_6 sizeof(KeyBag)
|
|
|
|
typedef struct CertCRLBag {
|
|
ASN1uint32_t count;
|
|
struct CertCRL *value;
|
|
} CertCRLBag;
|
|
#define CertCRLBag_PDU 7
|
|
#define SIZE_PFXNSCP_Module_PDU_7 sizeof(CertCRLBag)
|
|
|
|
typedef struct CertCRL {
|
|
ObjID bagId;
|
|
ASN1open_t value;
|
|
} CertCRL;
|
|
#define CertCRL_PDU 8
|
|
#define SIZE_PFXNSCP_Module_PDU_8 sizeof(CertCRL)
|
|
|
|
typedef struct X509Bag {
|
|
ContentInfo certOrCRL;
|
|
} X509Bag;
|
|
#define X509Bag_PDU 9
|
|
#define SIZE_PFXNSCP_Module_PDU_9 sizeof(X509Bag)
|
|
|
|
typedef struct SDSICertBag {
|
|
ASN1ztcharstring_t value;
|
|
} SDSICertBag;
|
|
#define SDSICertBag_PDU 10
|
|
#define SIZE_PFXNSCP_Module_PDU_10 sizeof(SDSICertBag)
|
|
|
|
typedef struct SecretBag {
|
|
ASN1uint32_t count;
|
|
struct Secret *value;
|
|
} SecretBag;
|
|
#define SecretBag_PDU 11
|
|
#define SIZE_PFXNSCP_Module_PDU_11 sizeof(SecretBag)
|
|
|
|
typedef struct SecretAdditional {
|
|
ObjID secretAdditionalType;
|
|
ASN1open_t secretAdditionalContent;
|
|
} SecretAdditional;
|
|
#define SecretAdditional_PDU 12
|
|
#define SIZE_PFXNSCP_Module_PDU_12 sizeof(SecretAdditional)
|
|
|
|
typedef AlgorithmIdentifier PrivateKeyAlgorithmIdentifier;
|
|
|
|
typedef AlgorithmIdentifier EncryptionAlgorithmIdentifier;
|
|
|
|
typedef AlgorithmIdentifier ContentEncryptionAlgorithmIdentifier;
|
|
|
|
typedef struct DigestInfo {
|
|
DigestAlgorithmIdentifier digestAlgorithm;
|
|
Digest digest;
|
|
} DigestInfo;
|
|
|
|
typedef struct MacData {
|
|
DigestInfo safeMAC;
|
|
ASN1bitstring_t macSalt;
|
|
} MacData;
|
|
|
|
typedef struct AuthenticatedSafe {
|
|
union {
|
|
ASN1uint16_t bit_mask;
|
|
ASN1octet_t o[1];
|
|
};
|
|
# define version_present 0x80
|
|
Version version;
|
|
# define transportMode_present 0x40
|
|
TransportMode transportMode;
|
|
# define privacySalt_present 0x20
|
|
ASN1bitstring_t privacySalt;
|
|
# define baggage_present 0x10
|
|
Baggage baggage;
|
|
ContentInfo safe;
|
|
} AuthenticatedSafe;
|
|
#define AuthenticatedSafe_PDU 13
|
|
#define SIZE_PFXNSCP_Module_PDU_13 sizeof(AuthenticatedSafe)
|
|
|
|
typedef DigestInfo Thumbprint;
|
|
|
|
typedef struct Secret {
|
|
union {
|
|
ASN1uint16_t bit_mask;
|
|
ASN1octet_t o[1];
|
|
};
|
|
ASN1char16string_t secretName;
|
|
ObjID secretType;
|
|
ASN1open_t value;
|
|
# define secretAdditional_present 0x80
|
|
SecretAdditional secretAdditional;
|
|
} Secret;
|
|
#define Secret_PDU 14
|
|
#define SIZE_PFXNSCP_Module_PDU_14 sizeof(Secret)
|
|
|
|
typedef struct PVKSupportingData_assocCerts {
|
|
ASN1uint32_t count;
|
|
Thumbprint *value;
|
|
} PVKSupportingData_assocCerts;
|
|
|
|
typedef struct PrivateKeyInfo {
|
|
union {
|
|
ASN1uint16_t bit_mask;
|
|
ASN1octet_t o[1];
|
|
};
|
|
Version version;
|
|
PrivateKeyAlgorithmIdentifier privateKeyAlgorithm;
|
|
ASN1octetstring_t privateKey;
|
|
# define attributes_present 0x80
|
|
Attributes attributes;
|
|
} PrivateKeyInfo;
|
|
#define PrivateKeyInfo_PDU 15
|
|
#define SIZE_PFXNSCP_Module_PDU_15 sizeof(PrivateKeyInfo)
|
|
|
|
typedef struct EncryptedContentInfo {
|
|
union {
|
|
ASN1uint16_t bit_mask;
|
|
ASN1octet_t o[1];
|
|
};
|
|
ContentType contentType;
|
|
ContentEncryptionAlgorithmIdentifier contentEncryptionAlg;
|
|
# define encryptedContent_present 0x80
|
|
EncryptedContent encryptedContent;
|
|
} EncryptedContentInfo;
|
|
|
|
typedef struct PFX {
|
|
union {
|
|
ASN1uint16_t bit_mask;
|
|
ASN1octet_t o[1];
|
|
};
|
|
# define macData_present 0x80
|
|
MacData macData;
|
|
ContentInfo authSafe;
|
|
} PFX;
|
|
#define PFX_PDU 16
|
|
#define SIZE_PFXNSCP_Module_PDU_16 sizeof(PFX)
|
|
|
|
typedef struct PVKSupportingData {
|
|
union {
|
|
ASN1uint16_t bit_mask;
|
|
ASN1octet_t o[1];
|
|
};
|
|
PVKSupportingData_assocCerts assocCerts;
|
|
# define regenerable_present 0x80
|
|
ASN1bool_t regenerable;
|
|
ASN1char16string_t nickname;
|
|
# define pvkAdditional_present 0x40
|
|
PvkAdditional pvkAdditional;
|
|
} PVKSupportingData;
|
|
#define PVKSupportingData_PDU 17
|
|
#define SIZE_PFXNSCP_Module_PDU_17 sizeof(PVKSupportingData)
|
|
|
|
typedef struct PrivateKey {
|
|
PVKSupportingData pvkData;
|
|
PrivateKeyInfo pkcs8data;
|
|
} PrivateKey;
|
|
#define PrivateKey_PDU 18
|
|
#define SIZE_PFXNSCP_Module_PDU_18 sizeof(PrivateKey)
|
|
|
|
typedef struct EncryptedData {
|
|
Version version;
|
|
EncryptedContentInfo encryptedContentInfo;
|
|
} EncryptedData;
|
|
#define EncryptedData_PDU 19
|
|
#define SIZE_PFXNSCP_Module_PDU_19 sizeof(EncryptedData)
|
|
|
|
typedef struct ESPVK {
|
|
ObjID espvkObjID;
|
|
PVKSupportingData espvkData;
|
|
ASN1open_t espvkCipherText;
|
|
} ESPVK;
|
|
#define ESPVK_PDU 20
|
|
#define SIZE_PFXNSCP_Module_PDU_20 sizeof(ESPVK)
|
|
|
|
typedef struct EncryptedPrivateKeyInfo {
|
|
EncryptionAlgorithmIdentifier encryptionAlgorithm;
|
|
EncryptedData encryptedData;
|
|
} EncryptedPrivateKeyInfo;
|
|
#define EncryptedPrivateKeyInfo_PDU 21
|
|
#define SIZE_PFXNSCP_Module_PDU_21 sizeof(EncryptedPrivateKeyInfo)
|
|
|
|
extern ASN1bool_t PVKSupportingData_regenerable_default;
|
|
extern Version AuthenticatedSafe_version_default;
|
|
extern ASN1objectidentifier2_t rsa1;
|
|
extern ASN1objectidentifier2_t pkcs_12;
|
|
extern ASN1objectidentifier2_t pkcs_12ModeIds;
|
|
extern ASN1objectidentifier2_t off_lineTransportMode;
|
|
|
|
extern ASN1module_t PFXNSCP_Module;
|
|
extern void ASN1CALL PFXNSCP_Module_Startup(void);
|
|
extern void ASN1CALL PFXNSCP_Module_Cleanup(void);
|
|
|
|
/* Prototypes of element functions for SEQUENCE OF and SET OF constructs */
|
|
|
|
#ifdef __cplusplus
|
|
} /* extern "C" */
|
|
#endif
|
|
|
|
#endif /* _PFXNSCP_Module_H_ */
|