I'm writing a javascript module for a Node project.
I get a very ambiguous error
protocol\Parser.js:82
throw err;
TypeError: error:0000000:lib(0):func(0):reason(0)
at Decipher.Cipher.update (crypto.js:279:27)
Below is my javalogin.js file.
The error seems to be happening at the decipher.update(rows[i].CC, 'hex', 'utf8'); line.
I do get some console print out.
console.log('DB UserName:', rows[i].UserName); //returns correct username
console.log('DB CC: ', rows[i].CC); //returns 2bf9kdk02kdnf3dk (correct CC hash on db)
JavaLogin.js:
var mysql = require('mysql');
var crypto = require('crypto');
var sha = require('sha1');
var algorithm = 'aes256'; // or any other algorithm supported by OpenSSL
var key = 'secret';
var cipher = crypto.createCipher(algorithm, key);
var decipher = crypto.createDecipher(algorithm, key);
decipher.setAutoPadding(auto_padding=true);
var db = mysql.createConnection(
{
host : 'host location',
user : 'username',
password : 'password',
database : 'databaseName',
}
);
exports.auth = function(query, callback){
db.query(query, function(err, rows, fields) {
if (err) throw err;
for (var i in rows) {
console.log('DB UserName:', rows[i].UserName);
console.log('DB CC: ', rows[i].CC);
var decrypted = decipher.update(rows[i].CC, 'hex', 'utf8');
decrypted += decipher.final('utf8');
console.log(decrypted);
}
var info = rows;
return callback(null,info);
});
};
exports.add = function(query, callback){
db.query(query, function(err, rows, fields) {
var encrypted = cipher.update('ccnumber', 'utf8', 'hex');
encrypted += cipher.final('hex');
if (err) throw err;
// for (var i in rows) {
// console.log('DB Info:', rows[i].UserName);
// }
var info = rows;
return callback(null,info);
});
};
Thanks for that small but useful help in the comments. I figured it out because of that.
In the Original Post i was trying to set var decipher = crypto.createDecipher(algorithm,key); to a global variable so i can use it in multiple functions in my JavaLogin.js.
If someone can show me how to do that, i would appreciate it.
Working Code section below:
exports.auth = function(query, callback){
db.query(query, function(err, rows, fields) {
if (err) throw err;
for (var i in rows) {
console.log('DB UserName:', rows[i].UserName);
console.log('DB CC: ', rows[i].CC);
var decipher = crypto.createDecipher(algorithm, key); //moved this from the top of the file
var decrypted = decipher.update(rows[i].CC, 'hex', 'utf8');
decrypted += decipher.final('utf8');
console.log("decrypted:" + decrypted);
}
var info = rows;
return callback(null,info);
});
};