diff --git a/app/lib/common-libs/crypto/keyring.ts b/app/lib/common-libs/crypto/keyring.ts index 778f2a3ba06d8ca566b21f0d825c938e4c198316..a20eb7a41a9e6c6d986e55acfe97d918ec8b5924 100644 --- a/app/lib/common-libs/crypto/keyring.ts +++ b/app/lib/common-libs/crypto/keyring.ts @@ -63,6 +63,20 @@ export class Key { } return encodeBase64(sig) }; + + sign(msg:string) { + return Promise.resolve(this.signSync(msg)) + } + + signSync(msg:string) { + const m = decodeUTF8(msg); + const signedMsg = nacl.sign(m, this.rawSec()); + const sig = new Uint8Array(crypto_sign_BYTES); + for (let i = 0; i < sig.length; i++) { + sig[i] = signedMsg[i]; + } + return encodeBase64(sig) + }; } export function randomKey() { @@ -98,3 +112,16 @@ export function verifyBuggy(rawMsg:string, rawSig:string, rawPub:string) { // Call to verification lib... return naclBinding.verify(m, sm, pub); } + +/** + * Verify a signature against data & public key. + * Return true of false as callback argument. + */ +export function verify(rawMsg:string, rawSig:string, rawPub:string) { + const msg = decodeUTF8(rawMsg); + const sig = decodeBase64(rawSig); + const pub = Base58decode(rawPub); + + // Call to verification lib... + return nacl.sign.detached.verify(msg, sig, pub); +}