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
JavaScript
/**
* @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=