PHP WebShell
Текущая директория: /usr/lib/node_modules/bitgo/node_modules/@bitgo-forks/avalanchejs/src/serializable/fxs/secp256k1
Просмотр файла: signature.ts
import { bytesToHex } from '@noble/hashes/utils';
import { hexToBytes } from 'micro-eth-signer';
import { customInspectSymbol } from '../../../constants/node';
import { bufferToHex, padLeft } from '../../../utils/buffer';
import { serializable } from '../../common/types';
import { TypeSymbols } from '../../constants';
/**
* @see https://docs.avax.network/specs/avm-transaction-serialization#secp256k1-credential
*/
export const SepkSignatureLength = 65;
@serializable()
export class Signature {
_type = TypeSymbols.Signature;
constructor(private readonly sig: Uint8Array) {
if (sig.length !== SepkSignatureLength) {
throw new Error('incorrect number of bytes for signature');
}
}
toJSON() {
return bytesToHex(this.sig);
}
static fromJSON(jsonStr: string) {
return new Signature(hexToBytes(jsonStr));
}
static fromBytes(bytes: Uint8Array): [Signature, Uint8Array] {
return [
new Signature(bytes.slice(0, SepkSignatureLength)),
bytes.slice(SepkSignatureLength),
];
}
[customInspectSymbol](_, options: any) {
return options.stylize(this.toString(), 'string');
}
toString() {
return bufferToHex(this.sig);
}
toBytes() {
return padLeft(this.sig, SepkSignatureLength);
}
}
Выполнить команду
Для локальной разработки. Не используйте в интернете!