@@ -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