Skip to content

Commit fddab66

Browse files
committed
Merge branch 'main' of gitlab.cryptoworkshop.com:root/bc-java
2 parents dc0b671 + b1925a6 commit fddab66

26 files changed

Lines changed: 156 additions & 517 deletions

File tree

mail/src/test/java/org/bouncycastle/mail/smime/test/SMIMEToolkitTest.java

Lines changed: 23 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,6 @@
2222
import javax.mail.internet.MimeMessage;
2323
import javax.mail.internet.MimeMultipart;
2424

25-
import junit.framework.Assert;
2625
import junit.framework.Test;
2726
import junit.framework.TestCase;
2827
import junit.framework.TestSuite;
@@ -137,11 +136,11 @@ public void testSignedMessageRecognitionMultipart()
137136

138137
MimeMultipart smm = generateMultiPartRsa("SHA1withRSA", msg, SMIMESignedGenerator.RFC3851_MICALGS);
139138

140-
Assert.assertTrue(toolkit.isSigned(smm));
139+
assertTrue(toolkit.isSigned(smm));
141140

142141
MimeMessage body = makeMimeMessage(smm);
143142

144-
Assert.assertTrue(toolkit.isSigned(body));
143+
assertTrue(toolkit.isSigned(body));
145144
}
146145

147146
public void testSignedMessageRecognitionEncapsulated()
@@ -151,11 +150,11 @@ public void testSignedMessageRecognitionEncapsulated()
151150

152151
MimeBodyPart res = generateEncapsulated();
153152

154-
Assert.assertTrue(toolkit.isSigned(res));
153+
assertTrue(toolkit.isSigned(res));
155154

156155
MimeMessage body = makeMimeMessage(res);
157156

158-
Assert.assertTrue(toolkit.isSigned(body));
157+
assertTrue(toolkit.isSigned(body));
159158
}
160159

161160
public void testEncryptedRecognition()
@@ -170,11 +169,11 @@ public void testEncryptedRecognition()
170169

171170
MimeBodyPart res = gen.generate(msg, new JceCMSContentEncryptorBuilder(CMSAlgorithm.DES_EDE3_CBC).setProvider(BC).build());
172171

173-
Assert.assertTrue(toolkit.isEncrypted(res));
172+
assertTrue(toolkit.isEncrypted(res));
174173

175174
MimeMessage body = makeMimeMessage(res);
176175

177-
Assert.assertTrue(toolkit.isEncrypted(body));
176+
assertTrue(toolkit.isEncrypted(body));
178177
}
179178

180179
public void testCertificateExtractionEncapsulated()
@@ -220,11 +219,11 @@ public void testSignedMessageVerificationMultipart()
220219

221220
MimeMultipart smm = generateMultiPartRsa("SHA1withRSA", msg, SMIMESignedGenerator.RFC3851_MICALGS);
222221

223-
Assert.assertTrue(toolkit.isValidSignature(smm, new JcaSimpleSignerInfoVerifierBuilder().setProvider(BC).build(_signCert)));
222+
assertTrue(toolkit.isValidSignature(smm, new JcaSimpleSignerInfoVerifierBuilder().setProvider(BC).build(_signCert)));
224223

225224
MimeMessage body = makeMimeMessage(smm);
226225

227-
Assert.assertTrue(toolkit.isValidSignature(body, new JcaSimpleSignerInfoVerifierBuilder().setProvider(BC).build(_signCert)));
226+
assertTrue(toolkit.isValidSignature(body, new JcaSimpleSignerInfoVerifierBuilder().setProvider(BC).build(_signCert)));
228227
}
229228

230229
public void testSignedMessageVerificationEncapsulated()
@@ -234,11 +233,11 @@ public void testSignedMessageVerificationEncapsulated()
234233

235234
MimeBodyPart res = generateEncapsulated();
236235

237-
Assert.assertTrue(toolkit.isValidSignature(res, new JcaSimpleSignerInfoVerifierBuilder().setProvider(BC).build(_signCert)));
236+
assertTrue(toolkit.isValidSignature(res, new JcaSimpleSignerInfoVerifierBuilder().setProvider(BC).build(_signCert)));
238237

239238
MimeMessage body = makeMimeMessage(res);
240239

241-
Assert.assertTrue(toolkit.isValidSignature(body, new JcaSimpleSignerInfoVerifierBuilder().setProvider(BC).build(_signCert)));
240+
assertTrue(toolkit.isValidSignature(body, new JcaSimpleSignerInfoVerifierBuilder().setProvider(BC).build(_signCert)));
242241
}
243242

