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.
64 lines • 6.79 kB
JavaScript
/**
* @license
* Copyright 2020 Google LLC
* SPDX-License-Identifier: Apache-2.0
*/
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
return new (P || (P = Promise))(function (resolve, reject) {
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
step((generator = generator.apply(thisArg, _arguments || [])).next());
});
};
import { SecurityException } from '../exception/security_exception';
import * as Bytes from '../subtle/bytes';
import * as Validators from '../subtle/validators';
import { PublicKeySign } from './internal/public_key_sign';
/**
* @final
*/
class WrappedPublicKeySign extends PublicKeySign {
// The constructor should be @private, but it is not supported by Closure
// (see https://github.com/google/closure-compiler/issues/2761).
constructor(primitiveSet) {
super();
this.primitiveSet = primitiveSet;
}
static newPublicKeySign(primitiveSet) {
if (!primitiveSet) {
throw new SecurityException('Primitive set has to be non-null.');
}
if (!primitiveSet.getPrimary()) {
throw new SecurityException('Primary has to be non-null.');
}
return new WrappedPublicKeySign(primitiveSet);
}
sign(data) {
return __awaiter(this, void 0, void 0, function* () {
Validators.requireUint8Array(data);
const primary = this.primitiveSet.getPrimary();
if (!primary) {
throw new SecurityException('Primary not set.');
}
const primitive = primary.getPrimitive();
const signature = yield primitive.sign(data);
const keyId = primary.getIdentifier();
return Bytes.concat(keyId, signature);
});
}
}
export class PublicKeySignWrapper {
/**
*/
wrap(primitiveSet) {
return WrappedPublicKeySign.newPublicKeySign(primitiveSet);
}
/**
*/
getPrimitiveType() {
return PublicKeySign;
}
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljX2tleV9zaWduX3dyYXBwZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zaWduYXR1cmUvcHVibGljX2tleV9zaWduX3dyYXBwZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7R0FJRzs7Ozs7Ozs7OztBQUVILE9BQU8sRUFBQyxpQkFBaUIsRUFBQyxNQUFNLGlDQUFpQyxDQUFDO0FBR2xFLE9BQU8sS0FBSyxLQUFLLE1BQU0saUJBQWlCLENBQUM7QUFDekMsT0FBTyxLQUFLLFVBQVUsTUFBTSxzQkFBc0IsQ0FBQztBQUVuRCxPQUFPLEVBQUMsYUFBYSxFQUFDLE1BQU0sNEJBQTRCLENBQUM7QUFFekQ7O0dBRUc7QUFDSCxNQUFNLG9CQUFxQixTQUFRLGFBQWE7SUFDOUMseUVBQXlFO0lBQ3pFLGdFQUFnRTtJQUNoRSxZQUE2QixZQUMyQjtRQUN0RCxLQUFLLEVBQUUsQ0FBQztRQUZtQixpQkFBWSxHQUFaLFlBQVksQ0FDZTtJQUV4RCxDQUFDO0lBRUQsTUFBTSxDQUFDLGdCQUFnQixDQUNuQixZQUFzRDtRQUN4RCxJQUFJLENBQUMsWUFBWSxFQUFFO1lBQ2pCLE1BQU0sSUFBSSxpQkFBaUIsQ0FBQyxtQ0FBbUMsQ0FBQyxDQUFDO1NBQ2xFO1FBQ0QsSUFBSSxDQUFDLFlBQVksQ0FBQyxVQUFVLEVBQUUsRUFBRTtZQUM5QixNQUFNLElBQUksaUJBQWlCLENBQUMsNkJBQTZCLENBQUMsQ0FBQztTQUM1RDtRQUNELE9BQU8sSUFBSSxvQkFBb0IsQ0FBQyxZQUFZLENBQUMsQ0FBQztJQUNoRCxDQUFDO0lBRUssSUFBSSxDQUFDLElBQWdCOztZQUN6QixVQUFVLENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDbkMsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxVQUFVLEVBQUUsQ0FBQztZQUMvQyxJQUFJLENBQUMsT0FBTyxFQUFFO2dCQUNaLE1BQU0sSUFBSSxpQkFBaUIsQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO2FBQ2pEO1lBQ0QsTUFBTSxTQUFTLEdBQUcsT0FBTyxDQUFDLFlBQVksRUFBRSxDQUFDO1lBQ3pDLE1BQU0sU0FBUyxHQUFHLE1BQU0sU0FBUyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUM3QyxNQUFNLEtBQUssR0FBRyxPQUFPLENBQUMsYUFBYSxFQUFFLENBQUM7WUFDdEMsT0FBTyxLQUFLLENBQUMsTUFBTSxDQUFDLEtBQUssRUFBRSxTQUFTLENBQUMsQ0FBQztRQUN4QyxDQUFDO0tBQUE7Q0FDRjtBQUVELE1BQU0sT0FBTyxvQkFBb0I7SUFDL0I7T0FDRztJQUNILElBQUksQ0FBQyxZQUFzRDtRQUN6RCxPQUFPLG9CQUFvQixDQUFDLGdCQUFnQixDQUFDLFlBQVksQ0FBQyxDQUFDO0lBQzdELENBQUM7SUFFRDtPQUNHO0lBQ0gsZ0JBQWdCO1FBQ2QsT0FBTyxhQUFhLENBQUM7SUFDdkIsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAbGljZW5zZVxuICogQ29weXJpZ2h0IDIwMjAgR29vZ2xlIExMQ1xuICogU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjBcbiAqL1xuXG5pbXBvcnQge1NlY3VyaXR5RXhjZXB0aW9ufSBmcm9tICcuLi9leGNlcHRpb24vc2VjdXJpdHlfZXhjZXB0aW9uJztcbmltcG9ydCAqIGFzIFByaW1pdGl2ZVNldCBmcm9tICcuLi9pbnRlcm5hbC9wcmltaXRpdmVfc2V0JztcbmltcG9ydCB7UHJpbWl0aXZlV3JhcHBlcn0gZnJvbSAnLi4vaW50ZXJuYWwvcHJpbWl0aXZlX3dyYXBwZXInO1xuaW1wb3J0ICogYXMgQnl0ZXMgZnJvbSAnLi4vc3VidGxlL2J5dGVzJztcbmltcG9ydCAqIGFzIFZhbGlkYXRvcnMgZnJvbSAnLi4vc3VidGxlL3ZhbGlkYXRvcnMnO1xuXG5pbXBvcnQge1B1YmxpY0tleVNpZ259IGZyb20gJy4vaW50ZXJuYWwvcHVibGljX2tleV9zaWduJztcblxuLyoqXG4gKiBAZmluYWxcbiAqL1xuY2xhc3MgV3JhcHBlZFB1YmxpY0tleVNpZ24gZXh0ZW5kcyBQdWJsaWNLZXlTaWduIHtcbiAgLy8gVGhlIGNvbnN0cnVjdG9yIHNob3VsZCBiZSBAcHJpdmF0ZSwgYnV0IGl0IGlzIG5vdCBzdXBwb3J0ZWQgYnkgQ2xvc3VyZVxuICAvLyAoc2VlIGh0dHBzOi8vZ2l0aHViLmNvbS9nb29nbGUvY2xvc3VyZS1jb21waWxlci9pc3N1ZXMvMjc2MSkuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgcmVhZG9ubHkgcHJpbWl0aXZlU2V0OlxuICAgICAgICAgICAgICAgICAgUHJpbWl0aXZlU2V0LlByaW1pdGl2ZVNldDxQdWJsaWNLZXlTaWduPikge1xuICAgIHN1cGVyKCk7XG4gIH1cblxuICBzdGF0aWMgbmV3UHVibGljS2V5U2lnbihcbiAgICAgIHByaW1pdGl2ZVNldDogUHJpbWl0aXZlU2V0LlByaW1pdGl2ZVNldDxQdWJsaWNLZXlTaWduPik6IFB1YmxpY0tleVNpZ24ge1xuICAgIGlmICghcHJpbWl0aXZlU2V0KSB7XG4gICAgICB0aHJvdyBuZXcgU2VjdXJpdHlFeGNlcHRpb24oJ1ByaW1pdGl2ZSBzZXQgaGFzIHRvIGJlIG5vbi1udWxsLicpO1xuICAgIH1cbiAgICBpZiAoIXByaW1pdGl2ZVNldC5nZXRQcmltYXJ5KCkpIHtcbiAgICAgIHRocm93IG5ldyBTZWN1cml0eUV4Y2VwdGlvbignUHJpbWFyeSBoYXMgdG8gYmUgbm9uLW51bGwuJyk7XG4gICAgfVxuICAgIHJldHVybiBuZXcgV3JhcHBlZFB1YmxpY0tleVNpZ24ocHJpbWl0aXZlU2V0KTtcbiAgfVxuXG4gIGFzeW5jIHNpZ24oZGF0YTogVWludDhBcnJheSkge1xuICAgIFZhbGlkYXRvcnMucmVxdWlyZVVpbnQ4QXJyYXkoZGF0YSk7XG4gICAgY29uc3QgcHJpbWFyeSA9IHRoaXMucHJpbWl0aXZlU2V0LmdldFByaW1hcnkoKTtcbiAgICBpZiAoIXByaW1hcnkpIHtcbiAgICAgIHRocm93IG5ldyBTZWN1cml0eUV4Y2VwdGlvbignUHJpbWFyeSBub3Qgc2V0LicpO1xuICAgIH1cbiAgICBjb25zdCBwcmltaXRpdmUgPSBwcmltYXJ5LmdldFByaW1pdGl2ZSgpO1xuICAgIGNvbnN0IHNpZ25hdHVyZSA9IGF3YWl0IHByaW1pdGl2ZS5zaWduKGRhdGEpO1xuICAgIGNvbnN0IGtleUlkID0gcHJpbWFyeS5nZXRJZGVudGlmaWVyKCk7XG4gICAgcmV0dXJuIEJ5dGVzLmNvbmNhdChrZXlJZCwgc2lnbmF0dXJlKTtcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgUHVibGljS2V5U2lnbldyYXBwZXIgaW1wbGVtZW50cyBQcmltaXRpdmVXcmFwcGVyPFB1YmxpY0tleVNpZ24+IHtcbiAgLyoqXG4gICAqL1xuICB3cmFwKHByaW1pdGl2ZVNldDogUHJpbWl0aXZlU2V0LlByaW1pdGl2ZVNldDxQdWJsaWNLZXlTaWduPikge1xuICAgIHJldHVybiBXcmFwcGVkUHVibGljS2V5U2lnbi5uZXdQdWJsaWNLZXlTaWduKHByaW1pdGl2ZVNldCk7XG4gIH1cblxuICAvKipcbiAgICovXG4gIGdldFByaW1pdGl2ZVR5cGUoKSB7XG4gICAgcmV0dXJuIFB1YmxpY0tleVNpZ247XG4gIH1cbn1cbiJdfQ==