Skip to content

Commit f69a6e7

Browse files
committed
digest can be passed in as a String on PKey#sign/verify
1 parent 342042f commit f69a6e7

File tree

1 file changed

+4
-8
lines changed

1 file changed

+4
-8
lines changed

src/main/java/org/jruby/ext/openssl/PKey.java

Lines changed: 4 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)