--- a/jdk/src/jdk.crypto.mscapi/windows/classes/sun/security/mscapi/Key.java Wed Jul 05 22:05:29 2017 +0200
+++ b/jdk/src/jdk.crypto.mscapi/windows/classes/sun/security/mscapi/Key.java Mon Aug 15 23:45:32 2016 +0300
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2005, 2013, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2005, 2016, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -30,7 +30,6 @@
/**
* The handle for an RSA or DSA key using the Microsoft Crypto API.
*
- * @see DSAPrivateKey
* @see RSAPrivateKey
* @see RSAPublicKey
*
@@ -41,9 +40,35 @@
{
private static final long serialVersionUID = -1088859394025049194L;
- // Native handle
- protected long hCryptProv = 0;
- protected long hCryptKey = 0;
+ static class NativeHandles {
+ long hCryptProv = 0;
+ long hCryptKey = 0;
+
+ public NativeHandles(long hCryptProv, long hCryptKey) {
+ this.hCryptProv = hCryptProv;
+ this.hCryptKey = hCryptKey;
+ }
+
+ /**
+ * Finalization method
+ */
+ protected void finalize() throws Throwable
+ {
+ try {
+ synchronized(this)
+ {
+ cleanUp(hCryptProv, hCryptKey);
+ hCryptProv = 0;
+ hCryptKey = 0;
+ }
+
+ } finally {
+ super.finalize();
+ }
+ }
+ }
+
+ protected NativeHandles handles;
// Key length
protected int keyLength = 0;
@@ -51,29 +76,10 @@
/**
* Construct a Key object.
*/
- protected Key(long hCryptProv, long hCryptKey, int keyLength)
- {
- this.hCryptProv = hCryptProv;
- this.hCryptKey = hCryptKey;
- this.keyLength = keyLength;
- }
-
- /**
- * Finalization method
- */
- protected void finalize() throws Throwable
+ protected Key(NativeHandles handles, int keyLength)
{
- try {
- synchronized(this)
- {
- cleanUp(hCryptProv, hCryptKey);
- hCryptProv = 0;
- hCryptKey = 0;
- }
-
- } finally {
- super.finalize();
- }
+ this.handles = handles;
+ this.keyLength = keyLength;
}
/**
@@ -96,7 +102,7 @@
*/
public long getHCryptKey()
{
- return hCryptKey;
+ return handles.hCryptKey;
}
/**
@@ -104,12 +110,12 @@
*/
public long getHCryptProvider()
{
- return hCryptProv;
+ return handles.hCryptProv;
}
/**
* Returns the standard algorithm name for this key. For
- * example, "DSA" would indicate that this key is a DSA key.
+ * example, "RSA" would indicate that this key is a RSA key.
* See Appendix A in the <a href=
* "../../../guide/security/CryptoSpec.html#AppA">
* Java Cryptography Architecture API Specification & Reference </a>