security/nss/lib/pkcs12/p12t.h

Wed, 31 Dec 2014 06:55:50 +0100

author
Michael Schloh von Bennewitz <michael@schloh.com>
date
Wed, 31 Dec 2014 06:55:50 +0100
changeset 2
7e26c7da4463
permissions
-rw-r--r--

Added tag UPSTREAM_283F7C6 for changeset ca08bd8f51b2

     1 /* This Source Code Form is subject to the terms of the Mozilla Public
     2  * License, v. 2.0. If a copy of the MPL was not distributed with this
     3  * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
     5 #ifndef _P12T_H_
     6 #define _P12T_H_
     8 #include "secoid.h"
     9 #include "key.h"
    10 #include "pkcs11.h"
    11 #include "secpkcs7.h"
    12 #include "secdig.h"	/* for SGNDigestInfo */
    13 #include "pkcs12t.h"
    15 #define SEC_PKCS12_VERSION	3
    17 /* structure declarations */
    18 typedef struct sec_PKCS12PFXItemStr sec_PKCS12PFXItem;
    19 typedef struct sec_PKCS12MacDataStr sec_PKCS12MacData;
    20 typedef struct sec_PKCS12AuthenticatedSafeStr sec_PKCS12AuthenticatedSafe;
    21 typedef struct sec_PKCS12SafeContentsStr sec_PKCS12SafeContents;
    22 typedef struct sec_PKCS12SafeBagStr sec_PKCS12SafeBag;
    23 typedef struct sec_PKCS12PKCS8ShroudedKeyBagStr sec_PKCS12PKCS8ShroudedKeyBag;
    24 typedef struct sec_PKCS12CertBagStr sec_PKCS12CertBag;
    25 typedef struct sec_PKCS12CRLBagStr sec_PKCS12CRLBag;
    26 typedef struct sec_PKCS12SecretBag sec_PKCS12SecretBag;
    27 typedef struct sec_PKCS12AttributeStr sec_PKCS12Attribute;
    29 struct sec_PKCS12CertBagStr {
    30     /* what type of cert is stored? */
    31     SECItem bagID;
    33     /* certificate information */
    34     union {
    35 	SECItem x509Cert;
    36 	SECItem SDSICert;
    37     } value;
    38 };
    40 struct sec_PKCS12CRLBagStr {
    41     /* what type of cert is stored? */
    42     SECItem bagID;
    44     /* certificate information */
    45     union {
    46 	SECItem x509CRL;
    47     } value;
    48 };
    50 struct sec_PKCS12SecretBag {
    51     /* what type of secret? */
    52     SECItem secretType;
    54     /* secret information.  ssshhhh be vewy vewy quiet. */
    55     SECItem secretContent;
    56 };
    58 struct sec_PKCS12AttributeStr {
    59     SECItem attrType;
    60     SECItem **attrValue;
    61 };
    63 struct sec_PKCS12SafeBagStr {
    65     /* What type of bag are we using? */
    66     SECItem safeBagType;
    68     /* Dependent upon the type of bag being used. */
    69     union {
    70 	SECKEYPrivateKeyInfo *pkcs8KeyBag;
    71 	SECKEYEncryptedPrivateKeyInfo *pkcs8ShroudedKeyBag;
    72 	sec_PKCS12CertBag *certBag;
    73 	sec_PKCS12CRLBag *crlBag;
    74 	sec_PKCS12SecretBag *secretBag;
    75 	sec_PKCS12SafeContents *safeContents;
    76     } safeBagContent;
    78     sec_PKCS12Attribute **attribs;
    80     /* used locally */
    81     SECOidData *bagTypeTag;
    82     PLArenaPool *arena;
    83     unsigned int nAttribs;
    85     /* used for validation/importing */
    86     PRBool problem, noInstall, validated, hasKey, unused, installed;
    87     int error;
    89     PRBool swapUnicodeBytes;
    90     PK11SlotInfo *slot;
    91     SECItem *pwitem;
    92     PRBool oldBagType;
    93     SECPKCS12TargetTokenCAs tokenCAs;
    94 };
    96 struct sec_PKCS12SafeContentsStr {
    97     sec_PKCS12SafeBag **safeBags;
    98     SECItem **encodedSafeBags;
   100     /* used locally */
   101     PLArenaPool *arena;
   102     unsigned int bagCount;
   103 };
   105 struct sec_PKCS12MacDataStr {
   106     SGNDigestInfo safeMac;
   107     SECItem macSalt;
   108     SECItem iter;
   109 };
   111 struct sec_PKCS12PFXItemStr {
   113     SECItem version;
   115     /* Content type will either be Data (password integrity mode)
   116      * or signedData (public-key integrity mode)
   117      */
   118     SEC_PKCS7ContentInfo *authSafe;
   119     SECItem encodedAuthSafe;
   121     /* Only present in password integrity mode */
   122     sec_PKCS12MacData macData;
   123     SECItem encodedMacData;
   124 };
   126 struct sec_PKCS12AuthenticatedSafeStr {
   127     /* Content type will either be encryptedData (password privacy mode)
   128      * or envelopedData (public-key privacy mode)
   129      */
   130     SEC_PKCS7ContentInfo **safes;
   131     SECItem **encodedSafes;
   133     /* used locally */
   134     unsigned int safeCount;
   135     SECItem dummySafe;
   136 };
   138 extern const SEC_ASN1Template sec_PKCS12PFXItemTemplate[];
   139 extern const SEC_ASN1Template sec_PKCS12MacDataTemplate[];
   140 extern const SEC_ASN1Template sec_PKCS12AuthenticatedSafeTemplate[];
   141 extern const SEC_ASN1Template sec_PKCS12SafeContentsTemplate[];
   142 extern const SEC_ASN1Template sec_PKCS12SafeContentsDecodeTemplate[];
   143 extern const SEC_ASN1Template sec_PKCS12NestedSafeContentsDecodeTemplate[];
   144 extern const SEC_ASN1Template sec_PKCS12CertBagTemplate[];
   145 extern const SEC_ASN1Template sec_PKCS12CRLBagTemplate[];
   146 extern const SEC_ASN1Template sec_PKCS12SecretBagTemplate[];
   147 extern const SEC_ASN1Template sec_PKCS12PointerToCertBagTemplate[];
   148 extern const SEC_ASN1Template sec_PKCS12PointerToCRLBagTemplate[];
   149 extern const SEC_ASN1Template sec_PKCS12PointerToSecretBagTemplate[];
   150 extern const SEC_ASN1Template sec_PKCS12PointerToSafeContentsTemplate[];
   151 extern const SEC_ASN1Template sec_PKCS12AttributeTemplate[];
   152 extern const SEC_ASN1Template sec_PKCS12PointerToContentInfoTemplate[];
   153 extern const SEC_ASN1Template sec_PKCS12SafeBagTemplate[];
   155 #endif

mercurial