Skip to content

Commit 2670274

Browse files
committed
Misc. pkix refactoring
1 parent 05f25fb commit 2670274

File tree

4 files changed

+31
-49
lines changed

4 files changed

+31
-49
lines changed

pkix/src/main/java/org/bouncycastle/cert/X509ExtensionUtils.java

Lines changed: 3 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -113,23 +113,16 @@ public SubjectKeyIdentifier createTruncatedSubjectKeyIdentifier(SubjectPublicKey
113113

114114
private byte[] getSubjectKeyIdentifier(X509CertificateHolder certHolder)
115115
{
116-
if (certHolder.getVersionNumber() != 3)
117-
{
118-
return calculateIdentifier(certHolder.getSubjectPublicKeyInfo());
119-
}
120-
else
116+
if (certHolder.getVersionNumber() == 3)
121117
{
122118
Extension ext = certHolder.getExtension(Extension.subjectKeyIdentifier);
123-
124119
if (ext != null)
125120
{
126121
return ASN1OctetString.getInstance(ext.getParsedValue()).getOctets();
127122
}
128-
else
129-
{
130-
return calculateIdentifier(certHolder.getSubjectPublicKeyInfo());
131-
}
132123
}
124+
125+
return calculateIdentifier(certHolder.getSubjectPublicKeyInfo());
133126
}
134127

135128
private byte[] calculateIdentifier(SubjectPublicKeyInfo publicKeyInfo)

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2864,7 +2864,7 @@ public void checkCRLCreation5()
28642864
{
28652865
ASN1Enumerated reasonCode = (ASN1Enumerated)fromExtensionValue(ext);
28662866

2867-
if (reasonCode.intValueExact() != CRLReason.privilegeWithdrawn)
2867+
if (!reasonCode.hasValue(CRLReason.privilegeWithdrawn))
28682868
{
28692869
fail("CRL entry reasonCode wrong");
28702870
}

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

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1976,6 +1976,17 @@ public void testECDSASHA512Encapsulated()
19761976
encapsulatedTest(_signEcDsaKP, _signEcDsaCert, "SHA512withECDSA");
19771977
}
19781978

1979+
public void testECDSASHA512EncapsulatedWithKeyFactoryAsEC()
1980+
throws Exception
1981+
{
1982+
X509EncodedKeySpec pubSpec = new X509EncodedKeySpec(_signEcDsaKP.getPublic().getEncoded());
1983+
PKCS8EncodedKeySpec privSpec = new PKCS8EncodedKeySpec(_signEcDsaKP.getPrivate().getEncoded());
1984+
KeyFactory keyFact = KeyFactory.getInstance("EC", BC);
1985+
KeyPair kp = new KeyPair(keyFact.generatePublic(pubSpec), keyFact.generatePrivate(privSpec));
1986+
1987+
encapsulatedTest(kp, _signEcDsaCert, "SHA512withECDSA");
1988+
}
1989+
19791990
public void testECDSASHA3_224Encapsulated()
19801991
throws Exception
19811992
{
@@ -2048,17 +2059,6 @@ public void testPLAIN_ECDSASHA3_512Encapsulated()
20482059
encapsulatedTest(_signEcDsaKP, _signEcDsaCert, "SHA3-512withPLAIN-ECDSA");
20492060
}
20502061

2051-
public void testECDSASHA512EncapsulatedWithKeyFactoryAsEC()
2052-
throws Exception
2053-
{
2054-
X509EncodedKeySpec pubSpec = new X509EncodedKeySpec(_signEcDsaKP.getPublic().getEncoded());
2055-
PKCS8EncodedKeySpec privSpec = new PKCS8EncodedKeySpec(_signEcDsaKP.getPrivate().getEncoded());
2056-
KeyFactory keyFact = KeyFactory.getInstance("EC", BC);
2057-
KeyPair kp = new KeyPair(keyFact.generatePublic(pubSpec), keyFact.generatePrivate(privSpec));
2058-
2059-
encapsulatedTest(kp, _signEcDsaCert, "SHA512withECDSA");
2060-
}
2061-
20622062
public void testDSAEncapsulated()
20632063
throws Exception
20642064
{

prov/src/main/java/org/bouncycastle/x509/extension/AuthorityKeyIdentifierStructure.java

Lines changed: 16 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package org.bouncycastle.x509.extension;
22

33
import java.io.IOException;
4+
import java.math.BigInteger;
45
import java.security.InvalidKeyException;
56
import java.security.PublicKey;
67
import java.security.cert.CertificateParsingException;
@@ -59,48 +60,36 @@ public AuthorityKeyIdentifierStructure(
5960
super((ASN1Sequence)extension.getParsedValue());
6061
}
6162

62-
private static ASN1Sequence fromCertificate(
63-
X509Certificate certificate)
63+
private static ASN1Sequence fromCertificate(X509Certificate certificate)
6464
throws CertificateParsingException
6565
{
6666
try
6767
{
68-
if (certificate.getVersion() != 3)
69-
{
70-
GeneralName genName = new GeneralName(PrincipalUtil.getIssuerX509Principal(certificate));
71-
SubjectPublicKeyInfo info = SubjectPublicKeyInfo.getInstance(certificate.getPublicKey().getEncoded());
72-
73-
return (ASN1Sequence)new AuthorityKeyIdentifier(
74-
info, new GeneralNames(genName), certificate.getSerialNumber()).toASN1Primitive();
75-
}
76-
else
68+
GeneralName genName = new GeneralName(PrincipalUtil.getIssuerX509Principal(certificate));
69+
GeneralNames genNames = new GeneralNames(genName);
70+
BigInteger serialNumber = certificate.getSerialNumber();
71+
72+
if (certificate.getVersion() == 3)
7773
{
78-
GeneralName genName = new GeneralName(PrincipalUtil.getIssuerX509Principal(certificate));
79-
80-
byte[] ext = certificate.getExtensionValue(Extension.subjectKeyIdentifier.getId());
81-
74+
byte[] ext = certificate.getExtensionValue(Extension.subjectKeyIdentifier.getId());
8275
if (ext != null)
8376
{
84-
ASN1OctetString str = (ASN1OctetString)X509ExtensionUtil.fromExtensionValue(ext);
85-
86-
return (ASN1Sequence)new AuthorityKeyIdentifier(
87-
str.getOctets(), new GeneralNames(genName), certificate.getSerialNumber()).toASN1Primitive();
88-
}
89-
else
90-
{
91-
SubjectPublicKeyInfo info = SubjectPublicKeyInfo.getInstance(certificate.getPublicKey().getEncoded());
92-
93-
return (ASN1Sequence)new AuthorityKeyIdentifier(
94-
info, new GeneralNames(genName), certificate.getSerialNumber()).toASN1Primitive();
77+
ASN1OctetString str = (ASN1OctetString)X509ExtensionUtil.fromExtensionValue(ext);
78+
return (ASN1Sequence)new AuthorityKeyIdentifier(str.getOctets(), genNames, serialNumber)
79+
.toASN1Primitive();
9580
}
9681
}
82+
83+
SubjectPublicKeyInfo info = SubjectPublicKeyInfo.getInstance(certificate.getPublicKey().getEncoded());
84+
85+
return (ASN1Sequence)new AuthorityKeyIdentifier(info, genNames, serialNumber).toASN1Primitive();
9786
}
9887
catch (Exception e)
9988
{
10089
throw new CertificateParsingException("Exception extracting certificate details: " + e.toString());
10190
}
10291
}
103-
92+
10493
private static ASN1Sequence fromKey(
10594
PublicKey pubKey)
10695
throws InvalidKeyException

0 commit comments

Comments
 (0)