< prev index next >

src/jdk.crypto.cryptoki/share/classes/sun/security/pkcs11/P11TlsMasterSecretGenerator.java

Print this page

        

*** 145,166 **** Session session = null; try { session = token.getObjSession(); CK_ATTRIBUTE[] attributes = token.getAttributes(O_GENERATE, CKO_SECRET_KEY, CKK_GENERIC_SECRET, new CK_ATTRIBUTE[0]); ! long keyID = token.p11.C_DeriveKey(session.id(), ! new CK_MECHANISM(mechanism, params), p11Key.keyID, attributes); int major, minor; if (params.pVersion == null) { major = -1; minor = -1; } else { major = params.pVersion.major; minor = params.pVersion.minor; } SecretKey key = P11Key.masterSecretKey(session, keyID, ! "TlsMasterSecret", 48 << 3, attributes, major, minor); return key; } catch (Exception e) { throw new ProviderException("Could not generate key", e); } finally { token.releaseSession(session); --- 145,173 ---- Session session = null; try { session = token.getObjSession(); CK_ATTRIBUTE[] attributes = token.getAttributes(O_GENERATE, CKO_SECRET_KEY, CKK_GENERIC_SECRET, new CK_ATTRIBUTE[0]); ! p11Key.incNativeKeyRef(); ! long keyID; ! try { ! keyID = token.p11.C_DeriveKey(session.id(), ! new CK_MECHANISM(mechanism, params), ! p11Key.keyID, attributes); ! } finally { ! p11Key.decNativeKeyRef(); ! } int major, minor; if (params.pVersion == null) { major = -1; minor = -1; } else { major = params.pVersion.major; minor = params.pVersion.minor; } SecretKey key = P11Key.masterSecretKey(session, keyID, ! "TlsMasterSecret", 48 << 3, attributes, major, minor, true); return key; } catch (Exception e) { throw new ProviderException("Could not generate key", e); } finally { token.releaseSession(session);
< prev index next >