@@ -214,10 +214,8 @@ public RubyString export(final IRubyObject[] args) {
214214 @ JRubyMethod (name = "sign" )
215215 public IRubyObject sign (IRubyObject digest , IRubyObject data ) {
216216 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 ();
221219 try {
222220 ByteList sign = sign (digAlg + "WITH" + getAlgorithm (), getPrivateKey (), data .convertToString ().getByteList ());
223221 return RubyString .newString (runtime , sign );
@@ -238,12 +236,10 @@ static ByteList sign(final String signAlg, final PrivateKey privateKey, final By
238236 @ JRubyMethod (name = "verify" )
239237 public IRubyObject verify (IRubyObject digest , IRubyObject sign , IRubyObject data ) {
240238 final Ruby runtime = getRuntime ();
241- if ( ! (digest instanceof Digest ) ) {
242- throw newPKeyError (runtime , "invalid digest" );
243- }
244239 ByteList sigBytes = convertToString (runtime , sign , "OpenSSL::PKey::PKeyError" , "invalid signature" ).getByteList ();
245240 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 ();
247243 try {
248244 return runtime .newBoolean ( verify (algorithm , getPublicKey (), dataBytes , sigBytes ) );
249245 }
0 commit comments