On Mon, 27 Jan 2025 12:39:45 GMT, Konanki Sreenath <[email protected]> wrote:
> Earlier code will trigger NPE if the certificate does not contain the
> extensions or if the requested extensions does not exist. The better approach
> for hardening **getExtensionValue** here is to to check for NULL explicitly
> before calling **getExtensionValue()** and avoding try-catch block which
> ensures the readability and maintainability.
>
> After scanning in multiple places where invokng getExtensions on the
> X509CertInfo reference, the check for NULL is added in the **getKeyUsage()**
> as well while calling before **getExtensionValue()**
>
> The associated tests are written and added in test class
> **CertificateExtensions**. Which will ensure to validate the
> **getExtensionValue()** and **getKeyUsage()** methods in **X509CertImpl**
> class.
src/java.base/share/classes/sun/security/x509/X509CertImpl.java line 1:
> 1: /*
Copyright year should be 2025 since the file is changed
test/jdk/java/security/cert/X509Certificate/CertificateExtensions.java line 27:
> 25: * @test
> 26: * @bug 8346094
> 27: * @summary validating getExtensionValue and getKeyUsage with specified
> and unspecified extensions on the X509Certificate.
Check line indentation issue
test/jdk/java/security/cert/X509Certificate/CertificateExtensions.java line 30:
> 28: * @library /test/lib
> 29: * @modules java.base/sun.security.x509
> 30: * java.base/sun.security.util
Check line indentation issue
test/jdk/java/security/cert/X509Certificate/CertificateExtensions.java line 58:
> 56: * else it is incorrect
> 57: */
> 58:
> x509Certimpl.getInfo().setExtensions(createCertificateExtensions(x509Certimpl.getInfo().getKey().getKey()));
Line indentation issue
test/jdk/java/security/cert/X509Certificate/CertificateExtensions.java line 61:
> 59:
> Asserts.assertNotNull(x509Certimpl.getExtensionValue("2.5.29.17"));
> 60: /**
> 61: * Certificate is created with extensions. Invoking
> getExtensionValue with invalid oid must return NULL
Same comment as above
test/jdk/java/security/cert/X509Certificate/CertificateExtensions.java line 101:
> 99: x509CertInfo.setSubject(subject);
> 100:
> 101: //create and set the subject and issuer unique identity
Give space after //
test/jdk/java/security/cert/X509Certificate/CertificateExtensions.java line 126:
> 124: byte[] signedCert = {};
> 125:
> 126: x509Certimpl = new X509CertImpl(x509CertInfo,
> AlgorithmId.get("SHA256withRSA"), signedData, signedCert);
Line indentation
test/jdk/java/security/cert/X509Certificate/CertificateExtensions.java line 134:
> 132: }
> 133:
> 134: public static sun.security.x509.CertificateExtensions
> createCertificateExtensions(PublicKey publicKey) throws IOException,
> NoSuchAlgorithmException {
Same comment as above
test/jdk/java/security/cert/X509Certificate/CertificateExtensions.java line 136:
> 134: public static sun.security.x509.CertificateExtensions
> createCertificateExtensions(PublicKey publicKey) throws IOException,
> NoSuchAlgorithmException {
> 135: // Create Extensions
> 136: sun.security.x509.CertificateExtensions certificateExtensions =
> new sun.security.x509.CertificateExtensions();
Same comment
-------------
PR Review Comment: https://git.openjdk.org/jdk/pull/23315#discussion_r1942207350
PR Review Comment: https://git.openjdk.org/jdk/pull/23315#discussion_r1942209828
PR Review Comment: https://git.openjdk.org/jdk/pull/23315#discussion_r1942210035
PR Review Comment: https://git.openjdk.org/jdk/pull/23315#discussion_r1942210479
PR Review Comment: https://git.openjdk.org/jdk/pull/23315#discussion_r1942210641
PR Review Comment: https://git.openjdk.org/jdk/pull/23315#discussion_r1942210931
PR Review Comment: https://git.openjdk.org/jdk/pull/23315#discussion_r1942211209
PR Review Comment: https://git.openjdk.org/jdk/pull/23315#discussion_r1942211366
PR Review Comment: https://git.openjdk.org/jdk/pull/23315#discussion_r1942211452