parent
b8e9bf0993
commit
e357acc55b
@ -1673,6 +1673,19 @@ class Cipher : public ObjectWrap {
|
||||
outString = Encode(out_hexdigest, out_hex_len, BINARY);
|
||||
delete [] out_hexdigest;
|
||||
} 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);
|
||||
outString = Encode(out_hexdigest, out_hex_len, BINARY);
|
||||
delete [] out_hexdigest;
|
||||
|
@ -128,6 +128,25 @@ txt += decipher.final('utf8');
|
||||
|
||||
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
|
||||
var encryption_key = '0123456789abcd0123456789';
|
||||
var iv = '12345678';
|
||||
|
Loading…
x
Reference in New Issue
Block a user