PHP WebShell

Текущая директория: /usr/lib/node_modules/bitgo/node_modules/@bitgo-forks/avalanchejs/src/serializable/fxs/secp256k1

Просмотр файла: credential.ts

import { packList, unpackList } from '../../../utils/serializeList';
import type { Codec } from '../../codec';
import { serializable } from '../../common/types';
import { Signature } from './signature';
import { TypeSymbols } from '../../constants';

/**
 * @see https://docs.avax.network/specs/avm-transaction-serialization#secp256k1-credential
 */
@serializable()
export class Credential {
  _type = TypeSymbols.Credential;

  constructor(private readonly signatures: Signature[]) {}

  static fromBytes(bytes: Uint8Array, codec: Codec): [Credential, Uint8Array] {
    const [sigs, remaining] = unpackList(bytes, Signature, codec);
    return [new Credential(sigs), remaining];
  }

  toJSON() {
    return this.signatures;
  }

  static fromJSON(credentialsStrings: string[]) {
    return new Credential(
      credentialsStrings.map((str) => Signature.fromJSON(str)),
    );
  }

  setSignature(index: number, signature: Uint8Array) {
    if (index >= this.signatures.length) {
      throw new Error(`index ${index} is out of bounds for credential`);
    }
    this.signatures[index] = new Signature(signature);
  }

  getSignatures() {
    return this.signatures.map((sig) => sig.toString());
  }

  toBytes(codec) {
    return packList(this.signatures, codec);
  }
}

Выполнить команду


Для локальной разработки. Не используйте в интернете!