diff --git a/.gitignore b/.gitignore index 80aca69..74fc985 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,4 @@ /target Cargo.lock *~ +node_modules/ diff --git a/Makefile b/Makefile new file mode 100644 index 0000000..def8f87 --- /dev/null +++ b/Makefile @@ -0,0 +1,7 @@ + + +khash: + cargo build --release + +install: + cp ./target/release/libkana_hash.so /usr/lib/libkana_hash.so diff --git a/node/index.js b/node/index.js new file mode 100644 index 0000000..efb9708 --- /dev/null +++ b/node/index.js @@ -0,0 +1,22 @@ +const ffi = require('ffi'); +const struct = require('ref-struct'); +const ref = require('ref'); + + +const libhkana = ffi.Library('libkana_hash', { + '_kana_new_salt': ['int', ['pointer', 'long', 'pointer']], + '_kana_free_salt': ['int', ['pointer']], + '_kana_do': ['int', ['pointer', 'long', 'pointer', 'pointer', 'long']], + '_kana_length': ['int', ['pointer', 'long', 'pointer', 'pointer']], +}); + +const Kana = require('./kana'); + +let buffer= ref.alloc('long'); +let sz = ref.alloc('long'); +console.log(libhkana._kana_length(buffer, 2, null, sz)); +console.log(sz.deref()); + +let output = new Buffer(sz); +console.log(libhkana._kana_do(buffer, 2, null, output, sz)); +console.log(ref.readCString(output, 0)); diff --git a/node/kana.js b/node/kana.js new file mode 100644 index 0000000..c4bd002 --- /dev/null +++ b/node/kana.js @@ -0,0 +1,10 @@ +const ffi = require('ffi'); +const struct = require('ref-struct'); +const ref = require('ref'); + +const Salt = module.exports.Salt = struct({ + 'size': 'pointer', + 'body': 'pointer', +}); +const PSalt = module.exports.PSalt = ref.refType(Salt); + diff --git a/node/package-lock.json b/node/package-lock.json new file mode 100644 index 0000000..f46d1a0 --- /dev/null +++ b/node/package-lock.json @@ -0,0 +1,77 @@ +{ + "name": "kana-hash", + "version": "1.0.0", + "lockfileVersion": 1, + "requires": true, + "dependencies": { + "bindings": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/bindings/-/bindings-1.5.0.tgz", + "integrity": "sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==", + "requires": { + "file-uri-to-path": "1.0.0" + } + }, + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "requires": { + "ms": "2.0.0" + } + }, + "ffi": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/ffi/-/ffi-2.3.0.tgz", + "integrity": "sha512-vkPA9Hf9CVuQ5HeMZykYvrZF2QNJ/iKGLkyDkisBnoOOFeFXZQhUPxBARPBIZMJVulvBI2R+jgofW03gyPpJcQ==", + "requires": { + "bindings": "~1.2.0", + "debug": "2", + "nan": "2", + "ref": "1", + "ref-struct": "1" + }, + "dependencies": { + "bindings": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/bindings/-/bindings-1.2.1.tgz", + "integrity": "sha1-FK1hE4EtLTfXLme0ystLtyZQXxE=" + } + } + }, + "file-uri-to-path": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz", + "integrity": "sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==" + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" + }, + "nan": { + "version": "2.14.1", + "resolved": "https://registry.npmjs.org/nan/-/nan-2.14.1.tgz", + "integrity": "sha512-isWHgVjnFjh2x2yuJ/tj3JbwoHu3UC2dX5G/88Cm24yB6YopVgxvBObDY7n5xW6ExmFhJpSEQqFPvq9zaXc8Jw==" + }, + "ref": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/ref/-/ref-1.3.5.tgz", + "integrity": "sha512-2cBCniTtxcGUjDpvFfVpw323a83/0RLSGJJY5l5lcomZWhYpU2cuLdsvYqMixvsdLJ9+sTdzEkju8J8ZHDM2nA==", + "requires": { + "bindings": "1", + "debug": "2", + "nan": "2" + } + }, + "ref-struct": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/ref-struct/-/ref-struct-1.1.0.tgz", + "integrity": "sha1-XV7mWtQc78Olxf60BYcmHkee3BM=", + "requires": { + "debug": "2", + "ref": "1" + } + } + } +} diff --git a/node/package.json b/node/package.json new file mode 100644 index 0000000..d575694 --- /dev/null +++ b/node/package.json @@ -0,0 +1,15 @@ +{ + "name": "kana-hash", + "version": "1.0.0", + "description": "Kana hashes", + "main": "index.js", + "scripts": { + "test": "echo \"Error: no test specified\" && exit 1" + }, + "author": "", + "license": "ISC", + "dependencies": { + "ffi": "^2.3.0", + "ref-struct": "^1.1.0" + } +} diff --git a/src/lib.rs b/src/lib.rs index ca1b642..fc47e94 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -73,7 +73,6 @@ fn compute(mut from: T, salt: salt::Sal { let (read, hash) = provider::compute::<_, Digest>(&mut from, salt)?; - println!("hash ({}): {}", read, hash); let mut output = String::with_capacity(128); for element in hash.bytes().iter() .into_16()