diff --git a/javascript/src/iframe/viamapi-iframe.js b/javascript/src/iframe/viamapi-iframe.js
index aec4b16e3ef7deb60d5d35927e56c967b261bc4b..53e0e1ae83568b2c2b18acde8196260ccc4154ce 100644
--- a/javascript/src/iframe/viamapi-iframe.js
+++ b/javascript/src/iframe/viamapi-iframe.js
@@ -20,10 +20,11 @@ import {
 } from "../utilities/appUtility";
 import { LOGIN_MODES } from "../constants/authentication";
 import {
+  CertificateData,
   createOneTimePassportCertificate,
   createPassportCertificate,
   decryptMessage,
-  encryptMessage,
+  encryptMessage, parseCertificate,
   signEmail,
   verifySMIME
 } from "../utilities/signingUtilities";
@@ -1095,6 +1096,41 @@ const connection = Penpal.connectToParent({
 
       return encodeResponse("200", verificationResult.verified, verificationResult.message);
     },
+    validateDocument: async (documentUUID, contentType) => {
+      const authenticationPublicKey = localStorage.getItem("authenticatedIdentity");
+
+      if (
+        !authenticationPublicKey ||
+        !window.loadedIdentities[authenticationPublicKey] ||
+        !extendPinCodeTtl(authenticationPublicKey)
+      ) {
+        return encodeResponse("400", "", "Identity not authenticated");
+      }
+
+      const validateDocumentResponse = await executeRestfulFunction(
+        "private",
+        window.viamApi,
+        window.viamApi.documentValidateDocumentByUUID,
+        null,
+        documentUUID,
+        contentType);
+
+      if (validateDocumentResponse.code !== "200") {
+        return encodeResponse("400", "", validateDocumentResponse.status);
+      }
+
+      const signatures = validateDocumentResponse.data;
+      for (const signature of signatures) {
+        const certificateChain = signature.certificateChainPEM.map((certificatePEM) => {
+          const certificate = parseCertificate(certificatePEM);
+          const certificateData = new CertificateData(certificate);
+          return certificateData;
+        });
+        signature.certificateChain = certificateChain;
+      }
+
+      return validateDocumentResponse;
+    },
     signEmail: async (passportUUID, emailArg, emailMessage) => {
       const authenticationPublicKey = localStorage.getItem(
         "authenticatedIdentity"