|
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