nss_sys/bindings/
pk11pub.rs

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/. */
4
5pub use crate::*;
6use std::os::raw::{c_char, c_int, c_uchar, c_uint, c_void};
7
8extern "C" {
9    pub fn PK11_FreeSlot(slot: *mut PK11SlotInfo);
10    pub fn PK11_GetInternalSlot() -> *mut PK11SlotInfo;
11    pub fn PK11_GetInternalKeySlot() -> *mut PK11SlotInfo;
12    pub fn PK11_NeedUserInit(slot: *mut PK11SlotInfo) -> PRBool;
13    pub fn PK11_NeedLogin(slot: *mut PK11SlotInfo) -> PRBool;
14    pub fn PK11_IsLoggedIn(slot: *mut PK11SlotInfo, wincx: *mut c_void) -> PRBool;
15    pub fn PK11_CheckUserPassword(slot: *mut PK11SlotInfo, password: *const c_char) -> SECStatus;
16    pub fn PK11_GenerateRandom(data: *mut c_uchar, len: c_int) -> SECStatus;
17    pub fn PK11_FreeSymKey(key: *mut PK11SymKey);
18    pub fn PK11_InitPin(
19        slot: *mut PK11SlotInfo,
20        ssopw: *const c_char,
21        pk11_userpwd: *const c_char,
22    ) -> SECStatus;
23    pub fn PK11_KeyGen(
24        slot: *mut PK11SlotInfo,
25        type_: CK_MECHANISM_TYPE,
26        param: *mut SECItem,
27        keySize: c_int,
28        wincx: *mut c_void,
29    ) -> *mut PK11SymKey;
30    pub fn PK11_ImportSymKey(
31        slot: *mut PK11SlotInfo,
32        type_: CK_MECHANISM_TYPE,
33        origin: u32, /* PK11Origin */
34        operation: CK_ATTRIBUTE_TYPE,
35        key: *mut SECItem,
36        wincx: *mut c_void,
37    ) -> *mut PK11SymKey;
38    pub fn PK11_ImportSymKeyWithFlags(
39        slot: *mut PK11SlotInfo,
40        type_: CK_MECHANISM_TYPE,
41        origin: u32, /* PK11Origin */
42        operation: CK_ATTRIBUTE_TYPE,
43        key: *mut SECItem,
44        flags: CK_FLAGS,
45        isPerm: PRBool,
46        wincx: *mut c_void,
47    ) -> *mut PK11SymKey;
48    pub fn PK11_SetSymKeyNickname(key: *mut PK11SymKey, name: *const c_char) -> SECStatus;
49    pub fn PK11_Derive(
50        baseKey: *mut PK11SymKey,
51        mechanism: CK_MECHANISM_TYPE,
52        param: *mut SECItem,
53        target: CK_MECHANISM_TYPE,
54        operation: CK_ATTRIBUTE_TYPE,
55        keySize: c_int,
56    ) -> *mut PK11SymKey;
57    pub fn PK11_PubDeriveWithKDF(
58        privKey: *mut SECKEYPrivateKey,
59        pubKey: *mut SECKEYPublicKey,
60        isSender: PRBool,
61        randomA: *mut SECItem,
62        randomB: *mut SECItem,
63        derive: CK_MECHANISM_TYPE,
64        target: CK_MECHANISM_TYPE,
65        operation: CK_ATTRIBUTE_TYPE,
66        keySize: c_int,
67        kdf: CK_ULONG,
68        sharedData: *mut SECItem,
69        wincx: *mut c_void,
70    ) -> *mut PK11SymKey;
71    pub fn PK11_WrapSymKey(
72        type_: CK_MECHANISM_TYPE,
73        param: *mut SECItem,
74        wrappingKey: *mut PK11SymKey,
75        symKey: *mut PK11SymKey,
76        wrappedKey: *mut SECItem,
77    ) -> SECStatus;
78    pub fn PK11_UnwrapSymKey(
79        wrappingKey: *mut PK11SymKey,
80        wrapType: CK_MECHANISM_TYPE,
81        param: *mut SECItem,
82        wrappedKey: *mut SECItem,
83        target: CK_MECHANISM_TYPE,
84        operation: CK_ATTRIBUTE_TYPE,
85        keySize: c_int,
86    ) -> *mut PK11SymKey;
87    pub fn PK11_ExtractKeyValue(symKey: *mut PK11SymKey) -> SECStatus;
88    pub fn PK11_GetKeyData(symKey: *mut PK11SymKey) -> *mut SECItem;
89    pub fn PK11_GenerateKeyPair(
90        slot: *mut PK11SlotInfo,
91        type_: CK_MECHANISM_TYPE,
92        param: *mut c_void,
93        pubk: *mut *mut SECKEYPublicKey,
94        isPerm: PRBool,
95        isSensitive: PRBool,
96        wincx: *mut c_void,
97    ) -> *mut SECKEYPrivateKey;
98    pub fn PK11_FindKeyByKeyID(
99        slot: *mut PK11SlotInfo,
100        keyID: *mut SECItem,
101        wincx: *mut c_void,
102    ) -> *mut SECKEYPrivateKey;
103    pub fn PK11_ListFixedKeysInSlot(
104        slot: *mut PK11SlotInfo,
105        nickname: *mut c_char,
106        wincx: *mut c_void,
107    ) -> *mut PK11SymKey;
108    pub fn PK11_Decrypt(
109        symkey: *mut PK11SymKey,
110        mechanism: CK_MECHANISM_TYPE,
111        param: *mut SECItem,
112        out: *mut c_uchar,
113        outLen: *mut c_uint,
114        maxLen: c_uint,
115        enc: *const c_uchar,
116        encLen: c_uint,
117    ) -> SECStatus;
118    pub fn PK11_Encrypt(
119        symKey: *mut PK11SymKey,
120        mechanism: CK_MECHANISM_TYPE,
121        param: *mut SECItem,
122        out: *mut c_uchar,
123        outLen: *mut c_uint,
124        maxLen: c_uint,
125        data: *const c_uchar,
126        dataLen: c_uint,
127    ) -> SECStatus;
128    pub fn PK11_VerifyWithMechanism(
129        key: *mut SECKEYPublicKey,
130        mechanism: CK_MECHANISM_TYPE,
131        param: *const SECItem,
132        sig: *const SECItem,
133        hash: *const SECItem,
134        wincx: *mut c_void,
135    ) -> SECStatus;
136    pub fn PK11_MapSignKeyType(keyType: u32 /* KeyType */) -> CK_MECHANISM_TYPE;
137    pub fn PK11_DestroyContext(context: *mut PK11Context, freeit: PRBool);
138    pub fn PK11_CreateContextBySymKey(
139        type_: CK_MECHANISM_TYPE,
140        operation: CK_ATTRIBUTE_TYPE,
141        symKey: *mut PK11SymKey,
142        param: *const SECItem,
143    ) -> *mut PK11Context;
144    pub fn PK11_DigestBegin(cx: *mut PK11Context) -> SECStatus;
145    pub fn PK11_HashBuf(
146        hashAlg: u32, /* SECOidTag */
147        out: *mut c_uchar,
148        in_: *const c_uchar,
149        len: PRInt32,
150    ) -> SECStatus;
151    pub fn PK11_DigestOp(context: *mut PK11Context, in_: *const c_uchar, len: c_uint) -> SECStatus;
152    pub fn PK11_DigestFinal(
153        context: *mut PK11Context,
154        data: *mut c_uchar,
155        outLen: *mut c_uint,
156        length: c_uint,
157    ) -> SECStatus;
158    pub fn PK11_DestroyGenericObject(object: *mut PK11GenericObject) -> SECStatus;
159    pub fn PK11_CreateGenericObject(
160        slot: *mut PK11SlotInfo,
161        pTemplate: *const CK_ATTRIBUTE,
162        count: c_int,
163        token: PRBool,
164    ) -> *mut PK11GenericObject;
165    pub fn PK11_ReadRawAttribute(
166        type_: u32, /* PK11ObjectType */
167        object: *mut c_void,
168        attr: CK_ATTRIBUTE_TYPE,
169        item: *mut SECItem,
170    ) -> SECStatus;
171    pub fn PK11_CreatePBEV2AlgorithmID(
172        pbeAlgTag: u32,    /* SECOidTag */
173        cipherAlgTag: u32, /* SECOidTag */
174        prfAlgTag: u32,    /* SECOidTag */
175        keyLength: c_int,
176        iteration: c_int,
177        salt: *mut SECItem,
178    ) -> *mut SECAlgorithmID;
179    pub fn PK11_PBEKeyGen(
180        slot: *mut PK11SlotInfo,
181        algid: *mut SECAlgorithmID,
182        pwitem: *mut SECItem,
183        faulty3DES: PRBool,
184        wincx: *mut c_void,
185    ) -> *mut PK11SymKey;
186    pub fn SECITEM_AllocItem(
187        arena: *mut PLArenaPool,
188        item: *mut SECItem,
189        len: c_uint,
190    ) -> *mut SECItem;
191}