From e9152ebfb76d7a33311dbf2cef2c5d4437851183 Mon Sep 17 00:00:00 2001 From: Damyan Mitev <damyan.mitev@vereign.com> Date: Tue, 1 Oct 2019 16:54:17 +0300 Subject: [PATCH] add manual validateDocument function - converts the certificate chain from PEM format (returned by documentValidateDocumentByUUID) into CertificateData object --- javascript/src/iframe/viamapi-iframe.js | 38 ++++++++++++++++++++++++- 1 file changed, 37 insertions(+), 1 deletion(-) diff --git a/javascript/src/iframe/viamapi-iframe.js b/javascript/src/iframe/viamapi-iframe.js index aec4b16..53e0e1a 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" -- GitLab