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
48 ** Typedef for callback to get a password "key".
50 extern const SEC_ASN1Template nsslowkey_PQGParamsTemplate
[];
51 extern const SEC_ASN1Template nsslowkey_RSAPrivateKeyTemplate
[];
52 extern const SEC_ASN1Template nsslowkey_DSAPrivateKeyTemplate
[];
53 extern const SEC_ASN1Template nsslowkey_DSAPrivateKeyExportTemplate
[];
54 extern const SEC_ASN1Template nsslowkey_DHPrivateKeyTemplate
[];
55 extern const SEC_ASN1Template nsslowkey_DHPrivateKeyExportTemplate
[];
57 #define NSSLOWKEY_EC_PRIVATE_KEY_VERSION 1 /* as per SECG 1 C.4 */
58 extern const SEC_ASN1Template nsslowkey_ECParamsTemplate
[];
59 extern const SEC_ASN1Template nsslowkey_ECPrivateKeyTemplate
[];
60 #endif /* NSS_ENABLE_ECC */
62 extern const SEC_ASN1Template nsslowkey_PrivateKeyInfoTemplate
[];
63 extern const SEC_ASN1Template nsslowkey_EncryptedPrivateKeyInfoTemplate
[];
68 struct NSSLOWKEYAttributeStr
{
72 typedef struct NSSLOWKEYAttributeStr NSSLOWKEYAttribute
;
75 ** A PKCS#8 private key info object
77 struct NSSLOWKEYPrivateKeyInfoStr
{
80 SECAlgorithmID algorithm
;
82 NSSLOWKEYAttribute
**attributes
;
84 typedef struct NSSLOWKEYPrivateKeyInfoStr NSSLOWKEYPrivateKeyInfo
;
85 #define NSSLOWKEY_PRIVATE_KEY_INFO_VERSION 0 /* what we *create* */
96 ** An RSA public key object.
98 struct NSSLOWKEYPublicKeyStr
{
100 NSSLOWKEYType keyType
;
108 typedef struct NSSLOWKEYPublicKeyStr NSSLOWKEYPublicKey
;
111 ** Low Level private key object
112 ** This is only used by the raw Crypto engines (crypto), keydb (keydb),
113 ** and PKCS #11. Everyone else uses the high level key structure.
115 struct NSSLOWKEYPrivateKeyStr
{
117 NSSLOWKEYType keyType
;
125 typedef struct NSSLOWKEYPrivateKeyStr NSSLOWKEYPrivateKey
;
127 #endif /* _LOWKEYTI_H_ */