Skip to content

Commit e91cab0

Browse files
committed
Merge branch 'main' of gitlab.cryptoworkshop.com:root/bc-java
2 parents 5eaa290 + 61514fb commit e91cab0

File tree

13 files changed

+1113
-36
lines changed

13 files changed

+1113
-36
lines changed

core/src/test/java/org/bouncycastle/crypto/test/Ed25519Test.java

+5-4
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,8 @@ public static void main(String[] args)
3434

3535
public void performTest() throws Exception
3636
{
37+
basicSigTest();
38+
3739
for (int i = 0; i < 10; ++i)
3840
{
3941
testConsistency(Ed25519.Algorithm.Ed25519, null);
@@ -43,7 +45,6 @@ public void performTest() throws Exception
4345
testConsistency(Ed25519.Algorithm.Ed25519ph, context);
4446
}
4547

46-
basicSigTest();
4748
testRegressionInfiniteLoop();
4849
}
4950

@@ -837,9 +838,9 @@ private void testRegressionInfiniteLoop() throws Exception
837838

838839
signer.init(false, pub);
839840
signer.update(msg, 0, msg.length);
840-
if (!signer.verifySignature(sig)) {
841-
fail("signature verification failed for test vector: " + error);
842-
}
841+
boolean shouldVerify = signer.verifySignature(sig);
842+
843+
isTrue("signature verification failed for test vector: " + error, shouldVerify);
843844
}
844845
}
845846
}

core/src/test/java/org/bouncycastle/crypto/test/Ed448Test.java

+1,077
Large diffs are not rendered by default.

