diff --git a/lib/crypto/Crypto.js b/lib/crypto/Crypto.js index 445088c..a2032b5 100644 --- a/lib/crypto/Crypto.js +++ b/lib/crypto/Crypto.js @@ -72,7 +72,19 @@ module.exports = class Crypto { const power = new BigNumber(key.d()); const mod = new BigNumber(key.n()); - return (modPow(base, power, mod)).toBEBuffer().toString('base64'); + //Somehow sometimes we have a 514 byte hex key that starts with "00". In that case use only the last 512 bytes + var hexString = modPow(base, power, mod).toBEBuffer().toString('hex'); + if(hexString.substr(0,2) === "00" && hexString.length == 514) + { + console.log("hex string of key starts with \"00\" and is 514 bytes long, fixing it to be 512 bytes long by stripping leading \"00\""); + hexString = hexString.substr(2); + var base64String = Buffer.from(hexString, 'hex').toString('base64') + return base64String; + } + else + { + return (modPow(base, power, mod)).toBEBuffer().toString('base64'); + } } static pad(d) {