Skip to content

Commit 46e0360

Browse files
committed
Refactor NewSignedDataTest
-detachedTest should not encapsulate message
1 parent 15291dc commit 46e0360

File tree

1 file changed

+34
-36
lines changed

1 file changed

+34
-36
lines changed

pkix/src/test/java/org/bouncycastle/cms/test/NewSignedDataTest.java

Lines changed: 34 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
package org.bouncycastle.cms.test;
22

33
import java.io.BufferedInputStream;
4-
import java.io.ByteArrayInputStream;
54
import java.io.IOException;
65
import java.io.InputStream;
76
import java.io.InputStreamReader;
@@ -32,7 +31,6 @@
3231
import org.bouncycastle.asn1.ASN1Encodable;
3332
import org.bouncycastle.asn1.ASN1EncodableVector;
3433
import org.bouncycastle.asn1.ASN1Encoding;
35-
import org.bouncycastle.asn1.ASN1InputStream;
3634
import org.bouncycastle.asn1.ASN1Integer;
3735
import org.bouncycastle.asn1.ASN1ObjectIdentifier;
3836
import org.bouncycastle.asn1.ASN1OctetString;
@@ -985,10 +983,7 @@ public void testSHA1AndMD5WithRSAEncapsulatedRepeated()
985983

986984
CMSSignedData s = gen.generate(msg, true);
987985

988-
ByteArrayInputStream bIn = new ByteArrayInputStream(s.getEncoded());
989-
ASN1InputStream aIn = new ASN1InputStream(bIn);
990-
991-
s = new CMSSignedData(ContentInfo.getInstance(aIn.readObject()));
986+
s = new CMSSignedData(s.getEncoded());
992987

993988
certs = s.getCertificates();
994989

@@ -1041,10 +1036,7 @@ public void testSHA1AndMD5WithRSAEncapsulatedRepeated()
10411036

10421037
s = gen.generate(msg, true);
10431038

1044-
bIn = new ByteArrayInputStream(s.getEncoded());
1045-
aIn = new ASN1InputStream(bIn);
1046-
1047-
s = new CMSSignedData(ContentInfo.getInstance(aIn.readObject()));
1039+
s = new CMSSignedData(s.getEncoded());
10481040

10491041
certs = s.getCertificates();
10501042

@@ -1851,6 +1843,20 @@ public void testEd25519()
18511843
expectedDigAlgId);
18521844
}
18531845

1846+
public void testEd25519Detached()
1847+
throws Exception
1848+
{
1849+
/*
1850+
* RFC 8419 3.1. When signing with Ed25519, the digestAlgorithm MUST be id-sha512, and the algorithm
1851+
* parameters field MUST be absent.
1852+
*
1853+
* We confirm here that our implementation defaults to SHA-512 for the digest algorithm.
1854+
*/
1855+
AlgorithmIdentifier expectedDigAlgId = new AlgorithmIdentifier(NISTObjectIdentifiers.id_sha512);
1856+
1857+
detachedTest(_signEd25519KP, _signEd25519Cert, "Ed25519", EdECObjectIdentifiers.id_Ed25519, expectedDigAlgId);
1858+
}
1859+
18541860
public void testEd448()
18551861
throws Exception
18561862
{
@@ -1867,16 +1873,20 @@ public void testEd448()
18671873
encapsulatedTest(_signEd448KP, _signEd448Cert, "Ed448", EdECObjectIdentifiers.id_Ed448, expectedDigAlgId);
18681874
}
18691875

1870-
public void testDetachedEd25519()
1876+
public void testEd448Detached()
18711877
throws Exception
18721878
{
1873-
detachedTest(_signEd25519KP, _signEd25519Cert, "Ed25519", EdECObjectIdentifiers.id_Ed25519, new AlgorithmIdentifier(NISTObjectIdentifiers.id_sha512));
1874-
}
1879+
/*
1880+
* RFC 8419 3.1. When signing with Ed448, the digestAlgorithm MUST be id-shake256-len, the algorithm
1881+
* parameters field MUST be present, and the parameter MUST contain 512, encoded as a positive integer
1882+
* value.
1883+
*
1884+
* We confirm here that our implementation defaults to id-shake256-len/512 for the digest algorithm.
1885+
*/
1886+
AlgorithmIdentifier expectedDigAlgId = new AlgorithmIdentifier(NISTObjectIdentifiers.id_shake256_len,
1887+
new ASN1Integer(512));
18751888

