Выполнение операции ECIES с использованием Bouncy Castle с KeyPair в JKS
У меня есть требование выполнить шифрование / дешифрование ECIES с использованием secp256r1 с BC в качестве поставщика.
Мне нужна ссылка (1), как хранить пару закрытых и открытых ключей ECIES в JKS Keystore (2) получить открытый ключ из JKS.
У меня есть пара ключей для подготовки с помощью команды keytool в соответствии с https://zombiesecured.com/html/tutorials/Keytool/ECC-JK.html.
- Имя алгоритма подписи: SHA256withECDSA
- Алгоритм открытого ключа субъекта: 256-битный ключ EC
(2) Можете ли вы помочь, как получить ключ в формате ECDSAPublicKey в качестве входных данных для шифрования.
Я нашел ссылку на ключ декодирования для ECPublicKey, как показано ниже. Каким должен быть мой первый аргумент? Как получить закодированный ключ из JKS?
public static ECPublicKey decodePublicKey(byte[] encoded, String namedCurve) throws InvalidKeySpecException, NoSuchAlgorithmException, NoSuchProviderException, IOException
{
KeyFactory fact = KeyFactory.getInstance("ECDSA", BouncyCastleProvider.PROVIDER_NAME);
ECNamedCurveParameterSpec params = ECNamedCurveTable.getParameterSpec(namedCurve);
java.security.spec.EllipticCurve ellipticCurve = EC5Util.convertCurve(params.getCurve(), params.getSeed());
java.security.spec.ECPublicKeySpec keySpec = new java.security.spec.ECPublicKeySpec(ECPointUtil.decodePoint(ellipticCurve,encoded),EC5Util.convertSpec(ellipticCurve, params));
return (ECPublicKey) fact.generatePublic(keySpec);
}
- как использовать IESCipher, IESParameterSpec, engineInit для выполнения шифрования / дешифрования ECIES.