244243
public void testSignedMessageVerificationEncapsulatedWithPKIXIdentity()
@@ -264,12 +263,12 @@ public void testSignedMessageVerificationEncapsulatedWithPKIXIdentity()
264263

265264
// TODO: certificate has expired
266265
JcaPEMKeyConverter keyConverter = new JcaPEMKeyConverter();
267-
Assert.assertTrue(toolkit.isValidSignature(res, new JcaSimpleSignerInfoVerifierBuilder().setProvider(BC).build(keyConverter.getPublicKey(identity.getCertificate().getSubjectPublicKeyInfo()))));
266+
assertTrue(toolkit.isValidSignature(res, new JcaSimpleSignerInfoVerifierBuilder().setProvider(BC).build(keyConverter.getPublicKey(identity.getCertificate().getSubjectPublicKeyInfo()))));
268267

269268
MimeMessage body = makeMimeMessage(res);
270269

271-
Assert.assertTrue(toolkit.isValidSignature(body, new JcaSimpleSignerInfoVerifierBuilder().setProvider(BC).build(keyConverter.getPublicKey(identity.getCertificate().getSubjectPublicKeyInfo()))));
272-
Assert.assertTrue(toolkit.isValidSignature(body, new JcaSimpleSignerInfoVerifierBuilder().setProvider(BC).build(identity.getX509Certificate().getPublicKey())));
270+
assertTrue(toolkit.isValidSignature(body, new JcaSimpleSignerInfoVerifierBuilder().setProvider(BC).build(keyConverter.getPublicKey(identity.getCertificate().getSubjectPublicKeyInfo()))));
271+
assertTrue(toolkit.isValidSignature(body, new JcaSimpleSignerInfoVerifierBuilder().setProvider(BC).build(identity.getX509Certificate().getPublicKey())));
273272
}
274273

275274
public void testEncryptedMimeBodyPart()
@@ -279,7 +278,7 @@ public void testEncryptedMimeBodyPart()
279278

280279
MimeBodyPart res = toolkit.encrypt(msg, new JceCMSContentEncryptorBuilder(NISTObjectIdentifiers.id_aes128_CBC).setProvider(BC).build(), new JceKeyTransRecipientInfoGenerator(_reciCert).setProvider(BC));
281280

282-
Assert.assertTrue(toolkit.isEncrypted(res));
281+
assertTrue(toolkit.isEncrypted(res));
283282

284283
MimeBodyPart dec = toolkit.decrypt(res, new JceKeyTransRecipientId(_reciCert), new JceKeyTransEnvelopedRecipient(_reciKP.getPrivate()).setProvider(BC));
285284

@@ -295,7 +294,7 @@ public void testEncryptedMimeBodyPartWithPKIXIdentity()
295294

296295
MimeBodyPart res = toolkit.encrypt(msg, new JceCMSContentEncryptorBuilder(NISTObjectIdentifiers.id_aes128_CBC).setProvider(BC).build(), new JceKeyTransRecipientInfoGenerator(identity.getX509Certificate()).setProvider(BC));
297296

298-
Assert.assertTrue(toolkit.isEncrypted(res));
297+
assertTrue(toolkit.isEncrypted(res));
299298

300299
MimeBodyPart dec = toolkit.decrypt(res, identity.getRecipientId(), new JceKeyTransEnvelopedRecipient(identity.getPrivateKey()).setProvider(BC));
301300

@@ -310,7 +309,7 @@ public void testEncryptedMessage()
310309
MimeMessage message = makeMimeMessage(msg);
311310
MimeBodyPart res = toolkit.encrypt(message, new JceCMSContentEncryptorBuilder(NISTObjectIdentifiers.id_aes128_CBC).setProvider(BC).build(), new JceKeyTransRecipientInfoGenerator(_reciCert).setProvider(BC));
312311

313-
Assert.assertTrue(toolkit.isEncrypted(res));
312+
assertTrue(toolkit.isEncrypted(res));
314313

315314
MimeMessage body = makeMimeMessage(res);
316315

@@ -326,15 +325,15 @@ public void testEncryptedSignedMultipart()
326325

327326
MimeBodyPart res = signEncrypt(msg, _signKP.getPrivate(), _signCert, _reciCert);
328327

329-
Assert.assertTrue(toolkit.isEncrypted(res));
328+
assertTrue(toolkit.isEncrypted(res));
330329

331330
MimeMessage body = makeMimeMessage(res);
332331

333332
MimeBodyPart dec = toolkit.decrypt(body, new JceKeyTransRecipientId(_reciCert), new JceKeyTransEnvelopedRecipient(_reciKP.getPrivate()).setProvider(BC));
334333

