summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorisaacs <i@izs.me>2013-05-02 18:34:25 -0700
committerisaacs <i@izs.me>2013-05-14 13:51:43 -0700
commitc1e8c8de1cdef4ecf2a65e21b14e2aa75f1e6716 (patch)
tree06294b861a0341290529ccabe593711494fb6814
parent430dc39e87dfeb95b840502b1d028ffb64b8bd9c (diff)
downloadnode-c1e8c8de1cdef4ecf2a65e21b14e2aa75f1e6716.tar.gz
crypto: Pass encodings to C++ for Sign/Verify
-rw-r--r--src/node_crypto.cc18
1 files changed, 12 insertions, 6 deletions
diff --git a/src/node_crypto.cc b/src/node_crypto.cc
index 0a5c0d462..3a5b9da5f 100644
--- a/src/node_crypto.cc
+++ b/src/node_crypto.cc
@@ -3054,6 +3054,11 @@ class Sign : public ObjectWrap {
ASSERT_IS_BUFFER(args[0]);
ssize_t len = Buffer::Length(args[0]);
+ enum encoding encoding = BUFFER;
+ if (args.Length() >= 2) {
+ encoding = ParseEncoding(args[1]->ToString(), BUFFER);
+ }
+
char* buf = new char[len];
ssize_t written = DecodeWrite(buf, len, args[0], BUFFER);
assert(written == len);
@@ -3069,7 +3074,8 @@ class Sign : public ObjectWrap {
delete [] buf;
- outString = Encode(md_value, md_len, BUFFER);
+ outString = StringBytes::Encode(
+ reinterpret_cast<const char*>(md_value), md_len, encoding);
delete [] md_value;
return scope.Close(outString);
@@ -3290,21 +3296,21 @@ class Verify : public ObjectWrap {
ssize_t hlen = StringBytes::Size(args[1], encoding);
if (hlen < 0) {
- delete [] kbuf;
+ delete[] kbuf;
Local<Value> exception = Exception::TypeError(String::New("Bad argument"));
return ThrowException(exception);
}
unsigned char* hbuf = new unsigned char[hlen];
- ssize_t hwritten = DecodeWrite((char*)hbuf, hlen, args[1], BINARY);
+ ssize_t hwritten = StringBytes::Write(
+ reinterpret_cast<char*>(hbuf), hlen, args[1], BINARY);
assert(hwritten == hlen);
int r;
-
r = verify->VerifyFinal(kbuf, klen, hbuf, hlen);
- delete [] kbuf;
- delete [] hbuf;
+ delete[] kbuf;
+ delete[] hbuf;
return Boolean::New(r && r != -1);
}