deno.land / std@0.166.0 / node / _tools / test / parallel / test-webcrypto-sign-verify.js
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155// deno-fmt-ignore-file// deno-lint-ignore-file
// Copyright Joyent and Node contributors. All rights reserved. MIT license.// Taken from Node 16.13.0// This file is automatically generated by "node/_tools/setup.ts". Do not modify this file manually
'use strict';
const common = require('../common');
if (!common.hasCrypto) common.skip('missing crypto');
const assert = require('assert');const { subtle } = require('crypto').webcrypto;
// This is only a partial test. The WebCrypto Web Platform Tests// will provide much greater coverage.
// Test Sign/Verify RSASSA-PKCS1-v1_5{ async function test(data) { const ec = new TextEncoder(); const { publicKey, privateKey } = await subtle.generateKey({ name: 'RSASSA-PKCS1-v1_5', modulusLength: 1024, publicExponent: new Uint8Array([1, 0, 1]), hash: 'SHA-256' }, true, ['sign', 'verify']);
const signature = await subtle.sign({ name: 'RSASSA-PKCS1-v1_5' }, privateKey, ec.encode(data));
assert(await subtle.verify({ name: 'RSASSA-PKCS1-v1_5' }, publicKey, signature, ec.encode(data))); }
test('hello world').then(common.mustCall());}
// Test Sign/Verify RSA-PSS{ async function test(data) { const ec = new TextEncoder(); const { publicKey, privateKey } = await subtle.generateKey({ name: 'RSA-PSS', modulusLength: 4096, publicExponent: new Uint8Array([1, 0, 1]), hash: 'SHA-256' }, true, ['sign', 'verify']);
const signature = await subtle.sign({ name: 'RSA-PSS', saltLength: 256, }, privateKey, ec.encode(data));
assert(await subtle.verify({ name: 'RSA-PSS', saltLength: 256, }, publicKey, signature, ec.encode(data))); }
test('hello world').then(common.mustCall());}
// Test Sign/Verify ECDSA{ async function test(data) { const ec = new TextEncoder(); const { publicKey, privateKey } = await subtle.generateKey({ name: 'ECDSA', namedCurve: 'P-384', }, true, ['sign', 'verify']);
const signature = await subtle.sign({ name: 'ECDSA', hash: 'SHA-384', }, privateKey, ec.encode(data));
assert(await subtle.verify({ name: 'ECDSA', hash: 'SHA-384', }, publicKey, signature, ec.encode(data))); }
test('hello world').then(common.mustCall());}
// Test Sign/Verify HMAC{ async function test(data) { const ec = new TextEncoder();
const key = await subtle.generateKey({ name: 'HMAC', length: 256, hash: 'SHA-256' }, true, ['sign', 'verify']);
const signature = await subtle.sign({ name: 'HMAC', }, key, ec.encode(data));
assert(await subtle.verify({ name: 'HMAC', }, key, signature, ec.encode(data))); }
test('hello world').then(common.mustCall());}
// Test Sign/Verify Ed25519{ async function test(data) { const ec = new TextEncoder(); const { publicKey, privateKey } = await subtle.generateKey({ name: 'Ed25519', }, true, ['sign', 'verify']);
const signature = await subtle.sign({ name: 'Ed25519', }, privateKey, ec.encode(data));
assert(await subtle.verify({ name: 'Ed25519', }, publicKey, signature, ec.encode(data))); }
test('hello world').then(common.mustCall());}
// Test Sign/Verify Ed448// TODO(cjihrig): Pending support in Deno core.// {// async function test(data) {// const ec = new TextEncoder();// const { publicKey, privateKey } = await subtle.generateKey({// name: 'Ed448',// }, true, ['sign', 'verify']);
// const signature = await subtle.sign({// name: 'Ed448',// }, privateKey, ec.encode(data));
// assert(await subtle.verify({// name: 'Ed448',// }, publicKey, signature, ec.encode(data)));// }
// test('hello world').then(common.mustCall());// }
Version Info