diff --git a/javascript/src/utilities/signingUtilities.js b/javascript/src/utilities/signingUtilities.js index db47ed62ed7c1c3fd455405cd95092a84a7129ff..2fa2064cb262f70771a965f419cfc7e51ede8c19 100644 --- a/javascript/src/utilities/signingUtilities.js +++ b/javascript/src/utilities/signingUtilities.js @@ -124,8 +124,28 @@ function generateKeys(algorithms) { return crypto.generateKey(algorithm.algorithm, true, algorithm.usages); } +function fixPkijsRDN() { + pkijs.RelativeDistinguishedNames.prototype.toSchema = function () { + //region Decode stored TBS value + if (this.valueBeforeDecode.byteLength === 0) // No stored encoded array, create "from scratch" + { + return (new asn1js.Sequence({ + value: Array.from(this.typesAndValues, element => new asn1js.Set({value: [element.toSchema()]})) + })); + } + + const asn1 = asn1js.fromBER(this.valueBeforeDecode); + //endregion + + //region Construct and return new ASN.1 schema for this object + return asn1.result; + //endregion + }; +} + //********************************************************************************* function createCertificate(certData, issuerData = null) { + if (typeof certData === "undefined") { return Promise.reject("No Certificate data provided"); } @@ -1252,3 +1272,6 @@ export const verifySMIME = (smimeString, rootCaPem) => { }, 50); }); }; + +//Initialization block +fixPkijsRDN();