From 14817c6855e793a88bca3d6b31c993fbcf9f6526 Mon Sep 17 00:00:00 2001
From: Damyan Mitev <damyan.mitev@vereign.com>
Date: Thu, 13 Jun 2019 14:49:45 +0300
Subject: [PATCH] add verifySMIME to viamapi-iframe

---
 javascript/src/iframe/viamapi-iframe.js | 32 ++++++++++++++++++++++++-
 1 file changed, 31 insertions(+), 1 deletion(-)

diff --git a/javascript/src/iframe/viamapi-iframe.js b/javascript/src/iframe/viamapi-iframe.js
index efd6fe2..0bb7f7b 100644
--- a/javascript/src/iframe/viamapi-iframe.js
+++ b/javascript/src/iframe/viamapi-iframe.js
@@ -24,7 +24,8 @@ import {
   createPassportCertificate,
   decryptMessage,
   encryptMessage,
-  signEmail
+  signEmail,
+  verifySMIME
 } from "../utilities/signingUtilities";
 import { signPdf } from "../utilities/pdfUtilities";
 import CryptoData from "../CryptoData";
@@ -1051,6 +1052,35 @@ const connection = Penpal.connectToParent({
         );
       });
     },
+    verifySMIME: async (smimeString) => {
+      const authenticationPublicKey = localStorage.getItem(
+        "authenticatedIdentity"
+      );
+
+      if (
+        !authenticationPublicKey ||
+        !window.loadedIdentities[authenticationPublicKey] ||
+        !extendPinCodeTtl(authenticationPublicKey)
+      ) {
+        return encodeResponse("400", "", "Identity not authenticated");
+      }
+
+      const rootCaResponse = await executeRestfulFunction(
+        "private",
+        window.viamApi,
+        window.viamApi.signRetrieveRootCertificate,
+        null
+      );
+
+      if (rootCaResponse.code !== "200") {
+        return encodeResponse("400", "", rootCaResponse.status);
+      }
+
+      const rootCaPem = rootCaResponse.data;
+      const success = await verifySMIME(smimeString, rootCaPem);
+
+      return encodeResponse("200", success, "Verified succesfully");
+    },
     signEmail: async (passportUUID, emailArg, emailMessage) => {
       const authenticationPublicKey = localStorage.getItem(
         "authenticatedIdentity"
-- 
GitLab