Как конвертировать ECPrivateKey в ECPublicKey с помощью FIPS BouncyCastle? - PullRequest
0 голосов
/ 27 августа 2018

Как преобразовать ECPrivateKey в ECPublicKey с помощью FIPS BouncyCastle?

Я использую следующий код (слегка упрощенный) для преобразования ECPrivateKey в ECPublicKey:

public static ECPublicKey getPublicKeyFromPrivateKey(ECPrivateKey privateKey) throws GeneralSecurityException {
    final KeyFactory keyFactory = KeyFactory.getInstance("ECDSA", new BouncyCastleProvider());
    final BCECPrivateKey bcecPrivateKey = (BCECPrivateKey) privateKey;
    final ECParameterSpec ecSpec = bcecPrivateKey.getParameters();
    final ECPoint q = ecSpec.getG().multiply(bcecPrivateKey.getD());
    final byte[] qBytes = q.getEncoded(false);
    final ECPoint point = ecSpec.getCurve().decodePoint(qBytes);
    final ECPublicKeySpec pubSpec = new ECPublicKeySpec(point, ecSpec);
    return (ECPublicKey) keyFactory.generatePublic(pubSpec);
}

Это нормально работает сне FIPS BouncyCastle.Теперь у нас есть требование сделать то же самое в соответствии с FIPS.И здесь проблема в том, что такие классы, как ECParameterSpec, по-видимому, не существуют в FIPS BouncyCastle 1.0.1.Как мы можем сделать то же самое с FIPS BouncyCastle?

...