spring.turbo.module.security.jwt.ECDSAAlgorithmFactory Maven / Gradle / Ivy
/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
* ____ _ _____ _
* / ___| _ __ _ __(_)_ __ __ |_ _| _ _ __| |__ ___
* ___ | '_ | '__| | '_ / _` || || | | | '__| '_ / _
* ___) | |_) | | | | | | | (_| || || |_| | | | |_) | (_) |
* |____/| .__/|_| |_|_| |_|__, ||_| __,_|_| |_.__/ ___/
* |_| |___/ https://github.com/yingzhuo/spring-turbo
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
package spring.turbo.module.security.jwt;
import spring.turbo.util.crypto.Base64;
import java.security.KeyFactory;
import java.security.NoSuchAlgorithmException;
import java.security.interfaces.ECPrivateKey;
import java.security.interfaces.ECPublicKey;
import java.security.spec.InvalidKeySpecException;
import java.security.spec.PKCS8EncodedKeySpec;
import java.security.spec.X509EncodedKeySpec;
/**
* @author 应卓
* @since 1.0.0
*/
abstract class ECDSAAlgorithmFactory implements AlgorithmFactory {
private static final String EC = "EC";
private byte[] decryptBase64(String key) {
return Base64.toBytes(key);
}
protected ECPublicKey toPublicKey(String key) {
try {
byte[] bytes = decryptBase64(key);
X509EncodedKeySpec spec = new X509EncodedKeySpec(bytes);
KeyFactory factory = KeyFactory.getInstance(EC);
java.security.PublicKey result = factory.generatePublic(spec);
return (ECPublicKey) result;
} catch (NoSuchAlgorithmException e) {
throw new AssertionError();
} catch (InvalidKeySpecException e) {
throw new IllegalArgumentException(e.getMessage(), e);
}
}
protected ECPrivateKey toPrivateKey(String key) {
try {
byte[] bytes = decryptBase64(key);
PKCS8EncodedKeySpec spec = new PKCS8EncodedKeySpec(bytes);
KeyFactory factory = KeyFactory.getInstance(EC);
java.security.PrivateKey result = factory.generatePrivate(spec);
return (ECPrivateKey) result;
} catch (NoSuchAlgorithmException e) {
throw new AssertionError();
} catch (InvalidKeySpecException e) {
throw new IllegalArgumentException(e.getMessage(), e);
}
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy