If you look at the original SunJCE impl, it also did not register oid for RC4 cipher. So, that's why I didn't include RC4 oid in SecurityProviderConstants in the aliases for RC4.

If I recall correctly, "RC4" is the algorithm name, however, due to some patent(?) concern, non-RSA vendors register their impl under "ARCFOUR" and set "RC4" to be the alias. So, that's the convention that I continue to use, i.e. use "ARCFOUR" as the standard name and "RC4" as the alias.

I can add the oid as the RC4 alias for completeness sake. (Will update in webrev.02)

Thanks,
Valerie
On 4/28/2020 2:39 AM, Weijun Wang wrote:
I found two algorithm names in a very twisted relation, in 
SecurityProviderConstants.java:

         store("ARCFOUR", "RC4");

and in OidString.java:

     RC4("1.2.840.113549.3.4", "ARCFOUR")

So each is the other's alias, and because of this, Cipher.ARCFOUR does not have 
OID aliases.

I can see in 
https://download.java.net/java/early_access/jdk15/docs/specs/security/standard-names.html 
that both ARCFOUR and RC4 are standard names. In my understanding, this means both must 
be supported and it looks like some kind of "required" alias. Is this the 
reason we have to define them in this way?

Thanks,
Max


On Apr 28, 2020, at 4:53 PM, Weijun Wang <weijun.w...@oracle.com> wrote:

Where is the following OID used

      RSAEncryption("1.2.840.113549.1.1.1", "RSA"), // in RSA Cipher

I only found in RSAUtil.java:

                case RSA:
                    oid = AlgorithmId.RSAEncryption_oid;
                    break;

What if we do not give it a different stdName? Or, should we make it an alias 
in SunJCE for Cipher.RSA?

--Max


On Apr 24, 2020, at 7:11 AM, Valerie Peng <valerie.p...@oracle.com> wrote:

Hi Max,

Would you have time to review this change? The current webrev attempts to cover 
all security classes where hard-coded oid strings and consolidate these known 
oid string values into a single enum type. The changes are quite extensive, I 
can trim back and only cover the provider algorithm oids if you prefer. There 
are pros and cons for both approach.

I know that the naming convention is to use all upper case for enum constants, 
but choose to use the same naming convention as standard names to simplify the 
code. SecurityProviderConstants class defines the common mappings which are 
general to providers. Provider-specific alias mappings are handled in specific 
provider class, e.g. SunJSSE class.

RFE: https://bugs.openjdk.java.net/browse/JDK-8242151

Webrev: http://cr.openjdk.java.net/~valeriep/8242151/webrev.00/

Mach5 runs clean.

Valerie

Reply via email to