UNPKG

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.

67 lines 6.24 kB
/** * @license * Copyright 2020 Google LLC * SPDX-License-Identifier: Apache-2.0 */ import { PbAesGcmKeyFormat, PbKeyTemplate, PbOutputPrefixType } from '../internal/proto'; import { AesGcmKeyManager } from './aes_gcm_key_manager'; /** * Pre-generated KeyTemplates for AES GCM keys. * * @final */ export class AesGcmKeyTemplates { /** * Returns a KeyTemplate that generates new instances of AesGcmKey * with the following parameters: * key size: 16 bytes * OutputPrefixType: TINK * */ static aes128Gcm() { return AesGcmKeyTemplates.newAesGcmKeyTemplate( /* keySize = */ 16, /* outputPrefixType = */ PbOutputPrefixType.TINK); } /** * Returns a KeyTemplate that generates new instances of AesGcmKey * with the following parameters: * key size: 32 bytes * OutputPrefixType: TINK * */ static aes256Gcm() { return AesGcmKeyTemplates.newAesGcmKeyTemplate( /* keySize = */ 32, /* outputPrefixType = */ PbOutputPrefixType.TINK); } /** * Returns a KeyTemplate that generates new instances of AesGcmKey * with the following parameters: * key size: 32 bytes * OutputPrefixType: RAW * */ static aes256GcmNoPrefix() { return AesGcmKeyTemplates.newAesGcmKeyTemplate( /* keySize = */ 32, /* outputPrefixType = */ PbOutputPrefixType.RAW); } static newAesGcmKeyTemplate(keySize, outputPrefixType) { // Define AES GCM key format. const keyFormat = (new PbAesGcmKeyFormat()).setKeySize(keySize); // Define key template. const keyTemplate = (new PbKeyTemplate()) .setTypeUrl(AesGcmKeyManager.KEY_TYPE) .setOutputPrefixType(outputPrefixType) .setValue(keyFormat.serializeBinary()); return keyTemplate; } } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWVzX2djbV9rZXlfdGVtcGxhdGVzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vYWVhZC9hZXNfZ2NtX2tleV90ZW1wbGF0ZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7R0FJRztBQUVILE9BQU8sRUFBQyxpQkFBaUIsRUFBRSxhQUFhLEVBQUUsa0JBQWtCLEVBQUMsTUFBTSxtQkFBbUIsQ0FBQztBQUV2RixPQUFPLEVBQUMsZ0JBQWdCLEVBQUMsTUFBTSx1QkFBdUIsQ0FBQztBQUV2RDs7OztHQUlHO0FBQ0gsTUFBTSxPQUFPLGtCQUFrQjtJQUM3Qjs7Ozs7O09BTUc7SUFDSCxNQUFNLENBQUMsU0FBUztRQUNkLE9BQU8sa0JBQWtCLENBQUMsb0JBQW9CO1FBQzFDLGVBQWU7UUFDZixFQUFFO1FBQ0Ysd0JBQXdCO1FBQ3hCLGtCQUFrQixDQUFDLElBQUksQ0FBQyxDQUFDO0lBQy9CLENBQUM7SUFFRDs7Ozs7O09BTUc7SUFDSCxNQUFNLENBQUMsU0FBUztRQUNkLE9BQU8sa0JBQWtCLENBQUMsb0JBQW9CO1FBQzFDLGVBQWU7UUFDZixFQUFFO1FBQ0Ysd0JBQXdCO1FBQ3hCLGtCQUFrQixDQUFDLElBQUksQ0FBQyxDQUFDO0lBQy9CLENBQUM7SUFFRDs7Ozs7O09BTUc7SUFDSCxNQUFNLENBQUMsaUJBQWlCO1FBQ3RCLE9BQU8sa0JBQWtCLENBQUMsb0JBQW9CO1FBQzFDLGVBQWU7UUFDZixFQUFFO1FBQ0Ysd0JBQXdCO1FBQ3hCLGtCQUFrQixDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQzlCLENBQUM7SUFFTyxNQUFNLENBQUMsb0JBQW9CLENBQy9CLE9BQWUsRUFBRSxnQkFBb0M7UUFDdkQsNkJBQTZCO1FBQzdCLE1BQU0sU0FBUyxHQUFHLENBQUMsSUFBSSxpQkFBaUIsRUFBRSxDQUFDLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBRWhFLHVCQUF1QjtRQUN2QixNQUFNLFdBQVcsR0FBRyxDQUFDLElBQUksYUFBYSxFQUFFLENBQUM7YUFDaEIsVUFBVSxDQUFDLGdCQUFnQixDQUFDLFFBQVEsQ0FBQzthQUNyQyxtQkFBbUIsQ0FBQyxnQkFBZ0IsQ0FBQzthQUNyQyxRQUFRLENBQUMsU0FBUyxDQUFDLGVBQWUsRUFBRSxDQUFDLENBQUM7UUFDL0QsT0FBTyxXQUFXLENBQUM7SUFDckIsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAbGljZW5zZVxuICogQ29weXJpZ2h0IDIwMjAgR29vZ2xlIExMQ1xuICogU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjBcbiAqL1xuXG5pbXBvcnQge1BiQWVzR2NtS2V5Rm9ybWF0LCBQYktleVRlbXBsYXRlLCBQYk91dHB1dFByZWZpeFR5cGV9IGZyb20gJy4uL2ludGVybmFsL3Byb3RvJztcblxuaW1wb3J0IHtBZXNHY21LZXlNYW5hZ2VyfSBmcm9tICcuL2Flc19nY21fa2V5X21hbmFnZXInO1xuXG4vKipcbiAqIFByZS1nZW5lcmF0ZWQgS2V5VGVtcGxhdGVzIGZvciBBRVMgR0NNIGtleXMuXG4gKlxuICogQGZpbmFsXG4gKi9cbmV4cG9ydCBjbGFzcyBBZXNHY21LZXlUZW1wbGF0ZXMge1xuICAvKipcbiAgICogUmV0dXJucyBhIEtleVRlbXBsYXRlIHRoYXQgZ2VuZXJhdGVzIG5ldyBpbnN0YW5jZXMgb2YgQWVzR2NtS2V5XG4gICAqIHdpdGggdGhlIGZvbGxvd2luZyBwYXJhbWV0ZXJzOlxuICAgKiAgICBrZXkgc2l6ZTogMTYgYnl0ZXNcbiAgICogICAgT3V0cHV0UHJlZml4VHlwZTogVElOS1xuICAgKlxuICAgKi9cbiAgc3RhdGljIGFlczEyOEdjbSgpOiBQYktleVRlbXBsYXRlIHtcbiAgICByZXR1cm4gQWVzR2NtS2V5VGVtcGxhdGVzLm5ld0Flc0djbUtleVRlbXBsYXRlKFxuICAgICAgICAvKiBrZXlTaXplID0gKi9cbiAgICAgICAgMTYsXG4gICAgICAgIC8qIG91dHB1dFByZWZpeFR5cGUgPSAqL1xuICAgICAgICBQYk91dHB1dFByZWZpeFR5cGUuVElOSyk7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJucyBhIEtleVRlbXBsYXRlIHRoYXQgZ2VuZXJhdGVzIG5ldyBpbnN0YW5jZXMgb2YgQWVzR2NtS2V5XG4gICAqIHdpdGggdGhlIGZvbGxvd2luZyBwYXJhbWV0ZXJzOlxuICAgKiAgICBrZXkgc2l6ZTogMzIgYnl0ZXNcbiAgICogICAgT3V0cHV0UHJlZml4VHlwZTogVElOS1xuICAgKlxuICAgKi9cbiAgc3RhdGljIGFlczI1NkdjbSgpOiBQYktleVRlbXBsYXRlIHtcbiAgICByZXR1cm4gQWVzR2NtS2V5VGVtcGxhdGVzLm5ld0Flc0djbUtleVRlbXBsYXRlKFxuICAgICAgICAvKiBrZXlTaXplID0gKi9cbiAgICAgICAgMzIsXG4gICAgICAgIC8qIG91dHB1dFByZWZpeFR5cGUgPSAqL1xuICAgICAgICBQYk91dHB1dFByZWZpeFR5cGUuVElOSyk7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJucyBhIEtleVRlbXBsYXRlIHRoYXQgZ2VuZXJhdGVzIG5ldyBpbnN0YW5jZXMgb2YgQWVzR2NtS2V5XG4gICAqIHdpdGggdGhlIGZvbGxvd2luZyBwYXJhbWV0ZXJzOlxuICAgKiAgICAga2V5IHNpemU6IDMyIGJ5dGVzXG4gICAqICAgICBPdXRwdXRQcmVmaXhUeXBlOiBSQVdcbiAgICpcbiAgICovXG4gIHN0YXRpYyBhZXMyNTZHY21Ob1ByZWZpeCgpOiBQYktleVRlbXBsYXRlIHtcbiAgICByZXR1cm4gQWVzR2NtS2V5VGVtcGxhdGVzLm5ld0Flc0djbUtleVRlbXBsYXRlKFxuICAgICAgICAvKiBrZXlTaXplID0gKi9cbiAgICAgICAgMzIsXG4gICAgICAgIC8qIG91dHB1dFByZWZpeFR5cGUgPSAqL1xuICAgICAgICBQYk91dHB1dFByZWZpeFR5cGUuUkFXKTtcbiAgfVxuXG4gIHByaXZhdGUgc3RhdGljIG5ld0Flc0djbUtleVRlbXBsYXRlKFxuICAgICAga2V5U2l6ZTogbnVtYmVyLCBvdXRwdXRQcmVmaXhUeXBlOiBQYk91dHB1dFByZWZpeFR5cGUpOiBQYktleVRlbXBsYXRlIHtcbiAgICAvLyBEZWZpbmUgQUVTIEdDTSBrZXkgZm9ybWF0LlxuICAgIGNvbnN0IGtleUZvcm1hdCA9IChuZXcgUGJBZXNHY21LZXlGb3JtYXQoKSkuc2V0S2V5U2l6ZShrZXlTaXplKTtcblxuICAgIC8vIERlZmluZSBrZXkgdGVtcGxhdGUuXG4gICAgY29uc3Qga2V5VGVtcGxhdGUgPSAobmV3IFBiS2V5VGVtcGxhdGUoKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuc2V0VHlwZVVybChBZXNHY21LZXlNYW5hZ2VyLktFWV9UWVBFKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5zZXRPdXRwdXRQcmVmaXhUeXBlKG91dHB1dFByZWZpeFR5cGUpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLnNldFZhbHVlKGtleUZvcm1hdC5zZXJpYWxpemVCaW5hcnkoKSk7XG4gICAgcmV0dXJuIGtleVRlbXBsYXRlO1xuICB9XG59XG4iXX0=