|
| 1 | +/* |
| 2 | + * Copyright 2019 Amazon.com, Inc. or its affiliates. All Rights Reserved. |
| 3 | + * |
| 4 | + * Licensed under the Apache License, Version 2.0 (the "License"). You may not use |
| 5 | + * this file except in compliance with the License. A copy of the License is |
| 6 | + * located at |
| 7 | + * |
| 8 | + * http://aws.amazon.com/apache2.0/ |
| 9 | + * |
| 10 | + * or in the "license" file accompanying this file. This file is distributed on an |
| 11 | + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or |
| 12 | + * implied. See the License for the specific language governing permissions and |
| 13 | + * limitations under the License. |
| 14 | + */ |
| 15 | + |
| 16 | +/* eslint-env mocha */ |
| 17 | + |
| 18 | +import { expect } from 'chai' |
| 19 | +import 'mocha' |
| 20 | +import { |
| 21 | + kmsKeyring, |
| 22 | + aesKeyring, |
| 23 | + rsaKeyring, |
| 24 | + keyringNode |
| 25 | +} from '../src/index' |
| 26 | +import { KMSKey, KmsKeyInfo, AESKey, AesKeyInfo, RSAKey, RsaKeyInfo } from '../src/types' // eslint-disable-line no-unused-vars |
| 27 | + |
| 28 | +const kmsKey: KMSKey = { |
| 29 | + 'encrypt': true, |
| 30 | + 'decrypt': true, |
| 31 | + 'type': 'aws-kms', |
| 32 | + 'key-id': 'arn:aws:kms:us-west-2:658956600833:key/b3537ef1-d8dc-4780-9f5a-55776cbb2f7f' |
| 33 | +} |
| 34 | +const kmsInfo: KmsKeyInfo = { |
| 35 | + 'type': 'aws-kms', |
| 36 | + 'key': 'us-west-2-decryptable' |
| 37 | +} |
| 38 | +const aesKey: AESKey = { |
| 39 | + 'encrypt': true, |
| 40 | + 'decrypt': true, |
| 41 | + 'algorithm': 'aes', |
| 42 | + 'type': 'symmetric', |
| 43 | + 'bits': 128, |
| 44 | + 'encoding': 'base64', |
| 45 | + 'material': 'AAECAwQFBgcICRAREhMUFQ==', |
| 46 | + 'key-id': 'aes-128' |
| 47 | +} |
| 48 | +const aesInfo: AesKeyInfo = { |
| 49 | + 'type': 'raw', |
| 50 | + 'key': 'aes-128', |
| 51 | + 'provider-id': 'aws-raw-vectors-persistant', |
| 52 | + 'encryption-algorithm': 'aes', |
| 53 | + 'padding-algorithm': null |
| 54 | +} |
| 55 | +const rsaKey: RSAKey = { |
| 56 | + 'encrypt': true, |
| 57 | + 'decrypt': true, |
| 58 | + 'algorithm': 'rsa', |
| 59 | + 'type': 'private', |
| 60 | + 'bits': 4096, |
| 61 | + 'encoding': 'pem', |
| 62 | + 'material': '-----BEGIN PRIVATE KEY-----\n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\ndzxtGxpeTBi+KhKlca8SlCdCqYwG6Q==\n-----END PRIVATE KEY-----', |
| 63 | + 'key-id': 'rsa-4096-private' |
| 64 | +} |
| 65 | +const rsaInfo: RsaKeyInfo = { |
| 66 | + 'type': 'raw', |
| 67 | + 'key': 'rsa-4096-private', |
| 68 | + 'provider-id': 'aws-raw-vectors-persistant', |
| 69 | + 'encryption-algorithm': 'rsa', |
| 70 | + 'padding-algorithm': 'pkcs1' |
| 71 | +} |
| 72 | + |
| 73 | +describe('how to build keyrings', () => { |
| 74 | + it('kmsKeyring', () => { |
| 75 | + const test = kmsKeyring(kmsInfo, kmsKey) |
| 76 | + expect(test.generatorKeyId).to.equal(kmsKey['key-id']) |
| 77 | + }) |
| 78 | + |
| 79 | + it('aesKeyring', () => { |
| 80 | + const test = aesKeyring(aesInfo, aesKey) |
| 81 | + expect(test.keyName).to.equal(aesInfo.key) |
| 82 | + }) |
| 83 | + |
| 84 | + it('rsaKeyring', () => { |
| 85 | + const test = rsaKeyring(rsaInfo, rsaKey) |
| 86 | + expect(test.keyName).to.equal(rsaInfo.key) |
| 87 | + }) |
| 88 | + |
| 89 | + it('keyringNode: kmsKeyring', () => { |
| 90 | + const test: any = keyringNode([kmsInfo, kmsKey]) |
| 91 | + expect(test.generatorKeyId).to.equal(kmsKey['key-id']) |
| 92 | + }) |
| 93 | + |
| 94 | + it('keyringNode: aesKeyring', () => { |
| 95 | + const test: any = keyringNode([aesInfo, aesKey]) |
| 96 | + expect(test.keyName).to.equal(aesInfo.key) |
| 97 | + }) |
| 98 | + |
| 99 | + it('keyringNode: rsaKeyring', () => { |
| 100 | + const test: any = keyringNode([rsaInfo, rsaKey]) |
| 101 | + expect(test.keyName).to.equal(rsaInfo.key) |
| 102 | + }) |
| 103 | +}) |
0 commit comments