2 * osKeyTemplate.h - ASN1 templates for openssl asymmetric keys
5 #include "osKeyTemplates.h"
11 /* X509 style DSA algorithm parameters */
12 const SEC_ASN1Template NSS_DSAAlgParamsTemplate
[] = {
13 { SEC_ASN1_SEQUENCE
, 0, NULL
, sizeof(NSS_DSAAlgParams
) },
14 { SEC_ASN1_INTEGER
, offsetof(NSS_DSAAlgParams
,p
) },
15 { SEC_ASN1_INTEGER
, offsetof(NSS_DSAAlgParams
,q
) },
16 { SEC_ASN1_INTEGER
, offsetof(NSS_DSAAlgParams
,g
) },
20 /* BSAFE style DSA algorithm parameters */
21 const SEC_ASN1Template NSS_DSAAlgParamsBSAFETemplate
[] = {
22 { SEC_ASN1_SEQUENCE
, 0, NULL
, sizeof(NSS_DSAAlgParamsBSAFE
) },
23 { SEC_ASN1_INTEGER
, offsetof(NSS_DSAAlgParamsBSAFE
,keySizeInBits
) },
24 { SEC_ASN1_INTEGER
, offsetof(NSS_DSAAlgParamsBSAFE
,p
) },
25 { SEC_ASN1_INTEGER
, offsetof(NSS_DSAAlgParamsBSAFE
,q
) },
26 { SEC_ASN1_INTEGER
, offsetof(NSS_DSAAlgParamsBSAFE
,g
) },
30 /* DSA X509-style AlgorithmID */
31 const SEC_ASN1Template NSS_DSAAlgorithmIdX509Template
[] = {
32 { SEC_ASN1_SEQUENCE
, 0, NULL
, sizeof(NSS_DSAAlgorithmIdX509
) },
33 { SEC_ASN1_OBJECT_ID
, offsetof(NSS_DSAAlgorithmIdX509
, algorithm
) },
34 /* per CMS, this is optional */
35 { SEC_ASN1_POINTER
| SEC_ASN1_OPTIONAL
,
36 offsetof(NSS_DSAAlgorithmIdX509
,params
),
37 NSS_DSAAlgParamsTemplate
},
41 /* DSA BSAFE-style AlgorithmID */
42 const SEC_ASN1Template NSS_DSAAlgorithmIdBSAFETemplate
[] = {
43 { SEC_ASN1_SEQUENCE
, 0, NULL
, sizeof(NSS_DSAAlgorithmIdBSAFE
) },
44 { SEC_ASN1_OBJECT_ID
, offsetof(NSS_DSAAlgorithmIdBSAFE
, algorithm
) },
46 offsetof(NSS_DSAAlgorithmIdBSAFE
,params
),
47 NSS_DSAAlgParamsBSAFETemplate
},
55 /* DSA public key, openssl/X509 format */
56 const SEC_ASN1Template NSS_DSAPublicKeyX509Template
[] = {
57 { SEC_ASN1_SEQUENCE
, 0, NULL
, sizeof(NSS_DSAPublicKeyX509
) },
59 offsetof(NSS_DSAPublicKeyX509
, dsaAlg
),
60 NSS_DSAAlgorithmIdX509Template
},
61 { SEC_ASN1_BIT_STRING
,
62 offsetof(NSS_DSAPublicKeyX509
, publicKey
), },
66 /* DSA public key, BSAFE/FIPS186 format */
67 const SEC_ASN1Template NSS_DSAPublicKeyBSAFETemplate
[] = {
68 { SEC_ASN1_SEQUENCE
, 0, NULL
, sizeof(NSS_DSAPublicKeyBSAFE
) },
70 offsetof(NSS_DSAPublicKeyBSAFE
, dsaAlg
),
71 NSS_DSAAlgorithmIdBSAFETemplate
},
72 { SEC_ASN1_BIT_STRING
,
73 offsetof(NSS_DSAPublicKeyBSAFE
, publicKey
), },
81 /* DSA Private key, openssl custom format */
82 const SEC_ASN1Template NSS_DSAPrivateKeyOpensslTemplate
[] = {
83 { SEC_ASN1_SEQUENCE
, 0, NULL
, sizeof(NSS_DSAPrivateKeyOpenssl
) },
84 { SEC_ASN1_INTEGER
, offsetof(NSS_DSAPrivateKeyOpenssl
,version
) },
85 { SEC_ASN1_INTEGER
, offsetof(NSS_DSAPrivateKeyOpenssl
,p
) },
86 { SEC_ASN1_INTEGER
, offsetof(NSS_DSAPrivateKeyOpenssl
,q
) },
87 { SEC_ASN1_INTEGER
, offsetof(NSS_DSAPrivateKeyOpenssl
,g
) },
88 { SEC_ASN1_INTEGER
, offsetof(NSS_DSAPrivateKeyOpenssl
,pub
) },
89 { SEC_ASN1_INTEGER
, offsetof(NSS_DSAPrivateKeyOpenssl
,priv
) },
94 * DSA private key, BSAFE/FIPS186 style.
95 * This is basically a DSA-specific NSS_PrivateKeyInfo.
97 * NSS_DSAPrivateKeyBSAFE.privateKey is an octet string containing
98 * the DER encoding of this.
100 const SEC_ASN1Template NSS_DSAPrivateKeyOctsTemplate
[] = {
101 { SEC_ASN1_SEQUENCE
, 0, NULL
, sizeof(NSS_DSAPrivateKeyOcts
) },
102 { SEC_ASN1_INTEGER
, offsetof(NSS_DSAPrivateKeyOcts
,privateKey
) },
106 const SEC_ASN1Template NSS_DSAPrivateKeyBSAFETemplate
[] = {
107 { SEC_ASN1_SEQUENCE
, 0, NULL
, sizeof(NSS_DSAPrivateKeyBSAFE
) },
108 { SEC_ASN1_INTEGER
, offsetof(NSS_DSAPrivateKeyBSAFE
,version
) },
110 offsetof(NSS_DSAPrivateKeyBSAFE
, dsaAlg
),
111 NSS_DSAAlgorithmIdBSAFETemplate
},
112 { SEC_ASN1_OCTET_STRING
, offsetof(NSS_DSAPrivateKeyBSAFE
,privateKey
) },
117 * DSA Private Key, PKCS8/SMIME style.
119 const SEC_ASN1Template NSS_DSAPrivateKeyPKCS8Template
[] = {
120 { SEC_ASN1_SEQUENCE
, 0, NULL
, sizeof(NSS_DSAPrivateKeyPKCS8
) },
121 { SEC_ASN1_INTEGER
, offsetof(NSS_DSAPrivateKeyPKCS8
,version
) },
123 offsetof(NSS_DSAPrivateKeyPKCS8
, dsaAlg
),
124 NSS_DSAAlgorithmIdX509Template
},
125 { SEC_ASN1_OCTET_STRING
, offsetof(NSS_DSAPrivateKeyPKCS8
,privateKey
) },
126 { SEC_ASN1_OPTIONAL
| SEC_ASN1_CONSTRUCTED
|
127 SEC_ASN1_CONTEXT_SPECIFIC
| 0,
128 offsetof(NSS_DSAPrivateKeyPKCS8
,attributes
),
129 NSS_SetOfAttributeTemplate
},
133 const SEC_ASN1Template NSS_DSASignatureTemplate
[] = {
134 { SEC_ASN1_SEQUENCE
, 0, NULL
, sizeof(NSS_DSASignature
) },
135 { SEC_ASN1_INTEGER
, offsetof(NSS_DSASignature
,r
) },
136 { SEC_ASN1_INTEGER
, offsetof(NSS_DSASignature
,s
) },