@okxweb3/coin-stellar
Version:
@okxweb3/coin-stellar is a Stellar SDK for building Web3 wallets and applications. It supports Stellar and PI blockchains, enabling private key management, address generation, transaction signing, trustline creation, and asset transfers
63 lines • 2.54 kB
JavaScript
;
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.SignerKey = void 0;
const xdr_1 = __importDefault(require("./xdr"));
const strkey_1 = require("./strkey");
class SignerKey {
static decodeAddress(address) {
const signerKeyMap = {
ed25519PublicKey: xdr_1.default.SignerKey.signerKeyTypeEd25519,
preAuthTx: xdr_1.default.SignerKey.signerKeyTypePreAuthTx,
sha256Hash: xdr_1.default.SignerKey.signerKeyTypeHashX,
signedPayload: xdr_1.default.SignerKey.signerKeyTypeEd25519SignedPayload
};
const vb = strkey_1.StrKey.getVersionByteForPrefix(address);
const encoder = signerKeyMap[vb];
if (!encoder) {
throw new Error(`invalid signer key type (${vb})`);
}
const raw = (0, strkey_1.decodeCheck)(vb, address);
switch (vb) {
case 'signedPayload':
return encoder(new xdr_1.default.SignerKeyEd25519SignedPayload({
ed25519: raw.slice(0, 32),
payload: raw.slice(32 + 4)
}));
case 'ed25519PublicKey':
case 'preAuthTx':
case 'sha256Hash':
default:
return encoder(raw);
}
}
static encodeSignerKey(signerKey) {
let strkeyType;
let raw;
switch (signerKey.switch()) {
case xdr_1.default.SignerKeyType.signerKeyTypeEd25519():
strkeyType = 'ed25519PublicKey';
raw = signerKey.value();
break;
case xdr_1.default.SignerKeyType.signerKeyTypePreAuthTx():
strkeyType = 'preAuthTx';
raw = signerKey.value();
break;
case xdr_1.default.SignerKeyType.signerKeyTypeHashX():
strkeyType = 'sha256Hash';
raw = signerKey.value();
break;
case xdr_1.default.SignerKeyType.signerKeyTypeEd25519SignedPayload():
strkeyType = 'signedPayload';
raw = signerKey.ed25519SignedPayload().toXDR('raw');
break;
default:
throw new Error(`invalid SignerKey (type: ${signerKey.switch()})`);
}
return (0, strkey_1.encodeCheck)(strkeyType, raw);
}
}
exports.SignerKey = SignerKey;
//# sourceMappingURL=signerkey.js.map