Skip to content

Commit dae76c5

Browse files
committed
JCE: zero encodedKey buffer in DH/EC/RSA Key Factories before returning
1 parent dc3d7a6 commit dae76c5

3 files changed

Lines changed: 20 additions & 4 deletions

File tree

src/main/java/com/wolfssl/provider/jce/WolfCryptDHKeyFactory.java

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -440,7 +440,9 @@ private <T extends KeySpec> T getPrivateKeySpec(DHPrivateKey key,
440440
throw new InvalidKeySpecException(
441441
"DHPrivateKey.getEncoded() returned null");
442442
}
443-
return (T) new PKCS8EncodedKeySpec(encoded);
443+
T pkcs8EncKS = (T) new PKCS8EncodedKeySpec(encoded);
444+
Arrays.fill(encoded, (byte)0);
445+
return pkcs8EncKS;
444446
}
445447
else if (keySpec.isAssignableFrom(DHPrivateKeySpec.class)) {
446448
/* Extract private value and params directly from key */
@@ -542,6 +544,8 @@ private PrivateKey translatePrivateKey(DHPrivateKey key)
542544
}
543545

544546
keySpec = new PKCS8EncodedKeySpec(encoded);
547+
Arrays.fill(encoded, (byte)0);
548+
545549
return engineGeneratePrivate(keySpec);
546550

547551
} catch (InvalidKeySpecException e) {

src/main/java/com/wolfssl/provider/jce/WolfCryptECKeyFactory.java

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -653,7 +653,10 @@ private <T extends KeySpec> T getPrivateKeySpec(ECPrivateKey key,
653653
throw new InvalidKeySpecException(
654654
"ECPrivateKey.getEncoded() returned null");
655655
}
656-
return (T) new PKCS8EncodedKeySpec(encoded);
656+
T pkcs8EncKS = (T) new PKCS8EncodedKeySpec(encoded);
657+
Arrays.fill(encoded, (byte)0);
658+
659+
return pkcs8EncKS;
657660
}
658661
else if (keySpec.isAssignableFrom(ECPrivateKeySpec.class)) {
659662
/* Extract private value and params directly from key */
@@ -748,6 +751,8 @@ private PrivateKey translatePrivateKey(ECPrivateKey key)
748751
}
749752

750753
PKCS8EncodedKeySpec keySpec = new PKCS8EncodedKeySpec(encoded);
754+
Arrays.fill(encoded, (byte)0);
755+
751756
return engineGeneratePrivate(keySpec);
752757

753758
} catch (InvalidKeySpecException e) {

src/main/java/com/wolfssl/provider/jce/WolfCryptRSAKeyFactory.java

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -534,7 +534,10 @@ private <T extends KeySpec> T getPrivateCrtKeySpec(RSAPrivateCrtKey key,
534534
throw new InvalidKeySpecException(
535535
"RSAPrivateCrtKey.getEncoded() returned null");
536536
}
537-
return (T) new PKCS8EncodedKeySpec(encoded);
537+
T pkcs8EncKS = (T) new PKCS8EncodedKeySpec(encoded);
538+
Arrays.fill(encoded, (byte)0);
539+
540+
return pkcs8EncKS;
538541
}
539542
else if (keySpec.isAssignableFrom(RSAPrivateCrtKeySpec.class)) {
540543
/* Extract CRT parameters directly from key */
@@ -600,7 +603,10 @@ private <T extends KeySpec> T getPrivateKeySpec(RSAPrivateKey key,
600603
throw new InvalidKeySpecException(
601604
"RSAPrivateKey.getEncoded() returned null");
602605
}
603-
return (T) new PKCS8EncodedKeySpec(encoded);
606+
T pkcs8EncKS = (T) new PKCS8EncodedKeySpec(encoded);
607+
Arrays.fill(encoded, (byte)0);
608+
609+
return pkcs8EncKS;
604610
}
605611
else if (keySpec.isAssignableFrom(RSAPrivateKeySpec.class)) {
606612
/* Extract basic private key parameters */
@@ -705,6 +711,7 @@ private PrivateKey translatePrivateKey(RSAPrivateKey key)
705711
}
706712

707713
keySpec = new PKCS8EncodedKeySpec(encoded);
714+
Arrays.fill(encoded, (byte)0);
708715

709716
return engineGeneratePrivate(keySpec);
710717

0 commit comments

Comments
 (0)