8318096: Introduce AsymmetricKey interface with a getParams method
Reviewed-by: darcy, mullan, ascarpino
This commit is contained in:
parent
4a142c3b08
commit
9123961aaa
52
src/java.base/share/classes/java/security/AsymmetricKey.java
Normal file
52
src/java.base/share/classes/java/security/AsymmetricKey.java
Normal file
@ -0,0 +1,52 @@
|
|||||||
|
/*
|
||||||
|
* Copyright (c) 2023, 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
|
||||||
|
* under the terms of the GNU General Public License version 2 only, as
|
||||||
|
* published by the Free Software Foundation. Oracle designates this
|
||||||
|
* particular file as subject to the "Classpath" exception as provided
|
||||||
|
* by Oracle in the LICENSE file that accompanied this code.
|
||||||
|
*
|
||||||
|
* This code is distributed in the hope that it will be useful, but WITHOUT
|
||||||
|
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||||
|
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
|
||||||
|
* version 2 for more details (a copy is included in the LICENSE file that
|
||||||
|
* accompanied this code).
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU General Public License version
|
||||||
|
* 2 along with this work; if not, write to the Free Software Foundation,
|
||||||
|
* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
|
||||||
|
*
|
||||||
|
* Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
|
||||||
|
* or visit www.oracle.com if you need additional information or have any
|
||||||
|
* questions.
|
||||||
|
*/
|
||||||
|
|
||||||
|
package java.security;
|
||||||
|
|
||||||
|
import java.security.spec.AlgorithmParameterSpec;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* An asymmetric key, which can be either a public key or a private key.
|
||||||
|
* This interface contains methods that are common to either a public key or
|
||||||
|
* a private key.
|
||||||
|
*
|
||||||
|
* @since 22
|
||||||
|
*/
|
||||||
|
public interface AsymmetricKey extends Key {
|
||||||
|
/**
|
||||||
|
* Returns the parameters associated with this key.
|
||||||
|
* The parameters are optional and may be either
|
||||||
|
* explicitly specified or implicitly created during
|
||||||
|
* key pair generation.
|
||||||
|
*
|
||||||
|
* @implSpec
|
||||||
|
* The default implementation returns {@code null}.
|
||||||
|
*
|
||||||
|
* @return the associated parameters, may be {@code null}
|
||||||
|
*/
|
||||||
|
default AlgorithmParameterSpec getParams() {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
}
|
@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright (c) 1996, 2022, Oracle and/or its affiliates. All rights reserved.
|
* Copyright (c) 1996, 2023, Oracle and/or its affiliates. All rights reserved.
|
||||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||||
*
|
*
|
||||||
* This code is free software; you can redistribute it and/or modify it
|
* This code is free software; you can redistribute it and/or modify it
|
||||||
@ -57,7 +57,7 @@ package java.security;
|
|||||||
* @since 1.1
|
* @since 1.1
|
||||||
*/
|
*/
|
||||||
|
|
||||||
public interface PrivateKey extends Key, javax.security.auth.Destroyable {
|
public interface PrivateKey extends AsymmetricKey, javax.security.auth.Destroyable {
|
||||||
|
|
||||||
// Declare serialVersionUID to be compatible with JDK1.1
|
// Declare serialVersionUID to be compatible with JDK1.1
|
||||||
/**
|
/**
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright (c) 1996, 2022, Oracle and/or its affiliates. All rights reserved.
|
* Copyright (c) 1996, 2023, Oracle and/or its affiliates. All rights reserved.
|
||||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||||
*
|
*
|
||||||
* This code is free software; you can redistribute it and/or modify it
|
* This code is free software; you can redistribute it and/or modify it
|
||||||
@ -44,7 +44,7 @@ package java.security;
|
|||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
|
|
||||||
public interface PublicKey extends Key {
|
public interface PublicKey extends AsymmetricKey {
|
||||||
// Declare serialVersionUID to be compatible with JDK1.1
|
// Declare serialVersionUID to be compatible with JDK1.1
|
||||||
/**
|
/**
|
||||||
* The class fingerprint that is set to indicate serialization
|
* The class fingerprint that is set to indicate serialization
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright (c) 1996, 2022, Oracle and/or its affiliates. All rights reserved.
|
* Copyright (c) 1996, 2023, Oracle and/or its affiliates. All rights reserved.
|
||||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||||
*
|
*
|
||||||
* This code is free software; you can redistribute it and/or modify it
|
* This code is free software; you can redistribute it and/or modify it
|
||||||
@ -26,6 +26,7 @@
|
|||||||
package java.security.interfaces;
|
package java.security.interfaces;
|
||||||
|
|
||||||
import java.math.BigInteger;
|
import java.math.BigInteger;
|
||||||
|
import java.security.spec.AlgorithmParameterSpec;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Interface to a DSA-specific set of key parameters, which defines a
|
* Interface to a DSA-specific set of key parameters, which defines a
|
||||||
@ -40,7 +41,7 @@ import java.math.BigInteger;
|
|||||||
* @author Josh Bloch
|
* @author Josh Bloch
|
||||||
* @since 1.1
|
* @since 1.1
|
||||||
*/
|
*/
|
||||||
public interface DSAParams {
|
public interface DSAParams extends AlgorithmParameterSpec {
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Returns the prime, {@code p}.
|
* Returns the prime, {@code p}.
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright (c) 1997, 2022, Oracle and/or its affiliates. All rights reserved.
|
* Copyright (c) 1997, 2023, Oracle and/or its affiliates. All rights reserved.
|
||||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||||
*
|
*
|
||||||
* This code is free software; you can redistribute it and/or modify it
|
* This code is free software; you can redistribute it and/or modify it
|
||||||
@ -62,4 +62,18 @@ public interface DSAPrivateKey extends DSAKey, java.security.PrivateKey {
|
|||||||
* @return the value of the private key, {@code x}.
|
* @return the value of the private key, {@code x}.
|
||||||
*/
|
*/
|
||||||
BigInteger getX();
|
BigInteger getX();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* {@inheritDoc java.security.AsymmetricKey}
|
||||||
|
*
|
||||||
|
* @implSpec
|
||||||
|
* The default implementation returns {@code null}.
|
||||||
|
*
|
||||||
|
* @return {@inheritDoc java.security.AsymmetricKey}
|
||||||
|
* @since 22
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
default DSAParams getParams() {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright (c) 1996, 2022, Oracle and/or its affiliates. All rights reserved.
|
* Copyright (c) 1996, 2023, Oracle and/or its affiliates. All rights reserved.
|
||||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||||
*
|
*
|
||||||
* This code is free software; you can redistribute it and/or modify it
|
* This code is free software; you can redistribute it and/or modify it
|
||||||
@ -62,4 +62,18 @@ public interface DSAPublicKey extends DSAKey, java.security.PublicKey {
|
|||||||
* @return the value of the public key, {@code y}.
|
* @return the value of the public key, {@code y}.
|
||||||
*/
|
*/
|
||||||
BigInteger getY();
|
BigInteger getY();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* {@inheritDoc java.security.AsymmetricKey}
|
||||||
|
*
|
||||||
|
* @implSpec
|
||||||
|
* The default implementation returns {@code null}.
|
||||||
|
*
|
||||||
|
* @return {@inheritDoc java.security.AsymmetricKey}
|
||||||
|
* @since 22
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
default DSAParams getParams() {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright (c) 2003, 2022, Oracle and/or its affiliates. All rights reserved.
|
* Copyright (c) 2003, 2023, Oracle and/or its affiliates. All rights reserved.
|
||||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||||
*
|
*
|
||||||
* This code is free software; you can redistribute it and/or modify it
|
* This code is free software; you can redistribute it and/or modify it
|
||||||
@ -26,6 +26,7 @@ package java.security.interfaces;
|
|||||||
|
|
||||||
import java.math.BigInteger;
|
import java.math.BigInteger;
|
||||||
import java.security.PrivateKey;
|
import java.security.PrivateKey;
|
||||||
|
import java.security.spec.ECParameterSpec;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* The interface to an elliptic curve (EC) private key.
|
* The interface to an elliptic curve (EC) private key.
|
||||||
@ -56,4 +57,18 @@ public interface ECPrivateKey extends PrivateKey, ECKey {
|
|||||||
* @return the private value S.
|
* @return the private value S.
|
||||||
*/
|
*/
|
||||||
BigInteger getS();
|
BigInteger getS();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* {@inheritDoc java.security.AsymmetricKey}
|
||||||
|
*
|
||||||
|
* @implSpec
|
||||||
|
* The default implementation returns {@code null}.
|
||||||
|
*
|
||||||
|
* @return {@inheritDoc java.security.AsymmetricKey}
|
||||||
|
* @since 22
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
default ECParameterSpec getParams() {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright (c) 2003, 2022, Oracle and/or its affiliates. All rights reserved.
|
* Copyright (c) 2003, 2023, Oracle and/or its affiliates. All rights reserved.
|
||||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||||
*
|
*
|
||||||
* This code is free software; you can redistribute it and/or modify it
|
* This code is free software; you can redistribute it and/or modify it
|
||||||
@ -25,6 +25,7 @@
|
|||||||
package java.security.interfaces;
|
package java.security.interfaces;
|
||||||
|
|
||||||
import java.security.PublicKey;
|
import java.security.PublicKey;
|
||||||
|
import java.security.spec.ECParameterSpec;
|
||||||
import java.security.spec.ECPoint;
|
import java.security.spec.ECPoint;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -58,4 +59,18 @@ public interface ECPublicKey extends PublicKey, ECKey {
|
|||||||
* @return the public point W.
|
* @return the public point W.
|
||||||
*/
|
*/
|
||||||
ECPoint getW();
|
ECPoint getW();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* {@inheritDoc java.security.AsymmetricKey}
|
||||||
|
*
|
||||||
|
* @implSpec
|
||||||
|
* The default implementation returns {@code null}.
|
||||||
|
*
|
||||||
|
* @return {@inheritDoc java.security.AsymmetricKey}
|
||||||
|
* @since 22
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
default ECParameterSpec getParams() {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright (c) 2020, Oracle and/or its affiliates. All rights reserved.
|
* Copyright (c) 2020, 2023, Oracle and/or its affiliates. All rights reserved.
|
||||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||||
*
|
*
|
||||||
* This code is free software; you can redistribute it and/or modify it
|
* This code is free software; you can redistribute it and/or modify it
|
||||||
@ -25,6 +25,7 @@
|
|||||||
package java.security.interfaces;
|
package java.security.interfaces;
|
||||||
|
|
||||||
import java.security.PrivateKey;
|
import java.security.PrivateKey;
|
||||||
|
import java.security.spec.NamedParameterSpec;
|
||||||
import java.util.Optional;
|
import java.util.Optional;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -52,4 +53,18 @@ public interface EdECPrivateKey extends EdECKey, PrivateKey {
|
|||||||
* If the key is not available, then an empty {@code Optional}.
|
* If the key is not available, then an empty {@code Optional}.
|
||||||
*/
|
*/
|
||||||
Optional<byte[]> getBytes();
|
Optional<byte[]> getBytes();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* {@inheritDoc java.security.AsymmetricKey}
|
||||||
|
*
|
||||||
|
* @implSpec
|
||||||
|
* The default implementation returns {@code null}.
|
||||||
|
*
|
||||||
|
* @return {@inheritDoc java.security.AsymmetricKey}
|
||||||
|
* @since 22
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
default NamedParameterSpec getParams() {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright (c) 2020, Oracle and/or its affiliates. All rights reserved.
|
* Copyright (c) 2020, 2023, Oracle and/or its affiliates. All rights reserved.
|
||||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||||
*
|
*
|
||||||
* This code is free software; you can redistribute it and/or modify it
|
* This code is free software; you can redistribute it and/or modify it
|
||||||
@ -26,6 +26,7 @@ package java.security.interfaces;
|
|||||||
|
|
||||||
import java.security.PublicKey;
|
import java.security.PublicKey;
|
||||||
import java.security.spec.EdECPoint;
|
import java.security.spec.EdECPoint;
|
||||||
|
import java.security.spec.NamedParameterSpec;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* An interface for an elliptic curve public key as defined by
|
* An interface for an elliptic curve public key as defined by
|
||||||
@ -47,4 +48,18 @@ public interface EdECPublicKey extends EdECKey, PublicKey {
|
|||||||
* @return the {@code EdECPoint} representing the public key.
|
* @return the {@code EdECPoint} representing the public key.
|
||||||
*/
|
*/
|
||||||
EdECPoint getPoint();
|
EdECPoint getPoint();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* {@inheritDoc java.security.AsymmetricKey}
|
||||||
|
*
|
||||||
|
* @implSpec
|
||||||
|
* The default implementation returns {@code null}.
|
||||||
|
*
|
||||||
|
* @return {@inheritDoc java.security.AsymmetricKey}
|
||||||
|
* @since 22
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
default NamedParameterSpec getParams() {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright (c) 1998, 2022, Oracle and/or its affiliates. All rights reserved.
|
* Copyright (c) 1998, 2023, Oracle and/or its affiliates. All rights reserved.
|
||||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||||
*
|
*
|
||||||
* This code is free software; you can redistribute it and/or modify it
|
* This code is free software; you can redistribute it and/or modify it
|
||||||
@ -26,6 +26,7 @@
|
|||||||
package java.security.interfaces;
|
package java.security.interfaces;
|
||||||
|
|
||||||
import java.math.BigInteger;
|
import java.math.BigInteger;
|
||||||
|
import java.security.spec.AlgorithmParameterSpec;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* The interface to an RSA private key.
|
* The interface to an RSA private key.
|
||||||
@ -59,4 +60,18 @@ public interface RSAPrivateKey extends java.security.PrivateKey, RSAKey
|
|||||||
* @return the private exponent
|
* @return the private exponent
|
||||||
*/
|
*/
|
||||||
BigInteger getPrivateExponent();
|
BigInteger getPrivateExponent();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* {@inheritDoc java.security.AsymmetricKey}
|
||||||
|
*
|
||||||
|
* @implSpec
|
||||||
|
* The default implementation returns {@code null}.
|
||||||
|
*
|
||||||
|
* @return {@inheritDoc java.security.AsymmetricKey}
|
||||||
|
* @since 22
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
default AlgorithmParameterSpec getParams() {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright (c) 1998, 2022, Oracle and/or its affiliates. All rights reserved.
|
* Copyright (c) 1998, 2023, Oracle and/or its affiliates. All rights reserved.
|
||||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||||
*
|
*
|
||||||
* This code is free software; you can redistribute it and/or modify it
|
* This code is free software; you can redistribute it and/or modify it
|
||||||
@ -26,6 +26,7 @@
|
|||||||
package java.security.interfaces;
|
package java.security.interfaces;
|
||||||
|
|
||||||
import java.math.BigInteger;
|
import java.math.BigInteger;
|
||||||
|
import java.security.spec.AlgorithmParameterSpec;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* The interface to an RSA public key.
|
* The interface to an RSA public key.
|
||||||
@ -56,4 +57,18 @@ public interface RSAPublicKey extends java.security.PublicKey, RSAKey
|
|||||||
* @return the public exponent
|
* @return the public exponent
|
||||||
*/
|
*/
|
||||||
BigInteger getPublicExponent();
|
BigInteger getPublicExponent();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* {@inheritDoc java.security.AsymmetricKey}
|
||||||
|
*
|
||||||
|
* @implSpec
|
||||||
|
* The default implementation returns {@code null}.
|
||||||
|
*
|
||||||
|
* @return {@inheritDoc java.security.AsymmetricKey}
|
||||||
|
* @since 22
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
default AlgorithmParameterSpec getParams() {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright (c) 2018, Oracle and/or its affiliates. All rights reserved.
|
* Copyright (c) 2018, 2023, Oracle and/or its affiliates. All rights reserved.
|
||||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||||
*
|
*
|
||||||
* This code is free software; you can redistribute it and/or modify it
|
* This code is free software; you can redistribute it and/or modify it
|
||||||
@ -25,6 +25,7 @@
|
|||||||
package java.security.interfaces;
|
package java.security.interfaces;
|
||||||
|
|
||||||
import java.security.PrivateKey;
|
import java.security.PrivateKey;
|
||||||
|
import java.security.spec.AlgorithmParameterSpec;
|
||||||
import java.util.Optional;
|
import java.util.Optional;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -53,5 +54,19 @@ public interface XECPrivateKey extends XECKey, PrivateKey {
|
|||||||
* and the private key is not allowed to leave the crypto boundary).
|
* and the private key is not allowed to leave the crypto boundary).
|
||||||
*/
|
*/
|
||||||
Optional<byte[]> getScalar();
|
Optional<byte[]> getScalar();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* {@inheritDoc java.security.AsymmetricKey}
|
||||||
|
*
|
||||||
|
* @implSpec
|
||||||
|
* The default implementation returns {@code null}.
|
||||||
|
*
|
||||||
|
* @return {@inheritDoc java.security.AsymmetricKey}
|
||||||
|
* @since 22
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
default AlgorithmParameterSpec getParams() {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright (c) 2018, Oracle and/or its affiliates. All rights reserved.
|
* Copyright (c) 2018, 2023, Oracle and/or its affiliates. All rights reserved.
|
||||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||||
*
|
*
|
||||||
* This code is free software; you can redistribute it and/or modify it
|
* This code is free software; you can redistribute it and/or modify it
|
||||||
@ -26,6 +26,7 @@ package java.security.interfaces;
|
|||||||
|
|
||||||
import java.math.BigInteger;
|
import java.math.BigInteger;
|
||||||
import java.security.PublicKey;
|
import java.security.PublicKey;
|
||||||
|
import java.security.spec.AlgorithmParameterSpec;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* An interface for an elliptic curve public key as defined by RFC 7748.
|
* An interface for an elliptic curve public key as defined by RFC 7748.
|
||||||
@ -52,5 +53,18 @@ public interface XECPublicKey extends XECKey, PublicKey {
|
|||||||
*/
|
*/
|
||||||
BigInteger getU();
|
BigInteger getU();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* {@inheritDoc java.security.AsymmetricKey}
|
||||||
|
*
|
||||||
|
* @implSpec
|
||||||
|
* The default implementation returns {@code null}.
|
||||||
|
*
|
||||||
|
* @return {@inheritDoc java.security.AsymmetricKey}
|
||||||
|
* @since 22
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
default AlgorithmParameterSpec getParams() {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright (c) 1997, 2022, Oracle and/or its affiliates. All rights reserved.
|
* Copyright (c) 1997, 2023, Oracle and/or its affiliates. All rights reserved.
|
||||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||||
*
|
*
|
||||||
* This code is free software; you can redistribute it and/or modify it
|
* This code is free software; you can redistribute it and/or modify it
|
||||||
@ -25,6 +25,7 @@
|
|||||||
|
|
||||||
package javax.crypto.interfaces;
|
package javax.crypto.interfaces;
|
||||||
|
|
||||||
|
import javax.crypto.spec.DHParameterSpec;
|
||||||
import java.math.BigInteger;
|
import java.math.BigInteger;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -56,4 +57,18 @@ public interface DHPrivateKey extends DHKey, java.security.PrivateKey {
|
|||||||
* @return the private value, <code>x</code>
|
* @return the private value, <code>x</code>
|
||||||
*/
|
*/
|
||||||
BigInteger getX();
|
BigInteger getX();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* {@inheritDoc java.security.AsymmetricKey}
|
||||||
|
*
|
||||||
|
* @implSpec
|
||||||
|
* The default implementation returns {@code null}.
|
||||||
|
*
|
||||||
|
* @return {@inheritDoc java.security.AsymmetricKey}
|
||||||
|
* @since 22
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
default DHParameterSpec getParams() {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright (c) 1997, 2022, Oracle and/or its affiliates. All rights reserved.
|
* Copyright (c) 1997, 2023, Oracle and/or its affiliates. All rights reserved.
|
||||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||||
*
|
*
|
||||||
* This code is free software; you can redistribute it and/or modify it
|
* This code is free software; you can redistribute it and/or modify it
|
||||||
@ -25,6 +25,7 @@
|
|||||||
|
|
||||||
package javax.crypto.interfaces;
|
package javax.crypto.interfaces;
|
||||||
|
|
||||||
|
import javax.crypto.spec.DHParameterSpec;
|
||||||
import java.math.BigInteger;
|
import java.math.BigInteger;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -56,4 +57,18 @@ public interface DHPublicKey extends DHKey, java.security.PublicKey {
|
|||||||
* @return the public value, <code>y</code>
|
* @return the public value, <code>y</code>
|
||||||
*/
|
*/
|
||||||
BigInteger getY();
|
BigInteger getY();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* {@inheritDoc java.security.AsymmetricKey}
|
||||||
|
*
|
||||||
|
* @implSpec
|
||||||
|
* The default implementation returns {@code null}.
|
||||||
|
*
|
||||||
|
* @return {@inheritDoc java.security.AsymmetricKey}
|
||||||
|
* @since 22
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
default DHParameterSpec getParams() {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -899,7 +899,8 @@ abstract class P11Key implements Key, Length {
|
|||||||
params = new DSAParameterSpec(res[0], res[1], res[2]);
|
params = new DSAParameterSpec(res[0], res[1], res[2]);
|
||||||
}
|
}
|
||||||
|
|
||||||
protected DSAParams getParams() {
|
@Override
|
||||||
|
public DSAParams getParams() {
|
||||||
fetchValues();
|
fetchValues();
|
||||||
return params;
|
return params;
|
||||||
}
|
}
|
||||||
@ -1202,7 +1203,8 @@ abstract class P11Key implements Key, Length {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
protected ECParameterSpec getParams() {
|
@Override
|
||||||
|
public ECParameterSpec getParams() {
|
||||||
fetchValues();
|
fetchValues();
|
||||||
return params;
|
return params;
|
||||||
}
|
}
|
||||||
|
61
test/jdk/java/security/AsymmetricKey/GetParams.java
Normal file
61
test/jdk/java/security/AsymmetricKey/GetParams.java
Normal file
@ -0,0 +1,61 @@
|
|||||||
|
/*
|
||||||
|
* Copyright (c) 2023, 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
|
||||||
|
* under the terms of the GNU General Public License version 2 only, as
|
||||||
|
* published by the Free Software Foundation.
|
||||||
|
*
|
||||||
|
* This code is distributed in the hope that it will be useful, but WITHOUT
|
||||||
|
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||||
|
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
|
||||||
|
* version 2 for more details (a copy is included in the LICENSE file that
|
||||||
|
* accompanied this code).
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU General Public License version
|
||||||
|
* 2 along with this work; if not, write to the Free Software Foundation,
|
||||||
|
* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
|
||||||
|
*
|
||||||
|
* Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
|
||||||
|
* or visit www.oracle.com if you need additional information or have any
|
||||||
|
* questions.
|
||||||
|
*/
|
||||||
|
|
||||||
|
import jdk.test.lib.Asserts;
|
||||||
|
|
||||||
|
import javax.crypto.spec.DHParameterSpec;
|
||||||
|
import java.security.KeyPair;
|
||||||
|
import java.security.KeyPairGenerator;
|
||||||
|
import java.security.interfaces.DSAParams;
|
||||||
|
import java.security.spec.AlgorithmParameterSpec;
|
||||||
|
import java.security.spec.ECParameterSpec;
|
||||||
|
import java.security.spec.NamedParameterSpec;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @test
|
||||||
|
* @bug 8318096
|
||||||
|
* @summary Introduce AsymmetricKey interface with a getParams method
|
||||||
|
* @library /test/lib
|
||||||
|
*/
|
||||||
|
|
||||||
|
public class GetParams {
|
||||||
|
public static void main(String[] args) throws Exception {
|
||||||
|
test("DSA", DSAParams.class);
|
||||||
|
test("RSA", AlgorithmParameterSpec.class);
|
||||||
|
test("RSASSA-PSS", AlgorithmParameterSpec.class);
|
||||||
|
test("EC", ECParameterSpec.class);
|
||||||
|
test("DH", DHParameterSpec.class);
|
||||||
|
test("EdDSA", NamedParameterSpec.class);
|
||||||
|
test("XDH", NamedParameterSpec.class);
|
||||||
|
}
|
||||||
|
|
||||||
|
static void test(String alg, Class<? extends AlgorithmParameterSpec> clazz)
|
||||||
|
throws Exception {
|
||||||
|
KeyPairGenerator g = KeyPairGenerator.getInstance(alg);
|
||||||
|
KeyPair kp = g.generateKeyPair();
|
||||||
|
AlgorithmParameterSpec spec1 = kp.getPrivate().getParams();
|
||||||
|
Asserts.assertTrue(spec1 == null || clazz.isAssignableFrom(spec1.getClass()));
|
||||||
|
AlgorithmParameterSpec spec2 = kp.getPublic().getParams();
|
||||||
|
Asserts.assertTrue(spec2 == null || clazz.isAssignableFrom(spec2.getClass()));
|
||||||
|
}
|
||||||
|
}
|
Loading…
x
Reference in New Issue
Block a user