> We would like to propose an implementation for the [JDK-8301553: Support 
> Password-Based Cryptography in 
> SunPKCS11](https://bugs.openjdk.org/browse/JDK-8301553) enhancement 
> requirement.
> 
> In addition to pursuing the requirement goals and guidelines of 
> [JDK-8301553](https://bugs.openjdk.org/browse/JDK-8301553), we want to share 
> the following implementation notes (grouped per altered file):
> 
>   * 
> ```src/java.base/share/classes/com/sun/crypto/provider/HmacPKCS12PBECore.java```
>  (modified)
>     * This file contains the ```SunJCE``` implementation for the [PKCS #12 
> General Method for Password 
> Integrity](https://datatracker.ietf.org/doc/html/rfc7292#appendix-B) 
> algorithms. It has been modified with the intent of consolidating all 
> parameter checks in a common file 
> (```src/java.base/share/classes/sun/security/util/PBEUtil.java```), that can 
> be used both by ```SunJCE``` and ```SunPKCS11```. This change does not only 
> serve the purpose of avoiding duplicated code but also ensuring alignment and 
> compatibility between different implementations of the same algorithms. No 
> changes have been made to parameter checks themselves.
>     * The new ```PBEUtil::getPBAKeySpec``` method introduced for parameters 
> checking takes both a ```Key``` and a ```AlgorithmParameterSpec``` instance 
> (same as the ```HmacPKCS12PBECore::engineInit``` method), and returns a 
> ```PBEKeySpec``` instance which consolidates all the data later required to 
> proceed with the computation (password, salt and iteration count).
> 
>   * ```src/java.base/share/classes/com/sun/crypto/provider/PBES2Core.java``` 
> (modified)
>     * This file contains the ```SunJCE``` implementation for the [PKCS #5 
> Password-Based Encryption 
> Scheme](https://datatracker.ietf.org/doc/html/rfc8018#section-6.2) 
> algorithms, which use PBKD2 algorithms underneath for key derivation. In the 
> same spirit than for the ```HmacPKCS12PBECore``` case, we decided to 
> consolidate common code for parameters validation and default values in a 
> single file 
> (```src/java.base/share/classes/sun/security/util/PBEUtil.java```), that can 
> serve both ```SunJCE``` and ```SunPKCS11``` and ensure compatibility. 
> However, instead of a single static method at the implementation level (see 
> ```PBEUtil::getPBAKeySpec```), we create an instance of an auxiliary class 
> and invoke an instance method (```PBEUtil.PBES2Params::getPBEKeySpec```). The 
> reason is to persist parameters data that has to be consistent between calls 
> to ```PBES2Core::engineInit``` (in its multiple overloads) ...

Martin Balao has updated the pull request incrementally with one additional 
commit since the last revision:

  8301553: Support Password-Based Cryptography in SunPKCS11 (iteration #3)
  
  Co-authored-by: Francisco Ferrari <fferr...@redhat.com>
  Co-authored-by: Martin Balao <mba...@redhat.com>

-------------

Changes:
  - all: https://git.openjdk.org/jdk/pull/12396/files
  - new: https://git.openjdk.org/jdk/pull/12396/files/41b14723..80575ccb

Webrevs:
 - full: https://webrevs.openjdk.org/?repo=jdk&pr=12396&range=04
 - incr: https://webrevs.openjdk.org/?repo=jdk&pr=12396&range=03-04

  Stats: 6 lines in 1 file changed: 5 ins; 0 del; 1 mod
  Patch: https://git.openjdk.org/jdk/pull/12396.diff
  Fetch: git fetch https://git.openjdk.org/jdk.git pull/12396/head:pull/12396

PR: https://git.openjdk.org/jdk/pull/12396

Reply via email to