@@ -214,10 +214,8 @@ public RubyString export(final IRubyObject[] args) {
214
214
@ JRubyMethod (name = "sign" )
215
215
public IRubyObject sign (IRubyObject digest , IRubyObject data ) {
216
216
final Ruby runtime = getRuntime ();
217
- if ( ! isPrivateKey () ) {
218
- throw runtime .newArgumentError ("Private key is needed." );
219
- }
220
- String digAlg = ((Digest ) digest ).getShortAlgorithm ();
217
+ if ( ! isPrivateKey () ) throw runtime .newArgumentError ("Private key is needed." );
218
+ String digAlg = (digest instanceof Digest ) ? ((Digest ) digest ).getShortAlgorithm () : digest .asJavaString ();
221
219
try {
222
220
ByteList sign = sign (digAlg + "WITH" + getAlgorithm (), getPrivateKey (), data .convertToString ().getByteList ());
223
221
return RubyString .newString (runtime , sign );
@@ -238,12 +236,10 @@ static ByteList sign(final String signAlg, final PrivateKey privateKey, final By
238
236
@ JRubyMethod (name = "verify" )
239
237
public IRubyObject verify (IRubyObject digest , IRubyObject sign , IRubyObject data ) {
240
238
final Ruby runtime = getRuntime ();
241
- if ( ! (digest instanceof Digest ) ) {
242
- throw newPKeyError (runtime , "invalid digest" );
243
- }
244
239
ByteList sigBytes = convertToString (runtime , sign , "OpenSSL::PKey::PKeyError" , "invalid signature" ).getByteList ();
245
240
ByteList dataBytes = convertToString (runtime , data , "OpenSSL::PKey::PKeyError" , "invalid data" ).getByteList ();
246
- String algorithm = ((Digest ) digest ).getShortAlgorithm () + "WITH" + getAlgorithm ();
241
+ String digAlg = (digest instanceof Digest ) ? ((Digest ) digest ).getShortAlgorithm () : digest .asJavaString ();
242
+ final String algorithm = digAlg + "WITH" + getAlgorithm ();
247
243
try {
248
244
return runtime .newBoolean ( verify (algorithm , getPublicKey (), dataBytes , sigBytes ) );
249
245
}
0 commit comments