Files
wycheproof/javascript/webcryptoapi/testcases/RSASSA-PKCS1-v1_5Test.js
T
Thai Duong 31387e2cd5 Project import generated by Copybara.
PiperOrigin-RevId: 191113399
GitOrigin-RevId: cfebd59d1f086e907f468004c7d033199d116fad
2018-04-04 13:54:50 -07:00

73 lines
2.5 KiB
JavaScript

/**
* @license
* Copyright 2017 Google Inc. All rights reserved.
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
/**
* Tests for RSASSA-PKCS1-v1_5 signature implementations of Web Crypto APIs.
*/
goog.provide('wycheproof.webcryptoapi.RSASSA-PKCS1-V1_5');
goog.require('goog.testing.TestCase');
goog.require('goog.testing.asserts');
goog.require('goog.testing.jsunit');
goog.require('wycheproof.BigInteger');
goog.require('wycheproof.TestUtil');
goog.require('wycheproof.webcryptoapi.HashUtil');
goog.require('wycheproof.webcryptoapi.RsaUtil');
var TestUtil = wycheproof.TestUtil;
var RsaUtil = wycheproof.webcryptoapi.RsaUtil;
var HashUtil = wycheproof.webcryptoapi.HashUtil;
var BigInteger = wycheproof.BigInteger;
// Test vector file
var RSASSA_PKCS1_SIGNATURE_VECTOR_FILE
= '../../testvectors/rsa_signature_test.json';
/**
* Tests RSASSA-PKCS1-v1_5 signature implementation with a number of vectors.
*
* @return {!Promise}
*/
function testRsaSsaPkcs1Vectors() {
var tv = TestUtil.readJsonTestVectorsFromFile(
RSASSA_PKCS1_SIGNATURE_VECTOR_FILE);
var testCase = new goog.testing.TestCase();
for (var i = 0; i < tv['testGroups'].length; i++) {
var tg = tv['testGroups'][i];
var e = BigInteger.fromHex(tg['e']).toBase64Url();
var n = BigInteger.fromHex(tg['n']).toBase64Url();
var hashAlg = tg['sha'];
if (SUPPORTED['hash'].indexOf(hashAlg) == -1) {
continue;
}
for (var j = 0; j < tg['tests'].length; j++) {
var tc = tg['tests'][j];
var msg = BigInteger.fromHex(tc['msg']).toArrayBuffer();
var sig = TestUtil.hexToArrayBuffer(tc['sig']);
var result = tc['result'];
var tcId = tc['tcId'];
// Creates new Test Case object
var test = new RsaUtil.RsaSignatureTestCase(tcId, e, n, hashAlg,
RsaUtil.RSASSA_PKCS1, msg, sig, result);
testCase.addNewTest('Test case ' + tcId, RsaUtil.testVerification, test);
}
}
return testCase.runTestsReturningPromise().then(TestUtil.checkTestCaseResult);
}