author | ehelin |
Fri, 02 Mar 2018 09:20:16 +0100 | |
changeset 49318 | f5954447b0bd |
parent 47216 | 71c04702a3d5 |
child 51800 | bccd9966f1ed |
permissions | -rw-r--r-- |
2 | 1 |
/* |
39142
bf48a9f13cf2
8074580: sun/security/pkcs11/rsa/TestKeyPairGenerator.java fails due to PKCS11Exception: CKR_FUNCTION_FAILED
asmotrak
parents:
25859
diff
changeset
|
2 |
* Copyright (c) 2003, 2016, Oracle and/or its affiliates. All rights reserved. |
2 | 3 |
*/ |
4 |
||
5 |
/* Copyright (c) 2002 Graz University of Technology. All rights reserved. |
|
6 |
* |
|
7 |
* Redistribution and use in source and binary forms, with or without |
|
8 |
* modification, are permitted provided that the following conditions are met: |
|
9 |
* |
|
10 |
* 1. Redistributions of source code must retain the above copyright notice, |
|
11 |
* this list of conditions and the following disclaimer. |
|
12 |
* |
|
13 |
* 2. Redistributions in binary form must reproduce the above copyright notice, |
|
14 |
* this list of conditions and the following disclaimer in the documentation |
|
15 |
* and/or other materials provided with the distribution. |
|
16 |
* |
|
17 |
* 3. The end-user documentation included with the redistribution, if any, must |
|
18 |
* include the following acknowledgment: |
|
19 |
* |
|
20 |
* "This product includes software developed by IAIK of Graz University of |
|
21 |
* Technology." |
|
22 |
* |
|
23 |
* Alternately, this acknowledgment may appear in the software itself, if |
|
24 |
* and wherever such third-party acknowledgments normally appear. |
|
25 |
* |
|
26 |
* 4. The names "Graz University of Technology" and "IAIK of Graz University of |
|
27 |
* Technology" must not be used to endorse or promote products derived from |
|
28 |
* this software without prior written permission. |
|
29 |
* |
|
30 |
* 5. Products derived from this software may not be called |
|
31 |
* "IAIK PKCS Wrapper", nor may "IAIK" appear in their name, without prior |
|
32 |
* written permission of Graz University of Technology. |
|
33 |
* |
|
34 |
* THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESSED OR IMPLIED |
|
35 |
* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED |
|
36 |
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR |
|
37 |
* PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE LICENSOR BE |
|
38 |
* LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, |
|
39 |
* OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, |
|
40 |
* PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, |
|
41 |
* OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON |
|
42 |
* ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, |
|
43 |
* OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY |
|
44 |
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE |
|
45 |
* POSSIBILITY OF SUCH DAMAGE. |
|
46 |
*/ |
|
47 |
||
48 |
/* |
|
49 |
* pkcs11wrapper.h |
|
50 |
* 18.05.2001 |
|
51 |
* |
|
52 |
* declaration of all functions used by pkcs11wrapper.c |
|
53 |
* |
|
54 |
* @author Karl Scheibelhofer <Karl.Scheibelhofer@iaik.at> |
|
55 |
* @author Martin Schlaeffer <schlaeff@sbox.tugraz.at> |
|
56 |
*/ |
|
57 |
||
22964
59c522d83ed9
8034856: gcc warnings compiling src/solaris/native/sun/security/pkcs11
alanb
parents:
13678
diff
changeset
|
58 |
#ifndef _PKCS11WRAPPER_H |
59c522d83ed9
8034856: gcc warnings compiling src/solaris/native/sun/security/pkcs11
alanb
parents:
13678
diff
changeset
|
59 |
#define _PKCS11WRAPPER_H 1 |
59c522d83ed9
8034856: gcc warnings compiling src/solaris/native/sun/security/pkcs11
alanb
parents:
13678
diff
changeset
|
60 |
|
2 | 61 |
/* disable asserts in product mode */ |
62 |
#ifndef DEBUG |
|
63 |
#ifndef NDEBUG |
|
64 |
#define NDEBUG |
|
65 |
#endif |
|
66 |
#endif |
|
67 |
||
68 |
/* extra PKCS#11 constants not in the standard include files */ |
|
69 |
||
70 |
#define CKA_NETSCAPE_BASE (0x80000000 + 0x4E534350) |
|
71 |
#define CKA_NETSCAPE_TRUST_BASE (CKA_NETSCAPE_BASE + 0x2000) |
|
72 |
||
73 |
#define CKA_NETSCAPE_TRUST_SERVER_AUTH (CKA_NETSCAPE_TRUST_BASE + 8) |
|
74 |
#define CKA_NETSCAPE_TRUST_CLIENT_AUTH (CKA_NETSCAPE_TRUST_BASE + 9) |
|
75 |
#define CKA_NETSCAPE_TRUST_CODE_SIGNING (CKA_NETSCAPE_TRUST_BASE + 10) |
|
76 |
#define CKA_NETSCAPE_TRUST_EMAIL_PROTECTION (CKA_NETSCAPE_TRUST_BASE + 11) |
|
77 |
||
78 |
/* |
|
79 |
||
80 |
Define the PKCS#11 functions to include and exclude. Reduces the size |
|
81 |
of the binary somewhat. |
|
82 |
||
83 |
This list needs to be kept in sync with the mapfile and PKCS11.java |
|
84 |
||
85 |
*/ |
|
86 |
||
87 |
#define P11_ENABLE_C_INITIALIZE |
|
88 |
#define P11_ENABLE_C_FINALIZE |
|
89 |
#define P11_ENABLE_C_GETINFO |
|
90 |
#define P11_ENABLE_C_GETSLOTLIST |
|
91 |
#define P11_ENABLE_C_GETSLOTINFO |
|
92 |
#define P11_ENABLE_C_GETTOKENINFO |
|
93 |
#define P11_ENABLE_C_GETMECHANISMLIST |
|
94 |
#define P11_ENABLE_C_GETMECHANISMINFO |
|
95 |
#undef P11_ENABLE_C_INITTOKEN |
|
96 |
#undef P11_ENABLE_C_INITPIN |
|
97 |
#undef P11_ENABLE_C_SETPIN |
|
98 |
#define P11_ENABLE_C_OPENSESSION |
|
99 |
#define P11_ENABLE_C_CLOSESESSION |
|
100 |
#undef P11_ENABLE_C_CLOSEALLSESSIONS |
|
101 |
#define P11_ENABLE_C_GETSESSIONINFO |
|
11507 | 102 |
#define P11_ENABLE_C_GETOPERATIONSTATE |
103 |
#define P11_ENABLE_C_SETOPERATIONSTATE |
|
2 | 104 |
#define P11_ENABLE_C_LOGIN |
105 |
#define P11_ENABLE_C_LOGOUT |
|
106 |
#define P11_ENABLE_C_CREATEOBJECT |
|
107 |
#define P11_ENABLE_C_COPYOBJECT |
|
108 |
#define P11_ENABLE_C_DESTROYOBJECT |
|
109 |
#undef P11_ENABLE_C_GETOBJECTSIZE |
|
110 |
#define P11_ENABLE_C_GETATTRIBUTEVALUE |
|
111 |
#define P11_ENABLE_C_SETATTRIBUTEVALUE |
|
112 |
#define P11_ENABLE_C_FINDOBJECTSINIT |
|
113 |
#define P11_ENABLE_C_FINDOBJECTS |
|
114 |
#define P11_ENABLE_C_FINDOBJECTSFINAL |
|
115 |
#define P11_ENABLE_C_ENCRYPTINIT |
|
116 |
#define P11_ENABLE_C_ENCRYPT |
|
117 |
#define P11_ENABLE_C_ENCRYPTUPDATE |
|
118 |
#define P11_ENABLE_C_ENCRYPTFINAL |
|
119 |
#define P11_ENABLE_C_DECRYPTINIT |
|
120 |
#define P11_ENABLE_C_DECRYPT |
|
121 |
#define P11_ENABLE_C_DECRYPTUPDATE |
|
122 |
#define P11_ENABLE_C_DECRYPTFINAL |
|
123 |
#define P11_ENABLE_C_DIGESTINIT |
|
124 |
#define P11_ENABLE_C_DIGEST |
|
125 |
#define P11_ENABLE_C_DIGESTUPDATE |
|
126 |
#define P11_ENABLE_C_DIGESTKEY |
|
127 |
#define P11_ENABLE_C_DIGESTFINAL |
|
128 |
#define P11_ENABLE_C_SIGNINIT |
|
129 |
#define P11_ENABLE_C_SIGN |
|
130 |
#define P11_ENABLE_C_SIGNUPDATE |
|
131 |
#define P11_ENABLE_C_SIGNFINAL |
|
132 |
#define P11_ENABLE_C_SIGNRECOVERINIT |
|
133 |
#define P11_ENABLE_C_SIGNRECOVER |
|
134 |
#define P11_ENABLE_C_VERIFYINIT |
|
135 |
#define P11_ENABLE_C_VERIFY |
|
136 |
#define P11_ENABLE_C_VERIFYUPDATE |
|
137 |
#define P11_ENABLE_C_VERIFYFINAL |
|
138 |
#define P11_ENABLE_C_VERIFYRECOVERINIT |
|
139 |
#define P11_ENABLE_C_VERIFYRECOVER |
|
140 |
#undef P11_ENABLE_C_DIGESTENCRYPTUPDATE |
|
141 |
#undef P11_ENABLE_C_DECRYPTDIGESTUPDATE |
|
142 |
#undef P11_ENABLE_C_SIGNENCRYPTUPDATE |
|
143 |
#undef P11_ENABLE_C_DECRYPTVERIFYUPDATE |
|
144 |
#define P11_ENABLE_C_GENERATEKEY |
|
145 |
#define P11_ENABLE_C_GENERATEKEYPAIR |
|
146 |
#define P11_ENABLE_C_WRAPKEY |
|
147 |
#define P11_ENABLE_C_UNWRAPKEY |
|
148 |
#define P11_ENABLE_C_DERIVEKEY |
|
149 |
#define P11_ENABLE_C_SEEDRANDOM |
|
150 |
#define P11_ENABLE_C_GENERATERANDOM |
|
151 |
#undef P11_ENABLE_C_GETFUNCTIONSTATUS |
|
152 |
#undef P11_ENABLE_C_CANCELFUNCTION |
|
153 |
#undef P11_ENABLE_C_WAITFORSLOTEVENT |
|
154 |
||
155 |
/* include the platform dependent part of the header */ |
|
156 |
#include "p11_md.h" |
|
157 |
||
158 |
#include "pkcs11.h" |
|
8542 | 159 |
#include "pkcs-11v2-20a3.h" |
2 | 160 |
#include <jni.h> |
2180
9994f4f08a59
6812738: SSL stress test with GF leads to 32 bit max process size in less than 5 minutes with PCKS11 provider
valeriep
parents:
2
diff
changeset
|
161 |
#include <jni_util.h> |
39142
bf48a9f13cf2
8074580: sun/security/pkcs11/rsa/TestKeyPairGenerator.java fails due to PKCS11Exception: CKR_FUNCTION_FAILED
asmotrak
parents:
25859
diff
changeset
|
162 |
#include <stdarg.h> |
2 | 163 |
|
164 |
#define MAX_STACK_BUFFER_LEN (4 * 1024) |
|
165 |
#define MAX_HEAP_BUFFER_LEN (64 * 1024) |
|
166 |
||
167 |
#define MAX_DIGEST_LEN (64) |
|
168 |
||
169 |
#ifndef min |
|
170 |
#define min(a, b) (((a) < (b)) ? (a) : (b)) |
|
171 |
#endif |
|
172 |
||
173 |
#define ckBBoolToJBoolean(x) ((x == TRUE) ? JNI_TRUE : JNI_FALSE); |
|
174 |
#define jBooleanToCKBBool(x) ((x == JNI_TRUE) ? TRUE : FALSE); |
|
175 |
||
176 |
#define ckByteToJByte(x) ((jbyte) x) |
|
177 |
#define jByteToCKByte(x) ((CK_BYTE) x) |
|
178 |
||
179 |
#define ckLongToJLong(x) ((jlong) x) |
|
180 |
#define jLongToCKLong(x) ((CK_LONG) x) |
|
181 |
||
182 |
#define ckULongToJLong(x) ((jlong) x) |
|
183 |
#define jLongToCKULong(x) ((CK_ULONG) x) |
|
184 |
||
185 |
// For CK_UNAVAILABLE_INFORMATION, always return -1 to avoid 32/64 bit problems. |
|
186 |
#define ckULongSpecialToJLong(x) (((x) == CK_UNAVAILABLE_INFORMATION) \ |
|
187 |
? (jlong)-1 : ((jlong) x)) |
|
188 |
||
189 |
#define ckCharToJChar(x) ((jchar) x) |
|
190 |
#define jCharToCKChar(x) ((CK_CHAR) x) |
|
191 |
||
192 |
#define ckUTF8CharToJChar(x) ((jchar) x) |
|
193 |
#define jCharToCKUTF8Char(x) ((CK_UTF8CHAR) x) |
|
194 |
||
195 |
#define ckFlageToJLong(x) ((jlong) x) |
|
196 |
||
197 |
#define ckVoidPtrToJObject(x) ((jobject) x) |
|
198 |
#define jObjectToCKVoidPtr(x) ((CK_VOID_PTR) x) |
|
199 |
||
200 |
#define jIntToCKLong(x) ((CK_LONG) x) |
|
201 |
#define jIntToCKULong(x) ((CK_ULONG) x) |
|
202 |
#define ckLongToJInt(x) ((jint) x) |
|
203 |
#define ckULongToJInt(x) ((jint) x) |
|
204 |
#define ckULongToJSize(x) ((jsize) x) |
|
205 |
#define unsignedIntToCKULong(x) ((CK_ULONG) x) |
|
206 |
||
207 |
#ifdef P11_DEBUG |
|
208 |
#define TRACE0(s) { printf(s); fflush(stdout); } |
|
209 |
#define TRACE1(s, p1) { printf(s, p1); fflush(stdout); } |
|
210 |
#define TRACE2(s, p1, p2) { printf(s, p1, p2); fflush(stdout); } |
|
211 |
#define TRACE3(s, p1, p2, p3) { printf(s, p1, p2, p3); fflush(stdout); } |
|
212 |
#else |
|
213 |
#define TRACE0(s) |
|
214 |
#define TRACE1(s, p1) |
|
215 |
#define TRACE2(s, p1, p2) |
|
216 |
#define TRACE3(s, p1, p2, p3) |
|
217 |
#define TRACE_INTEND |
|
218 |
#define TRACE_UNINTEND |
|
219 |
#endif |
|
220 |
||
39142
bf48a9f13cf2
8074580: sun/security/pkcs11/rsa/TestKeyPairGenerator.java fails due to PKCS11Exception: CKR_FUNCTION_FAILED
asmotrak
parents:
25859
diff
changeset
|
221 |
/* debug output */ |
bf48a9f13cf2
8074580: sun/security/pkcs11/rsa/TestKeyPairGenerator.java fails due to PKCS11Exception: CKR_FUNCTION_FAILED
asmotrak
parents:
25859
diff
changeset
|
222 |
extern jboolean debug; |
bf48a9f13cf2
8074580: sun/security/pkcs11/rsa/TestKeyPairGenerator.java fails due to PKCS11Exception: CKR_FUNCTION_FAILED
asmotrak
parents:
25859
diff
changeset
|
223 |
void printDebug(const char *format, ...); |
bf48a9f13cf2
8074580: sun/security/pkcs11/rsa/TestKeyPairGenerator.java fails due to PKCS11Exception: CKR_FUNCTION_FAILED
asmotrak
parents:
25859
diff
changeset
|
224 |
|
2 | 225 |
#define CK_ASSERT_OK 0L |
226 |
||
227 |
#define CLASS_INFO "sun/security/pkcs11/wrapper/CK_INFO" |
|
228 |
#define CLASS_VERSION "sun/security/pkcs11/wrapper/CK_VERSION" |
|
229 |
#define CLASS_SLOT_INFO "sun/security/pkcs11/wrapper/CK_SLOT_INFO" |
|
230 |
#define CLASS_TOKEN_INFO "sun/security/pkcs11/wrapper/CK_TOKEN_INFO" |
|
231 |
#define CLASS_MECHANISM "sun/security/pkcs11/wrapper/CK_MECHANISM" |
|
232 |
#define CLASS_MECHANISM_INFO "sun/security/pkcs11/wrapper/CK_MECHANISM_INFO" |
|
233 |
#define CLASS_SESSION_INFO "sun/security/pkcs11/wrapper/CK_SESSION_INFO" |
|
234 |
#define CLASS_ATTRIBUTE "sun/security/pkcs11/wrapper/CK_ATTRIBUTE" |
|
235 |
#define CLASS_DATE "sun/security/pkcs11/wrapper/CK_DATE" |
|
236 |
#define CLASS_PKCS11EXCEPTION "sun/security/pkcs11/wrapper/PKCS11Exception" |
|
237 |
#define CLASS_PKCS11RUNTIMEEXCEPTION "sun/security/pkcs11/wrapper/PKCS11RuntimeException" |
|
238 |
#define CLASS_FILE_NOT_FOUND_EXCEPTION "java/io/FileNotFoundException" |
|
239 |
#define CLASS_C_INITIALIZE_ARGS "sun/security/pkcs11/wrapper/CK_C_INITIALIZE_ARGS" |
|
240 |
#define CLASS_CREATEMUTEX "sun/security/pkcs11/wrapper/CK_CREATEMUTEX" |
|
241 |
#define CLASS_DESTROYMUTEX "sun/security/pkcs11/wrapper/CK_DESTROYMUTEX" |
|
242 |
#define CLASS_LOCKMUTEX "sun/security/pkcs11/wrapper/CK_LOCKMUTEX" |
|
243 |
#define CLASS_UNLOCKMUTEX "sun/security/pkcs11/wrapper/CK_UNLOCKMUTEX" |
|
244 |
#define CLASS_NOTIFY "sun/security/pkcs11/wrapper/CK_NOTIFY" |
|
245 |
||
246 |
||
247 |
/* mechanism parameter classes */ |
|
248 |
||
249 |
#define CLASS_RSA_PKCS_OAEP_PARAMS "sun/security/pkcs11/wrapper/CK_RSA_PKCS_OAEP_PARAMS" |
|
250 |
#define CLASS_MAC_GENERAL_PARAMS "sun/security/pkcs11/wrapper/CK_MAC_GENERAL_PARAMS" |
|
251 |
#define CLASS_PBE_PARAMS "sun/security/pkcs11/wrapper/CK_PBE_PARAMS" |
|
252 |
#define PBE_INIT_VECTOR_SIZE 8 |
|
253 |
#define CLASS_PKCS5_PBKD2_PARAMS "sun/security/pkcs11/wrapper/CK_PKCS5_PBKD2_PARAMS" |
|
254 |
#define CLASS_EXTRACT_PARAMS "sun/security/pkcs11/wrapper/CK_EXTRACT_PARAMS" |
|
255 |
||
256 |
#define CLASS_RSA_PKCS_PSS_PARAMS "sun/security/pkcs11/wrapper/CK_RSA_PKCS_PSS_PARAMS" |
|
257 |
#define CLASS_ECDH1_DERIVE_PARAMS "sun/security/pkcs11/wrapper/CK_ECDH1_DERIVE_PARAMS" |
|
258 |
#define CLASS_ECDH2_DERIVE_PARAMS "sun/security/pkcs11/wrapper/CK_ECDH2_DERIVE_PARAMS" |
|
259 |
#define CLASS_X9_42_DH1_DERIVE_PARAMS "sun/security/pkcs11/wrapper/CK_X9_42_DH1_DERIVE_PARAMS" |
|
260 |
#define CLASS_X9_42_DH2_DERIVE_PARAMS "sun/security/pkcs11/wrapper/CK_X9_42_DH2_DERIVE_PARAMS" |
|
261 |
||
262 |
/* |
|
263 |
#define CLASS_KEA_DERIVE_PARAMS "sun/security/pkcs11/wrapper/CK_KEA_DERIVE_PARAMS" |
|
264 |
#define CLASS_RC2_PARAMS "sun/security/pkcs11/wrapper/CK_RC2_PARAMS" |
|
265 |
#define CLASS_RC2_CBC_PARAMS "sun/security/pkcs11/wrapper/CK_RC2_CBC_PARAMS" |
|
266 |
#define CLASS_RC2_MAC_GENERAL_PARAMS "sun/security/pkcs11/wrapper/CK_RC2_MAC_GENERAL_PARAMS" |
|
267 |
#define CLASS_RC5_PARAMS "sun/security/pkcs11/wrapper/CK_RC5_PARAMS" |
|
268 |
#define CLASS_RC5_CBC_PARAMS "sun/security/pkcs11/wrapper/CK_RC5_CBC_PARAMS" |
|
269 |
#define CLASS_RC5_MAC_GENERAL_PARAMS "sun/security/pkcs11/wrapper/CK_RC5_MAC_GENERAL_PARAMS" |
|
270 |
#define CLASS_SKIPJACK_PRIVATE_WRAP_PARAMS "sun/security/pkcs11/wrapper/CK_SKIPJACK_PRIVATE_WRAP_PARAMS" |
|
271 |
#define CLASS_SKIPJACK_RELAYX_PARAMS "sun/security/pkcs11/wrapper/CK_SKIPJACK_RELAYX_PARAMS" |
|
272 |
#define CLASS_KEY_WRAP_SET_OAEP_PARAMS "sun/security/pkcs11/wrapper/CK_KEY_WRAP_SET_OAEP_PARAMS" |
|
273 |
#define CLASS_KEY_DERIVATION_STRING_DATA "sun/security/pkcs11/wrapper/CK_KEY_DERIVATION_STRING_DATA" |
|
274 |
*/ |
|
275 |
||
276 |
#define CLASS_SSL3_RANDOM_DATA "sun/security/pkcs11/wrapper/CK_SSL3_RANDOM_DATA" |
|
277 |
// CLASS_SSL3_RANDOM_DATA is used by CLASS_SSL3_MASTER_KEY_DERIVE_PARAMS |
|
278 |
#define CLASS_SSL3_KEY_MAT_OUT "sun/security/pkcs11/wrapper/CK_SSL3_KEY_MAT_OUT" |
|
279 |
// CLASS_SSL3_KEY_MAT_OUT is used by CLASS_SSL3_KEY_MAT_PARAMS |
|
280 |
#define CLASS_SSL3_MASTER_KEY_DERIVE_PARAMS "sun/security/pkcs11/wrapper/CK_SSL3_MASTER_KEY_DERIVE_PARAMS" |
|
281 |
#define CLASS_SSL3_KEY_MAT_PARAMS "sun/security/pkcs11/wrapper/CK_SSL3_KEY_MAT_PARAMS" |
|
282 |
#define CLASS_TLS_PRF_PARAMS "sun/security/pkcs11/wrapper/CK_TLS_PRF_PARAMS" |
|
8542 | 283 |
#define CLASS_AES_CTR_PARAMS "sun/security/pkcs11/wrapper/CK_AES_CTR_PARAMS" |
2 | 284 |
|
285 |
/* function to convert a PKCS#11 return value other than CK_OK into a Java Exception |
|
286 |
* or to throw a PKCS11RuntimeException |
|
287 |
*/ |
|
288 |
||
289 |
jlong ckAssertReturnValueOK(JNIEnv *env, CK_RV returnValue); |
|
10798
413b731e1818
7103549: Remove dependencies on libjava and libjvm from security libraries
chegar
parents:
8542
diff
changeset
|
290 |
void throwOutOfMemoryError(JNIEnv *env, const char *message); |
413b731e1818
7103549: Remove dependencies on libjava and libjvm from security libraries
chegar
parents:
8542
diff
changeset
|
291 |
void throwNullPointerException(JNIEnv *env, const char *message); |
2 | 292 |
void throwIOException(JNIEnv *env, const char *message); |
2180
9994f4f08a59
6812738: SSL stress test with GF leads to 32 bit max process size in less than 5 minutes with PCKS11 provider
valeriep
parents:
2
diff
changeset
|
293 |
void throwPKCS11RuntimeException(JNIEnv *env, const char *message); |
2 | 294 |
void throwDisconnectedRuntimeException(JNIEnv *env); |
295 |
||
2180
9994f4f08a59
6812738: SSL stress test with GF leads to 32 bit max process size in less than 5 minutes with PCKS11 provider
valeriep
parents:
2
diff
changeset
|
296 |
/* function to free CK_ATTRIBUTE array |
9994f4f08a59
6812738: SSL stress test with GF leads to 32 bit max process size in less than 5 minutes with PCKS11 provider
valeriep
parents:
2
diff
changeset
|
297 |
*/ |
9994f4f08a59
6812738: SSL stress test with GF leads to 32 bit max process size in less than 5 minutes with PCKS11 provider
valeriep
parents:
2
diff
changeset
|
298 |
void freeCKAttributeArray(CK_ATTRIBUTE_PTR attrPtr, int len); |
9994f4f08a59
6812738: SSL stress test with GF leads to 32 bit max process size in less than 5 minutes with PCKS11 provider
valeriep
parents:
2
diff
changeset
|
299 |
|
2 | 300 |
/* funktions to convert Java arrays to a CK-type array and the array length */ |
301 |
||
302 |
void jBooleanArrayToCKBBoolArray(JNIEnv *env, const jbooleanArray jArray, CK_BBOOL **ckpArray, CK_ULONG_PTR ckLength); |
|
303 |
void jByteArrayToCKByteArray(JNIEnv *env, const jbyteArray jArray, CK_BYTE_PTR *ckpArray, CK_ULONG_PTR ckLength); |
|
304 |
void jLongArrayToCKULongArray(JNIEnv *env, const jlongArray jArray, CK_ULONG_PTR *ckpArray, CK_ULONG_PTR ckLength); |
|
305 |
void jCharArrayToCKCharArray(JNIEnv *env, const jcharArray jArray, CK_CHAR_PTR *ckpArray, CK_ULONG_PTR ckLength); |
|
306 |
void jCharArrayToCKUTF8CharArray(JNIEnv *env, const jcharArray jArray, CK_UTF8CHAR_PTR *ckpArray, CK_ULONG_PTR ckLength); |
|
307 |
void jStringToCKUTF8CharArray(JNIEnv *env, const jstring jArray, CK_UTF8CHAR_PTR *ckpArray, CK_ULONG_PTR ckpLength); |
|
308 |
void jAttributeArrayToCKAttributeArray(JNIEnv *env, jobjectArray jAArray, CK_ATTRIBUTE_PTR *ckpArray, CK_ULONG_PTR ckpLength); |
|
309 |
/*void jObjectArrayToCKVoidPtrArray(JNIEnv *env, const jobjectArray jArray, CK_VOID_PTR_PTR ckpArray, CK_ULONG_PTR ckpLength); */ |
|
310 |
||
311 |
||
312 |
/* funktions to convert a CK-type array and the array length to a Java array */ |
|
313 |
||
3321
fed33393bc52
6823905: crash in sun.security.pkcs11.wrapper.PKCS11.C_Sign during stress-test
valeriep
parents:
2180
diff
changeset
|
314 |
jbyteArray ckByteArrayToJByteArray(JNIEnv *env, const CK_BYTE_PTR ckpArray, CK_ULONG ckLength); |
2 | 315 |
jlongArray ckULongArrayToJLongArray(JNIEnv *env, const CK_ULONG_PTR ckpArray, CK_ULONG ckLength); |
316 |
jcharArray ckCharArrayToJCharArray(JNIEnv *env, const CK_CHAR_PTR ckpArray, CK_ULONG length); |
|
317 |
jcharArray ckUTF8CharArrayToJCharArray(JNIEnv *env, const CK_UTF8CHAR_PTR ckpArray, CK_ULONG ckLength); |
|
318 |
||
319 |
||
320 |
/* funktions to convert a CK-type structure or a pointer to a CK-value to a Java object */ |
|
321 |
||
322 |
jobject ckBBoolPtrToJBooleanObject(JNIEnv *env, const CK_BBOOL* ckpValue); |
|
323 |
jobject ckULongPtrToJLongObject(JNIEnv *env, const CK_ULONG_PTR ckpValue); |
|
324 |
jobject ckDatePtrToJDateObject(JNIEnv *env, const CK_DATE *ckpValue); |
|
325 |
jobject ckVersionPtrToJVersion(JNIEnv *env, const CK_VERSION_PTR ckpVersion); |
|
326 |
jobject ckSessionInfoPtrToJSessionInfo(JNIEnv *env, const CK_SESSION_INFO_PTR ckpSessionInfo); |
|
327 |
jobject ckAttributePtrToJAttribute(JNIEnv *env, const CK_ATTRIBUTE_PTR ckpAttribute); |
|
328 |
||
329 |
||
330 |
/* funktion to convert the CK-value used by the CK_ATTRIBUTE structure to a Java object */ |
|
331 |
||
332 |
jobject ckAttributeValueToJObject(JNIEnv *env, const CK_ATTRIBUTE_PTR ckpAttribute); |
|
333 |
||
334 |
||
335 |
/* funktions to convert a Java object to a CK-type structure or a pointer to a CK-value */ |
|
336 |
||
337 |
CK_BBOOL* jBooleanObjectToCKBBoolPtr(JNIEnv *env, jobject jObject); |
|
338 |
CK_BYTE_PTR jByteObjectToCKBytePtr(JNIEnv *env, jobject jObject); |
|
339 |
CK_ULONG* jIntegerObjectToCKULongPtr(JNIEnv *env, jobject jObject); |
|
340 |
CK_ULONG* jLongObjectToCKULongPtr(JNIEnv *env, jobject jObject); |
|
341 |
CK_CHAR_PTR jCharObjectToCKCharPtr(JNIEnv *env, jobject jObject); |
|
342 |
CK_VERSION_PTR jVersionToCKVersionPtr(JNIEnv *env, jobject jVersion); |
|
343 |
CK_DATE * jDateObjectPtrToCKDatePtr(JNIEnv *env, jobject jDate); |
|
344 |
CK_ATTRIBUTE jAttributeToCKAttribute(JNIEnv *env, jobject jAttribute); |
|
345 |
/*CK_MECHANISM jMechanismToCKMechanism(JNIEnv *env, jobject jMechanism);*/ |
|
346 |
void jMechanismToCKMechanism(JNIEnv *env, jobject jMechanism, CK_MECHANISM_PTR ckMechanismPtr); |
|
347 |
||
348 |
||
349 |
/* funktions to convert Java objects used by the Mechanism and Attribute class to a CK-type structure */ |
|
350 |
||
351 |
void jObjectToPrimitiveCKObjectPtrPtr(JNIEnv *env, jobject jObject, CK_VOID_PTR *ckpObjectPtr, CK_ULONG *pLength); |
|
352 |
void jMechanismParameterToCKMechanismParameter(JNIEnv *env, jobject jParam, CK_VOID_PTR *ckpParamPtr, CK_ULONG *ckpLength); |
|
353 |
||
354 |
||
355 |
/* functions to convert a specific Java mechanism parameter object to a CK-mechanism parameter structure */ |
|
356 |
||
357 |
CK_RSA_PKCS_OAEP_PARAMS jRsaPkcsOaepParamToCKRsaPkcsOaepParam(JNIEnv *env, jobject jParam); |
|
358 |
CK_KEA_DERIVE_PARAMS jKeaDeriveParamToCKKeaDeriveParam(JNIEnv *env, jobject jParam); |
|
359 |
CK_RC2_CBC_PARAMS jRc2CbcParamToCKRc2CbcParam(JNIEnv *env, jobject jParam); |
|
360 |
CK_RC2_MAC_GENERAL_PARAMS jRc2MacGeneralParamToCKRc2MacGeneralParam(JNIEnv *env, jobject jParam); |
|
361 |
CK_RC5_PARAMS jRc5ParamToCKRc5Param(JNIEnv *env, jobject jParam); |
|
362 |
CK_RC5_CBC_PARAMS jRc5CbcParamToCKRc5CbcParam(JNIEnv *env, jobject jParam); |
|
363 |
CK_RC5_MAC_GENERAL_PARAMS jRc5MacGeneralParamToCKRc5MacGeneralParam(JNIEnv *env, jobject jParam); |
|
364 |
CK_SKIPJACK_PRIVATE_WRAP_PARAMS jSkipjackPrivateWrapParamToCKSkipjackPrivateWrapParam(JNIEnv *env, jobject jParam); |
|
365 |
CK_SKIPJACK_RELAYX_PARAMS jSkipjackRelayxParamToCKSkipjackRelayxParam(JNIEnv *env, jobject jParam); |
|
366 |
CK_PBE_PARAMS jPbeParamToCKPbeParam(JNIEnv *env, jobject jParam); |
|
367 |
void copyBackPBEInitializationVector(JNIEnv *env, CK_MECHANISM *ckMechanism, jobject jMechanism); |
|
368 |
CK_PKCS5_PBKD2_PARAMS jPkcs5Pbkd2ParamToCKPkcs5Pbkd2Param(JNIEnv *env, jobject jParam); |
|
369 |
CK_KEY_WRAP_SET_OAEP_PARAMS jKeyWrapSetOaepParamToCKKeyWrapSetOaepParam(JNIEnv *env, jobject jParam); |
|
370 |
void copyBackSetUnwrappedKey(JNIEnv *env, CK_MECHANISM *ckMechanism, jobject jMechanism); |
|
371 |
CK_SSL3_MASTER_KEY_DERIVE_PARAMS jSsl3MasterKeyDeriveParamToCKSsl3MasterKeyDeriveParam(JNIEnv *env, jobject jParam); |
|
372 |
void copyBackClientVersion(JNIEnv *env, CK_MECHANISM *ckMechanism, jobject jMechanism); |
|
373 |
CK_SSL3_KEY_MAT_PARAMS jSsl3KeyMatParamToCKSsl3KeyMatParam(JNIEnv *env, jobject jParam); |
|
374 |
void copyBackSSLKeyMatParams(JNIEnv *env, CK_MECHANISM *ckMechanism, jobject jMechanism); |
|
375 |
CK_KEY_DERIVATION_STRING_DATA jKeyDerivationStringDataToCKKeyDerivationStringData(JNIEnv *env, jobject jParam); |
|
376 |
CK_RSA_PKCS_PSS_PARAMS jRsaPkcsPssParamToCKRsaPkcsPssParam(JNIEnv *env, jobject jParam); |
|
377 |
CK_ECDH1_DERIVE_PARAMS jEcdh1DeriveParamToCKEcdh1DeriveParam(JNIEnv *env, jobject jParam); |
|
378 |
CK_ECDH2_DERIVE_PARAMS jEcdh2DeriveParamToCKEcdh2DeriveParam(JNIEnv *env, jobject jParam); |
|
379 |
CK_X9_42_DH1_DERIVE_PARAMS jX942Dh1DeriveParamToCKX942Dh1DeriveParam(JNIEnv *env, jobject jParam); |
|
380 |
CK_X9_42_DH2_DERIVE_PARAMS jX942Dh2DeriveParamToCKX942Dh2DeriveParam(JNIEnv *env, jobject jParam); |
|
381 |
||
382 |
||
383 |
/* functions to convert the InitArgs object for calling the right Java mutex functions */ |
|
384 |
||
385 |
CK_C_INITIALIZE_ARGS_PTR makeCKInitArgsAdapter(JNIEnv *env, jobject pInitArgs); |
|
386 |
||
387 |
#ifndef NO_CALLBACKS /* if the library should not make callbacks; e.g. no javai.lib or jvm.lib available */ |
|
388 |
CK_RV callJCreateMutex(CK_VOID_PTR_PTR ppMutex); |
|
389 |
CK_RV callJDestroyMutex(CK_VOID_PTR pMutex); |
|
390 |
CK_RV callJLockMutex(CK_VOID_PTR pMutex); |
|
391 |
CK_RV callJUnlockMutex(CK_VOID_PTR pMutex); |
|
392 |
#endif /* NO_CALLBACKS */ |
|
393 |
||
394 |
void putModuleEntry(JNIEnv *env, jobject pkcs11Implementation, ModuleData *moduleData); |
|
395 |
ModuleData * removeModuleEntry(JNIEnv *env, jobject pkcs11Implementation); |
|
396 |
CK_FUNCTION_LIST_PTR getFunctionList(JNIEnv *env, jobject pkcs11Implementation); |
|
397 |
||
398 |
/* A structure to encapsulate the required data for a Notify callback */ |
|
399 |
struct NotifyEncapsulation { |
|
400 |
||
401 |
/* The object that implements the CK_NOTIFY interface and which should be |
|
402 |
* notified. |
|
403 |
*/ |
|
404 |
jobject jNotifyObject; |
|
405 |
||
406 |
/* The data object to pass back to the Notify object upon callback. */ |
|
407 |
jobject jApplicationData; |
|
408 |
}; |
|
409 |
typedef struct NotifyEncapsulation NotifyEncapsulation; |
|
410 |
||
411 |
/* The function for handling notify callbacks. */ |
|
412 |
CK_RV notifyCallback( |
|
413 |
CK_SESSION_HANDLE hSession, /* the session's handle */ |
|
414 |
CK_NOTIFICATION event, |
|
415 |
CK_VOID_PTR pApplication /* passed to C_OpenSession */ |
|
416 |
); |
|
417 |
||
418 |
||
419 |
/* A node of the list of notify callbacks. To be able to free the resources after use. */ |
|
420 |
struct NotifyListNode { |
|
421 |
||
422 |
/* The handle of the session this notify object is attached to*/ |
|
423 |
CK_SESSION_HANDLE hSession; |
|
424 |
||
425 |
/* Reference to the Notify encapsulation object that was passed to C_OpenSession. */ |
|
426 |
NotifyEncapsulation *notifyEncapsulation; |
|
427 |
||
428 |
/* Pointer to the next node in the list. */ |
|
429 |
struct NotifyListNode *next; |
|
430 |
||
431 |
}; |
|
432 |
typedef struct NotifyListNode NotifyListNode; |
|
433 |
||
434 |
void putNotifyEntry(JNIEnv *env, CK_SESSION_HANDLE hSession, NotifyEncapsulation *notifyEncapsulation); |
|
435 |
NotifyEncapsulation * removeNotifyEntry(JNIEnv *env, CK_SESSION_HANDLE hSession); |
|
436 |
NotifyEncapsulation * removeFirstNotifyEntry(JNIEnv *env); |
|
437 |
||
438 |
jobject createLockObject(JNIEnv *env); |
|
439 |
void destroyLockObject(JNIEnv *env, jobject jLockObject); |
|
440 |
||
441 |
extern jfieldID pNativeDataID; |
|
442 |
extern jfieldID mech_mechanismID; |
|
443 |
extern jfieldID mech_pParameterID; |
|
444 |
||
445 |
extern jclass jByteArrayClass; |
|
446 |
extern jclass jLongClass; |
|
447 |
||
448 |
#ifndef NO_CALLBACKS |
|
449 |
extern NotifyListNode *notifyListHead; |
|
450 |
extern jobject notifyListLock; |
|
451 |
||
452 |
extern jobject jInitArgsObject; |
|
453 |
extern CK_C_INITIALIZE_ARGS_PTR ckpGlobalInitArgs; |
|
454 |
#endif /* NO_CALLBACKS */ |
|
2180
9994f4f08a59
6812738: SSL stress test with GF leads to 32 bit max process size in less than 5 minutes with PCKS11 provider
valeriep
parents:
2
diff
changeset
|
455 |
|
9994f4f08a59
6812738: SSL stress test with GF leads to 32 bit max process size in less than 5 minutes with PCKS11 provider
valeriep
parents:
2
diff
changeset
|
456 |
#ifdef P11_MEMORYDEBUG |
9994f4f08a59
6812738: SSL stress test with GF leads to 32 bit max process size in less than 5 minutes with PCKS11 provider
valeriep
parents:
2
diff
changeset
|
457 |
#include <stdlib.h> |
9994f4f08a59
6812738: SSL stress test with GF leads to 32 bit max process size in less than 5 minutes with PCKS11 provider
valeriep
parents:
2
diff
changeset
|
458 |
|
9994f4f08a59
6812738: SSL stress test with GF leads to 32 bit max process size in less than 5 minutes with PCKS11 provider
valeriep
parents:
2
diff
changeset
|
459 |
/* Simple malloc/free dumper */ |
9994f4f08a59
6812738: SSL stress test with GF leads to 32 bit max process size in less than 5 minutes with PCKS11 provider
valeriep
parents:
2
diff
changeset
|
460 |
void *p11malloc(size_t c, char *file, int line); |
9994f4f08a59
6812738: SSL stress test with GF leads to 32 bit max process size in less than 5 minutes with PCKS11 provider
valeriep
parents:
2
diff
changeset
|
461 |
void p11free(void *p, char *file, int line); |
9994f4f08a59
6812738: SSL stress test with GF leads to 32 bit max process size in less than 5 minutes with PCKS11 provider
valeriep
parents:
2
diff
changeset
|
462 |
|
13678
5c8001201f98
7197771: Adjust jdk sources to avoid use of implementation defined value of __FILE__
ohair
parents:
11507
diff
changeset
|
463 |
/* Use THIS_FILE when it is available. */ |
5c8001201f98
7197771: Adjust jdk sources to avoid use of implementation defined value of __FILE__
ohair
parents:
11507
diff
changeset
|
464 |
#ifndef THIS_FILE |
5c8001201f98
7197771: Adjust jdk sources to avoid use of implementation defined value of __FILE__
ohair
parents:
11507
diff
changeset
|
465 |
#define THIS_FILE __FILE__ |
5c8001201f98
7197771: Adjust jdk sources to avoid use of implementation defined value of __FILE__
ohair
parents:
11507
diff
changeset
|
466 |
#endif |
5c8001201f98
7197771: Adjust jdk sources to avoid use of implementation defined value of __FILE__
ohair
parents:
11507
diff
changeset
|
467 |
|
5c8001201f98
7197771: Adjust jdk sources to avoid use of implementation defined value of __FILE__
ohair
parents:
11507
diff
changeset
|
468 |
#define malloc(c) (p11malloc((c), THIS_FILE, __LINE__)) |
5c8001201f98
7197771: Adjust jdk sources to avoid use of implementation defined value of __FILE__
ohair
parents:
11507
diff
changeset
|
469 |
#define free(c) (p11free((c), THIS_FILE, __LINE__)) |
2180
9994f4f08a59
6812738: SSL stress test with GF leads to 32 bit max process size in less than 5 minutes with PCKS11 provider
valeriep
parents:
2
diff
changeset
|
470 |
|
9994f4f08a59
6812738: SSL stress test with GF leads to 32 bit max process size in less than 5 minutes with PCKS11 provider
valeriep
parents:
2
diff
changeset
|
471 |
#endif |
22964
59c522d83ed9
8034856: gcc warnings compiling src/solaris/native/sun/security/pkcs11
alanb
parents:
13678
diff
changeset
|
472 |
|
59c522d83ed9
8034856: gcc warnings compiling src/solaris/native/sun/security/pkcs11
alanb
parents:
13678
diff
changeset
|
473 |
#endif /* _PKCS11WRAPPER_H */ |