HDDS-2227. GDPR key generation could benefit from secureRandom. (#1574)

This commit is contained in:
Anu Engineer 2019-10-02 12:34:53 -07:00 committed by GitHub
parent ffd4e52725
commit 685918ef41
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 10 additions and 5 deletions

View File

@ -94,6 +94,7 @@
import java.io.IOException;
import java.net.URI;
import java.security.InvalidKeyException;
import java.security.SecureRandom;
import java.util.*;
import java.util.concurrent.TimeUnit;
import java.util.stream.Collectors;
@ -587,7 +588,7 @@ public OzoneOutputStream createKey(
if(Boolean.valueOf(metadata.get(OzoneConsts.GDPR_FLAG))){
try{
GDPRSymmetricKey gKey = new GDPRSymmetricKey();
GDPRSymmetricKey gKey = new GDPRSymmetricKey(new SecureRandom());
metadata.putAll(gKey.getKeyDetails());
}catch (Exception e) {
if(e instanceof InvalidKeyException &&

View File

@ -20,6 +20,7 @@
import org.apache.commons.lang3.RandomStringUtils;
import org.apache.hadoop.ozone.OzoneConsts;
import java.security.SecureRandom;
import java.util.HashMap;
import java.util.Map;
@ -48,10 +49,11 @@ public Cipher getCipher() {
* Default constructor creates key with default values.
* @throws Exception
*/
public GDPRSymmetricKey() throws Exception {
public GDPRSymmetricKey(SecureRandom secureRandom) throws Exception {
algorithm = OzoneConsts.GDPR_ALGORITHM_NAME;
secret = RandomStringUtils
.randomAlphabetic(OzoneConsts.GDPR_DEFAULT_RANDOM_SECRET_LENGTH);
secret = RandomStringUtils.random(
OzoneConsts.GDPR_DEFAULT_RANDOM_SECRET_LENGTH,
0, 0, true, true, null, secureRandom);
this.secretKey = new SecretKeySpec(
secret.getBytes(OzoneConsts.GDPR_CHARSET), algorithm);
this.cipher = Cipher.getInstance(algorithm);

View File

@ -21,6 +21,8 @@
import org.junit.Assert;
import org.junit.Test;
import java.security.SecureRandom;
/**
* Tests GDPRSymmetricKey structure.
*/
@ -28,7 +30,7 @@ public class TestGDPRSymmetricKey {
@Test
public void testKeyGenerationWithDefaults() throws Exception {
GDPRSymmetricKey gkey = new GDPRSymmetricKey();
GDPRSymmetricKey gkey = new GDPRSymmetricKey(new SecureRandom());
Assert.assertTrue(gkey.getCipher().getAlgorithm()
.equalsIgnoreCase(OzoneConsts.GDPR_ALGORITHM_NAME));