Page MenuHomePhabricator

D14172.id41133.diff
No OneTemporary

D14172.id41133.diff

diff --git a/modules/ecashaddrjs/README.md b/modules/ecashaddrjs/README.md
--- a/modules/ecashaddrjs/README.md
+++ b/modules/ecashaddrjs/README.md
@@ -150,3 +150,4 @@
1.4.1-6 - Fix repo README link for npmjs page\
1.5.0 - Add `getOutputScriptFromAddress` function to get outputScript from address
1.5.1 - Patch `getTypeAndHashFromOutputScript` to return type in lowercase (how chronik accepts it)
+1.5.2 - Make input of address type case insensitive for `encode`, e.g. `p2pkh` and `P2PKH` both work
diff --git a/modules/ecashaddrjs/package.json b/modules/ecashaddrjs/package.json
--- a/modules/ecashaddrjs/package.json
+++ b/modules/ecashaddrjs/package.json
@@ -1,6 +1,6 @@
{
"name": "ecashaddrjs",
- "version": "1.5.1",
+ "version": "1.5.2",
"description": "eCash cashaddr address format support for Node.js and web browsers.",
"main": "src/cashaddr.js",
"browser": "dist/cashaddrjs.min.js",
diff --git a/modules/ecashaddrjs/src/cashaddr.js b/modules/ecashaddrjs/src/cashaddr.js
--- a/modules/ecashaddrjs/src/cashaddr.js
+++ b/modules/ecashaddrjs/src/cashaddr.js
@@ -28,7 +28,7 @@
*
* @static
* @param {string} prefix Cash address prefix. E.g.: 'ecash'.
- * @param {string} type Type of address to generate. Either 'P2PKH' or 'P2SH'.
+ * @param {string} type Type of address to generate. Either 'P2PKH' or 'P2SH'. Case-insensitive.
* @param {Uint8Array or string} hash Hash to encode represented as an array of 8-bit integers.
* @returns {string}
* @throws {ValidationError}
@@ -47,7 +47,7 @@
hash = stringToUint8Array(hash);
}
var prefixData = concat(prefixToUint5Array(prefix), new Uint8Array(1));
- var versionByte = getTypeBits(type) + getHashSizeBits(hash);
+ var versionByte = getTypeBits(type.toUpperCase()) + getHashSizeBits(hash);
var payloadData = toUint5Array(concat(new Uint8Array([versionByte]), hash));
var checksumData = concat(
concat(prefixData, payloadData),
diff --git a/modules/ecashaddrjs/test/cashaddr.js b/modules/ecashaddrjs/test/cashaddr.js
--- a/modules/ecashaddrjs/test/cashaddr.js
+++ b/modules/ecashaddrjs/test/cashaddr.js
@@ -192,6 +192,37 @@
}
});
+ it('should encode test hashes on mainnet correctly with lower case or mixed case for type', () => {
+ for (const index in TEST_HASHES) {
+ assert.equal(
+ cashaddr.encode('ecash', 'p2pkh', TEST_HASHES[index]),
+ EXPECTED_P2PKH_OUTPUTS[index],
+ );
+ assert.equal(
+ cashaddr.encode('ecash', 'p2sh', TEST_HASHES[index]),
+ EXPECTED_P2SH_OUTPUTS[index],
+ );
+ }
+ for (const index in TEST_HASHES) {
+ assert.equal(
+ cashaddr.encode(
+ 'ecash',
+ 'P2Pkh',
+ TEST_HASHES_STRINGS[index],
+ ),
+ EXPECTED_P2PKH_OUTPUTS[index],
+ );
+ assert.equal(
+ cashaddr.encode(
+ 'ecash',
+ 'p2sH',
+ TEST_HASHES_STRINGS[index],
+ ),
+ EXPECTED_P2SH_OUTPUTS[index],
+ );
+ }
+ });
+
it('should encode test hashes on testnet correctly', () => {
for (const index in TEST_HASHES) {
assert.equal(

File Metadata

Mime Type
text/plain
Expires
Tue, May 20, 22:38 (4 h, 35 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
5863184
Default Alt Text
D14172.id41133.diff (3 KB)

Event Timeline