|
57 | 57 | import java.security.cert.X509CRL;
|
58 | 58 | import java.security.interfaces.DSAParams;
|
59 | 59 | import java.security.interfaces.DSAPublicKey;
|
| 60 | +import java.security.interfaces.ECPublicKey; |
60 | 61 | import java.security.interfaces.RSAPublicKey;
|
61 | 62 | import java.util.Locale;
|
62 | 63 | import java.util.Map;
|
|
85 | 86 | import org.bouncycastle.crypto.params.DSAPublicKeyParameters;
|
86 | 87 | import org.bouncycastle.crypto.params.RSAKeyParameters;
|
87 | 88 | import org.bouncycastle.jce.provider.X509CRLObject;
|
| 89 | +import org.bouncycastle.jcajce.provider.asymmetric.util.ECUtil; |
88 | 90 | import org.bouncycastle.operator.ContentVerifierProvider;
|
89 | 91 | import org.bouncycastle.operator.DefaultDigestAlgorithmIdentifierFinder;
|
90 | 92 | import org.bouncycastle.operator.DigestAlgorithmIdentifierFinder;
|
91 | 93 | import org.bouncycastle.operator.OperatorException;
|
92 | 94 | import org.bouncycastle.operator.bc.BcDSAContentVerifierProviderBuilder;
|
| 95 | +import org.bouncycastle.operator.bc.BcECContentVerifierProviderBuilder; |
93 | 96 | import org.bouncycastle.operator.bc.BcRSAContentVerifierProviderBuilder;
|
94 | 97 | import org.jruby.util.SafePropertyAccessor;
|
95 | 98 |
|
@@ -610,6 +613,10 @@ static boolean verify(final X509CRL crl, final PublicKey publicKey, final boolea
|
610 | 613 | AsymmetricKeyParameter dsaKey = new DSAPublicKeyParameters(y, parameters);
|
611 | 614 | verifierProvider = new BcDSAContentVerifierProviderBuilder(digestAlgFinder).build(dsaKey);
|
612 | 615 | }
|
| 616 | + else if ( "EC".equalsIgnoreCase( publicKey.getAlgorithm() )) { |
| 617 | + AsymmetricKeyParameter ecKey = ECUtil.generatePublicKeyParameter(publicKey); |
| 618 | + verifierProvider = new BcECContentVerifierProviderBuilder(digestAlgFinder).build(ecKey); |
| 619 | + } |
613 | 620 | else {
|
614 | 621 | BigInteger mod = ((RSAPublicKey) publicKey).getModulus();
|
615 | 622 | BigInteger exp = ((RSAPublicKey) publicKey).getPublicExponent();
|
|
0 commit comments