82 lines
2.7 KiB
Java
82 lines
2.7 KiB
Java
/*
|
|
* Copyright 2020 the original author or authors.
|
|
*
|
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
* you may not use this file except in compliance with the License.
|
|
* You may obtain a copy of the License at
|
|
*
|
|
* https://www.apache.org/licenses/LICENSE-2.0
|
|
*
|
|
* Unless required by applicable law or agreed to in writing, software
|
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
* See the License for the specific language governing permissions and
|
|
* limitations under the License.
|
|
*/
|
|
package org.springframework.security.crypto.keys;
|
|
|
|
import javax.crypto.KeyGenerator;
|
|
import javax.crypto.SecretKey;
|
|
import java.math.BigInteger;
|
|
import java.security.KeyPair;
|
|
import java.security.KeyPairGenerator;
|
|
import java.security.spec.ECFieldFp;
|
|
import java.security.spec.ECParameterSpec;
|
|
import java.security.spec.ECPoint;
|
|
import java.security.spec.EllipticCurve;
|
|
|
|
/**
|
|
* @author Joe Grandja
|
|
* @since 0.0.1
|
|
*/
|
|
final class KeyGeneratorUtils {
|
|
|
|
static SecretKey generateSecretKey() {
|
|
SecretKey hmacKey;
|
|
try {
|
|
hmacKey = KeyGenerator.getInstance("HmacSha256").generateKey();
|
|
} catch (Exception ex) {
|
|
throw new IllegalStateException(ex);
|
|
}
|
|
return hmacKey;
|
|
}
|
|
|
|
static KeyPair generateRsaKey() {
|
|
KeyPair keyPair;
|
|
try {
|
|
KeyPairGenerator keyPairGenerator = KeyPairGenerator.getInstance("RSA");
|
|
keyPairGenerator.initialize(2048);
|
|
keyPair = keyPairGenerator.generateKeyPair();
|
|
} catch (Exception ex) {
|
|
throw new IllegalStateException(ex);
|
|
}
|
|
return keyPair;
|
|
}
|
|
|
|
static KeyPair generateEcKey() {
|
|
EllipticCurve ellipticCurve = new EllipticCurve(
|
|
new ECFieldFp(
|
|
new BigInteger("115792089210356248762697446949407573530086143415290314195533631308867097853951")),
|
|
new BigInteger("115792089210356248762697446949407573530086143415290314195533631308867097853948"),
|
|
new BigInteger("41058363725152142129326129780047268409114441015993725554835256314039467401291"));
|
|
ECPoint ecPoint = new ECPoint(
|
|
new BigInteger("48439561293906451759052585252797914202762949526041747995844080717082404635286"),
|
|
new BigInteger("36134250956749795798585127919587881956611106672985015071877198253568414405109"));
|
|
ECParameterSpec ecParameterSpec = new ECParameterSpec(
|
|
ellipticCurve,
|
|
ecPoint,
|
|
new BigInteger("115792089210356248762697446949407573529996955224135760342422259061068512044369"),
|
|
1);
|
|
|
|
KeyPair keyPair;
|
|
try {
|
|
KeyPairGenerator keyPairGenerator = KeyPairGenerator.getInstance("EC");
|
|
keyPairGenerator.initialize(ecParameterSpec);
|
|
keyPair = keyPairGenerator.generateKeyPair();
|
|
} catch (Exception ex) {
|
|
throw new IllegalStateException(ex);
|
|
}
|
|
return keyPair;
|
|
}
|
|
}
|