1876-
public void testEdDetached448()
1877-
throws Exception
1878-
{
1879-
detachedTest(_signEd448KP, _signEd448Cert, "Ed448", EdECObjectIdentifiers.id_Ed448, new AlgorithmIdentifier(NISTObjectIdentifiers.id_shake256_len, new ASN1Integer(512)));
1889+
detachedTest(_signEd448KP, _signEd448Cert, "Ed448", EdECObjectIdentifiers.id_Ed448, expectedDigAlgId);
18801890
}
18811891

18821892
public void testEd25519WithNoAttr()
@@ -2519,11 +2529,8 @@ private void subjectKeyIDTest(
25192529
CMSSignedData s = gen.generate(msg, true);
25202530

25212531
assertEquals(3, s.getVersion());
2522-
2523-
ByteArrayInputStream bIn = new ByteArrayInputStream(s.getEncoded());
2524-
ASN1InputStream aIn = new ASN1InputStream(bIn);
25252532

2526-
s = new CMSSignedData(ContentInfo.getInstance(aIn.readObject()));
2533+
s = new CMSSignedData(s.getEncoded());
25272534

25282535
certStore = s.getCertificates();
25292536

@@ -2563,10 +2570,7 @@ private void subjectKeyIDTest(
25632570

25642571
s = gen.generate(msg, true);
25652572

2566-
bIn = new ByteArrayInputStream(s.getEncoded());
2567-
aIn = new ASN1InputStream(bIn);
2568-
2569-
s = new CMSSignedData(ContentInfo.getInstance(aIn.readObject()));
2573+
s = new CMSSignedData(s.getEncoded());
25702574

25712575
certStore = s.getCertificates();
25722576

@@ -2641,7 +2645,7 @@ private void encapsulatedTest(
26412645

26422646
CMSSignedData s = gen.generate(msg, true);
26432647

2644-
s = new CMSSignedData(ContentInfo.getInstance(s.getEncoded()));
2648+
s = new CMSSignedData(s.getEncoded());
26452649

26462650
Set digestAlgorithms = new HashSet(s.getDigestAlgorithmIDs());
26472651

@@ -2720,7 +2724,7 @@ private void encapsulatedTest(
27202724

27212725
s = gen.generate(msg, true);
27222726

2723-
s = new CMSSignedData(ContentInfo.getInstance(s.getEncoded()));
2727+
s = new CMSSignedData(s.getEncoded());
27242728

27252729
certStore = s.getCertificates();
27262730
crlStore = s.getCRLs();
@@ -2776,12 +2780,9 @@ private void detachedTest(
27762780

27772781
gen.addCertificates(certs);
27782782

2779-
CMSSignedData s = gen.generate(msg, true);
2780-
2781-
ByteArrayInputStream bIn = new ByteArrayInputStream(s.getEncoded());
2782-
ASN1InputStream aIn = new ASN1InputStream(bIn);
2783+
CMSSignedData s = gen.generate(msg);
27832784

2784-
s = new CMSSignedData(msg, ContentInfo.getInstance(aIn.readObject()));
2785+
s = new CMSSignedData(msg, s.getEncoded());
27852786

27862787
Set digestAlgorithms = new HashSet(s.getDigestAlgorithmIDs());
27872788

@@ -2948,10 +2949,7 @@ public void testNullContentWithSigner()
29482949

29492950
CMSSignedData s = gen.generate(new CMSAbsentContent(), false);
29502951

2951-
ByteArrayInputStream bIn = new ByteArrayInputStream(s.getEncoded());
2952-
ASN1InputStream aIn = new ASN1InputStream(bIn);
2953-
2954-
s = new CMSSignedData(ContentInfo.getInstance(aIn.readObject()));
2952+
s = new CMSSignedData(s.getEncoded());
29552953

29562954
verifySignatures(s);
29572955
}

0 commit comments

Comments
 (0)