Bug 460926 A11y hierachy is broken on Ubuntu 8.10 (GNOME 2.24), r=Evan.Yan sr=roc
[wine-gecko.git] / security / nss / lib / softoken / lowkeyti.h
blob15bb9730a375821339e7a27bb8826212a5b3728c
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
12 * License.
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.
21 * Contributor(s):
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 ***** */
37 #ifndef _LOWKEYTI_H_
38 #define _LOWKEYTI_H_ 1
40 #include "blapit.h"
41 #include "prtypes.h"
42 #include "plarena.h"
43 #include "secitem.h"
44 #include "secasn1t.h"
45 #include "secoidt.h"
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[];
56 #ifdef NSS_ENABLE_ECC
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[];
66 * PKCS #8 attributes
68 struct NSSLOWKEYAttributeStr {
69 SECItem attrType;
70 SECItem *attrValue;
72 typedef struct NSSLOWKEYAttributeStr NSSLOWKEYAttribute;
75 ** A PKCS#8 private key info object
77 struct NSSLOWKEYPrivateKeyInfoStr {
78 PLArenaPool *arena;
79 SECItem version;
80 SECAlgorithmID algorithm;
81 SECItem privateKey;
82 NSSLOWKEYAttribute **attributes;
84 typedef struct NSSLOWKEYPrivateKeyInfoStr NSSLOWKEYPrivateKeyInfo;
85 #define NSSLOWKEY_PRIVATE_KEY_INFO_VERSION 0 /* what we *create* */
87 typedef enum {
88 NSSLOWKEYNullKey = 0,
89 NSSLOWKEYRSAKey = 1,
90 NSSLOWKEYDSAKey = 2,
91 NSSLOWKEYDHKey = 4,
92 NSSLOWKEYECKey = 5
93 } NSSLOWKEYType;
96 ** An RSA public key object.
98 struct NSSLOWKEYPublicKeyStr {
99 PLArenaPool *arena;
100 NSSLOWKEYType keyType ;
101 union {
102 RSAPublicKey rsa;
103 DSAPublicKey dsa;
104 DHPublicKey dh;
105 ECPublicKey ec;
106 } u;
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 {
116 PLArenaPool *arena;
117 NSSLOWKEYType keyType;
118 union {
119 RSAPrivateKey rsa;
120 DSAPrivateKey dsa;
121 DHPrivateKey dh;
122 ECPrivateKey ec;
123 } u;
125 typedef struct NSSLOWKEYPrivateKeyStr NSSLOWKEYPrivateKey;
127 #endif /* _LOWKEYTI_H_ */