335-
Assert.assertTrue(toolkit.isSigned(dec));
334+
assertTrue(toolkit.isSigned(dec));
336335

337-
Assert.assertTrue(toolkit.isValidSignature(dec, new JcaSimpleSignerInfoVerifierBuilder().setProvider(BC).build(_signCert)));
336+
assertTrue(toolkit.isValidSignature(dec, new JcaSimpleSignerInfoVerifierBuilder().setProvider(BC).build(_signCert)));
338337

339338
SMIMETestUtil.verifyMessageBytes(msg, (MimeBodyPart)((MimeMultipart)dec.getContent()).getBodyPart(0));
340339
}
@@ -356,7 +355,7 @@ public void testSignedMessageGenerationMultipart()
356355

357356
MimeMultipart smm = toolkit.sign(msg, new JcaSimpleSignerInfoGeneratorBuilder().setProvider(BC).build("SHA1withRSA", _signKP.getPrivate(), _signCert));
358357

359-
Assert.assertTrue(toolkit.isValidSignature(smm, new JcaSimpleSignerInfoVerifierBuilder().setProvider(BC).build(_signCert)));
358+
assertTrue(toolkit.isValidSignature(smm, new JcaSimpleSignerInfoVerifierBuilder().setProvider(BC).build(_signCert)));
360359

361360
SMIMESigned smimeSigned = new SMIMESigned(smm);
362361

@@ -377,7 +376,7 @@ public void testSignedMessageGenerationMultipart()
377376
body.setContent(smm, smm.getContentType());
378377
body.saveChanges();
379378

380-
Assert.assertTrue(toolkit.isValidSignature(body, new JcaSimpleSignerInfoVerifierBuilder().setProvider(BC).build(_signCert)));
379+
assertTrue(toolkit.isValidSignature(body, new JcaSimpleSignerInfoVerifierBuilder().setProvider(BC).build(_signCert)));
381380
}
382381

383382
public void testSignedMessageGenerationEncapsulated()
@@ -387,7 +386,7 @@ public void testSignedMessageGenerationEncapsulated()
387386

388387
MimeBodyPart res = toolkit.signEncapsulated(msg, new JcaSimpleSignerInfoGeneratorBuilder().setProvider(BC).build("SHA1withRSA", _signKP.getPrivate(), _signCert));
389388

390-
Assert.assertTrue(toolkit.isValidSignature(res, new JcaSimpleSignerInfoVerifierBuilder().setProvider(BC).build(_signCert)));
389+
assertTrue(toolkit.isValidSignature(res, new JcaSimpleSignerInfoVerifierBuilder().setProvider(BC).build(_signCert)));
391390

392391
SMIMESigned smimeSigned = new SMIMESigned(res);
393392

@@ -408,7 +407,7 @@ public void testSignedMessageGenerationEncapsulated()
408407
body.setContent(res.getContent(), res.getContentType());
409408
body.saveChanges();
410409

411-
Assert.assertTrue(toolkit.isValidSignature(body, new JcaSimpleSignerInfoVerifierBuilder().setProvider(BC).build(_signCert)));
410+
assertTrue(toolkit.isValidSignature(body, new JcaSimpleSignerInfoVerifierBuilder().setProvider(BC).build(_signCert)));
412411
}
413412

414413
private MimeMultipart generateMultiPartRsa(

mls/src/test/java/org/bouncycastle/mls/test/VectorTest.java

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -109,16 +109,16 @@ public void testTreeMath()
109109
switch (arrCount)
110110
{
111111
case 0:
112-
left = (ArrayList<Long>) temp.clone();
112+
left = new ArrayList<Long>(temp);
113113
break;
114114
case 1:
115-
right = (ArrayList<Long>) temp.clone();
115+
right = new ArrayList<Long>(temp);
116116
break;
117117
case 2:
118-
parent = (ArrayList<Long>) temp.clone();
118+
parent = new ArrayList<Long>(temp);
119119
break;
120120
case 3:
121-
sibling = (ArrayList<Long>) temp.clone();
121+
sibling = new ArrayList<Long>(temp);
122122
break;
123123
}
124124
arrCount = (++arrCount % 4);
@@ -908,7 +908,7 @@ public void testTreeValidation()
908908
line = line.trim();
909909
if (line.endsWith("STOP"))
910910
{
911-
resolution.add((ArrayList<NodeIndex>) temp.clone());
911+
resolution.add(new ArrayList<NodeIndex>(temp));
912912
temp.clear();
913913
line = bin.readLine().trim();
914914
if (line.endsWith("STOP"))
@@ -1146,7 +1146,7 @@ public UpdatePathInfo(LeafIndex sender, UpdatePath updatePath, List<PathSecret>
11461146
new LeafIndex(index),
11471147
encryption_priv,
11481148
signature_priv,
1149-
(List<PathSecretInfo>) plPathSecrets.clone()));
1149+
new ArrayList<PathSecretInfo>(plPathSecrets)));
11501150

