Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
PojavLauncherTeam
GitHub Repository: PojavLauncherTeam/mobile
Path: blob/master/src/java.base/share/classes/java/security/KeyPairGeneratorSpi.java
41152 views
1
/*
2
* Copyright (c) 1997, 2020, 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
* See the Keysize Restriction sections of the
43
* {@extLink security_guide_jdk_providers JDK Providers}
44
* document for information on the KeyPairGenerator defaults used by
45
* JDK providers.
46
* However, note that defaults may vary across different providers.
47
* Additionally, the default value for a provider may change in a future
48
* version. Therefore, it is recommended to explicitly initialize the
49
* KeyPairGenerator instead of relying on provider-specific defaults.
50
*
51
* @author Benjamin Renaud
52
* @since 1.2
53
*
54
*
55
* @see KeyPairGenerator
56
* @see java.security.spec.AlgorithmParameterSpec
57
*/
58
59
public abstract class KeyPairGeneratorSpi {
60
61
/**
62
* Constructor for subclasses to call.
63
*/
64
public KeyPairGeneratorSpi() {}
65
66
/**
67
* Initializes the key pair generator for a certain keysize, using
68
* the default parameter set.
69
*
70
* @param keysize the keysize. This is an
71
* algorithm-specific metric, such as modulus length, specified in
72
* number of bits.
73
*
74
* @param random the source of randomness for this generator.
75
*
76
* @throws InvalidParameterException if the {@code keysize} is not
77
* supported by this KeyPairGeneratorSpi object.
78
*/
79
public abstract void initialize(int keysize, SecureRandom random);
80
81
/**
82
* Initializes the key pair generator using the specified parameter
83
* set and user-provided source of randomness.
84
*
85
* <p>This concrete method has been added to this previously-defined
86
* abstract class. (For backwards compatibility, it cannot be abstract.)
87
* It may be overridden by a provider to initialize the key pair
88
* generator. Such an override
89
* is expected to throw an InvalidAlgorithmParameterException if
90
* a parameter is inappropriate for this key pair generator.
91
* If this method is not overridden, it always throws an
92
* UnsupportedOperationException.
93
*
94
* @param params the parameter set used to generate the keys.
95
*
96
* @param random the source of randomness for this generator.
97
*
98
* @throws InvalidAlgorithmParameterException if the given parameters
99
* are inappropriate for this key pair generator.
100
*
101
* @since 1.2
102
*/
103
public void initialize(AlgorithmParameterSpec params,
104
SecureRandom random)
105
throws InvalidAlgorithmParameterException {
106
throw new UnsupportedOperationException();
107
}
108
109
/**
110
* Generates a key pair. Unless an initialization method is called
111
* using a KeyPairGenerator interface, algorithm-specific defaults
112
* will be used. This will generate a new key pair every time it
113
* is called.
114
*
115
* @return the newly generated {@code KeyPair}
116
*/
117
public abstract KeyPair generateKeyPair();
118
}
119
120