f755ff0279
* Add test vectors * Add Java tests using test vectors * Add Web Crypto API tests.
72 lines
2.5 KiB
JavaScript
72 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['message']).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);
|
|
}
|
|
|