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.

41 lines 4.28 kB
/** * @license * Copyright 2020 Google LLC * SPDX-License-Identifier: Apache-2.0 */ import { SecurityException } from '../exception/security_exception'; import { PbKeyset } from './proto'; /** * BinaryKeysetReader knows how to read a keyset or an encrypted keyset * serialized to binary format. * * @final */ export class BinaryKeysetReader { constructor(serializedKeyset) { this.serializedKeyset = serializedKeyset; } static withUint8Array(serializedKeyset) { if (!serializedKeyset) { throw new SecurityException('Serialized keyset has to be non-null.'); } return new BinaryKeysetReader(serializedKeyset); } read() { let keyset; try { keyset = PbKeyset.deserializeBinary(this.serializedKeyset); } catch (e) { throw new SecurityException('Could not parse the given serialized proto as a keyset proto.'); } if (keyset.getKeyList().length === 0) { throw new SecurityException('Could not parse the given serialized proto as a keyset proto.'); } return keyset; } readEncrypted() { throw new SecurityException('Not implemented yet.'); } } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmluYXJ5X2tleXNldF9yZWFkZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9pbnRlcm5hbC9iaW5hcnlfa2V5c2V0X3JlYWRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7OztHQUlHO0FBRUgsT0FBTyxFQUFDLGlCQUFpQixFQUFDLE1BQU0saUNBQWlDLENBQUM7QUFHbEUsT0FBTyxFQUFvQixRQUFRLEVBQUMsTUFBTSxTQUFTLENBQUM7QUFFcEQ7Ozs7O0dBS0c7QUFDSCxNQUFNLE9BQU8sa0JBQWtCO0lBQzdCLFlBQTZCLGdCQUE0QjtRQUE1QixxQkFBZ0IsR0FBaEIsZ0JBQWdCLENBQVk7SUFBRyxDQUFDO0lBRTdELE1BQU0sQ0FBQyxjQUFjLENBQUMsZ0JBQTRCO1FBQ2hELElBQUksQ0FBQyxnQkFBZ0IsRUFBRTtZQUNyQixNQUFNLElBQUksaUJBQWlCLENBQUMsdUNBQXVDLENBQUMsQ0FBQztTQUN0RTtRQUNELE9BQU8sSUFBSSxrQkFBa0IsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO0lBQ2xELENBQUM7SUFFRCxJQUFJO1FBQ0YsSUFBSSxNQUFnQixDQUFDO1FBQ3JCLElBQUk7WUFDRixNQUFNLEdBQUcsUUFBUSxDQUFDLGlCQUFpQixDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO1NBQzVEO1FBQUMsT0FBTyxDQUFDLEVBQUU7WUFDVixNQUFNLElBQUksaUJBQWlCLENBQ3ZCLCtEQUErRCxDQUFDLENBQUM7U0FDdEU7UUFDRCxJQUFJLE1BQU0sQ0FBQyxVQUFVLEVBQUUsQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFO1lBQ3BDLE1BQU0sSUFBSSxpQkFBaUIsQ0FDdkIsK0RBQStELENBQUMsQ0FBQztTQUN0RTtRQUNELE9BQU8sTUFBTSxDQUFDO0lBQ2hCLENBQUM7SUFFRCxhQUFhO1FBQ1gsTUFBTSxJQUFJLGlCQUFpQixDQUFDLHNCQUFzQixDQUFDLENBQUM7SUFDdEQsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAbGljZW5zZVxuICogQ29weXJpZ2h0IDIwMjAgR29vZ2xlIExMQ1xuICogU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjBcbiAqL1xuXG5pbXBvcnQge1NlY3VyaXR5RXhjZXB0aW9ufSBmcm9tICcuLi9leGNlcHRpb24vc2VjdXJpdHlfZXhjZXB0aW9uJztcblxuaW1wb3J0IHtLZXlzZXRSZWFkZXJ9IGZyb20gJy4va2V5c2V0X3JlYWRlcic7XG5pbXBvcnQge1BiRW5jcnlwdGVkS2V5c2V0LCBQYktleXNldH0gZnJvbSAnLi9wcm90byc7XG5cbi8qKlxuICogQmluYXJ5S2V5c2V0UmVhZGVyIGtub3dzIGhvdyB0byByZWFkIGEga2V5c2V0IG9yIGFuIGVuY3J5cHRlZCBrZXlzZXRcbiAqIHNlcmlhbGl6ZWQgdG8gYmluYXJ5IGZvcm1hdC5cbiAqXG4gKiBAZmluYWxcbiAqL1xuZXhwb3J0IGNsYXNzIEJpbmFyeUtleXNldFJlYWRlciBpbXBsZW1lbnRzIEtleXNldFJlYWRlciB7XG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgcmVhZG9ubHkgc2VyaWFsaXplZEtleXNldDogVWludDhBcnJheSkge31cblxuICBzdGF0aWMgd2l0aFVpbnQ4QXJyYXkoc2VyaWFsaXplZEtleXNldDogVWludDhBcnJheSk6IEJpbmFyeUtleXNldFJlYWRlciB7XG4gICAgaWYgKCFzZXJpYWxpemVkS2V5c2V0KSB7XG4gICAgICB0aHJvdyBuZXcgU2VjdXJpdHlFeGNlcHRpb24oJ1NlcmlhbGl6ZWQga2V5c2V0IGhhcyB0byBiZSBub24tbnVsbC4nKTtcbiAgICB9XG4gICAgcmV0dXJuIG5ldyBCaW5hcnlLZXlzZXRSZWFkZXIoc2VyaWFsaXplZEtleXNldCk7XG4gIH1cblxuICByZWFkKCkge1xuICAgIGxldCBrZXlzZXQ6IFBiS2V5c2V0O1xuICAgIHRyeSB7XG4gICAgICBrZXlzZXQgPSBQYktleXNldC5kZXNlcmlhbGl6ZUJpbmFyeSh0aGlzLnNlcmlhbGl6ZWRLZXlzZXQpO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIHRocm93IG5ldyBTZWN1cml0eUV4Y2VwdGlvbihcbiAgICAgICAgICAnQ291bGQgbm90IHBhcnNlIHRoZSBnaXZlbiBzZXJpYWxpemVkIHByb3RvIGFzIGEga2V5c2V0IHByb3RvLicpO1xuICAgIH1cbiAgICBpZiAoa2V5c2V0LmdldEtleUxpc3QoKS5sZW5ndGggPT09IDApIHtcbiAgICAgIHRocm93IG5ldyBTZWN1cml0eUV4Y2VwdGlvbihcbiAgICAgICAgICAnQ291bGQgbm90IHBhcnNlIHRoZSBnaXZlbiBzZXJpYWxpemVkIHByb3RvIGFzIGEga2V5c2V0IHByb3RvLicpO1xuICAgIH1cbiAgICByZXR1cm4ga2V5c2V0O1xuICB9XG5cbiAgcmVhZEVuY3J5cHRlZCgpOiBQYkVuY3J5cHRlZEtleXNldCB7XG4gICAgdGhyb3cgbmV3IFNlY3VyaXR5RXhjZXB0aW9uKCdOb3QgaW1wbGVtZW50ZWQgeWV0LicpO1xuICB9XG59XG4iXX0=