From a83b6b33a49d4f4a319d92171d93b84fd8e9000d Mon Sep 17 00:00:00 2001 From: Dmitry Chirkin Date: Fri, 27 Jan 2023 15:03:01 +0200 Subject: [PATCH 1/2] Added example of server side signature verification --- README.md | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/README.md b/README.md index b30b189..efb3df5 100644 --- a/README.md +++ b/README.md @@ -288,6 +288,26 @@ rnBiometrics.createSignature({ }) ``` +__Node.js example of server-side signature verification__ + +```js +const crypto = require('crypto'); + +async function veryfySignature(publicKey, signature, payload) { + const cryptoKey = await crypto.subtle.importKey('spki', + Buffer.from(publicKey, 'base64'), + { name: 'RSASSA-PKCS1-v1_5', hash: "SHA256" }, + true, ['verify'] + ); + + const verify = crypto.createVerify('SHA256'); + verify.write(payload).end(); + + return verify.verify(cryptoKey, Buffer.from(signature, 'base64'), 'hex'); +} + +``` + ### simplePrompt(options) Prompts the user for their fingerprint or face id. Returns a `Promise` that resolves if the user provides a valid biometrics or cancel the prompt, otherwise the promise rejects. From 69b05d4af7828167e9a07c10e972a0ccfa9b25be Mon Sep 17 00:00:00 2001 From: Dmitry Chirkin Date: Tue, 31 Jan 2023 16:00:00 +0200 Subject: [PATCH 2/2] Fixed example to match typescript typings --- README.md | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index efb3df5..207c43f 100644 --- a/README.md +++ b/README.md @@ -296,14 +296,15 @@ const crypto = require('crypto'); async function veryfySignature(publicKey, signature, payload) { const cryptoKey = await crypto.subtle.importKey('spki', Buffer.from(publicKey, 'base64'), - { name: 'RSASSA-PKCS1-v1_5', hash: "SHA256" }, + { name: 'RSASSA-PKCS1-v1_5', hash: "SHA-256" }, true, ['verify'] ); const verify = crypto.createVerify('SHA256'); - verify.write(payload).end(); + verify.write(payload); + verify.end(); - return verify.verify(cryptoKey, Buffer.from(signature, 'base64'), 'hex'); + return verify.verify(crypto.KeyObject.from(cryptoKey), signature, 'base64') } ```