UNPKG

pooja-docucomb-tink-crypto

Version:

A multi-language, cross-platform library that provides cryptographic APIs that are secure, easy to use correctly, and hard(er) to misuse.

88 lines (74 loc) 3.05 kB
/** * @license * Copyright 2020 Google LLC * SPDX-License-Identifier: Apache-2.0 */ import {CryptoFormat} from './crypto_format'; import {PbKeysetKey as PbKeysetKey, PbOutputPrefixType} from './proto'; describe('crypto format test', function() { it('constants', async function() { expect(CryptoFormat.RAW_PREFIX_SIZE).toBe(0); expect(CryptoFormat.NON_RAW_PREFIX_SIZE).toBe(5); expect(CryptoFormat.LEGACY_PREFIX_SIZE).toBe(5); expect(CryptoFormat.TINK_PREFIX_SIZE).toBe(5); expect(CryptoFormat.LEGACY_START_BYTE).toBe(0x00); expect(CryptoFormat.TINK_START_BYTE).toBe(0x01); }); it('get output prefix unknown prefix type', async function() { let key = new PbKeysetKey() .setOutputPrefixType(PbOutputPrefixType.UNKNOWN_PREFIX) .setKeyId(2864434397); try { CryptoFormat.getOutputPrefix(key); } catch (e: any) { expect(e.toString()) .toBe('SecurityException: Unsupported key prefix type.'); return; } fail('An exception should be thrown.'); }); it('get output prefix invalid key id', async function() { // Key id has to be an unsigned 32-bit integer. const invalidKeyIds = [0.2, -10, 2**32]; let key = new PbKeysetKey().setOutputPrefixType(PbOutputPrefixType.TINK); const invalidKeyIdsLength = invalidKeyIds.length; for (let i = 0; i < invalidKeyIdsLength; i++) { key.setKeyId(invalidKeyIds[i]); try { CryptoFormat.getOutputPrefix(key); } catch (e: any) { expect(e.toString()) .toBe( 'InvalidArgumentsException: Number has to be unsigned 32-bit integer.'); continue; } fail('An exception should be thrown for i: ' + i + '.'); } }); it('get output prefix tink', async function() { const key = new PbKeysetKey() .setOutputPrefixType(PbOutputPrefixType.TINK) .setKeyId(2864434397); const expectedResult = new Uint8Array([CryptoFormat.TINK_START_BYTE, 0xAA, 0xBB, 0xCC, 0xDD]); const actualResult = CryptoFormat.getOutputPrefix(key); expect(actualResult).toEqual(expectedResult); }); it('get output prefix legacy', async function() { const key = new PbKeysetKey() .setOutputPrefixType(PbOutputPrefixType.LEGACY) .setKeyId(16909060); const expectedResult = new Uint8Array( [CryptoFormat.LEGACY_START_BYTE, 0x01, 0x02, 0x03, 0x04]); const actualResult = CryptoFormat.getOutputPrefix(key); expect(actualResult).toEqual(expectedResult); }); it('get output prefix raw', async function() { const key = new PbKeysetKey() .setOutputPrefixType(PbOutputPrefixType.RAW) .setKeyId(370491921); const expectedResult = new Uint8Array(0); const actualResult = CryptoFormat.getOutputPrefix(key); expect(actualResult).toEqual(expectedResult); }); });