ノート

[BUG] 8379675: test/jdk/sun/security/pkcs11/rsa/GenKeyStore.java uses removed methods

GenKeyStore.java の証明書生成処理を X509CertImpl.newSigned へ置き換えました。

概要#

 GenKeyStore.java は,​RSA テスト用の​ keystore を​再生成する​ための​補助プログラムです。​ 通常の​テスト実行時に​動く​ものでは​ありませんが,​必要に​なった​ときに​ rsakeys.ks を​作り直せるように,​ テスト・ツリーに​置かれています。

 この​ファイルの​証明書生成処理では,X509CertInfo に​ AlgorithmId を​明示的に​設定し,​ 最後に​ X509CertImpl#sign(...) を​呼び出していました。​ しかし,​この​書き方では​削除済みの​ API を​使うことに​なる​ため,​ X509CertImpl.newSigned(...) を​使う​形へ​置き換えました1

 変更後は,AlgorithmId の​設定と​ sign(...) の​呼び出しを​ newSigned(...) 側へ​任せています。​ その​ため,​証明書生成の​流れは​同じまま,​重複していた​手順が​減りました。

-        AlgorithmId algID = AlgorithmId.getAlgorithmId(algorithm);
-
         X509CertInfo certInfo = new X509CertInfo();
-        certInfo.set(X509CertInfo.ALGORITHM_ID, new CertificateAlgorithmId(algID));
         ...
-        X509CertImpl cert = new X509CertImpl(certInfo);
-        cert.sign(privateKey, algorithm);
-
-        return cert;
+        return X509CertImpl.newSigned(certInfo, privateKey, algorithm);

 また,X509CertInfo#set(...) で​フィールド名を​渡していた​箇所も,​ setVersion(...) や​ setSerialNumber(...) などの​専用メソッドに​置き換えました。​ 機能変更は​意図していません2

2026/04/04 JBS で​発見#

 本件を​ JBS で​発見し,GenKeyStore.java の​証明書生成処理を​確認しました。​ JBS の​タイトルには​ test/jdk/sun/security/pkcs11/rsa/GenKeyStore.java と​ありますが,​ 実際に​変更した​ファイルは​ test/jdk/sun/security/rsa/GenKeyStore.java です1

 PR では,​削除済みメソッドの​利用を​避ける​ことを​主目的に​し,​ 明示的な​ AlgorithmId 設定と​ sign(...) 呼び出しを​削除しました2

2026/04/04 レビュー対応#

 Weijun Wang 氏3から,​変更自体は​問題ないとの​コメントを​いただきました。​ あわせて,​この​プログラムが​モジュール導入前に​書かれた​ものである​ため,​ 現在の​実行方​法を​コメントと​して​残すこと,getCertificate(...) の​長い​シグネチャを​折り返すこと,​ copyright 年を​ 2026 年へ​更新する​ことを​提案いただきました。

 これを​受けて,​ファイル先頭付近に​以下の​実行例を​追加しました。

java --add-exports java.base/sun.security.x509=ALL-UNNAMED GenKeyStore.java

2026/04/05 レビュー#

 Wang 氏3に​ Approve を​していただき,/integrate を​行いました。

2026/04/06 統合#

 同氏に​ /sponsor を​していただき,1d290104 と​して​ JDK へ​統合されました。


Footnotes#

  1. 2
  2. 2
  3. 2