Skip to content

Commit d422f83

Browse files
committed
Refactor DefaultSignatureAlgorithmIdentifierFinder
1 parent 0629950 commit d422f83

File tree

1 file changed

+40
-28
lines changed

1 file changed

+40
-28
lines changed

pkix/src/main/java/org/bouncycastle/operator/DefaultSignatureAlgorithmIdentifierFinder.java

Lines changed: 40 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -51,12 +51,35 @@ private static void addDigestOid(ASN1ObjectIdentifier signatureOid, ASN1ObjectId
5151
{
5252
if (digestOids.containsKey(signatureOid))
5353
{
54-
throw new IllegalStateException("algorithmName already present in addAlgorithm");
54+
throw new IllegalStateException("signatureOid already present in addDigestOid");
5555
}
5656

5757
digestOids.put(signatureOid, digestOid);
5858
}
5959

60+
private static void addParameters(String algorithmName, ASN1Encodable parameters)
61+
{
62+
if (parameters == null)
63+
{
64+
throw new IllegalArgumentException("use 'noParams' instead for absent parameters");
65+
}
66+
if (params.containsKey(algorithmName))
67+
{
68+
throw new IllegalStateException("algorithmName already present in addParameters");
69+
}
70+
71+
params.put(algorithmName, parameters);
72+
}
73+
74+
private static RSASSAPSSparams createPSSParams(AlgorithmIdentifier hashAlgId, int saltSize)
75+
{
76+
return new RSASSAPSSparams(
77+
hashAlgId,
78+
new AlgorithmIdentifier(PKCSObjectIdentifiers.id_mgf1, hashAlgId),
79+
new ASN1Integer(saltSize),
80+
new ASN1Integer(1));
81+
}
82+
6083
static
6184
{
6285
addAlgorithm("COMPOSITE", MiscObjectIdentifiers.id_alg_composite);
@@ -564,31 +587,31 @@ private static void addDigestOid(ASN1ObjectIdentifier signatureOid, ASN1ObjectId
564587
// explicit params
565588
//
566589
AlgorithmIdentifier sha1AlgId = new AlgorithmIdentifier(OIWObjectIdentifiers.idSHA1, DERNull.INSTANCE);
567-
params.put("SHA1WITHRSAANDMGF1", createPSSParams(sha1AlgId, 20));
590+
addParameters("SHA1WITHRSAANDMGF1", createPSSParams(sha1AlgId, 20));
568591

569592
AlgorithmIdentifier sha224AlgId = new AlgorithmIdentifier(NISTObjectIdentifiers.id_sha224, DERNull.INSTANCE);
570-
params.put("SHA224WITHRSAANDMGF1", createPSSParams(sha224AlgId, 28));
593+
addParameters("SHA224WITHRSAANDMGF1", createPSSParams(sha224AlgId, 28));
571594

572595
AlgorithmIdentifier sha256AlgId = new AlgorithmIdentifier(NISTObjectIdentifiers.id_sha256, DERNull.INSTANCE);
573-
params.put("SHA256WITHRSAANDMGF1", createPSSParams(sha256AlgId, 32));
596+
addParameters("SHA256WITHRSAANDMGF1", createPSSParams(sha256AlgId, 32));
574597

575598
AlgorithmIdentifier sha384AlgId = new AlgorithmIdentifier(NISTObjectIdentifiers.id_sha384, DERNull.INSTANCE);
576-
params.put("SHA384WITHRSAANDMGF1", createPSSParams(sha384AlgId, 48));
599+
addParameters("SHA384WITHRSAANDMGF1", createPSSParams(sha384AlgId, 48));
577600

578601
AlgorithmIdentifier sha512AlgId = new AlgorithmIdentifier(NISTObjectIdentifiers.id_sha512, DERNull.INSTANCE);
579-
params.put("SHA512WITHRSAANDMGF1", createPSSParams(sha512AlgId, 64));
602+
addParameters("SHA512WITHRSAANDMGF1", createPSSParams(sha512AlgId, 64));
580603

581604
AlgorithmIdentifier sha3_224AlgId = new AlgorithmIdentifier(NISTObjectIdentifiers.id_sha3_224, DERNull.INSTANCE);
582-
params.put("SHA3-224WITHRSAANDMGF1", createPSSParams(sha3_224AlgId, 28));
605+
addParameters("SHA3-224WITHRSAANDMGF1", createPSSParams(sha3_224AlgId, 28));
583606

584607
AlgorithmIdentifier sha3_256AlgId = new AlgorithmIdentifier(NISTObjectIdentifiers.id_sha3_256, DERNull.INSTANCE);
585-
params.put("SHA3-256WITHRSAANDMGF1", createPSSParams(sha3_256AlgId, 32));
608+
addParameters("SHA3-256WITHRSAANDMGF1", createPSSParams(sha3_256AlgId, 32));
586609

587610
AlgorithmIdentifier sha3_384AlgId = new AlgorithmIdentifier(NISTObjectIdentifiers.id_sha3_384, DERNull.INSTANCE);
588-
params.put("SHA3-384WITHRSAANDMGF1", createPSSParams(sha3_384AlgId, 48));
611+
addParameters("SHA3-384WITHRSAANDMGF1", createPSSParams(sha3_384AlgId, 48));
589612

590613
AlgorithmIdentifier sha3_512AlgId = new AlgorithmIdentifier(NISTObjectIdentifiers.id_sha3_512, DERNull.INSTANCE);
591-
params.put("SHA3-512WITHRSAANDMGF1", createPSSParams(sha3_512AlgId, 64));
614+
addParameters("SHA3-512WITHRSAANDMGF1", createPSSParams(sha3_512AlgId, 64));
592615

593616
//
594617
// digests
@@ -713,15 +736,6 @@ private static void addDigestOid(ASN1ObjectIdentifier signatureOid, ASN1ObjectId
713736
addDigestOid(NISTObjectIdentifiers.id_hash_slh_dsa_shake_256f_with_shake256, NISTObjectIdentifiers.id_shake256);
714737
}
715738

716-
private static RSASSAPSSparams createPSSParams(AlgorithmIdentifier hashAlgId, int saltSize)
717-
{
718-
return new RSASSAPSSparams(
719-
hashAlgId,
720-
new AlgorithmIdentifier(PKCSObjectIdentifiers.id_mgf1, hashAlgId),
721-
new ASN1Integer(saltSize),
722-
new ASN1Integer(1));
723-
}
724-
725739
public AlgorithmIdentifier find(String sigAlgName)
726740
{
727741
String algorithmName = Strings.toUpperCase(sigAlgName);
@@ -731,19 +745,17 @@ public AlgorithmIdentifier find(String sigAlgName)
731745
throw new IllegalArgumentException("Unknown signature type requested: " + sigAlgName);
732746
}
733747

734-
AlgorithmIdentifier sigAlgId;
735748
if (noParams.contains(sigOID))
736749
{
737-
sigAlgId = new AlgorithmIdentifier(sigOID);
750+
return new AlgorithmIdentifier(sigOID);
738751
}
739-
else if (params.containsKey(algorithmName))
740-
{
741-
sigAlgId = new AlgorithmIdentifier(sigOID, (ASN1Encodable)params.get(algorithmName));
742-
}
743-
else
752+
753+
ASN1Encodable sigAlgParams = (ASN1Encodable)params.get(algorithmName);
754+
if (sigAlgParams == null)
744755
{
745-
sigAlgId = new AlgorithmIdentifier(sigOID, DERNull.INSTANCE);
756+
sigAlgParams = DERNull.INSTANCE;
746757
}
747-
return sigAlgId;
758+
759+
return new AlgorithmIdentifier(sigOID, sigAlgParams);
748760
}
749761
}

0 commit comments

Comments
 (0)