Skip to content

Commit ca4c763

Browse files
authored
chore(tests): update ESDK tests to replace sun.security.* API (#1852)
Update ESDK Java tests to replace sun.security.* API with supported alternate API
1 parent 3617210 commit ca4c763

File tree

1 file changed

+23
-32
lines changed

1 file changed

+23
-32
lines changed

src/test/java/com/amazonaws/encryptionsdk/jce/KeyStoreProviderTest.java

+23-32
Original file line numberDiff line numberDiff line change
@@ -32,26 +32,18 @@
3232
import java.security.KeyStore.PasswordProtection;
3333
import java.security.KeyStoreException;
3434
import java.security.SecureRandom;
35+
import java.security.Security;
3536
import java.security.cert.Certificate;
3637
import java.security.cert.X509Certificate;
3738
import java.time.Instant;
3839
import java.time.temporal.ChronoUnit;
3940
import java.util.Date;
4041
import javax.crypto.spec.SecretKeySpec;
42+
import javax.security.auth.x500.X500Principal;
43+
import org.bouncycastle.jce.provider.BouncyCastleProvider;
44+
import org.bouncycastle.x509.X509V3CertificateGenerator;
4145
import org.junit.Before;
4246
import org.junit.Test;
43-
import sun.security.x509.AlgorithmId;
44-
import sun.security.x509.CertificateAlgorithmId;
45-
import sun.security.x509.CertificateSerialNumber;
46-
import sun.security.x509.CertificateValidity;
47-
import sun.security.x509.CertificateX509Key;
48-
import sun.security.x509.X500Name;
49-
import sun.security.x509.X509CertImpl;
50-
import sun.security.x509.X509CertInfo;
51-
52-
/* These internal sun classes are included solely for test purposes as
53-
this test cannot use BouncyCastle cert generation, as there are incompatibilities
54-
between how standard BC and FIPS BC perform cert generation. */
5547

5648
public class KeyStoreProviderTest {
5749
private static final SecureRandom RND = new SecureRandom();
@@ -72,6 +64,7 @@ public class KeyStoreProviderTest {
7264

7365
@Before
7466
public void setup() throws Exception {
67+
Security.addProvider(new BouncyCastleProvider());
7568
ks = KeyStore.getInstance(KeyStore.getDefaultType());
7669
ks.load(null, PASSWORD);
7770
}
@@ -286,26 +279,24 @@ private void addPublicEntry(final String alias) throws GeneralSecurityException,
286279
}
287280

288281
private X509Certificate generateCertificate(final KeyPair pair, final String alias)
289-
throws GeneralSecurityException, IOException {
290-
final X509CertInfo info = new X509CertInfo();
291-
final X500Name name = new X500Name("dc=" + alias);
292-
info.set(X509CertInfo.SERIAL_NUMBER, new CertificateSerialNumber(new BigInteger(256, RND)));
293-
info.set(X509CertInfo.SUBJECT, name);
294-
info.set(X509CertInfo.ISSUER, name);
295-
info.set(
296-
X509CertInfo.VALIDITY,
297-
new CertificateValidity(
298-
Date.from(Instant.now().minus(1, ChronoUnit.DAYS)),
299-
Date.from(Instant.now().plus(730, ChronoUnit.DAYS))));
300-
info.set(X509CertInfo.KEY, new CertificateX509Key(pair.getPublic()));
301-
info.set(
302-
X509CertInfo.ALGORITHM_ID,
303-
new CertificateAlgorithmId(new AlgorithmId(AlgorithmId.sha256WithRSAEncryption_oid)));
304-
305-
final X509CertImpl cert = new X509CertImpl(info);
306-
cert.sign(pair.getPrivate(), AlgorithmId.sha256WithRSAEncryption_oid.toString());
307-
308-
return cert;
282+
throws GeneralSecurityException {
283+
final X509Certificate certificate;
284+
285+
// Generate self-signed certificate
286+
final X509V3CertificateGenerator certGen = new X509V3CertificateGenerator();
287+
final X500Principal dnName = new X500Principal("dc=" + alias);
288+
289+
certGen.setSerialNumber(new BigInteger(256, new SecureRandom()));
290+
certGen.setIssuerDN(dnName);
291+
certGen.setNotBefore(Date.from(Instant.now().minus(1, ChronoUnit.DAYS)));
292+
certGen.setNotAfter(Date.from(Instant.now().plus(730, ChronoUnit.DAYS)));
293+
certGen.setSubjectDN(dnName);
294+
certGen.setPublicKey(pair.getPublic());
295+
certGen.setSignatureAlgorithm("SHA256WithRSA");
296+
297+
certificate = certGen.generate(pair.getPrivate());
298+
299+
return certificate;
309300
}
310301

311302
private void copyPublicPart(final KeyStore src, final KeyStore dst, final String alias)

0 commit comments

Comments
 (0)