xmldsigjs
Version:
XML Digital Signature implementation in TypeScript/JavaScript using Web Crypto API
43 lines (42 loc) • 1.59 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.SPKIData = void 0;
const tslib_1 = require("tslib");
const xml_core_1 = require("xml-core");
const application_js_1 = require("../../application.js");
const xml_names_js_1 = require("../xml_names.js");
const key_info_clause_js_1 = require("./key_info_clause.js");
let SPKIData = class SPKIData extends key_info_clause_js_1.KeyInfoClause {
async importKey(key) {
const spki = await application_js_1.Application.crypto.subtle.exportKey('spki', key);
this.SPKIexp = new Uint8Array(spki);
this.Key = key;
return this;
}
async exportKey(alg) {
if (!this.SPKIexp) {
throw new Error('SPKI data is not defined');
}
const key = await application_js_1.Application.crypto.subtle.importKey('spki', this.SPKIexp, alg, true, [
'verify',
]);
this.Key = key;
return key;
}
};
exports.SPKIData = SPKIData;
tslib_1.__decorate([
(0, xml_core_1.XmlChildElement)({
localName: xml_names_js_1.XmlSignature.ElementNames.SPKIexp,
namespaceURI: xml_names_js_1.XmlSignature.NamespaceURI,
prefix: xml_names_js_1.XmlSignature.DefaultPrefix,
required: true,
converter: xml_core_1.XmlBase64Converter,
}),
tslib_1.__metadata("design:type", Object)
], SPKIData.prototype, "SPKIexp", void 0);
exports.SPKIData = SPKIData = tslib_1.__decorate([
(0, xml_core_1.XmlElement)({
localName: xml_names_js_1.XmlSignature.ElementNames.SPKIData,
})
], SPKIData);