IBM Support

PH09935: IBMJCEHYBRID CATCHES CLONENOTSUPPORTEDEXCEPTION FOR PKCS11IMPL BUT THROWS RUNTIMEEXCEPTION INSTEAD

Subscribe to this APAR

By subscribing, you receive periodic emails alerting you to the status of the APAR, along with a link to the fix after it becomes available. You can track this item individually or track all items by product.

Notify me when this APAR changes.

Notify me when an APAR for this component changes.

 

APAR status

  • Closed as program error.

Error description

  • Error Message: java.lang.RuntimeException
    .
    Stack Trace: javax.net.ssl.SSLException:
    java.lang.RuntimeException: java.lang.CloneNotSupportedException
        at com.ibm.jsse2.k.a(k.java:32)
        at com.ibm.jsse2.av.a(av.java:688)
        at com.ibm.jsse2.av.a(av.java:379)
        at com.ibm.jsse2.av.a(av.java:346)
        at com.ibm.jsse2.av.a(av.java:815)
        at com.ibm.jsse2.av.startHandshake(av.java:431)
        at
    com.ibm.test.jsse2.test.HandshakeTests$16.check(HandshakeTests.j
    ava:889)
        at
    com.ibm.test.jsse2.common.SSLTests.createSockets(SSLTests.java:6
    5)
        at
    com.ibm.test.jsse2.common.SSLTests.createConnection(SSLTests.jav
    a:29)
        at
    com.ibm.test.jsse2.test.HandshakeTests.SSLGPCC03(HandshakeTests.
    java:866)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native
    Method)
        at
    sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessor
    Impl.java:90)
        at
    sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethod
    AccessorImpl.java:55)
        at java.lang.reflect.Method.invoke(Method.java:508)
        at
    org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(Fram
    eworkMethod.java:50)
        at
    org.junit.internal.runners.model.ReflectiveCallable.run(Reflecti
    veCallable.java:12)
        at
    org.junit.runners.model.FrameworkMethod.invokeExplosively(Framew
    orkMethod.java:47)
        at
    org.junit.internal.runners.statements.InvokeMethod.evaluate(Invo
    keMethod.java:17)
        at
    org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:325)
        at
    org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4Cla
    ssRunner.java:78)
        at
    org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4Cla
    ssRunner.java:57)
        at
    org.junit.runners.ParentRunner$3.run(ParentRunner.java:290)
        at
    org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:71)
        at
    org.junit.runners.ParentRunner.runChildren(ParentRunner.java:288
    )
        at
    org.junit.runners.ParentRunner.access$000(ParentRunner.java:58)
        at
    org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:268)
        at
    org.junit.internal.runners.statements.RunAfters.evaluate(RunAfte
    rs.java:27)
        at org.junit.runners.ParentRunner.run(ParentRunner.java:363)
        at org.junit.runners.Suite.runChild(Suite.java:128)
        at org.junit.runners.Suite.runChild(Suite.java:27)
        at
    org.junit.runners.ParentRunner$3.run(ParentRunner.java:290)
        at
    org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:71)
        at
    org.junit.runners.ParentRunner.runChildren(ParentRunner.java:288
    )
        at
    org.junit.runners.ParentRunner.access$000(ParentRunner.java:58)
        at
    org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:268)
        at
    org.junit.internal.runners.statements.RunBefores.evaluate(RunBef
    ores.java:26)
        at
    org.junit.internal.runners.statements.RunAfters.evaluate(RunAfte
    rs.java:27)
        at org.junit.runners.ParentRunner.run(ParentRunner.java:363)
        at
    junit.framework.JUnit4TestAdapter.run(JUnit4TestAdapter.java:38)
        at
    org.apache.tools.ant.taskdefs.optional.junit.JUnitTestRunner.run
    (JUnitTestRunner.java:535)
        at
    org.apache.tools.ant.taskdefs.optional.junit.JUnitTestRunner.lau
    nch(JUnitTestRunner.java:1182)
        at
    org.apache.tools.ant.taskdefs.optional.junit.JUnitTestRunner.mai
    n(JUnitTestRunner.java:1033)
    Caused by: java.lang.RuntimeException:
    java.lang.CloneNotSupportedException
        at
    com.ibm.crypto.ibmjcehybrid.provider.HybridMessageDigest.clone(H
    ybridMessageDigest.java:356)
        at
    com.ibm.crypto.ibmjcehybrid.provider.SHA3DigestHybrid.clone(SHA3
    DigestHybrid.java:26)
        at
    java.security.MessageDigest$Delegate.clone(MessageDigest.java:57
    1)
        at com.ibm.jsse2.af.a(af.java:30)
        at com.ibm.jsse2.x.b(x.java:25)
        at com.ibm.jsse2.F.a(F.java:844)
        at com.ibm.jsse2.F.a(F.java:922)
        at com.ibm.jsse2.D.r(D.java:444)
        at com.ibm.jsse2.D.a(D.java:399)
        at com.ibm.jsse2.av.a(av.java:1006)
        at com.ibm.jsse2.av.i(av.java:574)
        at com.ibm.jsse2.av.a(av.java:280)
        ... 37 more
    Caused by: java.lang.CloneNotSupportedException
        at
    com.ibm.crypto.pkcs11impl.provider.GeneralHashing.clone(GeneralH
    ashing.java:174)
        at
    java.security.MessageDigest$Delegate.clone(MessageDigest.java:57
    1)
        at
    com.ibm.crypto.ibmjcehybrid.provider.HybridMessageDigest.clone(H
    ybridMessageDigest.java:300)
        ... 48 more
    .
    Only occurs when configured list of security providers in either
    the $JAVA_HOME/lib/security/java.securtiy file or within the
    application code has IBMJCEHYBRID configured prior to PKCS11Impl
    provider
    

