monero_paymentID_utils: deprecating long payment id generator fn, implementing short pid factory, updated pid validation to support 16 char pids

pull/5/head
Paul Shapiro 7 years ago
parent ed60af18ff
commit c0d30899ef

@ -258,16 +258,21 @@ var cnUtil = function(currencyConfig)
return out.join("");
}
// Generate a 256-bit crypto random
// Generate a 256-bit / 64-char / 32-byte crypto random
this.rand_32 = function() {
return mnemonic.mn_random(256);
};
// Generate a 128-bit crypto random
// Generate a 128-bit / 32-char / 16-byte crypto random
this.rand_16 = function() {
return mnemonic.mn_random(128);
};
// Generate a 64-bit / 16-char / 8-byte crypto random
this.rand_8 = function() {
return mnemonic.mn_random(64);
};
this.encode_varint = function(i) {
i = new JSBigInt(i);
var out = '';

@ -30,17 +30,28 @@
//
const monero_utils = require('./monero_cryptonote_utils_instance')
//
function New_TransactionID()
// Note: long (64 char, plaintext) payment ids are deprecated.
//
function New_Short_TransactionID()
{
return monero_utils.rand_32()
return monero_utils.rand_8()
}
exports.New_TransactionID = New_TransactionID
exports.New_Short_TransactionID = New_Short_TransactionID
exports.New_TransactionID = New_Short_TransactionID
//
function IsValidPaymentIDOrNoPaymentID(payment_id)
{
if (payment_id) {
if (payment_id.length !== 64 || !(/^[0-9a-fA-F]{64}$/.test(payment_id))) { // not a valid 64 char pid
return false // then not valid
let payment_id_length = payment_id.length
if (payment_id_length !== 64) { // old plaintext long
if (payment_id_length !== 16) { // new encrypted short
return false; // invalid length
}
}
if (!(/^[0-9a-fA-F]{16}$/.test(payment_id))) { // not a valid 16 char pid
if (!(/^[0-9a-fA-F]{64}$/.test(payment_id))) { // not a valid 64 char pid
return false // then not valid
}
}
}
return true // then either no pid or is a valid one

Loading…
Cancel
Save