parent
b8e9bf0993
commit
e357acc55b
@ -1673,6 +1673,19 @@ class Cipher : public ObjectWrap {
|
|||||||
outString = Encode(out_hexdigest, out_hex_len, BINARY);
|
outString = Encode(out_hexdigest, out_hex_len, BINARY);
|
||||||
delete [] out_hexdigest;
|
delete [] out_hexdigest;
|
||||||
} else if (strcasecmp(*encoding, "base64") == 0) {
|
} else if (strcasecmp(*encoding, "base64") == 0) {
|
||||||
|
// Check to see if we need to add in previous base64 overhang
|
||||||
|
if (cipher->incomplete_base64!=NULL){
|
||||||
|
unsigned char* complete_base64 = new unsigned char[out_len+cipher->incomplete_base64_len+1];
|
||||||
|
memcpy(complete_base64, cipher->incomplete_base64, cipher->incomplete_base64_len);
|
||||||
|
memcpy(&complete_base64[cipher->incomplete_base64_len], out_value, out_len);
|
||||||
|
delete [] out_value;
|
||||||
|
|
||||||
|
delete [] cipher->incomplete_base64;
|
||||||
|
cipher->incomplete_base64=NULL;
|
||||||
|
|
||||||
|
out_value=complete_base64;
|
||||||
|
out_len += cipher->incomplete_base64_len;
|
||||||
|
}
|
||||||
base64(out_value, out_len, &out_hexdigest, &out_hex_len);
|
base64(out_value, out_len, &out_hexdigest, &out_hex_len);
|
||||||
outString = Encode(out_hexdigest, out_hex_len, BINARY);
|
outString = Encode(out_hexdigest, out_hex_len, BINARY);
|
||||||
delete [] out_hexdigest;
|
delete [] out_hexdigest;
|
||||||
|
@ -128,6 +128,25 @@ txt += decipher.final('utf8');
|
|||||||
|
|
||||||
assert.equal(txt, plaintext, 'encryption and decryption');
|
assert.equal(txt, plaintext, 'encryption and decryption');
|
||||||
|
|
||||||
|
// encryption and decryption with Base64
|
||||||
|
// reported in https://github.com/joyent/node/issues/738
|
||||||
|
var plaintext =
|
||||||
|
'32|RmVZZkFUVmpRRkp0TmJaUm56ZU9qcnJkaXNNWVNpTTU*|iXmckfRWZBGWWELw' +
|
||||||
|
'eCBsThSsfUHLeRe0KCsK8ooHgxie0zOINpXxfZi/oNG7uq9JWFVCk70gfzQH8ZUJjAfaFg**';
|
||||||
|
var cipher = crypto.createCipher('aes256', '0123456789abcdef');
|
||||||
|
|
||||||
|
// encrypt plaintext which is in utf8 format
|
||||||
|
// to a ciphertext which will be in Base64
|
||||||
|
var ciph = cipher.update(plaintext, 'utf8', 'base64');
|
||||||
|
ciph += cipher.final('base64');
|
||||||
|
|
||||||
|
var decipher = crypto.createDecipher('aes256', '0123456789abcdef');
|
||||||
|
var txt = decipher.update(ciph, 'base64', 'utf8');
|
||||||
|
txt += decipher.final('utf8');
|
||||||
|
|
||||||
|
assert.equal(txt, plaintext, 'encryption and decryption with Base64');
|
||||||
|
|
||||||
|
|
||||||
// Test encyrption and decryption with explicit key and iv
|
// Test encyrption and decryption with explicit key and iv
|
||||||
var encryption_key = '0123456789abcd0123456789';
|
var encryption_key = '0123456789abcd0123456789';
|
||||||
var iv = '12345678';
|
var iv = '12345678';
|
||||||
|
Loading…
x
Reference in New Issue
Block a user