@polkadot/util-keyring
Version:
42 lines (29 loc) • 1.69 kB
JavaScript
;
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);
}