提交 d27dadbe 编写于 作者: I igerasim

8196897: Improve PRNG support

Reviewed-by: weijun
上级 2beb5825
...@@ -159,7 +159,6 @@ JNIEXPORT jbyteArray JNICALL Java_sun_security_mscapi_PRNG_generateSeed ...@@ -159,7 +159,6 @@ JNIEXPORT jbyteArray JNICALL Java_sun_security_mscapi_PRNG_generateSeed
{ {
HCRYPTPROV hCryptProv = NULL; HCRYPTPROV hCryptProv = NULL;
BYTE* pbData = NULL;
jbyte* reseedBytes = NULL; jbyte* reseedBytes = NULL;
jbyte* seedBytes = NULL; jbyte* seedBytes = NULL;
jbyteArray result = NULL; jbyteArray result = NULL;
...@@ -203,25 +202,17 @@ JNIEXPORT jbyteArray JNICALL Java_sun_security_mscapi_PRNG_generateSeed ...@@ -203,25 +202,17 @@ JNIEXPORT jbyteArray JNICALL Java_sun_security_mscapi_PRNG_generateSeed
result = NULL; result = NULL;
} else if (length > 0) { } else {
pbData = new BYTE[length];
if (::CryptGenRandom(
hCryptProv,
length,
pbData) == FALSE) {
ThrowException(env, PROVIDER_EXCEPTION, GetLastError()); if (length > 0) {
__leave; seed = env->NewByteArray(length);
if (seed == NULL) {
__leave;
}
} else {
length = env->GetArrayLength(seed);
} }
result = env->NewByteArray(length);
env->SetByteArrayRegion(result, 0, length, (jbyte*) pbData);
} else { // length == 0
length = env->GetArrayLength(seed);
if ((seedBytes = env->GetByteArrayElements(seed, 0)) == NULL) { if ((seedBytes = env->GetByteArrayElements(seed, 0)) == NULL) {
__leave; __leave;
} }
...@@ -246,9 +237,6 @@ JNIEXPORT jbyteArray JNICALL Java_sun_security_mscapi_PRNG_generateSeed ...@@ -246,9 +237,6 @@ JNIEXPORT jbyteArray JNICALL Java_sun_security_mscapi_PRNG_generateSeed
if (reseedBytes) if (reseedBytes)
env->ReleaseByteArrayElements(seed, reseedBytes, JNI_ABORT); env->ReleaseByteArrayElements(seed, reseedBytes, JNI_ABORT);
if (pbData)
delete [] pbData;
if (seedBytes) if (seedBytes)
env->ReleaseByteArrayElements(seed, seedBytes, 0); // update orig env->ReleaseByteArrayElements(seed, seedBytes, 0); // update orig
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册