mirror of
https://github.com/denoland/deno.git
synced 2025-09-27 12:49:10 +00:00
fix(ext/node): return Buffer
from crypto cipher APIs (#28826)
Fixes https://github.com/denoland/deno/issues/28633
This commit is contained in:
parent
447b5038c0
commit
b26c30d938
2 changed files with 10 additions and 5 deletions
|
@ -438,7 +438,7 @@ export function privateEncrypt(
|
||||||
const padding = privateKey.padding || 1;
|
const padding = privateKey.padding || 1;
|
||||||
|
|
||||||
buffer = getArrayBufferOrView(buffer, "buffer");
|
buffer = getArrayBufferOrView(buffer, "buffer");
|
||||||
return op_node_private_encrypt(data, buffer, padding);
|
return Buffer.from(op_node_private_encrypt(data, buffer, padding));
|
||||||
}
|
}
|
||||||
|
|
||||||
export function privateDecrypt(
|
export function privateDecrypt(
|
||||||
|
@ -449,7 +449,7 @@ export function privateDecrypt(
|
||||||
const padding = privateKey.padding || 1;
|
const padding = privateKey.padding || 1;
|
||||||
|
|
||||||
buffer = getArrayBufferOrView(buffer, "buffer");
|
buffer = getArrayBufferOrView(buffer, "buffer");
|
||||||
return op_node_private_decrypt(data, buffer, padding);
|
return Buffer.from(op_node_private_decrypt(data, buffer, padding));
|
||||||
}
|
}
|
||||||
|
|
||||||
export function publicEncrypt(
|
export function publicEncrypt(
|
||||||
|
@ -460,7 +460,7 @@ export function publicEncrypt(
|
||||||
const padding = publicKey.padding || 1;
|
const padding = publicKey.padding || 1;
|
||||||
|
|
||||||
buffer = getArrayBufferOrView(buffer, "buffer");
|
buffer = getArrayBufferOrView(buffer, "buffer");
|
||||||
return op_node_public_encrypt(data, buffer, padding);
|
return Buffer.from(op_node_public_encrypt(data, buffer, padding));
|
||||||
}
|
}
|
||||||
|
|
||||||
export function prepareKey(key) {
|
export function prepareKey(key) {
|
||||||
|
|
|
@ -3,7 +3,7 @@ import crypto from "node:crypto";
|
||||||
import { Buffer } from "node:buffer";
|
import { Buffer } from "node:buffer";
|
||||||
import { Readable } from "node:stream";
|
import { Readable } from "node:stream";
|
||||||
import { buffer, text } from "node:stream/consumers";
|
import { buffer, text } from "node:stream/consumers";
|
||||||
import { assertEquals, assertThrows } from "@std/assert";
|
import { assert, assertEquals, assertThrows } from "@std/assert";
|
||||||
|
|
||||||
const rsaPrivateKey = Deno.readTextFileSync(
|
const rsaPrivateKey = Deno.readTextFileSync(
|
||||||
new URL("../testdata/rsa_private.pem", import.meta.url),
|
new URL("../testdata/rsa_private.pem", import.meta.url),
|
||||||
|
@ -12,7 +12,7 @@ const rsaPublicKey = Deno.readTextFileSync(
|
||||||
new URL("../testdata/rsa_public.pem", import.meta.url),
|
new URL("../testdata/rsa_public.pem", import.meta.url),
|
||||||
);
|
);
|
||||||
|
|
||||||
const input = new TextEncoder().encode("hello world");
|
const input = Buffer.from("hello world", "utf-8");
|
||||||
|
|
||||||
function zeros(length: number): Uint8Array {
|
function zeros(length: number): Uint8Array {
|
||||||
return new Uint8Array(length);
|
return new Uint8Array(length);
|
||||||
|
@ -26,6 +26,8 @@ Deno.test({
|
||||||
Buffer.from(rsaPrivateKey),
|
Buffer.from(rsaPrivateKey),
|
||||||
Buffer.from(encrypted),
|
Buffer.from(encrypted),
|
||||||
);
|
);
|
||||||
|
assert(Buffer.isBuffer(encrypted));
|
||||||
|
assert(Buffer.isBuffer(decrypted));
|
||||||
assertEquals(decrypted, input);
|
assertEquals(decrypted, input);
|
||||||
},
|
},
|
||||||
});
|
});
|
||||||
|
@ -49,10 +51,12 @@ Deno.test({
|
||||||
name: "rsa private encrypt and private decrypt",
|
name: "rsa private encrypt and private decrypt",
|
||||||
fn() {
|
fn() {
|
||||||
const encrypted = crypto.privateEncrypt(rsaPrivateKey, input);
|
const encrypted = crypto.privateEncrypt(rsaPrivateKey, input);
|
||||||
|
assert(Buffer.isBuffer(encrypted));
|
||||||
const decrypted = crypto.privateDecrypt(
|
const decrypted = crypto.privateDecrypt(
|
||||||
rsaPrivateKey,
|
rsaPrivateKey,
|
||||||
Buffer.from(encrypted),
|
Buffer.from(encrypted),
|
||||||
);
|
);
|
||||||
|
assert(Buffer.isBuffer(decrypted));
|
||||||
assertEquals(decrypted, input);
|
assertEquals(decrypted, input);
|
||||||
},
|
},
|
||||||
});
|
});
|
||||||
|
@ -61,6 +65,7 @@ Deno.test({
|
||||||
name: "rsa public decrypt fail",
|
name: "rsa public decrypt fail",
|
||||||
fn() {
|
fn() {
|
||||||
const encrypted = crypto.publicEncrypt(rsaPublicKey, input);
|
const encrypted = crypto.publicEncrypt(rsaPublicKey, input);
|
||||||
|
assert(Buffer.isBuffer(encrypted));
|
||||||
assertThrows(() =>
|
assertThrows(() =>
|
||||||
crypto.publicDecrypt(rsaPublicKey, Buffer.from(encrypted))
|
crypto.publicDecrypt(rsaPublicKey, Buffer.from(encrypted))
|
||||||
);
|
);
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue