changeset 1832:610c2a0fbf7c

8196897: Improve PRNG support Reviewed-by: weijun
author igerasim
date Tue, 10 Apr 2018 00:56:00 -0700
parents 93b2632a22c7
children 93ead2e8d186
files src/windows/native/sun/security/mscapi/security.cpp
diffstat 1 files changed, 8 insertions(+), 20 deletions(-) [+]
line wrap: on
line diff
--- a/src/windows/native/sun/security/mscapi/security.cpp	Thu Jun 07 15:00:19 2018 -0700
+++ b/src/windows/native/sun/security/mscapi/security.cpp	Tue Apr 10 00:56:00 2018 -0700
@@ -151,7 +151,6 @@
 {
 
     HCRYPTPROV hCryptProv = NULL;
-    BYTE*      pbData = NULL;
     jbyte*     reseedBytes = NULL;
     jbyte*     seedBytes = NULL;
     jbyteArray result = NULL;
@@ -195,25 +194,17 @@
 
             result = NULL;
 
-        } else if (length > 0) {
-
-            pbData = new BYTE[length];
+        } else {
 
-            if (::CryptGenRandom(
-                hCryptProv,
-                length,
-                pbData) == FALSE) {
-
-                ThrowException(env, PROVIDER_EXCEPTION, GetLastError());
-                __leave;
+            if (length > 0) {
+                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) {
                 __leave;
             }
@@ -238,9 +229,6 @@
         if (reseedBytes)
             env->ReleaseByteArrayElements(seed, reseedBytes, JNI_ABORT);
 
-        if (pbData)
-            delete [] pbData;
-
         if (seedBytes)
             env->ReleaseByteArrayElements(seed, seedBytes, 0); // update orig