protected PrivateKey engineGeneratePrivate( KeySpec keySpec) throws InvalidKeySpecException { if (keySpec instanceof OpenSSHPrivateKeySpec) { CipherParameters parameters = OpenSSHPrivateKeyUtil.parsePrivateKeyBlob(((OpenSSHPrivateKeySpec)keySpec).getEncoded()); if (parameters instanceof Ed25519PrivateKeyParameters) { return new BCEdDSAPrivateKey((Ed25519PrivateKeyParameters)parameters); } throw new IllegalStateException("openssh private key not Ed25519 private key"); } return super.engineGeneratePrivate(keySpec); }
CipherParameters parameters = OpenSSHPrivateKeyUtil.parsePrivateKeyBlob(((OpenSSHPrivateKeySpec)keySpec).getEncoded());
protected PrivateKey engineGeneratePrivate( KeySpec keySpec) throws InvalidKeySpecException { if (keySpec instanceof DSAPrivateKeySpec) { return new BCDSAPrivateKey((DSAPrivateKeySpec)keySpec); } else if (keySpec instanceof OpenSSHPrivateKeySpec) { CipherParameters params = OpenSSHPrivateKeyUtil.parsePrivateKeyBlob(((OpenSSHPrivateKeySpec)keySpec).getEncoded()); if (params instanceof DSAPrivateKeyParameters) { return engineGeneratePrivate( new DSAPrivateKeySpec( ((DSAPrivateKeyParameters)params).getX(), ((DSAPrivateKeyParameters)params).getParameters().getP(), ((DSAPrivateKeyParameters)params).getParameters().getQ(), ((DSAPrivateKeyParameters)params).getParameters().getG())); } else { throw new IllegalArgumentException("openssh private key is not dsa privare key"); } } return super.engineGeneratePrivate(keySpec); }