summaryrefslogtreecommitdiffstats
path: root/base
diff options
context:
space:
mode:
authorEndi S. Dewata <edewata@redhat.com>2017-05-20 01:28:06 +0200
committerEndi S. Dewata <edewata@redhat.com>2017-05-25 01:19:48 +0200
commit468cacf6d6ec4f46bd4e60255105da3a585c4f6d (patch)
tree7ce87f442369b08edd046bd6ea6f57637c3cb70b /base
parent3ddc916954d712f6fe25497789925fecebef20fc (diff)
downloadpki-468cacf6d6ec4f46bd4e60255105da3a585c4f6d.tar.gz
pki-468cacf6d6ec4f46bd4e60255105da3a585c4f6d.tar.xz
pki-468cacf6d6ec4f46bd4e60255105da3a585c4f6d.zip
Replaced random number generator in SecurityDataProcessor.
The SecurityDataProcessor has been modified to use the random number generator provided by JssSubsystem. https://pagure.io/dogtagpki/issue/2695 Change-Id: Ibca684a2165266456c4b28cba5eae4136940d189
Diffstat (limited to 'base')
-rw-r--r--base/kra/src/com/netscape/kra/SecurityDataProcessor.java25
1 files changed, 19 insertions, 6 deletions
diff --git a/base/kra/src/com/netscape/kra/SecurityDataProcessor.java b/base/kra/src/com/netscape/kra/SecurityDataProcessor.java
index 2899f3254..ec848be2d 100644
--- a/base/kra/src/com/netscape/kra/SecurityDataProcessor.java
+++ b/base/kra/src/com/netscape/kra/SecurityDataProcessor.java
@@ -48,6 +48,7 @@ import com.netscape.certsrv.request.RequestId;
import com.netscape.certsrv.security.IStorageKeyUnit;
import com.netscape.certsrv.security.ITransportKeyUnit;
import com.netscape.cmscore.dbs.KeyRecord;
+import com.netscape.cmscore.security.JssSubsystem;
import com.netscape.cmsutil.crypto.CryptoUtil;
import com.netscape.cmsutil.util.Utils;
@@ -640,7 +641,7 @@ public class SecurityDataProcessor {
* (ie. algorithm is unknown)
*/
private byte[] generate_iv(String oid, EncryptionAlgorithm defaultAlg) throws Exception {
- int numBytes = 0;
+
EncryptionAlgorithm alg = oid != null? EncryptionAlgorithm.fromOID(new OBJECT_IDENTIFIER(oid)):
defaultAlg;
@@ -651,8 +652,14 @@ public class SecurityDataProcessor {
if (alg.getParameterClasses() == null)
return null;
- numBytes = alg.getIVLength();
- return (new SecureRandom()).generateSeed(numBytes);
+ int numBytes = alg.getIVLength();
+ byte[] bytes = new byte[numBytes];
+
+ JssSubsystem jssSubsystem = (JssSubsystem) CMS.getSubsystem(JssSubsystem.ID);
+ SecureRandom random = jssSubsystem.getRandomNumberGenerator();
+ random.nextBytes(bytes);
+
+ return bytes;
}
/***
@@ -668,7 +675,7 @@ public class SecurityDataProcessor {
* (ie. algorithm is unknown)
*/
private byte[] generate_wrap_iv(String wrapName, KeyWrapAlgorithm defaultAlg) throws Exception {
- int numBytes = 0;
+
KeyWrapAlgorithm alg = wrapName != null ? KeyWrapAlgorithm.fromString(wrapName) :
defaultAlg;
@@ -679,8 +686,14 @@ public class SecurityDataProcessor {
if (alg.getParameterClasses() == null)
return null;
- numBytes = alg.getBlockSize();
- return (new SecureRandom()).generateSeed(numBytes);
+ int numBytes = alg.getBlockSize();
+ byte[] bytes = new byte[numBytes];
+
+ JssSubsystem jssSubsystem = (JssSubsystem) CMS.getSubsystem(JssSubsystem.ID);
+ SecureRandom random = jssSubsystem.getRandomNumberGenerator();
+ random.nextBytes(bytes);
+
+ return bytes;
}
public SymmetricKey recoverSymKey(KeyRecord keyRecord)