Skip to content

Commit 39b442f

Browse files
committed
added checks on initial static table construction
1 parent c6b046b commit 39b442f

File tree

1 file changed

+121
-90
lines changed

1 file changed

+121
-90
lines changed

pkix/src/main/java/org/bouncycastle/cms/DefaultCMSSignatureAlgorithmNameGenerator.java

Lines changed: 121 additions & 90 deletions
Original file line numberDiff line numberDiff line change
@@ -29,10 +29,45 @@ public class DefaultCMSSignatureAlgorithmNameGenerator
2929

3030
private void addEntries(ASN1ObjectIdentifier alias, String digest, String encryption)
3131
{
32-
digestAlgs.put(alias, digest);
33-
encryptionAlgs.put(alias, encryption);
32+
if (digestAlgs.containsKey(alias))
33+
{
34+
throw new IllegalStateException("object identifier already present in addEntries");
35+
}
36+
37+
addDigestAlg(alias, digest);
38+
addEncryptionAlg(alias, encryption);
3439
}
3540

41+
private void addSimpleAlg(ASN1ObjectIdentifier alias, String algorithmName)
42+
{
43+
if (simpleAlgs.containsKey(alias))
44+
{
45+
throw new IllegalStateException("object identifier already present in addSimpleAlg");
46+
}
47+
48+
simpleAlgs.put(alias, algorithmName);
49+
}
50+
51+
private void addDigestAlg(ASN1ObjectIdentifier alias, String algorithmName)
52+
{
53+
if (digestAlgs.containsKey(alias))
54+
{
55+
throw new IllegalStateException("object identifier already present in addDigestAlg");
56+
}
57+
58+
digestAlgs.put(alias, algorithmName);
59+
}
60+
61+
private void addEncryptionAlg(ASN1ObjectIdentifier alias, String algorithmName)
62+
{
63+
if (encryptionAlgs.containsKey(alias))
64+
{
65+
throw new IllegalStateException("object identifier already present in addEncryptionAlg");
66+
}
67+
68+
encryptionAlgs.put(alias, algorithmName);
69+
}
70+
3671
public DefaultCMSSignatureAlgorithmNameGenerator()
3772
{
3873
addEntries(NISTObjectIdentifiers.dsa_with_sha224, "SHA224", "DSA");
@@ -43,10 +78,6 @@ public DefaultCMSSignatureAlgorithmNameGenerator()
4378
addEntries(NISTObjectIdentifiers.id_dsa_with_sha3_256, "SHA3-256", "DSA");
4479
addEntries(NISTObjectIdentifiers.id_dsa_with_sha3_384, "SHA3-384", "DSA");
4580
addEntries(NISTObjectIdentifiers.id_dsa_with_sha3_512, "SHA3-512", "DSA");
46-
addEntries(NISTObjectIdentifiers.id_rsassa_pkcs1_v1_5_with_sha3_224, "SHA3-224", "RSA");
47-
addEntries(NISTObjectIdentifiers.id_rsassa_pkcs1_v1_5_with_sha3_256, "SHA3-256", "RSA");
48-
addEntries(NISTObjectIdentifiers.id_rsassa_pkcs1_v1_5_with_sha3_384, "SHA3-384", "RSA");
49-
addEntries(NISTObjectIdentifiers.id_rsassa_pkcs1_v1_5_with_sha3_512, "SHA3-512", "RSA");
5081
addEntries(NISTObjectIdentifiers.id_ecdsa_with_sha3_224, "SHA3-224", "ECDSA");
5182
addEntries(NISTObjectIdentifiers.id_ecdsa_with_sha3_256, "SHA3-256", "ECDSA");
5283
addEntries(NISTObjectIdentifiers.id_ecdsa_with_sha3_384, "SHA3-384", "ECDSA");
@@ -120,90 +151,90 @@ public DefaultCMSSignatureAlgorithmNameGenerator()
120151
addEntries(BCObjectIdentifiers.picnic_with_sha512, "SHA512", "Picnic");
121152
addEntries(BCObjectIdentifiers.picnic_with_sha3_512, "SHA3-512", "Picnic");
122153

123-
encryptionAlgs.put(X9ObjectIdentifiers.id_dsa, "DSA");
124-
encryptionAlgs.put(PKCSObjectIdentifiers.rsaEncryption, "RSA");
125-
encryptionAlgs.put(TeleTrusTObjectIdentifiers.teleTrusTRSAsignatureAlgorithm, "RSA");
126-
encryptionAlgs.put(X509ObjectIdentifiers.id_ea_rsa, "RSA");
127-
encryptionAlgs.put(PKCSObjectIdentifiers.id_RSASSA_PSS, "RSAandMGF1");
128-
encryptionAlgs.put(CryptoProObjectIdentifiers.gostR3410_94, "GOST3410");
129-
encryptionAlgs.put(CryptoProObjectIdentifiers.gostR3410_2001, "ECGOST3410");
130-
encryptionAlgs.put(new ASN1ObjectIdentifier("1.3.6.1.4.1.5849.1.6.2"), "ECGOST3410");
131-
encryptionAlgs.put(new ASN1ObjectIdentifier("1.3.6.1.4.1.5849.1.1.5"), "GOST3410");
132-
encryptionAlgs.put(RosstandartObjectIdentifiers.id_tc26_gost_3410_12_256, "ECGOST3410-2012-256");
133-
encryptionAlgs.put(RosstandartObjectIdentifiers.id_tc26_gost_3410_12_512, "ECGOST3410-2012-512");
134-
encryptionAlgs.put(CryptoProObjectIdentifiers.gostR3411_94_with_gostR3410_2001, "ECGOST3410");
135-
encryptionAlgs.put(CryptoProObjectIdentifiers.gostR3411_94_with_gostR3410_94, "GOST3410");
136-
encryptionAlgs.put(RosstandartObjectIdentifiers.id_tc26_signwithdigest_gost_3410_12_256, "ECGOST3410-2012-256");
137-
encryptionAlgs.put(RosstandartObjectIdentifiers.id_tc26_signwithdigest_gost_3410_12_512, "ECGOST3410-2012-512");
138-
encryptionAlgs.put(X9ObjectIdentifiers.id_ecPublicKey, "ECDSA");
139-
140-
digestAlgs.put(PKCSObjectIdentifiers.md2, "MD2");
141-
digestAlgs.put(PKCSObjectIdentifiers.md4, "MD4");
142-
digestAlgs.put(PKCSObjectIdentifiers.md5, "MD5");
143-
digestAlgs.put(OIWObjectIdentifiers.idSHA1, "SHA1");
144-
digestAlgs.put(NISTObjectIdentifiers.id_sha224, "SHA224");
145-
digestAlgs.put(NISTObjectIdentifiers.id_sha256, "SHA256");
146-
digestAlgs.put(NISTObjectIdentifiers.id_sha384, "SHA384");
147-
digestAlgs.put(NISTObjectIdentifiers.id_sha512, "SHA512");
148-
digestAlgs.put(NISTObjectIdentifiers.id_sha512_224, "SHA512(224)");
149-
digestAlgs.put(NISTObjectIdentifiers.id_sha512_256, "SHA512(256)");
150-
digestAlgs.put(NISTObjectIdentifiers.id_shake128, "SHAKE128");
151-
digestAlgs.put(NISTObjectIdentifiers.id_shake256, "SHAKE256");
152-
digestAlgs.put(NISTObjectIdentifiers.id_sha3_224, "SHA3-224");
153-
digestAlgs.put(NISTObjectIdentifiers.id_sha3_256, "SHA3-256");
154-
digestAlgs.put(NISTObjectIdentifiers.id_sha3_384, "SHA3-384");
155-
digestAlgs.put(NISTObjectIdentifiers.id_sha3_512, "SHA3-512");
156-
digestAlgs.put(TeleTrusTObjectIdentifiers.ripemd128, "RIPEMD128");
157-
digestAlgs.put(TeleTrusTObjectIdentifiers.ripemd160, "RIPEMD160");
158-
digestAlgs.put(TeleTrusTObjectIdentifiers.ripemd256, "RIPEMD256");
159-
digestAlgs.put(CryptoProObjectIdentifiers.gostR3411, "GOST3411");
160-
digestAlgs.put(new ASN1ObjectIdentifier("1.3.6.1.4.1.5849.1.2.1"), "GOST3411");
161-
digestAlgs.put(RosstandartObjectIdentifiers.id_tc26_gost_3411_12_256, "GOST3411-2012-256");
162-
digestAlgs.put(RosstandartObjectIdentifiers.id_tc26_gost_3411_12_512, "GOST3411-2012-512");
163-
digestAlgs.put(GMObjectIdentifiers.sm3, "SM3");
164-
165-
simpleAlgs.put(EdECObjectIdentifiers.id_Ed25519, "Ed25519");
166-
simpleAlgs.put(EdECObjectIdentifiers.id_Ed448, "Ed448");
167-
simpleAlgs.put(PKCSObjectIdentifiers.id_alg_hss_lms_hashsig, "LMS");
168-
169-
simpleAlgs.put(MiscObjectIdentifiers.id_alg_composite, "COMPOSITE");
170-
simpleAlgs.put(BCObjectIdentifiers.falcon_512, "Falcon-512");
171-
simpleAlgs.put(BCObjectIdentifiers.falcon_1024, "Falcon-1024");
172-
simpleAlgs.put(BCObjectIdentifiers.dilithium2, "Dilithium2");
173-
simpleAlgs.put(BCObjectIdentifiers.dilithium3, "Dilithium3");
174-
simpleAlgs.put(BCObjectIdentifiers.dilithium5, "Dilithium5");
175-
simpleAlgs.put(BCObjectIdentifiers.sphincsPlus_sha2_128s, "SPHINCS+-SHA2-128s");
176-
simpleAlgs.put(BCObjectIdentifiers.sphincsPlus_sha2_128f, "SPHINCS+-SHA2-128f");
177-
simpleAlgs.put(BCObjectIdentifiers.sphincsPlus_sha2_192s, "SPHINCS+-SHA2-192s");
178-
simpleAlgs.put(BCObjectIdentifiers.sphincsPlus_sha2_192f, "SPHINCS+-SHA2-192f");
179-
simpleAlgs.put(BCObjectIdentifiers.sphincsPlus_sha2_256s, "SPHINCS+-SHA2-256s");
180-
simpleAlgs.put(BCObjectIdentifiers.sphincsPlus_sha2_256f, "SPHINCS+-SHA2-256f");
181-
simpleAlgs.put(BCObjectIdentifiers.sphincsPlus_shake_128s, "SPHINCS+-SHAKE-128s");
182-
simpleAlgs.put(BCObjectIdentifiers.sphincsPlus_shake_128f, "SPHINCS+-SHAKE-128f");
183-
simpleAlgs.put(BCObjectIdentifiers.sphincsPlus_shake_192s, "SPHINCS+-SHAKE-192s");
184-
simpleAlgs.put(BCObjectIdentifiers.sphincsPlus_shake_192f, "SPHINCS+-SHAKE-192f");
185-
simpleAlgs.put(BCObjectIdentifiers.sphincsPlus_shake_256s, "SPHINCS+-SHAKE-256s");
186-
simpleAlgs.put(BCObjectIdentifiers.sphincsPlus_shake_256f, "SPHINCS+-SHAKE-256f");
187-
188-
simpleAlgs.put(NISTObjectIdentifiers.id_ml_dsa_44, "ML-DSA-44");
189-
simpleAlgs.put(NISTObjectIdentifiers.id_ml_dsa_65, "ML-DSA-65");
190-
simpleAlgs.put(NISTObjectIdentifiers.id_ml_dsa_87, "ML-DSA-87");
191-
192-
simpleAlgs.put(NISTObjectIdentifiers.id_slh_dsa_sha2_128s, "SLH-DSA-SHA2-128S");
193-
simpleAlgs.put(NISTObjectIdentifiers.id_slh_dsa_sha2_128f, "SLH-DSA-SHA2-128F");
194-
simpleAlgs.put(NISTObjectIdentifiers.id_slh_dsa_sha2_192s, "SLH-DSA-SHA2-192S");
195-
simpleAlgs.put(NISTObjectIdentifiers.id_slh_dsa_sha2_192f, "SLH-DSA-SHA2-192F");
196-
simpleAlgs.put(NISTObjectIdentifiers.id_slh_dsa_sha2_256s, "SLH-DSA-SHA2-256S");
197-
simpleAlgs.put(NISTObjectIdentifiers.id_slh_dsa_sha2_256f, "SLH-DSA-SHA2-256F");
198-
199-
simpleAlgs.put(NISTObjectIdentifiers.id_slh_dsa_shake_128s, "SLH-DSA-SHAKE-128S");
200-
simpleAlgs.put(NISTObjectIdentifiers.id_slh_dsa_shake_128f, "SLH-DSA-SHAKE-128F");
201-
simpleAlgs.put(NISTObjectIdentifiers.id_slh_dsa_shake_192s, "SLH-DSA-SHAKE-192S");
202-
simpleAlgs.put(NISTObjectIdentifiers.id_slh_dsa_shake_192f, "SLH-DSA-SHAKE-192F");
203-
simpleAlgs.put(NISTObjectIdentifiers.id_slh_dsa_shake_256s, "SLH-DSA-SHAKE-256S");
204-
simpleAlgs.put(NISTObjectIdentifiers.id_slh_dsa_shake_256f, "SLH-DSA-SHAKE-256F");
205-
206-
simpleAlgs.put(BCObjectIdentifiers.picnic_signature, "Picnic");
154+
addEncryptionAlg(X9ObjectIdentifiers.id_dsa, "DSA");
155+
addEncryptionAlg(PKCSObjectIdentifiers.rsaEncryption, "RSA");
156+
addEncryptionAlg(TeleTrusTObjectIdentifiers.teleTrusTRSAsignatureAlgorithm, "RSA");
157+
addEncryptionAlg(X509ObjectIdentifiers.id_ea_rsa, "RSA");
158+
addEncryptionAlg(PKCSObjectIdentifiers.id_RSASSA_PSS, "RSAandMGF1");
159+
addEncryptionAlg(CryptoProObjectIdentifiers.gostR3410_94, "GOST3410");
160+
addEncryptionAlg(CryptoProObjectIdentifiers.gostR3410_2001, "ECGOST3410");
161+
addEncryptionAlg(new ASN1ObjectIdentifier("1.3.6.1.4.1.5849.1.6.2"), "ECGOST3410");
162+
addEncryptionAlg(new ASN1ObjectIdentifier("1.3.6.1.4.1.5849.1.1.5"), "GOST3410");
163+
addEncryptionAlg(RosstandartObjectIdentifiers.id_tc26_gost_3410_12_256, "ECGOST3410-2012-256");
164+
addEncryptionAlg(RosstandartObjectIdentifiers.id_tc26_gost_3410_12_512, "ECGOST3410-2012-512");
165+
addEncryptionAlg(CryptoProObjectIdentifiers.gostR3411_94_with_gostR3410_2001, "ECGOST3410");
166+
addEncryptionAlg(CryptoProObjectIdentifiers.gostR3411_94_with_gostR3410_94, "GOST3410");
167+
addEncryptionAlg(RosstandartObjectIdentifiers.id_tc26_signwithdigest_gost_3410_12_256, "ECGOST3410-2012-256");
168+
addEncryptionAlg(RosstandartObjectIdentifiers.id_tc26_signwithdigest_gost_3410_12_512, "ECGOST3410-2012-512");
169+
addEncryptionAlg(X9ObjectIdentifiers.id_ecPublicKey, "ECDSA");
170+
171+
addDigestAlg(PKCSObjectIdentifiers.md2, "MD2");
172+
addDigestAlg(PKCSObjectIdentifiers.md4, "MD4");
173+
addDigestAlg(PKCSObjectIdentifiers.md5, "MD5");
174+
addDigestAlg(OIWObjectIdentifiers.idSHA1, "SHA1");
175+
addDigestAlg(NISTObjectIdentifiers.id_sha224, "SHA224");
176+
addDigestAlg(NISTObjectIdentifiers.id_sha256, "SHA256");
177+
addDigestAlg(NISTObjectIdentifiers.id_sha384, "SHA384");
178+
addDigestAlg(NISTObjectIdentifiers.id_sha512, "SHA512");
179+
addDigestAlg(NISTObjectIdentifiers.id_sha512_224, "SHA512(224)");
180+
addDigestAlg(NISTObjectIdentifiers.id_sha512_256, "SHA512(256)");
181+
addDigestAlg(NISTObjectIdentifiers.id_shake128, "SHAKE128");
182+
addDigestAlg(NISTObjectIdentifiers.id_shake256, "SHAKE256");
183+
addDigestAlg(NISTObjectIdentifiers.id_sha3_224, "SHA3-224");
184+
addDigestAlg(NISTObjectIdentifiers.id_sha3_256, "SHA3-256");
185+
addDigestAlg(NISTObjectIdentifiers.id_sha3_384, "SHA3-384");
186+
addDigestAlg(NISTObjectIdentifiers.id_sha3_512, "SHA3-512");
187+
addDigestAlg(TeleTrusTObjectIdentifiers.ripemd128, "RIPEMD128");
188+
addDigestAlg(TeleTrusTObjectIdentifiers.ripemd160, "RIPEMD160");
189+
addDigestAlg(TeleTrusTObjectIdentifiers.ripemd256, "RIPEMD256");
190+
addDigestAlg(CryptoProObjectIdentifiers.gostR3411, "GOST3411");
191+
addDigestAlg(new ASN1ObjectIdentifier("1.3.6.1.4.1.5849.1.2.1"), "GOST3411");
192+
addDigestAlg(RosstandartObjectIdentifiers.id_tc26_gost_3411_12_256, "GOST3411-2012-256");
193+
addDigestAlg(RosstandartObjectIdentifiers.id_tc26_gost_3411_12_512, "GOST3411-2012-512");
194+
addDigestAlg(GMObjectIdentifiers.sm3, "SM3");
195+
196+
addSimpleAlg(EdECObjectIdentifiers.id_Ed25519, "Ed25519");
197+
addSimpleAlg(EdECObjectIdentifiers.id_Ed448, "Ed448");
198+
addSimpleAlg(PKCSObjectIdentifiers.id_alg_hss_lms_hashsig, "LMS");
199+
200+
addSimpleAlg(MiscObjectIdentifiers.id_alg_composite, "COMPOSITE");
201+
addSimpleAlg(BCObjectIdentifiers.falcon_512, "Falcon-512");
202+
addSimpleAlg(BCObjectIdentifiers.falcon_1024, "Falcon-1024");
203+
addSimpleAlg(BCObjectIdentifiers.dilithium2, "Dilithium2");
204+
addSimpleAlg(BCObjectIdentifiers.dilithium3, "Dilithium3");
205+
addSimpleAlg(BCObjectIdentifiers.dilithium5, "Dilithium5");
206+
addSimpleAlg(BCObjectIdentifiers.sphincsPlus_sha2_128s, "SPHINCS+-SHA2-128s");
207+
addSimpleAlg(BCObjectIdentifiers.sphincsPlus_sha2_128f, "SPHINCS+-SHA2-128f");
208+
addSimpleAlg(BCObjectIdentifiers.sphincsPlus_sha2_192s, "SPHINCS+-SHA2-192s");
209+
addSimpleAlg(BCObjectIdentifiers.sphincsPlus_sha2_192f, "SPHINCS+-SHA2-192f");
210+
addSimpleAlg(BCObjectIdentifiers.sphincsPlus_sha2_256s, "SPHINCS+-SHA2-256s");
211+
addSimpleAlg(BCObjectIdentifiers.sphincsPlus_sha2_256f, "SPHINCS+-SHA2-256f");
212+
addSimpleAlg(BCObjectIdentifiers.sphincsPlus_shake_128s, "SPHINCS+-SHAKE-128s");
213+
addSimpleAlg(BCObjectIdentifiers.sphincsPlus_shake_128f, "SPHINCS+-SHAKE-128f");
214+
addSimpleAlg(BCObjectIdentifiers.sphincsPlus_shake_192s, "SPHINCS+-SHAKE-192s");
215+
addSimpleAlg(BCObjectIdentifiers.sphincsPlus_shake_192f, "SPHINCS+-SHAKE-192f");
216+
addSimpleAlg(BCObjectIdentifiers.sphincsPlus_shake_256s, "SPHINCS+-SHAKE-256s");
217+
addSimpleAlg(BCObjectIdentifiers.sphincsPlus_shake_256f, "SPHINCS+-SHAKE-256f");
218+
219+
addSimpleAlg(NISTObjectIdentifiers.id_ml_dsa_44, "ML-DSA-44");
220+
addSimpleAlg(NISTObjectIdentifiers.id_ml_dsa_65, "ML-DSA-65");
221+
addSimpleAlg(NISTObjectIdentifiers.id_ml_dsa_87, "ML-DSA-87");
222+
223+
addSimpleAlg(NISTObjectIdentifiers.id_slh_dsa_sha2_128s, "SLH-DSA-SHA2-128S");
224+
addSimpleAlg(NISTObjectIdentifiers.id_slh_dsa_sha2_128f, "SLH-DSA-SHA2-128F");
225+
addSimpleAlg(NISTObjectIdentifiers.id_slh_dsa_sha2_192s, "SLH-DSA-SHA2-192S");
226+
addSimpleAlg(NISTObjectIdentifiers.id_slh_dsa_sha2_192f, "SLH-DSA-SHA2-192F");
227+
addSimpleAlg(NISTObjectIdentifiers.id_slh_dsa_sha2_256s, "SLH-DSA-SHA2-256S");
228+
addSimpleAlg(NISTObjectIdentifiers.id_slh_dsa_sha2_256f, "SLH-DSA-SHA2-256F");
229+
230+
addSimpleAlg(NISTObjectIdentifiers.id_slh_dsa_shake_128s, "SLH-DSA-SHAKE-128S");
231+
addSimpleAlg(NISTObjectIdentifiers.id_slh_dsa_shake_128f, "SLH-DSA-SHAKE-128F");
232+
addSimpleAlg(NISTObjectIdentifiers.id_slh_dsa_shake_192s, "SLH-DSA-SHAKE-192S");
233+
addSimpleAlg(NISTObjectIdentifiers.id_slh_dsa_shake_192f, "SLH-DSA-SHAKE-192F");
234+
addSimpleAlg(NISTObjectIdentifiers.id_slh_dsa_shake_256s, "SLH-DSA-SHAKE-256S");
235+
addSimpleAlg(NISTObjectIdentifiers.id_slh_dsa_shake_256f, "SLH-DSA-SHAKE-256F");
236+
237+
addSimpleAlg(BCObjectIdentifiers.picnic_signature, "Picnic");
207238
}
208239

209240
/**

0 commit comments

Comments
 (0)