// 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()); // }