supercop.ts

cross-compiled javascript implementation of ed25519 based on supercop-ref10
git clone git://git.finwo.net/lib/supercop.ts
Log | Files | Refs | README | LICENSE

commit 84d677e19f28f50100e7712fe4bcaeaa1b38967e
parent 31e096c5a7aefdc87cb4798f9dd30a4c3acd62cc
Author: finwo <finwo@pm.me>
Date:   Wed, 19 Jun 2019 10:58:57 +0200

Fully write out all variable names

Diffstat:
Mindex.js | 83++++++++++++++++++++++++++++++++++++++++---------------------------------------
Mpackage-lock.json | 5+++++
Mpackage.json | 5++++-
3 files changed, 51 insertions(+), 42 deletions(-)

diff --git a/index.js b/index.js @@ -1,4 +1,5 @@ -var Module = require('./supercop.js'); +const Module = require('./supercop.js'); +const isBuffer = require('is-buffer'); function randomBytes(length) { return Buffer.from(new Array(length).fill(0).map(()=>Math.floor(Math.random()*256))); @@ -8,68 +9,68 @@ exports.createSeed = function(){ return randomBytes(32); }; -exports.createKeyPair = function(seed){ +exports.createKeyPair = function(seed) { if(!Buffer.isBuffer(seed)){ throw new Error('not buffers!'); } - var seedPtr = Module._malloc(32); - var seedBuf = new Uint8Array(Module.HEAPU8.buffer, seedPtr, 32); - var pubKeyPtr = Module._malloc(32); - var pubKey = new Uint8Array(Module.HEAPU8.buffer, pubKeyPtr, 32); - var privKeyPtr = Module._malloc(64); - var privKey = new Uint8Array(Module.HEAPU8.buffer, privKeyPtr, 64); + var seedPtr = Module._malloc(32); + var seedBuf = new Uint8Array(Module.HEAPU8.buffer, seedPtr, 32); + var publicKeyPtr = Module._malloc(32); + var publicKey = new Uint8Array(Module.HEAPU8.buffer, publicKeyPtr, 32); + var secretKeyPtr = Module._malloc(64); + var secretKey = new Uint8Array(Module.HEAPU8.buffer, secretKeyPtr, 64); seedBuf.set(seed); - Module._create_keypair(pubKeyPtr, privKeyPtr, seedPtr); + Module._create_keypair(publicKeyPtr, secretKeyPtr, seedPtr); Module._free(seedPtr); - Module._free(pubKeyPtr); - Module._free(privKeyPtr); + Module._free(publicKeyPtr); + Module._free(secretKeyPtr); return { - publicKey: new Buffer(pubKey), - secretKey: new Buffer(privKey), + publicKey: new Buffer(publicKey), + secretKey: new Buffer(secretKey), }; }; -exports.sign = function(msg, pubKey, privKey){ - if(!Buffer.isBuffer(msg) || !Buffer.isBuffer(pubKey) || !Buffer.isBuffer(privKey)){ +exports.sign = function(message, publicKey, secretKey){ + if(!Buffer.isBuffer(message) || !Buffer.isBuffer(publicKey) || !Buffer.isBuffer(secretKey)){ throw new Error('not buffers!'); } - var msgLen = msg.length; - var msgArrPtr = Module._malloc(msgLen); - var msgArr = new Uint8Array(Module.HEAPU8.buffer, msgArrPtr, msgLen); - var pubKeyArrPtr = Module._malloc(32); - var pubKeyArr = new Uint8Array(Module.HEAPU8.buffer, pubKeyArrPtr, 32); - var privKeyArrPtr = Module._malloc(64); - var privKeyArr = new Uint8Array(Module.HEAPU8.buffer, privKeyArrPtr, 64); + var messageLen = message.length; + var messageArrPtr = Module._malloc(messageLen); + var messageArr = new Uint8Array(Module.HEAPU8.buffer, messageArrPtr, messageLen); + var publicKeyArrPtr = Module._malloc(32); + var publicKeyArr = new Uint8Array(Module.HEAPU8.buffer, publicKeyArrPtr, 32); + var secretKeyArrPtr = Module._malloc(64); + var secretKeyArr = new Uint8Array(Module.HEAPU8.buffer, secretKeyArrPtr, 64); var sigPtr = Module._malloc(64); var sig = new Uint8Array(Module.HEAPU8.buffer, sigPtr, 64); - msgArr.set(msg); - pubKeyArr.set(pubKey); - privKeyArr.set(privKey); - Module._sign(sigPtr, msgArrPtr, msgLen, pubKeyArrPtr, privKeyArrPtr); - Module._free(msgArrPtr); - Module._free(pubKeyArrPtr); - Module._free(privKeyArrPtr); + messageArr.set(message); + publicKeyArr.set(publicKey); + secretKeyArr.set(secretKey); + Module._sign(sigPtr, messageArrPtr, messageLen, publicKeyArrPtr, secretKeyArrPtr); + Module._free(messageArrPtr); + Module._free(publicKeyArrPtr); + Module._free(secretKeyArrPtr); Module._free(sigPtr); return new Buffer(sig); }; -exports.verify = function(sig, msg, pubKey){ - if(!Buffer.isBuffer(msg) || !Buffer.isBuffer(sig) || !Buffer.isBuffer(pubKey)){ +exports.verify = function(sig, message, publicKey){ + if(!Buffer.isBuffer(message) || !Buffer.isBuffer(sig) || !Buffer.isBuffer(publicKey)){ throw new Error('not buffers!'); } - var msgLen = msg.length; - var msgArrPtr = Module._malloc(msgLen); - var msgArr = new Uint8Array(Module.HEAPU8.buffer, msgArrPtr, msgLen); + var messageLen = message.length; + var messageArrPtr = Module._malloc(messageLen); + var messageArr = new Uint8Array(Module.HEAPU8.buffer, messageArrPtr, messageLen); var sigArrPtr = Module._malloc(64); var sigArr = new Uint8Array(Module.HEAPU8.buffer, sigArrPtr, 64); - var pubKeyArrPtr = Module._malloc(32); - var pubKeyArr = new Uint8Array(Module.HEAPU8.buffer, pubKeyArrPtr, 32); - msgArr.set(msg); + var publicKeyArrPtr = Module._malloc(32); + var publicKeyArr = new Uint8Array(Module.HEAPU8.buffer, publicKeyArrPtr, 32); + messageArr.set(message); sigArr.set(sig); - pubKeyArr.set(pubKey); - var res = Module._verify(sigArrPtr, msgArrPtr, msgLen, pubKeyArrPtr) === 1; - Module._free(msgArrPtr); + publicKeyArr.set(publicKey); + var res = Module._verify(sigArrPtr, messageArrPtr, messageLen, publicKeyArrPtr) === 1; + Module._free(messageArrPtr); Module._free(sigArrPtr); - Module._free(pubKeyArrPtr); + Module._free(publicKeyArrPtr); return res; }; diff --git a/package-lock.json b/package-lock.json @@ -138,6 +138,11 @@ "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", "dev": true }, + "is-buffer": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-2.0.3.tgz", + "integrity": "sha512-U15Q7MXTuZlrbymiz95PJpZxu8IlipAp4dtS3wOdgPXx3mqBnslrWU14kxfHB+Py/+2PVKSr37dMAgM2A4uArw==" + }, "is-callable": { "version": "1.1.4", "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.1.4.tgz", diff --git a/package.json b/package.json @@ -5,7 +5,7 @@ "main": "index.js", "homepage": "http://git.finwo.net/supercop-js", "scripts": { - "test": "echo \"Error: no test specified\" && exit 1", + "test": "node test.js", "postpublish": "PACKAGE_VERSION=$(cat package.json | grep \\\"version\\\" | head -1 | awk -F: '{print $2}' | sed 's/[\",]//g' | tr -d '[[:space:]]') && npm deprecate \"supercop@<${PACKAGE_VERSION}\" \"Rolling release, please update to ${PACKAGE_VERSION}\"" }, "repository": { @@ -16,5 +16,8 @@ "license": "MIT", "devDependencies": { "tape": "^4.10.2" + }, + "dependencies": { + "is-buffer": "^2.0.3" } }