pkix/src/main/java/org/bouncycastle/mozilla/SignedPublicKeyAndChallenge.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -121,7 +121,7 @@ public boolean verify(String provider)
121121
{
122122
sig.update(spkacSeq.getPublicKeyAndChallenge().getEncoded());
123123

124-
return sig.verify(spkacSeq.getSignature().getBytes());
124+
return sig.verify(spkacSeq.getSignature().getOctets());
125125
}
126126
catch (Exception e)
127127
{

pkix/src/main/java/org/bouncycastle/operator/jcajce/JcaContentVerifierProviderBuilder.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -434,7 +434,7 @@ public boolean verify(byte[] expected)
434434
{
435435
if (sigs[i] != null)
436436
{
437-
if (!sigs[i].verify(ASN1BitString.getInstance(sigSeq.getObjectAt(i)).getBytes()))
437+
if (!sigs[i].verify(ASN1BitString.getInstance(sigSeq.getObjectAt(i)).getOctets()))
438438
{
439439
failed = true;
440440
}

pkix/src/test/java/org/bouncycastle/cert/test/PKCS10Test.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -259,7 +259,7 @@ private void createECRequest(String algorithm, ASN1ObjectIdentifier algOid, ASN1
259259

260260
sig.update(req.toASN1Structure().getCertificationRequestInfo().getEncoded());
261261

262-
if (!sig.verify(req.toASN1Structure().getSignature().getBytes()))
262+
if (!sig.verify(req.toASN1Structure().getSignature().getOctets()))
263263
{
264264
fail("signature not mapped correctly.");
265265
}

prov/src/main/java/org/bouncycastle/jcajce/provider/asymmetric/compositesignatures/SignatureSpi.java

+2-1
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@
1414
import java.util.Collections;
1515
import java.util.List;
1616

17+
import org.bouncycastle.asn1.ASN1BitString;
1718
import org.bouncycastle.asn1.ASN1EncodableVector;
1819
import org.bouncycastle.asn1.ASN1Encoding;
1920
import org.bouncycastle.asn1.ASN1ObjectIdentifier;
@@ -250,7 +251,7 @@ protected boolean engineVerify(byte[] signature)
250251
{
251252
this.componentSignatures.get(i).update(this.OIDBytes);
252253
this.componentSignatures.get(i).update(digestResult); //in total, "OID || digest(message)" is the message fed into each component signature
253-
if (!this.componentSignatures.get(i).verify(DERBitString.getInstance(signatureSequence.getObjectAt(i)).getBytes()))
254+
if (!this.componentSignatures.get(i).verify(ASN1BitString.getInstance(signatureSequence.getObjectAt(i)).getOctets()))
254255
{
255256
fail = true;
256257
}

prov/src/main/java/org/bouncycastle/jcajce/provider/asymmetric/rsa/CipherSpi.java

+10-10
Original file line numberDiff line numberDiff line change
@@ -134,6 +134,11 @@ else if (key instanceof RSAPublicKey)
134134
protected int engineGetOutputSize(
135135
int inputLen)
136136
{
137+
if (tlsRsaSpec != null)
138+
{
139+
return TlsRsaKeyExchange.PRE_MASTER_SECRET_LENGTH;
140+
}
141+
137142
try
138143
{
139144
return cipher.getOutputBlockSize();
@@ -334,6 +339,7 @@ else if (key instanceof RSAPrivateKey)
334339
}
335340
else if (params instanceof TLSRSAPremasterSecretParameterSpec)
336341
{
342+
// TODO Restrict mode to DECRYPT_MODE (and/or UNWRAP_MODE)
337343
if (!(param instanceof RSAKeyParameters) || !((RSAKeyParameters)param).isPrivate())
338344
{
339345
throw new InvalidKeyException("RSA private key required for TLS decryption");
@@ -353,6 +359,7 @@ else if (params instanceof TLSRSAPremasterSecretParameterSpec)
353359
}
354360
else
355361
{
362+
// TODO Remove after checking all AsymmetricBlockCipher init methods?
356363
param = new ParametersWithRandom(param, CryptoServicesRegistrar.getSecureRandom());
357364
}
358365

@@ -446,6 +453,7 @@ protected byte[] engineDoFinal(
446453
int inputLen)
447454
throws IllegalBlockSizeException, BadPaddingException
448455
{
456+
// TODO Can input actually be null?
449457
if (input != null)
450458
{
451459
engineUpdate(input, inputOffset, inputLen);
@@ -462,16 +470,8 @@ protected int engineDoFinal(
462470
int outputOffset)
463471
throws IllegalBlockSizeException, BadPaddingException, ShortBufferException
464472
{
465-
int outputSize;
466-
if (tlsRsaSpec != null)
467-
{
468-
outputSize = TlsRsaKeyExchange.PRE_MASTER_SECRET_LENGTH;
469-
}
470-
else
471-
{
472-
outputSize = engineGetOutputSize(input == null ? 0 : inputLen);
473-
}
474-
473+
// TODO Can input actually be null?
474+
int outputSize = engineGetOutputSize(input == null ? 0 : inputLen);
475475
if (outputOffset > output.length - outputSize)
476476
{
477477
throw new ShortBufferException("output buffer too short for input.");

prov/src/main/java/org/bouncycastle/jcajce/provider/asymmetric/x509/X509CRLImpl.java

+4-4
Original file line numberDiff line numberDiff line change
@@ -242,7 +242,7 @@ private void doVerify(PublicKey key, SignatureCreator sigCreator)
242242
{
243243
List<PublicKey> pubKeys = ((CompositePublicKey)key).getPublicKeys();
244244
ASN1Sequence keySeq = ASN1Sequence.getInstance(c.getSignatureAlgorithm().getParameters());
245-
ASN1Sequence sigSeq = ASN1Sequence.getInstance(ASN1BitString.getInstance(c.getSignature()).getBytes());
245+
ASN1Sequence sigSeq = ASN1Sequence.getInstance(c.getSignature().getOctets());
246246

247247
boolean success = false;
248248
for (int i = 0; i != pubKeys.size(); i++)
@@ -264,7 +264,7 @@ private void doVerify(PublicKey key, SignatureCreator sigCreator)
264264
checkSignature(
265265
(PublicKey)pubKeys.get(i), signature,
266266
sigAlg.getParameters(),
267-
ASN1BitString.getInstance(sigSeq.getObjectAt(i)).getBytes());
267+
ASN1BitString.getInstance(sigSeq.getObjectAt(i)).getOctets());
268268
success = true;
269269
}
270270
catch (SignatureException e)
@@ -286,7 +286,7 @@ private void doVerify(PublicKey key, SignatureCreator sigCreator)
286286
else if (X509SignatureUtil.isCompositeAlgorithm(c.getSignatureAlgorithm()))
287287
{
288288
ASN1Sequence keySeq = ASN1Sequence.getInstance(c.getSignatureAlgorithm().getParameters());
289-
ASN1Sequence sigSeq = ASN1Sequence.getInstance(ASN1BitString.getInstance(c.getSignature()).getBytes());
289+
ASN1Sequence sigSeq = ASN1Sequence.getInstance(c.getSignature().getOctets());
290290

291291
boolean success = false;
292292
for (int i = 0; i != sigSeq.size(); i++)
@@ -303,7 +303,7 @@ else if (X509SignatureUtil.isCompositeAlgorithm(c.getSignatureAlgorithm()))
303303
checkSignature(
304304
key, signature,
305305
sigAlg.getParameters(),
306-
ASN1BitString.getInstance(sigSeq.getObjectAt(i)).getBytes());
306+
ASN1BitString.getInstance(sigSeq.getObjectAt(i)).getOctets());
307307

308308
success = true;
309309
}

prov/src/main/java/org/bouncycastle/jcajce/provider/asymmetric/x509/X509CertificateImpl.java

+4-4
Original file line numberDiff line numberDiff line change
@@ -624,7 +624,7 @@ private void doVerify(
624624
{
625625
List<PublicKey> pubKeys = ((CompositePublicKey)key).getPublicKeys();
626626
ASN1Sequence keySeq = ASN1Sequence.getInstance(c.getSignatureAlgorithm().getParameters());
627-
ASN1Sequence sigSeq = ASN1Sequence.getInstance(ASN1BitString.getInstance(c.getSignature()).getBytes());
627+
ASN1Sequence sigSeq = ASN1Sequence.getInstance(c.getSignature().getOctets());
628628

629629
boolean success = false;
630630
for (int i = 0; i != pubKeys.size(); i++)
@@ -645,7 +645,7 @@ private void doVerify(
645645
checkSignature(
646646
(PublicKey)pubKeys.get(i), signature,
647647
sigAlg.getParameters(),
648-
ASN1BitString.getInstance(sigSeq.getObjectAt(i)).getBytes());
648+
ASN1BitString.getInstance(sigSeq.getObjectAt(i)).getOctets());
649649
success = true;
650650
}
651651
catch (SignatureException e)
@@ -667,7 +667,7 @@ private void doVerify(
667667
else if (X509SignatureUtil.isCompositeAlgorithm(c.getSignatureAlgorithm()))
668668
{
669669
ASN1Sequence keySeq = ASN1Sequence.getInstance(c.getSignatureAlgorithm().getParameters());
670-
ASN1Sequence sigSeq = ASN1Sequence.getInstance(ASN1BitString.getInstance(c.getSignature()).getBytes());
670+
ASN1Sequence sigSeq = ASN1Sequence.getInstance(c.getSignature().getOctets());
671671

672672
boolean success = false;
673673
for (int i = 0; i != sigSeq.size(); i++)
@@ -684,7 +684,7 @@ else if (X509SignatureUtil.isCompositeAlgorithm(c.getSignatureAlgorithm()))
684684
checkSignature(
685685
key, signature,
686686
sigAlg.getParameters(),
687-
ASN1BitString.getInstance(sigSeq.getObjectAt(i)).getBytes());
687+
ASN1BitString.getInstance(sigSeq.getObjectAt(i)).getOctets());
688688

689689
success = true;
690690
}

prov/src/main/java/org/bouncycastle/jce/netscape/NetscapeCertRequest.java

+2-3
Original file line numberDiff line numberDiff line change
@@ -112,8 +112,7 @@ public NetscapeCertRequest (ASN1Sequence spkac)
112112

113113
SubjectPublicKeyInfo pubkeyinfo = SubjectPublicKeyInfo.getInstance(pkac.getObjectAt(0));
114114

115-
X509EncodedKeySpec xspec = new X509EncodedKeySpec(new DERBitString(
116-
pubkeyinfo).getBytes());
115+
X509EncodedKeySpec xspec = new X509EncodedKeySpec(pubkeyinfo.getEncoded(ASN1Encoding.DER));
117116

118117
keyAlg = pubkeyinfo.getAlgorithm();
119118
pubkey = KeyFactory.getInstance(keyAlg.getAlgorithm().getId(), "BC")
@@ -207,7 +206,7 @@ public boolean verify(String challenge) throws NoSuchAlgorithmException,
207206
Signature sig = Signature.getInstance(sigAlg.getAlgorithm().getId(),
208207
"BC");
209208
sig.initVerify(pubkey);
210-
sig.update(content.getBytes());
209+
sig.update(content.getOctets());
211210

212211
return sig.verify(sigBits);
213212
}

prov/src/main/java/org/bouncycastle/jce/provider/ProvOcspRevocationChecker.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -431,7 +431,7 @@ static boolean validatedOcspResponse(BasicOCSPResponse basicResp, PKIXCertRevoca
431431

432432
sig.update(basicResp.getTbsResponseData().getEncoded(ASN1Encoding.DER));
433433

434-
if (sig.verify(basicResp.getSignature().getBytes()))
434+
if (sig.verify(basicResp.getSignature().getOctets()))
435435
{
436436
if (nonce != null)
437437
{

prov/src/test/java/org/bouncycastle/jce/provider/test/EdECTest.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -158,7 +158,7 @@ public void performTest()
158158
// yes, the demo certificate is invalid...
159159
sig.update(x25519Seq.getObjectAt(0).toASN1Primitive().getEncoded(ASN1Encoding.DL));
160160

161-
isTrue(sig.verify(x25519Cert.getSignature().getBytes()));
161+
isTrue(sig.verify(x25519Cert.getSignature().getOctets()));
162162

163163
CertificateFactory certFact = CertificateFactory.getInstance("X.509", "BC");
164164

prov/src/test/java/org/bouncycastle/jce/provider/test/PKCS10CertRequestTest.java

+4-5
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,6 @@
4141
import org.bouncycastle.jce.spec.ECParameterSpec;
4242
import org.bouncycastle.jce.spec.ECPrivateKeySpec;
4343
import org.bouncycastle.jce.spec.ECPublicKeySpec;
44-
import org.bouncycastle.math.ec.ECConstants;
4544
import org.bouncycastle.math.ec.ECCurve;
4645
import org.bouncycastle.util.encoders.Base64;
4746
import org.bouncycastle.util.encoders.Hex;
@@ -215,7 +214,7 @@ private void createECRequest(String algorithm, ASN1ObjectIdentifier algOid, ASN1
215214

216215
sig.update(req.getCertificationRequestInfo().getEncoded());
217216

218-
if (!sig.verify(req.getSignature().getBytes()))
217+
if (!sig.verify(req.getSignature().getOctets()))
219218
{
220219
fail("signature not mapped correctly.");
221220
}
@@ -294,7 +293,7 @@ private void createECRequest(String algorithm, ASN1ObjectIdentifier algOid)
294293

295294
sig.update(req.getCertificationRequestInfo().getEncoded());
296295

297-
if (!sig.verify(req.getSignature().getBytes()))
296+
if (!sig.verify(req.getSignature().getOctets()))
298297
{
299298
fail("signature not mapped correctly.");
300299
}
@@ -344,7 +343,7 @@ private void createECGOSTRequest()
344343

345344
sig.update(req.getCertificationRequestInfo().getEncoded());
346345

347-
if (!sig.verify(req.getSignature().getBytes()))
346+
if (!sig.verify(req.getSignature().getOctets()))
348347
{
349348
fail("signature not mapped correctly.");
350349
}
@@ -401,7 +400,7 @@ private void createPSSTest(String algorithm)
401400

402401
sig.update(req.getCertificationRequestInfo().getEncoded());
403402

404-
if (!sig.verify(req.getSignature().getBytes()))
403+
if (!sig.verify(req.getSignature().getOctets()))
405404
{
406405
fail("signature not mapped correctly.");
407406
}

0 commit comments

Comments
 (0)