1 | "use strict";
|
2 | var __importDefault = (this && this.__importDefault) || function (mod) {
|
3 | return (mod && mod.__esModule) ? mod : { "default": mod };
|
4 | };
|
5 | Object.defineProperty(exports, "__esModule", { value: true });
|
6 | const bs58check_1 = __importDefault(require("bs58check"));
|
7 | const crypto_1 = require("../crypto");
|
8 | const errors_1 = require("../errors");
|
9 | const managers_1 = require("../managers");
|
10 | const public_key_1 = require("./public-key");
|
11 | class Address {
|
12 | static fromPassphrase(passphrase, networkVersion) {
|
13 | return Address.fromPublicKey(public_key_1.PublicKey.fromPassphrase(passphrase), networkVersion);
|
14 | }
|
15 | static fromPublicKey(publicKey, networkVersion) {
|
16 | if (!/^[0-9A-Fa-f]{66}$/.test(publicKey)) {
|
17 | throw new errors_1.PublicKeyError(publicKey);
|
18 | }
|
19 | if (!networkVersion) {
|
20 | networkVersion = managers_1.configManager.get("network.pubKeyHash");
|
21 | }
|
22 | const buffer = crypto_1.HashAlgorithms.ripemd160(Buffer.from(publicKey, "hex"));
|
23 | const payload = Buffer.alloc(21);
|
24 | payload.writeUInt8(networkVersion, 0);
|
25 | buffer.copy(payload, 1);
|
26 | return bs58check_1.default.encode(payload);
|
27 | }
|
28 | static fromMultiSignatureAsset(asset, networkVersion) {
|
29 | return this.fromPublicKey(public_key_1.PublicKey.fromMultiSignatureAsset(asset), networkVersion);
|
30 | }
|
31 | static fromPrivateKey(privateKey, networkVersion) {
|
32 | return Address.fromPublicKey(privateKey.publicKey, networkVersion);
|
33 | }
|
34 | static validate(address, networkVersion) {
|
35 | if (!networkVersion) {
|
36 | networkVersion = managers_1.configManager.get("network.pubKeyHash");
|
37 | }
|
38 | try {
|
39 | return bs58check_1.default.decode(address)[0] === networkVersion;
|
40 | }
|
41 | catch (err) {
|
42 | return false;
|
43 | }
|
44 | }
|
45 | }
|
46 | exports.Address = Address;
|
47 |
|
\ | No newline at end of file |