diff --git a/javascript/src/iframe/viamapi-iframe.js b/javascript/src/iframe/viamapi-iframe.js index efd6fe262831e165c52e6723ba09232701b48b6a..0bb7f7b785cc65655c94ea3eea2e00e5449c8b17 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"