0 valutazioniIl 0% ha trovato utile questo documento (0 voti)
86 visualizzazioni5 pagine
This class provides the functionality of a (symmetric) key generator. All key generators share the concepts of a keysize and a source of randomness. The only difference between the two is the initialization of the object.
This class provides the functionality of a (symmetric) key generator. All key generators share the concepts of a keysize and a source of randomness. The only difference between the two is the initialization of the object.
Copyright:
Attribution Non-Commercial (BY-NC)
Formati disponibili
Scarica in formato TXT, PDF, TXT o leggi online su Scribd
This class provides the functionality of a (symmetric) key generator. All key generators share the concepts of a keysize and a source of randomness. The only difference between the two is the initialization of the object.
Copyright:
Attribution Non-Commercial (BY-NC)
Formati disponibili
Scarica in formato TXT, PDF, TXT o leggi online su Scribd
3 * 4 * Copyright 2004 Sun Microsystems, Inc. All rights reserved. 5 * SUN PROPRIETARY/CONFIDENTIAL. Use is subject to license terms. 6 */ 7 8 /* 9 * NOTE: 10 * Because of various external restrictions (i.e. US export 11 * regulations, etc.), the actual source code can not be provided 12 * at this time. This file represents the skeleton of the source 13 * file, so that javadocs of the API can be created. 14 */ 15 16 package javax.crypto; 17 18 import java.util.*; 19 import java.security.*; 20 import java.security.spec.*; 21 import sun.security.jca.*; 22 23 import java.security.Provider.Service; 24 import sun.security.jca.GetInstance.Instance; 25 26 /** 27 * This class provides the functionality of a (symmetric) key generator. 28 * 29 * <p>Key generators are constructed using one of the <code>getInstance</code > 30 * class methods of this class. 31 * 32 * <p>KeyGenerator objects are reusable, i.e., after a key has been 33 * generated, the same KeyGenerator object can be re-used to generate further 34 * keys. 35 * 36 * <p>There are two ways to generate a key: in an algorithm-independent 37 * manner, and in an algorithm-specific manner. 38 * The only difference between the two is the initialization of the object: 39 * 40 * <ul> 41 * <li><b>Algorithm-Independent Initialization</b> 42 * <p>All key generators share the concepts of a <i>keysize</i> and a 43 * <i>source of randomness</i>. 44 * There is an 45 * {@link #init(int, java.security.SecureRandom) init} 46 * method in this KeyGenerator class that takes these two universally 47 * shared types of arguments. There is also one that takes just a 48 * <code>keysize</code> argument, and uses the SecureRandom implementation 49 * of the highest-priority installed provider as the source of randomness 50 * (or a system-provided source of randomness if none of the installed 51 * providers supply a SecureRandom implementation), and one that takes just a 52 * source of randomness. 53 * 54 * <p>Since no other parameters are specified when you call the above 55 * algorithm-independent <code>init</code> methods, it is up to the 56 * provider what to do about the algorithm-specific parameters (if any) to be 57 * associated with each of the keys. 58 * <p> 59 * 60 * <li><b>Algorithm-Specific Initialization</b> 61 * <p>For situations where a set of algorithm-specific parameters already 62 * exists, there are two 63 * {@link #init(java.security.spec.AlgorithmParameterSpec) init} 64 * methods that have an <code>AlgorithmParameterSpec</code> 65 * argument. One also has a <code>SecureRandom</code> argument, while the 66 * other uses the SecureRandom implementation 67 * of the highest-priority installed provider as the source of randomness 68 * (or a system-provided source of randomness if none of the installed 69 * providers supply a SecureRandom implementation). 70 * </ul> 71 * 72 * <p>In case the client does not explicitly initialize the KeyGenerator 73 * (via a call to an <code>init</code> method), each provider must 74 * supply (and document) a default initialization. 75 * 76 * @author Jan Luehe 77 * 78 * @version 1.48, 10/29/03 79 * 80 * @see SecretKey 81 * @since 1.4 82 */ 83 public class KeyGenerator 84 { 85 86 /** 87 * Creates a KeyGenerator object. 88 * 89 * @param keyGenSpi the delegate 90 * @param provider the provider 91 * @param algorithm the algorithm 92 */ 93 protected KeyGenerator(KeyGeneratorSpi keyGenSpi, Provider provider, Stri ng 94 algorithm) 95 { } 96 97 /** 98 * Returns the algorithm name of this <code>KeyGenerator</code> object. 99 * 100 * <p>This is the same name that was specified in one of the 101 * <code>getInstance</code> calls that created this 102 * <code>KeyGenerator</code> object. 103 * 104 * @return the algorithm name of this <code>KeyGenerator</code> object. 105 */ 106 public final String getAlgorithm() { } 107 108 /** 109 * Generates a <code>KeyGenerator</code> object for the specified 110 * algorithm. 111 * If the default provider package provides an implementation of the 112 * requested key generator, an instance of 113 * <code>KeyGenerator</code> containing that implementation is returned. 114 * If the requested key generator is not available in the default provid er 115 * package, other provider packages are searched. 116 * 117 * @param algorithm the standard name of the requested key algorithm. 118 * See Appendix A in the 119 * <a HREF="../../../guide/security/jce/JCERefGuide.html#AppA"> 120 * Java Cryptography Extension Reference Guide</a> 121 * for information about standard algorithm names. 122 * 123 * @return the new <code>KeyGenerator</code> object 124 * 125 * @exception NullPointerException if the specified algorithm is null. 126 * @exception NoSuchAlgorithmException if a key generator for the 127 * specified algorithm is not available in the default provider 128 * package or any of the other provider packages that were searched. 129 */ 130 public static final KeyGenerator getInstance(String algorithm) 131 throws NoSuchAlgorithmException 132 { } 133 134 /** 135 * Generates a <code>KeyGenerator</code> object for the specified key 136 * algorithm from the specified provider. 137 * 138 * @param algorithm the standard name of the requested key algorithm. 139 * See Appendix A in the 140 * <a HREF="../../../guide/security/jce/JCERefGuide.html#AppA"> 141 * Java Cryptography Extension Reference Guide</a> 142 * for information about standard algorithm names. 143 * @param provider the name of the provider 144 * 145 * @return the new <code>KeyGenerator</code> object 146 * 147 * @exception NullPointerException if the specified algorithm is null. 148 * @exception NoSuchAlgorithmException if a key generator for the 149 * specified algorithm is not available from the specified provider. 150 * @exception NoSuchProviderException if the specified provider has not 151 * been configured. 152 * @exception IllegalArgumentException if the <code>provider</code> 153 * is null. 154 */ 155 public static final KeyGenerator getInstance(String algorithm, String 156 provider) throws NoSuchAlgorithmException, NoSuchProviderException 157 { } 158 159 /** 160 * Generates a <code>KeyGenerator</code> object for the specified key 161 * algorithm from the specified provider. Note: the <code>provider</code > 162 * doesn't have to be registered. 163 * 164 * @param algorithm the standard name of the requested key algorithm. 165 * See Appendix A in the 166 * <a HREF="../../../guide/security/jce/JCERefGuide.html#AppA"> 167 * Java Cryptography Extension Reference Guide</a> 168 * for information about standard algorithm names. 169 * @param provider the provider 170 * 171 * @return the new <code>KeyGenerator</code> object 172 * 173 * @exception NullPointerException if the specified algorithm is null. 174 * @exception NoSuchAlgorithmException if a key generator for the 175 * specified algorithm is not available from the specified provider. 176 * @exception IllegalArgumentException if the <code>provider</code> 177 * is null. 178 */ 179 public static final KeyGenerator getInstance(String algorithm, Provider 180 provider) throws NoSuchAlgorithmException 181 { } 182 183 /** 184 * Returns the provider of this <code>KeyGenerator</code> object. 185 * 186 * @return the provider of this <code>KeyGenerator</code> object 187 */ 188 public final Provider getProvider() { } 189 190 /** 191 * Initializes this key generator. 192 * 193 * @param random the source of randomness for this generator 194 */ 195 public final void init(SecureRandom random) { } 196 197 /** 198 * Initializes this key generator with the specified parameter set. 199 * 200 * <p> If this key generator requires any random bytes, it will get them 201 * using the 202 * {@link SecureRandom <code>SecureRandom</code>} 203 * implementation of the highest-priority installed 204 * provider as the source of randomness. 205 * (If none of the installed providers supply an implementation of 206 * SecureRandom, a system-provided source of randomness will be used.) 207 * 208 * @param params the key generation parameters 209 * 210 * @exception InvalidAlgorithmParameterException if the given parameters 211 * are inappropriate for this key generator 212 */ 213 public final void init(AlgorithmParameterSpec params) 214 throws InvalidAlgorithmParameterException 215 { } 216 217 /** 218 * Initializes this key generator with the specified parameter 219 * set and a user-provided source of randomness. 220 * 221 * @param params the key generation parameters 222 * @param random the source of randomness for this key generator 223 * 224 * @exception InvalidAlgorithmParameterException if <code>params</code> is 225 * inappropriate for this key generator 226 */ 227 public final void init(AlgorithmParameterSpec params, SecureRandom rando m) 228 throws InvalidAlgorithmParameterException 229 { } 230 231 /** 232 * Initializes this key generator for a certain keysize. 233 * 234 * <p> If this key generator requires any random bytes, it will get them 235 * using the 236 * {@link SecureRandom <code>SecureRandom</code>} 237 * implementation of the highest-priority installed 238 * provider as the source of randomness. 239 * (If none of the installed providers supply an implementation of 240 * SecureRandom, a system-provided source of randomness will be used.) 241 * 242 * @param keysize the keysize. This is an algorithm-specific metric, 243 * specified in number of bits. 244 * 245 * @exception InvalidParameterException if the keysize is wrong or not 246 * supported. 247 */ 248 public final void init(int keysize) { } 249 250 /** 251 * Initializes this key generator for a certain keysize, using a 252 * user-provided source of randomness. 253 * 254 * @param keysize the keysize. This is an algorithm-specific metric, 255 * specified in number of bits. 256 * @param random the source of randomness for this key generator 257 * 258 * @exception InvalidParameterException if the keysize is wrong or not 259 * supported. 260 */ 261 public final void init(int keysize, SecureRandom random) { } 262 263 /** 264 * Generates a secret key. 265 * 266 * @return the new key 267 */ 268 public final SecretKey generateKey() { } 269 } Read more: http://kickjava.com/src/javax/crypto/KeyGenerator.java.htm#ixzz0yW2Hi fCU 9967630508 7666017170