PHP WebShell
Текущая директория: /opt/BitGoJS/modules/sdk-coin-xlm/src/lib
Просмотр файла: utils.ts
import { isValidEd25519PublicKey, isValidEd25519SecretKey } from '@bitgo/sdk-core';
import * as stellar from 'stellar-sdk';
/**
* Creates a Stellar keypair from a public key.
* Public key can be either a raw root public key (hex string) or a Stellar public key (prefixed with 'G')
* @param pub Either hex root public key or Stellar public key
* @returns Stellar keypair from the provided pub
*/
export function createStellarKeypairFromPub(pub: string): stellar.Keypair {
if (pub.startsWith('G')) {
if (!isValidStellarPublicKey(pub)) {
throw new Error('Invalid Stellar public key');
}
return stellar.Keypair.fromPublicKey(pub);
}
const encodedPub = encodePublicKey(Buffer.from(pub, 'hex'));
if (!isValidStellarPublicKey(encodedPub)) {
throw new Error('Invalid root public key');
}
return stellar.Keypair.fromPublicKey(encodedPub);
}
/**
* Creates a Stellar keypair from a private key.
* Private key can be either a raw root private key (hex string) or a Stellar private key (prefixed with 'S').
* @param secret Either hex root private key or Stellar private key
* @returns Stellar keypair from the provided prv
*/
export function createStellarKeypairFromPrv(prv: string): stellar.Keypair {
if (prv.startsWith('S')) {
if (!isValidStellarPrivateKey(prv)) {
throw new Error('Invalid Stellar private key');
}
return stellar.Keypair.fromSecret(prv);
}
const encodedPrv = encodePrivateKey(Buffer.from(prv.slice(0, 64), 'hex'));
if (!isValidStellarPrivateKey(encodedPrv)) {
throw new Error('Invalid root private key');
}
return stellar.Keypair.fromSecret(encodedPrv);
}
/**
* @deprecated Use isValidStellarPublicKey instead
*
* Validates a Stellar public key
* Stellar public keys are prefixed with 'G'
* @param pub A Stellar public key to validate
* @returns Whether the input is a valid Stellar public key
*/
export function isValidStellarPub(pub: string): boolean {
return stellar.StrKey.isValidEd25519PublicKey(pub);
}
/**
* Validates a Stellar public key
* Stellar public keys are prefixed with 'G'
* @param pub A Stellar public key to validate
* @returns Whether the input is a valid Stellar public key
*/
export function isValidStellarPublicKey(pub: string): boolean {
return stellar.StrKey.isValidEd25519PublicKey(pub);
}
/**
* @deprecated Use isValidRootPublicKey instead
*
* Validates a ed25519 root public key
* @param pub A hexadecimal public key to validate
* @returns Whether the input is a valid public key
*/
export function isValidPublicKey(pub: string): boolean {
return isValidEd25519PublicKey(pub);
}
/**
* Validates a ed25519 root public key
* @param pub A hexadecimal public key to validate
* @returns Whether the input is a valid public key
*/
export function isValidRootPublicKey(pub: string): boolean {
return isValidEd25519PublicKey(pub);
}
/**
* @deprecated Use isValidStellarPrivateKey instead
*
* Validates a Stellar private key
* Stellar private keys are prefixed with 'S'
* @param seed A Stellar private key to validate
* @returns Whether the input is a valid Stellar private key
*/
export function isValidStellarPrv(seed: string): boolean {
return stellar.StrKey.isValidEd25519SecretSeed(seed);
}
/**
* Validates a Stellar private key
* Stellar private keys are prefixed with 'S'
* @param seed A Stellar private key to validate
* @returns Whether the input is a valid Stellar private key
*/
export function isValidStellarPrivateKey(seed: string): boolean {
return stellar.StrKey.isValidEd25519SecretSeed(seed);
}
/**
* @deprecated Use isValidRootPrivateKey instead
*
* Validates a ed25519 root private key
* @param prv A hexadecimal private key to validate
* @returns Whether the input is a valid private key
*/
export function isValidPrivateKey(prv: string): boolean {
return isValidEd25519SecretKey(prv);
}
/**
* Validates a ed25519 root private key
* @param prv A hexadecimal private key to validate
* @returns Whether the input is a valid private key
*/
export function isValidRootPrivateKey(prv: string): boolean {
return isValidEd25519SecretKey(prv);
}
/**
* Encodes a raw public key to a G-prefixed Stellar public key
* @param pub Raw public key
* @returns Encoded Stellar public key
*/
export function encodePublicKey(pub: Buffer): string {
return stellar.StrKey.encodeEd25519PublicKey(pub);
}
/**
* Encodes a raw private key to a S-prefixed Stellar private key
* @param prv Raw private key
* @returns Encoded Stellar private key
*/
export function encodePrivateKey(prv: Buffer): string {
return stellar.StrKey.encodeEd25519SecretSeed(prv);
}
/**
* Decodes a Stellar public key to a raw public key
* @param pub Encoded Stellar G-prefixed public key
* @returns Raw hexadecimal public key
*/
export function decodePublicKey(pub: string): Buffer {
return stellar.StrKey.decodeEd25519PublicKey(pub);
}
/**
* Decodes a Stellar private key to a raw private key
* @param prv Encoded Stellar S-prefixed private key
* @returns Raw hexadecimal private key
*/
export function decodePrivateKey(prv: string): Buffer {
return stellar.StrKey.decodeEd25519SecretSeed(prv);
}
Выполнить команду
Для локальной разработки. Не используйте в интернете!