JDK-8215320 : Amend the Standard Algorithm Names specification to clarify that names can be defined in later versions
  • Type: CSR
  • Component: security-libs
  • Sub-Component: java.security
  • Priority: P2
  • Status: Closed
  • Resolution: Approved
  • Fix Versions: 11-pool,12
  • Submitted: 2018-12-12
  • Updated: 2019-07-04
  • Resolved: 2019-01-17
Related Reports
CSR :  
Description
Summary
-------

The Java Security Standard Algorithm Names specification should be clarified to state that, as a best practice, implementations that support additional algorithms not defined in the specification can and should use the standard name of those algorithms if they are defined in later versions of the specification. 

Problem
-------

The security landscape changes at a fast pace, and new and stronger algorithms and protocols are constantly being developed and standardized.  
With this proposed change, we will clarify that implementations that support additional algorithms are recommended to use the standard name of those algorithms if they have been added to subsequent versions of the Java Security Standard Algorithm Names specification.

Solution
--------

See the specification section. This change will be included in the upcoming Maintenance Reviews of the Java SE 8 and 11 Platform JSRs. See https://mail.openjdk.java.net/pipermail/jdk-updates-dev/2018-December/000308.html for more information.

This change is targeted for Java SE 8, 11 and 12 and is the same across all releases. This CSR is intended to cover both 11 and 12, thus the `fixVersion` has been set to `11-pool` and `12`. A separate CCC will be filed and targeted to `8-pool`.

Specification
-------------

Add the following sentence to the first section ("Standard Names") of the Java Security Standard Algorithm Names specification: 

    Note that an SE implementation may support additional algorithms
    that are not defined in this specification.  As a best practice, if an
    algorithm is defined in a subsequent version of this specification and
    an implementation of an earlier specification supports that algorithm,
    the implementation should use the standard name of the algorithm
    that is defined in the subsequent specification.  Each SE implementation
    should also document the algorithms that it supports or adds support
    for in subsequent update releases.  The algorithms may be documented
    in release notes or in a separate document such as the JDK Security
    Providers document.

With this change, the first section is now the following:

    The Java SE Security API requires and uses a set of standard
    names for algorithms, certificate and keystore types.

    Note that an SE implementation may support additional algorithms
    that are not defined in this specification.  As a best practice, if an
    algorithm is defined in a subsequent version of this specification and
    an implementation of an earlier specification supports that algorithm,
    the implementation should use the standard name of the algorithm
    that is defined in the subsequent specification.  Each SE implementation
    should also document the algorithms that it supports or adds support
    for in subsequent update releases.  The algorithms may be documented
    in release notes or in a separate document such as the JDK Security
    Providers document.

    In some cases naming conventions are given for forming names
    that are not explicitly listed, to facilitate name consistency
    across provider implementations. Items in angle brackets (such as
    <digest> and <encryption>) are placeholders to be replaced by a
    specific message digest, encryption algorithm, or other name.

    Note: Standard names are not case-sensitive.
Comments
[~mullan], thank you for making the changes in the wording; moving to Approved.
17-01-2019

CSR has been moved from Pending to Finalized. [~darcy] To address your concerns, I have adjusted the wording to recommend that, as a best practice, implementations should use standard names for additional algorithms that they choose to support if those standard names are defined in later versions of the Java Security Standard Algorithm Names specification. I have also added text to recommend that the algorithms that an implementation supports be documented in release notes or a separate document similar to the JDK Providers guide: https://docs.oracle.com/en/java/javase/11/security/oracle-providers.html#GUID-FE2D2E28-C991-4EF9-9DBE-2A4982726313 Going forward, I will also investigate potentially adding a new API that returns the supported algorithms in a readable format.
17-01-2019

With the proposed wording, it is not clear to me which version of Standard Names document would be allowable under particular JDK update release. I'm marking this CSR as pended while that issue is discussed.
11-01-2019