11511151
updatePaths.clear();
11521152
plPathSecrets.clear();
@@ -1163,7 +1163,7 @@ public UpdatePathInfo(LeafIndex sender, UpdatePath updatePath, List<PathSecret>
11631163
updatePaths.add(new UpdatePathInfo(
11641164
new LeafIndex(sender),
11651165
(UpdatePath) MLSInputStream.decode(update_path, UpdatePath.class),
1166-
(List<PathSecret>) upPathSecrets.clone(),
1166+
new ArrayList<PathSecret>(upPathSecrets),
11671167
commit_secret,
11681168
tree_hash_after
11691169
));

pg/src/test/java/org/bouncycastle/openpgp/api/test/OpenPGPCertificateTest.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -935,7 +935,7 @@ private void testGetEncryptionKeysForAndCondition(OpenPGPApi api)
935935
PGPPublicKey subkeyWithSig = PGPPublicKey.addCertification(subKeyPair.getPublicKey(), bindingSig);
936936

937937
// 3. Build the ring using insertPublicKey (Java 1.4 compatible)
938-
PGPPublicKeyRing ring = new PGPPublicKeyRing(new ArrayList());
938+
PGPPublicKeyRing ring = new PGPPublicKeyRing(new ArrayList<PGPPublicKey>());
939939
ring = PGPPublicKeyRing.insertPublicKey(ring, masterWithSig);
940940
ring = PGPPublicKeyRing.insertPublicKey(ring, subkeyWithSig);
941941

@@ -959,7 +959,7 @@ private void testGetEncryptionKeysForAndCondition(OpenPGPApi api)
959959
isEquals(1, andAttempt.size());
960960

961961
// 6. Correct AND check
962-
List bothFlags = new ArrayList();
962+
List<OpenPGPCertificate.OpenPGPComponentKey> bothFlags = new ArrayList<OpenPGPCertificate.OpenPGPComponentKey>();
963963
List encryptionKeys = cert.getEncryptionKeys(evaluationTime);
964964
for (int i = 0; i < encryptionKeys.size(); i++)
965965
{

prov/src/main/jdk17/org/bouncycastle/jcajce/provider/asymmetric/cmce/CMCEDecapsulatorSpi.java

Lines changed: 2 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,5 @@
11
package org.bouncycastle.jcajce.provider.asymmetric.cmce;
22

3-
import java.util.Objects;
4-
53
import javax.crypto.DecapsulateException;
64
import javax.crypto.KEMSpi;
75
import javax.crypto.SecretKey;
@@ -10,6 +8,7 @@
108
import org.bouncycastle.crypto.params.CMCEPrivateKeyParameters;
119
import org.bouncycastle.jcajce.provider.asymmetric.util.KdfUtil;
1210
import org.bouncycastle.jcajce.spec.KTSParameterSpec;
11+
import org.bouncycastle.jcajce.util.SpiUtil;
1312

1413
/*
1514
* NOTE: Per javadoc for javax.crypto.KEM, "Encapsulator and Decapsulator objects are also immutable. It is safe to
@@ -34,16 +33,7 @@ class CMCEDecapsulatorSpi
3433
public SecretKey engineDecapsulate(byte[] encapsulation, int from, int to, String algorithm)
3534
throws DecapsulateException
3635
{
37-
Objects.checkFromToIndex(from, to, engineSecretSize());
38-
Objects.requireNonNull(algorithm, "null algorithm");
39-
Objects.requireNonNull(encapsulation, "null encapsulation");
40-
41-
if (encapsulation.length != engineEncapsulationSize())
42-
{
43-
throw new DecapsulateException("incorrect encapsulation size");
44-
}
45-
46-
algorithm = KdfUtil.resolveAlgorithm(parameterSpec, algorithm);
36+
algorithm = SpiUtil.resolveDecapsulateAlgorithm(encapsulation, from, to, algorithm, engineSecretSize(), engineEncapsulationSize(), parameterSpec);
4737

4838
// CMCEEngine allocates its digest per call, so a shared extractor would be safe here and
4939
// the families whose engines are also safe - NTRU LPRime, SMAUG-T and the four older ones -

prov/src/main/jdk17/org/bouncycastle/jcajce/provider/asymmetric/cmce/CMCEEncapsulatorSpi.java

Lines changed: 2 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,13 @@
11
package org.bouncycastle.jcajce.provider.asymmetric.cmce;
22

33
import java.security.SecureRandom;
4-
import java.util.Objects;
54

65
import javax.crypto.KEM;
76
import javax.crypto.KEMSpi;
8-
import javax.crypto.SecretKey;
9-
import javax.security.auth.DestroyFailedException;
107

11-
import org.bouncycastle.crypto.SecretWithEncapsulation;
128
import org.bouncycastle.crypto.kems.CMCEKEMGenerator;
13-
import org.bouncycastle.jcajce.provider.asymmetric.util.KdfUtil;
149
import org.bouncycastle.jcajce.spec.KTSParameterSpec;
10+
import org.bouncycastle.jcajce.util.SpiUtil;
1511

1612
/*
1713
* NOTE: Per javadoc for javax.crypto.KEM, "Encapsulator and Decapsulator objects are also immutable. It is safe to
@@ -37,35 +33,7 @@ class CMCEEncapsulatorSpi
3733
@Override
3834
public KEM.Encapsulated engineEncapsulate(int from, int to, String algorithm)
3935
{
40-
Objects.checkFromToIndex(from, to, engineSecretSize());
41-
Objects.requireNonNull(algorithm, "null algorithm");
42-
43-
algorithm = KdfUtil.resolveAlgorithm(parameterSpec, algorithm);
44-
45-
SecretWithEncapsulation secEnc = kemGen.generateEncapsulated(publicKey.getKeyParams());
46-
47-
try
48-
{
49-
// getEncapsulation()/getSecret() hand back clones, so the originals have to be
50-
// destroyed as well - KdfUtil.makeSecretKey only clears the secret clone it is passed.
51-
byte[] encapsulation = secEnc.getEncapsulation();
52-
53-
SecretKey secretKey = KdfUtil.makeSecretKey(parameterSpec, secEnc.getSecret(),
54-
from, to, algorithm);
55-
56-
return new KEM.Encapsulated(secretKey, encapsulation, null);
57-
}
58-
finally
59-
{
60-
try
61-
{
62-
secEnc.destroy();
63-
}
64-
catch (DestroyFailedException e)
65-
{
66-
// ignore
67-
}
68-
}
36+
return SpiUtil.buildEncapsulated(from, to, algorithm, engineSecretSize(), kemGen, publicKey.getKeyParams(), parameterSpec);
6937
}
7038

7139
@Override

prov/src/main/jdk17/org/bouncycastle/jcajce/provider/asymmetric/frodokem/FrodoKEMDecapsulatorSpi.java

Lines changed: 2 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,13 @@
11
package org.bouncycastle.jcajce.provider.asymmetric.frodokem;
22

3-
import java.util.Objects;
4-
53
import javax.crypto.DecapsulateException;
64
import javax.crypto.KEMSpi;
75
import javax.crypto.SecretKey;
86

97
import org.bouncycastle.crypto.kems.FrodoKEMExtractor;
108
import org.bouncycastle.jcajce.provider.asymmetric.util.KdfUtil;
119
import org.bouncycastle.jcajce.spec.KTSParameterSpec;
10+
import org.bouncycastle.jcajce.util.SpiUtil;
1211

1312
/*
1413
* NOTE: Per javadoc for javax.crypto.KEM, "Encapsulator and Decapsulator objects are also immutable. It is safe to
@@ -31,16 +30,7 @@ class FrodoKEMDecapsulatorSpi
3130
public SecretKey engineDecapsulate(byte[] encapsulation, int from, int to, String algorithm)
3231
throws DecapsulateException
3332
{
34-
Objects.checkFromToIndex(from, to, engineSecretSize());
35-
Objects.requireNonNull(algorithm, "null algorithm");
36-
Objects.requireNonNull(encapsulation, "null encapsulation");
37-
38-
if (encapsulation.length != engineEncapsulationSize())
39-
{
40-
throw new DecapsulateException("incorrect encapsulation size");
41-
}
42-
43-
algorithm = KdfUtil.resolveAlgorithm(parameterSpec, algorithm);
33+
algorithm = SpiUtil.resolveDecapsulateAlgorithm(encapsulation, from, to, algorithm, engineSecretSize(), engineEncapsulationSize(), parameterSpec);
4434

4535
// FrodoKEMEngine builds its SHAKE instance per call, so one extractor is safe to share
4636
// across the concurrent decapsulate calls javax.crypto.KEM requires.

0 commit comments

Comments
 (0)