Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
PojavLauncherTeam
GitHub Repository: PojavLauncherTeam/openjdk-multiarch-jdk8u
Path: blob/aarch64-shenandoah-jdk8u272-b10/jdk/src/share/classes/java/security/KeyPairGeneratorSpi.java
38829 views
1
/*
2
* Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved.
3
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
4
*
5
* This code is free software; you can redistribute it and/or modify it
6
* under the terms of the GNU General Public License version 2 only, as
7
* published by the Free Software Foundation. Oracle designates this
8
* particular file as subject to the "Classpath" exception as provided
9
* by Oracle in the LICENSE file that accompanied this code.
10
*
11
* This code is distributed in the hope that it will be useful, but WITHOUT
12
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
13
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
14
* version 2 for more details (a copy is included in the LICENSE file that
15
* accompanied this code).
16
*
17
* You should have received a copy of the GNU General Public License version
18
* 2 along with this work; if not, write to the Free Software Foundation,
19
* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
20
*
21
* Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
22
* or visit www.oracle.com if you need additional information or have any
23
* questions.
24
*/
25
26
package java.security;
27
28
import java.security.spec.AlgorithmParameterSpec;
29
30
/**
31
* <p> This class defines the <i>Service Provider Interface</i> (<b>SPI</b>)
32
* for the {@code KeyPairGenerator} class, which is used to generate
33
* pairs of public and private keys.
34
*
35
* <p> All the abstract methods in this class must be implemented by each
36
* cryptographic service provider who wishes to supply the implementation
37
* of a key pair generator for a particular algorithm.
38
*
39
* <p> In case the client does not explicitly initialize the KeyPairGenerator
40
* (via a call to an {@code initialize} method), each provider must
41
* supply (and document) a default initialization.
42
* For example, the <i>Sun</i> provider uses a default modulus size (keysize)
43
* of 1024 bits.
44
*
45
* @author Benjamin Renaud
46
*
47
*
48
* @see KeyPairGenerator
49
* @see java.security.spec.AlgorithmParameterSpec
50
*/
51
52
public abstract class KeyPairGeneratorSpi {
53
54
/**
55
* Initializes the key pair generator for a certain keysize, using
56
* the default parameter set.
57
*
58
* @param keysize the keysize. This is an
59
* algorithm-specific metric, such as modulus length, specified in
60
* number of bits.
61
*
62
* @param random the source of randomness for this generator.
63
*
64
* @exception InvalidParameterException if the {@code keysize} is not
65
* supported by this KeyPairGeneratorSpi object.
66
*/
67
public abstract void initialize(int keysize, SecureRandom random);
68
69
/**
70
* Initializes the key pair generator using the specified parameter
71
* set and user-provided source of randomness.
72
*
73
* <p>This concrete method has been added to this previously-defined
74
* abstract class. (For backwards compatibility, it cannot be abstract.)
75
* It may be overridden by a provider to initialize the key pair
76
* generator. Such an override
77
* is expected to throw an InvalidAlgorithmParameterException if
78
* a parameter is inappropriate for this key pair generator.
79
* If this method is not overridden, it always throws an
80
* UnsupportedOperationException.
81
*
82
* @param params the parameter set used to generate the keys.
83
*
84
* @param random the source of randomness for this generator.
85
*
86
* @exception InvalidAlgorithmParameterException if the given parameters
87
* are inappropriate for this key pair generator.
88
*
89
* @since 1.2
90
*/
91
public void initialize(AlgorithmParameterSpec params,
92
SecureRandom random)
93
throws InvalidAlgorithmParameterException {
94
throw new UnsupportedOperationException();
95
}
96
97
/**
98
* Generates a key pair. Unless an initialization method is called
99
* using a KeyPairGenerator interface, algorithm-specific defaults
100
* will be used. This will generate a new key pair every time it
101
* is called.
102
*
103
* @return the newly generated {@code KeyPair}
104
*/
105
public abstract KeyPair generateKeyPair();
106
}
107
108