Local fix

  • N/A
    

Problem summary

  • When a IBMJCEHYBRID message digests are cloned the underlying
    provider message digest from PKCS11Impl is also attempted to be
    cloned. PKCS11Impl correctly throws the
    CloneNotSupportedException exception as it does not support
    cloning. When IBMJCEHYBRID catches this failure from
    PKCS11Impl it incorrectly throws a RuntimeException instead of a
    CloneNotSupportedException exception.
    

Problem conclusion

  • After this update IBMJCEHYBRID correctly catches and throws the
    CloneNotSupportedException when using PKCS11Impl. IBMJCEHYBRID
    message digest clone operations will act similar to PKCS11Impl
    if PKCS11Impl ( or any other provider ) is placed into the
    java.security provider list that does not support cloning.
    .
    This APAR will be fixed in the following Java Releases:
       8    SR5 FP35  (8.0.5.35)
    .
    Contact your IBM Product's Service Team for these Service
    Refreshes and Fix Packs.
    For those running stand-alone, information about the available
    Service Refreshes and Fix Packs can be found at:
               https://www.ibm.com/developerworks/java/jdk/
    

Temporary fix

Comments

APAR Information

  • APAR number

    PH09935

  • Reported component name

    JAVA Z/OS 64

  • Reported component ID

    620700104

  • Reported release

    800

  • Status

    CLOSED PER

  • PE

    NoPE

  • HIPER

    NoHIPER

  • Special Attention

    NoSpecatt / Xsystem

  • Submitted date

    2019-03-19

  • Closed date

    2019-03-29

  • Last modified date

    2019-03-29

  • APAR is sysrouted FROM one or more of the following:

  • APAR is sysrouted TO one or more of the following:

Fix information

  • Fixed component name

    JAVA Z/OS 64

  • Fixed component ID

    620700104

Applicable component levels

[{"Business Unit":{"code":"BU054","label":"Systems w\/TPS"},"Product":{"code":"SG19M","label":"APARs - z\/OS environment"},"Component":"","ARM Category":[],"Platform":[{"code":"PF025","label":"Platform Independent"}],"Version":"800","Edition":"","Line of Business":{"code":"LOB16","label":"Mainframe HW"}},{"Business Unit":{"code":"BU054","label":"Systems w\/TPS"},"Product":{"code":"SG19M","label":"APARs - z\/OS environment"},"Component":"","ARM Category":[],"Platform":[{"code":"PF025","label":"Platform Independent"}],"Version":"800","Edition":"","Line of Business":{"code":"","label":""}}]

Document Information

Modified date:
09 August 2022