+ delete signatureCopy.type
+ delete signatureCopy.id
+ delete signatureCopy.signatureValue
+
+ const docWithoutSignature = cloneDeep(signedDocument)
+ delete docWithoutSignature.signature
+
+ const [ documentHash, optionsHash ] = await Promise.all([
+ hash(docWithoutSignature),
+ hash(signatureCopy)
+ ])
+
+ const toVerify = optionsHash + documentHash
+
+ const verify = createVerify('RSA-SHA256')
+ verify.update(toVerify, 'utf8')
+
+ return verify.verify(fromActor.publicKey, signedDocument.signature.signatureValue, 'base64')
+}
+
+function signJsonLDObject (byActor: ActorModel, data: any) {
+ const options = {
+ privateKeyPem: byActor.privateKey,
+ creator: byActor.url,
+ algorithm: 'RsaSignature2017'
+ }
+
+ return jsig.promises.sign(data, options)
+}
+
+// ---------------------------------------------------------------------------
+
+export {
+ isHTTPSignatureDigestValid,
+ parseHTTPSignature,
+ isHTTPSignatureVerified,
+ isJsonLDSignatureVerified,
+ comparePassword,
+ createPrivateAndPublicKeys,
+ cryptPassword,
+ signJsonLDObject