1 /* ***** BEGIN LICENSE BLOCK *****
2 * Version: MPL 1.1/GPL 2.0/LGPL 2.1
4 * The contents of this file are subject to the Mozilla Public License Version
5 * 1.1 (the "License"); you may not use this file except in compliance with
6 * the License. You may obtain a copy of the License at
7 * http://www.mozilla.org/MPL/
9 * Software distributed under the License is distributed on an "AS IS" basis,
10 * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
11 * for the specific language governing rights and limitations under the
14 * The Original Code is the Netscape security libraries.
16 * The Initial Developer of the Original Code is
17 * Netscape Communications Corporation.
18 * Portions created by the Initial Developer are Copyright (C) 1994-2000
19 * the Initial Developer. All Rights Reserved.
22 * Dr Vipul Gupta <vipul.gupta@sun.com>, Sun Microsystems Laboratories
24 * Alternatively, the contents of this file may be used under the terms of
25 * either the GNU General Public License Version 2 or later (the "GPL"), or
26 * the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
27 * in which case the provisions of the GPL or the LGPL are applicable instead
28 * of those above. If you wish to allow use of your version of this file only
29 * under the terms of either the GPL or the LGPL, and not to allow others to
30 * use your version of this file under the terms of the MPL, indicate your
31 * decision by deleting the provisions above and replace them with the notice
32 * and other provisions required by the GPL or the LGPL. If you do not delete
33 * the provisions above, a recipient may use your version of this file under
34 * the terms of any one of the MPL, the GPL or the LGPL.
36 * ***** END LICENSE BLOCK ***** */
38 #define _LOWKEYTI_H_ 1
49 * a key in/for the data base
51 struct NSSLOWKEYDBKeyStr
{
58 typedef struct NSSLOWKEYDBKeyStr NSSLOWKEYDBKey
;
60 typedef struct NSSLOWKEYDBHandleStr NSSLOWKEYDBHandle
;
62 #ifdef NSS_USE_KEY4_DB
63 #define NSSLOWKEY_DB_FILE_VERSION 4
65 #define NSSLOWKEY_DB_FILE_VERSION 3
68 #define NSSLOWKEY_VERSION 0 /* what we *create* */
71 ** Typedef for callback to get a password "key".
73 extern const SEC_ASN1Template nsslowkey_PQGParamsTemplate
[];
74 extern const SEC_ASN1Template nsslowkey_RSAPrivateKeyTemplate
[];
75 extern const SEC_ASN1Template nsslowkey_DSAPrivateKeyTemplate
[];
76 extern const SEC_ASN1Template nsslowkey_DSAPrivateKeyExportTemplate
[];
77 extern const SEC_ASN1Template nsslowkey_DHPrivateKeyTemplate
[];
78 extern const SEC_ASN1Template nsslowkey_DHPrivateKeyExportTemplate
[];
80 #define NSSLOWKEY_EC_PRIVATE_KEY_VERSION 1 /* as per SECG 1 C.4 */
81 extern const SEC_ASN1Template nsslowkey_ECParamsTemplate
[];
82 extern const SEC_ASN1Template nsslowkey_ECPrivateKeyTemplate
[];
83 #endif /* NSS_ENABLE_ECC */
85 extern const SEC_ASN1Template nsslowkey_PrivateKeyInfoTemplate
[];
86 extern const SEC_ASN1Template nsslowkey_EncryptedPrivateKeyInfoTemplate
[];
91 struct NSSLOWKEYAttributeStr
{
95 typedef struct NSSLOWKEYAttributeStr NSSLOWKEYAttribute
;
98 ** A PKCS#8 private key info object
100 struct NSSLOWKEYPrivateKeyInfoStr
{
103 SECAlgorithmID algorithm
;
105 NSSLOWKEYAttribute
**attributes
;
107 typedef struct NSSLOWKEYPrivateKeyInfoStr NSSLOWKEYPrivateKeyInfo
;
108 #define NSSLOWKEY_PRIVATE_KEY_INFO_VERSION 0 /* what we *create* */
111 ** A PKCS#8 private key info object
113 struct NSSLOWKEYEncryptedPrivateKeyInfoStr
{
115 SECAlgorithmID algorithm
;
116 SECItem encryptedData
;
118 typedef struct NSSLOWKEYEncryptedPrivateKeyInfoStr NSSLOWKEYEncryptedPrivateKeyInfo
;
122 NSSLOWKEYNullKey
= 0,
130 ** An RSA public key object.
132 struct NSSLOWKEYPublicKeyStr
{
134 NSSLOWKEYType keyType
;
142 typedef struct NSSLOWKEYPublicKeyStr NSSLOWKEYPublicKey
;
145 ** Low Level private key object
146 ** This is only used by the raw Crypto engines (crypto), keydb (keydb),
147 ** and PKCS #11. Everyone else uses the high level key structure.
149 struct NSSLOWKEYPrivateKeyStr
{
151 NSSLOWKEYType keyType
;
159 typedef struct NSSLOWKEYPrivateKeyStr NSSLOWKEYPrivateKey
;
161 #endif /* _LOWKEYTI_H_ */