pkcs12t.h
来自「支持SSL v2/v3, TLS, PKCS #5, PKCS #7, PKCS」· C头文件 代码 · 共 387 行
H
387 行
/* * The contents of this file are subject to the Mozilla Public * License Version 1.1 (the "License"); you may not use this file * except in compliance with the License. You may obtain a copy of * the License at http://www.mozilla.org/MPL/ * * Software distributed under the License is distributed on an "AS * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or * implied. See the License for the specific language governing * rights and limitations under the License. * * The Original Code is the Netscape security libraries. * * The Initial Developer of the Original Code is Netscape * Communications Corporation. Portions created by Netscape are * Copyright (C) 1994-2000 Netscape Communications Corporation. All * Rights Reserved. * * Contributor(s): * * Alternatively, the contents of this file may be used under the * terms of the GNU General Public License Version 2 or later (the * "GPL"), in which case the provisions of the GPL are applicable * instead of those above. If you wish to allow use of your * version of this file only under the terms of the GPL and not to * allow others to use your version of this file under the MPL, * indicate your decision by deleting the provisions above and * replace them with the notice and other provisions required by * the GPL. If you do not delete the provisions above, a recipient * may use your version of this file under either the MPL or the * GPL. */#ifndef _PKCS12T_H_#define _PKCS12T_H_#include "seccomon.h"#include "secoid.h"#include "cert.h"#include "key.h"#include "plarena.h"#include "secpkcs7.h"#include "secdig.h" /* for SGNDigestInfo *//* PKCS12 Structures */typedef struct SEC_PKCS12PFXItemStr SEC_PKCS12PFXItem;typedef struct SEC_PKCS12MacDataStr SEC_PKCS12MacData;typedef struct SEC_PKCS12AuthenticatedSafeStr SEC_PKCS12AuthenticatedSafe;typedef struct SEC_PKCS12BaggageItemStr SEC_PKCS12BaggageItem;typedef struct SEC_PKCS12BaggageStr SEC_PKCS12Baggage;typedef struct SEC_PKCS12Baggage_OLDStr SEC_PKCS12Baggage_OLD;typedef struct SEC_PKCS12ESPVKItemStr SEC_PKCS12ESPVKItem;typedef struct SEC_PKCS12PVKSupportingDataStr SEC_PKCS12PVKSupportingData;typedef struct SEC_PKCS12PVKAdditionalDataStr SEC_PKCS12PVKAdditionalData;typedef struct SEC_PKCS12SafeContentsStr SEC_PKCS12SafeContents;typedef struct SEC_PKCS12SafeBagStr SEC_PKCS12SafeBag;typedef struct SEC_PKCS12PrivateKeyStr SEC_PKCS12PrivateKey;typedef struct SEC_PKCS12PrivateKeyBagStr SEC_PKCS12PrivateKeyBag;typedef struct SEC_PKCS12CertAndCRLBagStr SEC_PKCS12CertAndCRLBag;typedef struct SEC_PKCS12CertAndCRLStr SEC_PKCS12CertAndCRL;typedef struct SEC_PKCS12X509CertCRLStr SEC_PKCS12X509CertCRL;typedef struct SEC_PKCS12SDSICertStr SEC_PKCS12SDSICert;typedef struct SEC_PKCS12SecretStr SEC_PKCS12Secret;typedef struct SEC_PKCS12SecretAdditionalStr SEC_PKCS12SecretAdditional;typedef struct SEC_PKCS12SecretItemStr SEC_PKCS12SecretItem;typedef struct SEC_PKCS12SecretBagStr SEC_PKCS12SecretBag;typedef SECItem *(* SEC_PKCS12PasswordFunc)(SECItem *args);/* PKCS12 types *//* stores shrouded keys */struct SEC_PKCS12BaggageStr{ PRArenaPool *poolp; SEC_PKCS12BaggageItem **bags; int luggage_size; /* used locally */};/* additional data to be associated with keys. currently there * is nothing defined to be stored here. allows future expansion. */struct SEC_PKCS12PVKAdditionalDataStr{ PRArenaPool *poolp; SECOidData *pvkAdditionalTypeTag; /* used locally */ SECItem pvkAdditionalType; SECItem pvkAdditionalContent;};/* cert and other supporting data for private keys. used * for both shrouded and non-shrouded keys. */struct SEC_PKCS12PVKSupportingDataStr{ PRArenaPool *poolp; SGNDigestInfo **assocCerts; SECItem regenerable; SECItem nickname; SEC_PKCS12PVKAdditionalData pvkAdditional; SECItem pvkAdditionalDER; SECItem uniNickName; /* used locally */ int nThumbs;};/* shrouded key structure. supports only pkcs8 shrouding * currently. */struct SEC_PKCS12ESPVKItemStr{ PRArenaPool *poolp; /* used locally */ SECOidData *espvkTag; /* used locally */ SECItem espvkOID; SEC_PKCS12PVKSupportingData espvkData; union { SECKEYEncryptedPrivateKeyInfo *pkcs8KeyShroud; } espvkCipherText; PRBool duplicate; /* used locally */ PRBool problem_cert; /* used locally */ PRBool single_cert; /* used locally */ int nCerts; /* used locally */ SECItem derCert; /* used locally */};/* generic bag store for the safe. safeBagType identifies * the type of bag stored. */struct SEC_PKCS12SafeBagStr{ PRArenaPool *poolp; SECOidData *safeBagTypeTag; /* used locally */ SECItem safeBagType; union { SEC_PKCS12PrivateKeyBag *keyBag; SEC_PKCS12CertAndCRLBag *certAndCRLBag; SEC_PKCS12SecretBag *secretBag; } safeContent; SECItem derSafeContent; SECItem safeBagName; SECItem uniSafeBagName;};/* stores private keys and certificates in a list. each safebag * has an ID identifying the type of content stored. */struct SEC_PKCS12SafeContentsStr{ PRArenaPool *poolp; SEC_PKCS12SafeBag **contents; /* used for tracking purposes */ int safe_size; PRBool old; PRBool swapUnicode; PRBool possibleSwapUnicode;};/* private key structure which holds encrypted private key and * supporting data including nickname and certificate thumbprint. */struct SEC_PKCS12PrivateKeyStr{ PRArenaPool *poolp; SEC_PKCS12PVKSupportingData pvkData; SECKEYPrivateKeyInfo pkcs8data; /* borrowed from PKCS 8 */ PRBool duplicate; /* used locally */ PRBool problem_cert;/* used locally */ PRBool single_cert; /* used locally */ int nCerts; /* used locally */ SECItem derCert; /* used locally */};/* private key bag, holds a (null terminated) list of private key * structures. */struct SEC_PKCS12PrivateKeyBagStr{ PRArenaPool *poolp; SEC_PKCS12PrivateKey **privateKeys; int bag_size; /* used locally */};/* container to hold certificates. currently supports x509 * and sdsi certificates */struct SEC_PKCS12CertAndCRLStr{ PRArenaPool *poolp; SECOidData *BagTypeTag; /* used locally */ SECItem BagID; union { SEC_PKCS12X509CertCRL *x509; SEC_PKCS12SDSICert *sdsi; } value; SECItem derValue; SECItem nickname; /* used locally */ PRBool duplicate; /* used locally */};/* x509 certificate structure. typically holds the der encoding * of the x509 certificate. thumbprint contains a digest of the * certificate */struct SEC_PKCS12X509CertCRLStr{ PRArenaPool *poolp; SEC_PKCS7ContentInfo certOrCRL; SGNDigestInfo thumbprint; SECItem *derLeafCert; /* used locally */};/* sdsi certificate structure. typically holds the der encoding * of the sdsi certificate. thumbprint contains a digest of the * certificate */struct SEC_PKCS12SDSICertStr{ PRArenaPool *poolp; SECItem value; SGNDigestInfo thumbprint;};/* contains a null terminated list of certs and crls */struct SEC_PKCS12CertAndCRLBagStr{ PRArenaPool *poolp; SEC_PKCS12CertAndCRL **certAndCRLs; int bag_size; /* used locally */};/* additional secret information. currently no information * stored in this structure. */struct SEC_PKCS12SecretAdditionalStr{ PRArenaPool *poolp; SECOidData *secretTypeTag; /* used locally */ SECItem secretAdditionalType; SECItem secretAdditionalContent;};/* secrets container. this will be used to contain currently * unspecified secrets. (it's a secret) */struct SEC_PKCS12SecretStr{ PRArenaPool *poolp; SECItem secretName; SECItem value; SEC_PKCS12SecretAdditional secretAdditional; SECItem uniSecretName;};struct SEC_PKCS12SecretItemStr{ PRArenaPool *poolp; SEC_PKCS12Secret secret; SEC_PKCS12SafeBag subFolder;}; /* a bag of secrets. holds a null terminated list of secrets. */struct SEC_PKCS12SecretBagStr{ PRArenaPool *poolp; SEC_PKCS12SecretItem **secrets; int bag_size; /* used locally */};struct SEC_PKCS12MacDataStr{ SGNDigestInfo safeMac; SECItem macSalt;};/* outer transfer unit */struct SEC_PKCS12PFXItemStr{ PRArenaPool *poolp; SEC_PKCS12MacData macData; SEC_PKCS7ContentInfo authSafe; /* for compatibility with beta */ PRBool old; SGNDigestInfo old_safeMac; SECItem old_macSalt; /* compatibility between platforms for unicode swapping */ PRBool swapUnicode;};struct SEC_PKCS12BaggageItemStr { PRArenaPool *poolp; SEC_PKCS12ESPVKItem **espvks; SEC_PKCS12SafeBag **unencSecrets; int nEspvks; int nSecrets; }; /* stores shrouded keys */struct SEC_PKCS12Baggage_OLDStr{ PRArenaPool *poolp; SEC_PKCS12ESPVKItem **espvks; int luggage_size; /* used locally */};/* authenticated safe, stores certs, keys, and shrouded keys */struct SEC_PKCS12AuthenticatedSafeStr{ PRArenaPool *poolp; SECItem version; SECOidData *transportTypeTag; /* local not part of encoding*/ SECItem transportMode; SECItem privacySalt; SEC_PKCS12Baggage baggage; SEC_PKCS7ContentInfo *safe; /* used for beta compatibility */ PRBool old; PRBool emptySafe; SEC_PKCS12Baggage_OLD old_baggage; SEC_PKCS7ContentInfo old_safe; PRBool swapUnicode;};#define SEC_PKCS12_PFX_VERSION 1 /* what we create *//* PKCS 12 Templates */extern const SEC_ASN1Template SEC_PKCS12PFXItemTemplate_OLD[];extern const SEC_ASN1Template SEC_PKCS12AuthenticatedSafeTemplate_OLD[];extern const SEC_ASN1Template SEC_PKCS12BaggageTemplate_OLD[];extern const SEC_ASN1Template SEC_PKCS12PFXItemTemplate[];extern const SEC_ASN1Template SEC_PKCS12MacDataTemplate[];extern const SEC_ASN1Template SEC_PKCS12AuthenticatedSafeTemplate[];extern const SEC_ASN1Template SEC_PKCS12BaggageTemplate[];extern const SEC_ASN1Template SEC_PKCS12ESPVKItemTemplate[];extern const SEC_ASN1Template SEC_PKCS12PVKSupportingDataTemplate[];extern const SEC_ASN1Template SEC_PKCS12PVKAdditionalTemplate[];extern const SEC_ASN1Template SEC_PKCS12SafeContentsTemplate_OLD[];extern const SEC_ASN1Template SEC_PKCS12SafeContentsTemplate[];extern const SEC_ASN1Template SEC_PKCS12SafeBagTemplate[];extern const SEC_ASN1Template SEC_PKCS12PrivateKeyTemplate[];extern const SEC_ASN1Template SEC_PKCS12PrivateKeyBagTemplate[];extern const SEC_ASN1Template SEC_PKCS12CertAndCRLTemplate[];extern const SEC_ASN1Template SEC_PKCS12CertAndCRLBagTemplate[];extern const SEC_ASN1Template SEC_PKCS12X509CertCRLTemplate_OLD[];extern const SEC_ASN1Template SEC_PKCS12X509CertCRLTemplate[];extern const SEC_ASN1Template SEC_PKCS12SDSICertTemplate[];extern const SEC_ASN1Template SEC_PKCS12SecretBagTemplate[];extern const SEC_ASN1Template SEC_PKCS12SecretTemplate[];extern const SEC_ASN1Template SEC_PKCS12SecretItemTemplate[];extern const SEC_ASN1Template SEC_PKCS12SecretAdditionalTemplate[];extern const SEC_ASN1Template SGN_DigestInfoTemplate[];extern const SEC_ASN1Template SEC_PointerToPKCS12KeyBagTemplate[];extern const SEC_ASN1Template SEC_PointerToPKCS12CertAndCRLBagTemplate[];extern const SEC_ASN1Template SEC_PointerToPKCS12CertAndCRLBagTemplate_OLD[];extern const SEC_ASN1Template SEC_PointerToPKCS12SecretBagTemplate[];extern const SEC_ASN1Template SEC_PointerToPKCS12X509CertCRLTemplate_OLD[];extern const SEC_ASN1Template SEC_PointerToPKCS12X509CertCRLTemplate[];extern const SEC_ASN1Template SEC_PointerToPKCS12SDSICertTemplate[];extern const SEC_ASN1Template SEC_PKCS12CodedSafeBagTemplate[];extern const SEC_ASN1Template SEC_PKCS12CodedCertBagTemplate[];extern const SEC_ASN1Template SEC_PKCS12CodedCertAndCRLBagTemplate[];extern const SEC_ASN1Template SEC_PKCS12PVKSupportingDataTemplate_OLD[];extern const SEC_ASN1Template SEC_PKCS12ESPVKItemTemplate_OLD[];#endif
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?