Skip to content

Commit

Permalink
Merge 5f43159 into c65e47c
Browse files Browse the repository at this point in the history
  • Loading branch information
axic committed Dec 19, 2018
2 parents c65e47c + 5f43159 commit a56c366
Show file tree
Hide file tree
Showing 3 changed files with 46 additions and 47 deletions.
12 changes: 6 additions & 6 deletions index.js
@@ -1,5 +1,3 @@
var hex = require('convert-hex')

// For simplicity we redefine it, as the default uses lowercase
var BASE36_ALPHABET = '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ'
var bs36 = require('base-x')(BASE36_ALPHABET)
Expand All @@ -9,7 +7,7 @@ var ICAP = {}
ICAP.decodeBBAN = function (bban) {
var length = bban.length
if (length === 30 || length === 31) {
var tmp = hex.bytesToHex(bs36.decode(bban))
var tmp = bs36.decode(bban).toString('hex')

// FIXME: horrible padding code
while (tmp.length < 40) {
Expand Down Expand Up @@ -44,10 +42,12 @@ ICAP.encodeBBAN = function (bban) {
} else if ((bban.length === 42) && (bban[0] === '0') && (bban[1] === 'x')) {
// Workaround for base-x, see https://github.com/cryptocoinjs/base-x/issues/18
if ((bban[2] === '0') && (bban[3] === '0')) {
bban = '0x' + bban.slice(4)
bban = bban.slice(4)
} else {
bban = bban.slice(2)
}

return bs36.encode(hex.hexToBytes(bban))
return bs36.encode(Buffer.from(bban, 'hex'))
} else {
throw new Error('Not a valid input for Ethereum BBAN')
}
Expand Down Expand Up @@ -104,7 +104,7 @@ ICAP.encode = function (bban, print) {

ICAP.decode = function (iban, novalidity) {
// change from 'print format' to 'electronic format', e.g. remove spaces
iban = iban.replace(/\ /g, '')
iban = iban.replace(/ /g, '')

// check for validity
if (!novalidity) {
Expand Down
11 changes: 5 additions & 6 deletions package.json
Expand Up @@ -25,14 +25,13 @@
},
"homepage": "https://github.com/ethereumjs/ethereumjs-icap",
"dependencies": {
"base-x": "^1.0.2",
"convert-hex": "^0.1.0"
"base-x": "^3.0.0"
},
"devDependencies": {
"coveralls": "^2.11.4",
"istanbul": "^0.4.1",
"mocha": "^2.3.4",
"standard": "^5.4.1"
"coveralls": "^3.0.0",
"istanbul": "^0.4.5",
"mocha": "^5.2.0",
"standard": "^12.0.0"
},
"standard": {
"globals": [
Expand Down
70 changes: 35 additions & 35 deletions test/index.js
Expand Up @@ -3,14 +3,14 @@ var ICAP = require('../')

describe('.decodeBBAN()', function () {
it('should work for \'direct\'', function () {
assert.equal(ICAP.decodeBBAN('38O073KYGTWWZN0F2WZ0R8PX5ZPPZS'), '0x00c5496aee77c1ba1f0854206a26dda82a81d6d8')
assert.strictEqual(ICAP.decodeBBAN('38O073KYGTWWZN0F2WZ0R8PX5ZPPZS'), '0x00c5496aee77c1ba1f0854206a26dda82a81d6d8')
})
it('should work for \'basic\'', function () {
assert.equal(ICAP.decodeBBAN('038O073KYGTWWZN0F2WZ0R8PX5ZPPZS'), '0x00c5496aee77c1ba1f0854206a26dda82a81d6d8')
assert.equal(ICAP.decodeBBAN('7SS84LEE90PIULMR3DYBGOVBNJN5N14'), '0x42c5496aee77c1ba1f0854206a26dda82a81d6d8')
assert.strictEqual(ICAP.decodeBBAN('038O073KYGTWWZN0F2WZ0R8PX5ZPPZS'), '0x00c5496aee77c1ba1f0854206a26dda82a81d6d8')
assert.strictEqual(ICAP.decodeBBAN('7SS84LEE90PIULMR3DYBGOVBNJN5N14'), '0x42c5496aee77c1ba1f0854206a26dda82a81d6d8')
})
it('should work for \'indirect\'', function () {
assert.deepEqual(ICAP.decodeBBAN('ETHXREGGAVOFYORK'), {
assert.deepStrictEqual(ICAP.decodeBBAN('ETHXREGGAVOFYORK'), {
asset: 'ETH',
institution: 'XREG',
client: 'GAVOFYORK'
Expand All @@ -25,16 +25,16 @@ describe('.decodeBBAN()', function () {

describe('.encodeBBAN()', function () {
it('should work for \'direct\'', function () {
assert.equal(ICAP.encodeBBAN('0x00c5496aee77c1ba1f0854206a26dda82a81d6d8'), '38O073KYGTWWZN0F2WZ0R8PX5ZPPZS')
assert.equal(ICAP.encodeBBAN('0x03c5496aee77c1ba1f0854206a26dda82a81d6d8'), 'FUTTUNPK7WZJSGGCWVEBARQWQ8YML4')
assert.equal(ICAP.encodeBBAN('0x03ffffffffffffffffffffffffffffffffffffff'), 'GTJRJEU5043IEF993XWE21DBF0BVGF')
assert.strictEqual(ICAP.encodeBBAN('0x00c5496aee77c1ba1f0854206a26dda82a81d6d8'), '38O073KYGTWWZN0F2WZ0R8PX5ZPPZS')
assert.strictEqual(ICAP.encodeBBAN('0x03c5496aee77c1ba1f0854206a26dda82a81d6d8'), 'FUTTUNPK7WZJSGGCWVEBARQWQ8YML4')
assert.strictEqual(ICAP.encodeBBAN('0x03ffffffffffffffffffffffffffffffffffffff'), 'GTJRJEU5043IEF993XWE21DBF0BVGF')
})
it('should work for \'basic\'', function () {
assert.equal(ICAP.encodeBBAN('0x42c5496aee77c1ba1f0854206a26dda82a81d6d8'), '7SS84LEE90PIULMR3DYBGOVBNJN5N14')
assert.equal(ICAP.encodeBBAN('0x088f924eeceeda7fe92e1f5b0fffffffffffffff'), 'ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ')
assert.strictEqual(ICAP.encodeBBAN('0x42c5496aee77c1ba1f0854206a26dda82a81d6d8'), '7SS84LEE90PIULMR3DYBGOVBNJN5N14')
assert.strictEqual(ICAP.encodeBBAN('0x088f924eeceeda7fe92e1f5b0fffffffffffffff'), 'ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ')
})
it('should work for \'indirect\'', function () {
assert.deepEqual(ICAP.encodeBBAN({
assert.deepStrictEqual(ICAP.encodeBBAN({
asset: 'ETH',
institution: 'XREG',
client: 'GAVOFYORK'
Expand All @@ -59,36 +59,36 @@ describe('.encodeBBAN()', function () {

describe('.decode()', function () {
it('should work for \'direct\'', function () {
assert.equal(ICAP.decode('XE7338O073KYGTWWZN0F2WZ0R8PX5ZPPZS'), '0x00c5496aee77c1ba1f0854206a26dda82a81d6d8')
assert.equal(ICAP.decode('XE43ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ'), '0x088f924eeceeda7fe92e1f5b0fffffffffffffff')
assert.strictEqual(ICAP.decode('XE7338O073KYGTWWZN0F2WZ0R8PX5ZPPZS'), '0x00c5496aee77c1ba1f0854206a26dda82a81d6d8')
assert.strictEqual(ICAP.decode('XE43ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ'), '0x088f924eeceeda7fe92e1f5b0fffffffffffffff')
})
it('should work for \'basic\'', function () {
assert.equal(ICAP.decode('XE73038O073KYGTWWZN0F2WZ0R8PX5ZPPZS'), '0x00c5496aee77c1ba1f0854206a26dda82a81d6d8')
assert.equal(ICAP.decode('XE657SS84LEE90PIULMR3DYBGOVBNJN5N14'), '0x42c5496aee77c1ba1f0854206a26dda82a81d6d8')
assert.equal(ICAP.decode('XE870Z0SGY63X3UEPSSD6U9B3U9VIUOM1XP'), '0x08540829e2918aeb912b233b1e96366f075fe34d')
assert.strictEqual(ICAP.decode('XE73038O073KYGTWWZN0F2WZ0R8PX5ZPPZS'), '0x00c5496aee77c1ba1f0854206a26dda82a81d6d8')
assert.strictEqual(ICAP.decode('XE657SS84LEE90PIULMR3DYBGOVBNJN5N14'), '0x42c5496aee77c1ba1f0854206a26dda82a81d6d8')
assert.strictEqual(ICAP.decode('XE870Z0SGY63X3UEPSSD6U9B3U9VIUOM1XP'), '0x08540829e2918aeb912b233b1e96366f075fe34d')
})
it('should work for \'indirect\'', function () {
assert.deepEqual(ICAP.decode('XE81ETHXREGGAVOFYORK'), {
assert.deepStrictEqual(ICAP.decode('XE81ETHXREGGAVOFYORK'), {
asset: 'ETH',
institution: 'XREG',
client: 'GAVOFYORK'
})
})
it('should work for \'direct\' in print format', function () {
assert.equal(ICAP.decode('XE73 38O0 73KY GTWW ZN0F 2WZ0 R8PX 5ZPP ZS'), '0x00c5496aee77c1ba1f0854206a26dda82a81d6d8')
assert.strictEqual(ICAP.decode('XE73 38O0 73KY GTWW ZN0F 2WZ0 R8PX 5ZPP ZS'), '0x00c5496aee77c1ba1f0854206a26dda82a81d6d8')
})
})

describe('.encode()', function () {
it('should work for \'direct\'', function () {
assert.equal(ICAP.encode('0x00c5496aee77c1ba1f0854206a26dda82a81d6d8'), 'XE7338O073KYGTWWZN0F2WZ0R8PX5ZPPZS')
assert.equal(ICAP.encode('0x088f924eeceeda7fe92e1f5b0fffffffffffffff'), 'XE43ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ')
assert.strictEqual(ICAP.encode('0x00c5496aee77c1ba1f0854206a26dda82a81d6d8'), 'XE7338O073KYGTWWZN0F2WZ0R8PX5ZPPZS')
assert.strictEqual(ICAP.encode('0x088f924eeceeda7fe92e1f5b0fffffffffffffff'), 'XE43ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ')
})
it('should work for \'basic\'', function () {
assert.equal(ICAP.encode('0x42c5496aee77c1ba1f0854206a26dda82a81d6d8'), 'XE657SS84LEE90PIULMR3DYBGOVBNJN5N14')
assert.strictEqual(ICAP.encode('0x42c5496aee77c1ba1f0854206a26dda82a81d6d8'), 'XE657SS84LEE90PIULMR3DYBGOVBNJN5N14')
})
it('should work for \'indirect\'', function () {
assert.deepEqual(ICAP.encode({
assert.deepStrictEqual(ICAP.encode({
asset: 'ETH',
institution: 'XREG',
client: 'GAVOFYORK'
Expand All @@ -110,30 +110,30 @@ describe('.encode()', function () {
})
})
it('should work for \'direct\' for print format', function () {
assert.equal(ICAP.encode('0x00c5496aee77c1ba1f0854206a26dda82a81d6d8', true), 'XE73 38O0 73KY GTWW ZN0F 2WZ0 R8PX 5ZPP ZS')
assert.strictEqual(ICAP.encode('0x00c5496aee77c1ba1f0854206a26dda82a81d6d8', true), 'XE73 38O0 73KY GTWW ZN0F 2WZ0 R8PX 5ZPP ZS')
})
})

describe('.fromAddress()', function () {
it('should work for short address', function () {
assert.equal(ICAP.fromAddress('0x03c5496aee77c1ba1f0854206a26dda82a81d6d8'), 'XE83FUTTUNPK7WZJSGGCWVEBARQWQ8YML4')
assert.strictEqual(ICAP.fromAddress('0x03c5496aee77c1ba1f0854206a26dda82a81d6d8'), 'XE83FUTTUNPK7WZJSGGCWVEBARQWQ8YML4')
})
it('should work for zero prefixed address', function () {
assert.equal(ICAP.fromAddress('0x00c5496aee77c1ba1f0854206a26dda82a81d6d8'), 'XE7338O073KYGTWWZN0F2WZ0R8PX5ZPPZS')
assert.strictEqual(ICAP.fromAddress('0x00c5496aee77c1ba1f0854206a26dda82a81d6d8'), 'XE7338O073KYGTWWZN0F2WZ0R8PX5ZPPZS')
})
it('should reject long address in std mode', function () {
assert.throws(function () {
ICAP.fromAddress('0x42c5496aee77c1ba1f0854206a26dda82a81d6d8')
})
})
it('should work for long address is non-std mode', function () {
assert.equal(ICAP.fromAddress('0x42c5496aee77c1ba1f0854206a26dda82a81d6d8', false, true), 'XE657SS84LEE90PIULMR3DYBGOVBNJN5N14')
assert.strictEqual(ICAP.fromAddress('0x42c5496aee77c1ba1f0854206a26dda82a81d6d8', false, true), 'XE657SS84LEE90PIULMR3DYBGOVBNJN5N14')
})
})

describe('.fromAsset()', function () {
it('should work for proper input', function () {
assert.deepEqual(ICAP.fromAsset({
assert.deepStrictEqual(ICAP.fromAsset({
asset: 'ETH',
institution: 'XREG',
client: 'GAVOFYORK'
Expand All @@ -144,10 +144,10 @@ describe('.fromAsset()', function () {

describe('.toAddress()', function () {
it('should work with \'direct\'', function () {
assert.equal(ICAP.toAddress('XE7338O073KYGTWWZN0F2WZ0R8PX5ZPPZS'), '0x00c5496aee77c1ba1f0854206a26dda82a81d6d8')
assert.strictEqual(ICAP.toAddress('XE7338O073KYGTWWZN0F2WZ0R8PX5ZPPZS'), '0x00c5496aee77c1ba1f0854206a26dda82a81d6d8')
})
it('should work with \'basic\'', function () {
assert.equal(ICAP.toAddress('XE657SS84LEE90PIULMR3DYBGOVBNJN5N14'), '0x42c5496aee77c1ba1f0854206a26dda82a81d6d8')
assert.strictEqual(ICAP.toAddress('XE657SS84LEE90PIULMR3DYBGOVBNJN5N14'), '0x42c5496aee77c1ba1f0854206a26dda82a81d6d8')
})
it('shouldn\'t work with an asset', function () {
assert.throws(function () {
Expand All @@ -158,7 +158,7 @@ describe('.toAddress()', function () {

describe('.toAsset()', function () {
it('should work for proper input', function () {
assert.deepEqual(ICAP.toAsset('XE81ETHXREGGAVOFYORK'), {
assert.deepStrictEqual(ICAP.toAsset('XE81ETHXREGGAVOFYORK'), {
asset: 'ETH',
institution: 'XREG',
client: 'GAVOFYORK'
Expand All @@ -173,27 +173,27 @@ describe('.toAsset()', function () {

describe('.isICAP()', function () {
it('should return true on proper input', function () {
assert.equal(ICAP.isICAP('XE7338O073KYGTWWZN0F2WZ0R8PX5ZPPZS'), true)
assert.strictEqual(ICAP.isICAP('XE7338O073KYGTWWZN0F2WZ0R8PX5ZPPZS'), true)
})
it('should return false on invalid input', function () {
assert.equal(ICAP.isICAP('XE73 Invalid'), false)
assert.strictEqual(ICAP.isICAP('XE73 Invalid'), false)
})
})

describe('.isAddress()', function () {
it('should return true on proper input', function () {
assert.equal(ICAP.isAddress('XE7338O073KYGTWWZN0F2WZ0R8PX5ZPPZS'), true)
assert.strictEqual(ICAP.isAddress('XE7338O073KYGTWWZN0F2WZ0R8PX5ZPPZS'), true)
})
it('should return false on invalid input', function () {
assert.equal(ICAP.isAddress('XE81ETHXREGGAVOFYORK'), false)
assert.strictEqual(ICAP.isAddress('XE81ETHXREGGAVOFYORK'), false)
})
})

describe('.isAsset()', function () {
it('should return true on proper input', function () {
assert.equal(ICAP.isAsset('XE81ETHXREGGAVOFYORK'), true)
assert.strictEqual(ICAP.isAsset('XE81ETHXREGGAVOFYORK'), true)
})
it('should return false on invalid input', function () {
assert.equal(ICAP.isAsset('XE7338O073KYGTWWZN0F2WZ0R8PX5ZPPZS'), false)
assert.strictEqual(ICAP.isAsset('XE7338O073KYGTWWZN0F2WZ0R8PX5ZPPZS'), false)
})
})

0 comments on commit a56c366

Please sign in to comment.