From 88d9be6dbc015424b19dcf7c3d8a9e8b9e18584f Mon Sep 17 00:00:00 2001
From: Damyan Mitev <damyan.mitev@vereign.com>
Date: Wed, 3 Jul 2019 15:17:49 +0300
Subject: [PATCH] Fix pkijs.RelativeDistinguishedNames.toSchema()

---
 javascript/src/utilities/signingUtilities.js | 23 ++++++++++++++++++++
 1 file changed, 23 insertions(+)

diff --git a/javascript/src/utilities/signingUtilities.js b/javascript/src/utilities/signingUtilities.js
index db47ed6..2fa2064 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();
-- 
GitLab