kraken-api
Advanced tools
Comparing version 0.1.2 to 0.1.3
var request = require('request'); | ||
var crypto = require('crypto'); | ||
var querystring = require('querystring'); | ||
var microtime = require('microtime'); | ||
@@ -75,3 +74,3 @@ /** | ||
params.nonce = microtime.now(); | ||
params.nonce = new Date() * 1000; // spoof microsecond | ||
@@ -100,9 +99,11 @@ if(config.otp !== undefined) { | ||
function getMessageSignature(path, request, nonce) { | ||
var message = querystring.stringify(request); | ||
var secret = new Buffer(config.secret, 'base64'); | ||
var message = querystring.stringify(request); | ||
var hash = new crypto.createHash('sha256'); | ||
var hmac = new crypto.createHmac('sha512', secret); | ||
var hash = sha256(nonce + message); | ||
var hmac = hmac_sha512(path + hash.toString('binary'), secret); | ||
var hash_digest = hash.update(nonce + message).digest('binary'); | ||
var hmac_digest = hmac.update(path + hash_digest, 'binary').digest('base64'); | ||
return hmac.toString('base64'); | ||
return hmac_digest; | ||
} | ||
@@ -131,14 +132,21 @@ | ||
if(typeof callback === 'function') { | ||
if (error) { | ||
callback.call(self, new Error('Error in server response: ' + JSON.stringify(error))); | ||
var data; | ||
if(error) { | ||
throw new Error('Error in server response: ' + JSON.stringify(error)); | ||
} | ||
var data; | ||
try { | ||
data = JSON.parse(body); | ||
} catch(e) { | ||
return callback.call(self, new Error('Could not understand response from server: ' + body)); | ||
} | ||
callback.call(self, null, data); | ||
catch(e) { | ||
throw new Error('Could not understand response from server: ' + body); | ||
} | ||
if(data.error && data.error.length) { | ||
callback.call(self, data.error, null); | ||
} | ||
else { | ||
callback.call(self, null, data); | ||
} | ||
} | ||
@@ -150,35 +158,2 @@ }); | ||
/** | ||
* A helper function to get a SHA256 hash | ||
* @param {String} input Input string | ||
* @return {Object} Output hash as a Buffer object | ||
*/ | ||
function sha256(input) { | ||
var hash = new crypto.createHash('sha256'); | ||
hash.write(input); | ||
hash.end(); | ||
var buffer = new Buffer(hash.read()); | ||
return buffer; | ||
} | ||
/** | ||
* A helper function to get a SHA512-encrypted signature | ||
* @param {String} message The message to sign | ||
* @param {String} secret The secret (private) key | ||
* @return {Object} Output hash as a Buffer object | ||
*/ | ||
function hmac_sha512(message, secret) { | ||
var hmac = new crypto.createHmac('sha512', secret); | ||
hmac.write(message); | ||
hmac.end(); | ||
var buffer = new Buffer(hmac.read()); | ||
return buffer; | ||
} | ||
self.api = api; | ||
@@ -189,2 +164,2 @@ self.publicMethod = publicMethod; | ||
module.exports = KrakenClient; | ||
module.exports = KrakenClient; |
{ | ||
"name": "kraken-api", | ||
"version": "0.1.2", | ||
"version": "0.1.3", | ||
"description": "kraken.com API client library for NodeJS", | ||
@@ -17,4 +17,3 @@ "keywords": [ | ||
"querystring": ">=0.2.0", | ||
"request": ">=2.27.0", | ||
"microtime": ">=0.5.0" | ||
"request": ">=2.27.0" | ||
}, | ||
@@ -21,0 +20,0 @@ "repository": { |
@@ -18,5 +18,6 @@ Node Kraken | ||
kraken.api('Balance', null, function(error, data) { | ||
if (error) { | ||
if(error) { | ||
console.log(error); | ||
} else { | ||
} | ||
else { | ||
console.log(data.result); | ||
@@ -28,5 +29,6 @@ } | ||
kraken.api('Ticker', {"pair": 'XBTCXLTC'}, function(error, data) { | ||
if (error) { | ||
if(error) { | ||
console.log(error); | ||
} else { | ||
} | ||
else { | ||
console.log(data.result); | ||
@@ -33,0 +35,0 @@ } |
2
56
7867
135
- Removedmicrotime@>=0.5.0
- Removedmicrotime@3.1.1(transitive)
- Removednode-addon-api@5.1.0(transitive)
- Removednode-gyp-build@4.8.4(transitive)