Skip to content

Commit 38a7b97

Browse files
committed
refactored getAlgorithmIdentifier() to return an AlgorithmIdentifier.
1 parent 6e1342f commit 38a7b97

File tree

6 files changed

+32
-22
lines changed

6 files changed

+32
-22
lines changed

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -200,7 +200,7 @@ public ContentSigner build(PrivateKey privateKey)
200200
throws OperatorCreationException
201201
{
202202
//Use this legacy method only for composite private keys (they have that identifier)
203-
if (privateKey instanceof CompositePrivateKey && ((CompositePrivateKey)privateKey).getAlgorithmIdentifier().equals(MiscObjectIdentifiers.id_composite_key))
203+
if (privateKey instanceof CompositePrivateKey && ((CompositePrivateKey)privateKey).getAlgorithmIdentifier().getAlgorithm().equals(MiscObjectIdentifiers.id_composite_key))
204204
{
205205
return buildComposite((CompositePrivateKey)privateKey);
206206
}

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

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -144,7 +144,8 @@ public ContentVerifier get(AlgorithmIdentifier algorithm)
144144
}
145145

146146
//Use this legacy method only for composite public keys (they have that identifier)
147-
if (publicKey instanceof CompositePublicKey && ((CompositePublicKey)publicKey).getAlgorithmIdentifier().equals(MiscObjectIdentifiers.id_composite_key))
147+
if (publicKey instanceof CompositePublicKey
148+
&& ((CompositePublicKey)publicKey).getAlgorithmIdentifier().getAlgorithm().equals(MiscObjectIdentifiers.id_composite_key))
148149
{
149150
List<PublicKey> keys = ((CompositePublicKey)publicKey).getPublicKeys();
150151

prov/src/main/java/org/bouncycastle/jcajce/CompositePrivateKey.java

Lines changed: 13 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,6 @@
1414
import org.bouncycastle.asn1.x509.AlgorithmIdentifier;
1515
import org.bouncycastle.crypto.util.PrivateKeyFactory;
1616
import org.bouncycastle.crypto.util.PrivateKeyInfoFactory;
17-
import org.bouncycastle.internal.asn1.edec.EdECObjectIdentifiers;
1817
import org.bouncycastle.internal.asn1.misc.MiscObjectIdentifiers;
1918
import org.bouncycastle.jcajce.provider.asymmetric.compositesignatures.CompositeIndex;
2019
import org.bouncycastle.jcajce.provider.asymmetric.compositesignatures.KeyFactorySpi;
@@ -31,7 +30,7 @@ public class CompositePrivateKey
3130
{
3231
private final List<PrivateKey> keys;
3332

34-
private ASN1ObjectIdentifier algorithmIdentifier;
33+
private AlgorithmIdentifier algorithmIdentifier;
3534

3635
/**
3736
* Create a composite private key from an array of PublicKeys.
@@ -44,6 +43,11 @@ public CompositePrivateKey(PrivateKey... keys)
4443
this(MiscObjectIdentifiers.id_composite_key, keys);
4544
}
4645

46+
public CompositePrivateKey(ASN1ObjectIdentifier algorithm, PrivateKey... keys)
47+
{
48+
this(new AlgorithmIdentifier(algorithm), keys);
49+
}
50+
4751
/**
4852
* Create a composite private key which corresponds to a composite signature algorithm in algorithmIdentifier.
4953
* The component private keys are not checked if they satisfy the composite definition at this point,
@@ -52,7 +56,7 @@ public CompositePrivateKey(PrivateKey... keys)
5256
* @param algorithmIdentifier
5357
* @param keys
5458
*/
55-
public CompositePrivateKey(ASN1ObjectIdentifier algorithmIdentifier, PrivateKey... keys)
59+
public CompositePrivateKey(AlgorithmIdentifier algorithmIdentifier, PrivateKey... keys)
5660
{
5761
this.algorithmIdentifier = algorithmIdentifier;
5862

@@ -113,10 +117,10 @@ public List<PrivateKey> getPrivateKeys()
113117

114118
public String getAlgorithm()
115119
{
116-
return CompositeIndex.getAlgorithmName(this.algorithmIdentifier);
120+
return CompositeIndex.getAlgorithmName(this.algorithmIdentifier.getAlgorithm());
117121
}
118122

119-
public ASN1ObjectIdentifier getAlgorithmIdentifier()
123+
public AlgorithmIdentifier getAlgorithmIdentifier()
120124
{
121125
return algorithmIdentifier;
122126
}
@@ -136,7 +140,7 @@ public String getFormat()
136140
*/
137141
public byte[] getEncoded()
138142
{
139-
if (this.algorithmIdentifier.on(MiscObjectIdentifiers.id_MLDSA_COMPSIG))
143+
if (this.algorithmIdentifier.getAlgorithm().on(MiscObjectIdentifiers.id_MLDSA_COMPSIG))
140144
{
141145
try
142146
{
@@ -152,7 +156,7 @@ public byte[] getEncoded()
152156
}
153157
ASN1EncodableVector v = new ASN1EncodableVector();
154158

155-
if (algorithmIdentifier.equals(MiscObjectIdentifiers.id_composite_key))
159+
if (algorithmIdentifier.getAlgorithm().equals(MiscObjectIdentifiers.id_composite_key))
156160
{
157161
for (int i = 0; i < keys.size(); i++)
158162
{
@@ -162,7 +166,7 @@ public byte[] getEncoded()
162166

163167
try
164168
{
165-
return new PrivateKeyInfo(new AlgorithmIdentifier(this.algorithmIdentifier), new DERSequence(v)).getEncoded(ASN1Encoding.DER);
169+
return new PrivateKeyInfo(this.algorithmIdentifier, new DERSequence(v)).getEncoded(ASN1Encoding.DER);
166170
}
167171
catch (IOException e)
168172
{
@@ -180,7 +184,7 @@ public byte[] getEncoded()
180184

181185
try
182186
{
183-
return new PrivateKeyInfo(new AlgorithmIdentifier(this.algorithmIdentifier), keyEncoding).getEncoded(ASN1Encoding.DER);
187+
return new PrivateKeyInfo(this.algorithmIdentifier, keyEncoding).getEncoded(ASN1Encoding.DER);
184188
}
185189
catch (IOException e)
186190
{

prov/src/main/java/org/bouncycastle/jcajce/CompositePublicKey.java

Lines changed: 13 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@ public class CompositePublicKey
2828
{
2929
private final List<PublicKey> keys;
3030

31-
private final ASN1ObjectIdentifier algorithmIdentifier;
31+
private final AlgorithmIdentifier algorithmIdentifier;
3232

3333
/**
3434
* Create a composite public key from an array of PublicKeys.
@@ -41,6 +41,11 @@ public CompositePublicKey(PublicKey... keys)
4141
this(MiscObjectIdentifiers.id_composite_key, keys);
4242
}
4343

44+
public CompositePublicKey(ASN1ObjectIdentifier algorithmIdentifier, PublicKey... keys)
45+
{
46+
this(new AlgorithmIdentifier(algorithmIdentifier), keys);
47+
}
48+
4449
/**
4550
* Create a composite public key which corresponds to a composite signature algorithm in algorithmIdentifier.
4651
* The component public keys are not checked if they satisfy the composite definition at this point,
@@ -49,7 +54,7 @@ public CompositePublicKey(PublicKey... keys)
4954
* @param algorithmIdentifier
5055
* @param keys
5156
*/
52-
public CompositePublicKey(ASN1ObjectIdentifier algorithmIdentifier, PublicKey... keys)
57+
public CompositePublicKey(AlgorithmIdentifier algorithmIdentifier, PublicKey... keys)
5358
{
5459
this.algorithmIdentifier = algorithmIdentifier;
5560

@@ -111,10 +116,10 @@ public List<PublicKey> getPublicKeys()
111116

112117
public String getAlgorithm()
113118
{
114-
return CompositeIndex.getAlgorithmName(this.algorithmIdentifier);
119+
return CompositeIndex.getAlgorithmName(this.algorithmIdentifier.getAlgorithm());
115120
}
116121

117-
public ASN1ObjectIdentifier getAlgorithmIdentifier()
122+
public AlgorithmIdentifier getAlgorithmIdentifier()
118123
{
119124
return algorithmIdentifier;
120125
}
@@ -139,13 +144,13 @@ public String getFormat()
139144
@Override
140145
public byte[] getEncoded()
141146
{
142-
if (this.algorithmIdentifier.on(MiscObjectIdentifiers.id_MLDSA_COMPSIG))
147+
if (this.algorithmIdentifier.getAlgorithm().on(MiscObjectIdentifiers.id_MLDSA_COMPSIG))
143148
{
144149
try
145150
{
146151
byte[] mldsaKey = org.bouncycastle.pqc.crypto.util.SubjectPublicKeyInfoFactory.createSubjectPublicKeyInfo(org.bouncycastle.pqc.crypto.util.PublicKeyFactory.createKey(keys.get(0).getEncoded())).getPublicKeyData().getBytes();
147152
byte[] tradKey = SubjectPublicKeyInfoFactory.createSubjectPublicKeyInfo(PublicKeyFactory.createKey(keys.get(1).getEncoded())).getPublicKeyData().getBytes();
148-
return new SubjectPublicKeyInfo(new AlgorithmIdentifier(getAlgorithmIdentifier()), Arrays.concatenate(mldsaKey, tradKey)).getEncoded();
153+
return new SubjectPublicKeyInfo(getAlgorithmIdentifier(), Arrays.concatenate(mldsaKey, tradKey)).getEncoded();
149154
}
150155
catch (IOException e)
151156
{
@@ -157,7 +162,7 @@ public byte[] getEncoded()
157162

158163
for (int i = 0; i < keys.size(); i++)
159164
{
160-
if (this.algorithmIdentifier.equals(MiscObjectIdentifiers.id_composite_key))
165+
if (this.algorithmIdentifier.getAlgorithm().equals(MiscObjectIdentifiers.id_composite_key))
161166
{
162167
//Legacy, component is the whole SubjectPublicKeyInfo
163168
v.add(SubjectPublicKeyInfo.getInstance(keys.get(i).getEncoded()));
@@ -171,7 +176,7 @@ public byte[] getEncoded()
171176
}
172177
try
173178
{
174-
return new SubjectPublicKeyInfo(new AlgorithmIdentifier(this.algorithmIdentifier), new DERSequence(v)).getEncoded(ASN1Encoding.DER);
179+
return new SubjectPublicKeyInfo(this.algorithmIdentifier, new DERSequence(v)).getEncoded(ASN1Encoding.DER);
175180
}
176181
catch (IOException e)
177182
{

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

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -137,7 +137,7 @@ protected void engineInitVerify(PublicKey publicKey)
137137
this.compositeKey = publicKey;
138138

139139
CompositePublicKey compositePublicKey = (CompositePublicKey)this.compositeKey;
140-
if (!compositePublicKey.getAlgorithmIdentifier().equals(this.algorithm))
140+
if (!compositePublicKey.getAlgorithmIdentifier().getAlgorithm().equals(this.algorithm))
141141
{
142142
throw new InvalidKeyException("Provided composite public key cannot be used with the composite signature algorithm.");
143143
}
@@ -167,7 +167,7 @@ protected void engineInitSign(PrivateKey privateKey)
167167
this.compositeKey = privateKey;
168168

169169
CompositePrivateKey compositePrivateKey = (CompositePrivateKey)privateKey;
170-
if (!compositePrivateKey.getAlgorithmIdentifier().equals(this.algorithm))
170+
if (!compositePrivateKey.getAlgorithmIdentifier().getAlgorithm().equals(this.algorithm))
171171
{
172172
throw new InvalidKeyException("Provided composite private key cannot be used with the composite signature algorithm.");
173173
}

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -702,7 +702,7 @@ else if (X509SignatureUtil.isCompositeAlgorithm(c.getSignatureAlgorithm()))
702702

703703
//Use this only for legacy composite public keys (they have this identifier)
704704
if (key instanceof CompositePublicKey
705-
&& MiscObjectIdentifiers.id_composite_key.equals(((CompositePublicKey)key).getAlgorithmIdentifier()))
705+
&& MiscObjectIdentifiers.id_composite_key.equals(((CompositePublicKey)key).getAlgorithmIdentifier().getAlgorithm()))
706706
{
707707
List<PublicKey> keys = ((CompositePublicKey)key).getPublicKeys();
708708

0 commit comments

Comments
 (0)