UNPKG

@polkadot/util-keyring

Version:
42 lines (29 loc) 1.69 kB
"use strict"; var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); Object.defineProperty(exports, "__esModule", { value: true }); exports.default = decode; var _bs = _interopRequireDefault(require("bs58")); var _assert = _interopRequireDefault(require("@polkadot/util/assert")); var _toU8a = _interopRequireDefault(require("@polkadot/util/buffer/toU8a")); var _hex = _interopRequireDefault(require("@polkadot/util/is/hex")); var _u8a = _interopRequireDefault(require("@polkadot/util/is/u8a")); var _toU8a2 = _interopRequireDefault(require("@polkadot/util/u8a/toU8a")); var _asU8a = _interopRequireDefault(require("@polkadot/util-crypto/blake2/asU8a")); // Copyright 2017-2018 @polkadot/util-keyring authors & contributors // This software may be modified and distributed under the terms // of the ISC license. See the LICENSE file for details. // Original implementation: https://github.com/paritytech/polka-ui/blob/4858c094684769080f5811f32b081dd7780b0880/src/polkadot.js#L6 function decode(encoded) { if ((0, _u8a.default)(encoded) || (0, _hex.default)(encoded)) { return (0, _toU8a2.default)(encoded); } const decoded = (0, _toU8a.default)(_bs.default.decode(encoded)); const error = message => `Decoding ${encoded}: ${message}`; (0, _assert.default)(decoded[0] === 42, error('Invalid decoded address prefix')); (0, _assert.default)(decoded.length === 32 + 1 + 2, error('Invalid decoded address length')); const hash = (0, _asU8a.default)(decoded.subarray(0, 33), 512); (0, _assert.default)(decoded[33] === hash[0] && decoded[34] === hash[1], error(' Invalid decoded address checksum')); return decoded.slice(1, 33); }