interface Blockchain {
    create(
        name: string,
        type: BLOCKCHAIN_KEYS,
        exportable: boolean,
        temporary: boolean,
        version?: null | VERSION_OPTIONS,
        seed?: null | string,
        passphrase?: null | string,
    ): Promise<boolean>;
    delete(name: string): Promise<boolean>;
    block(name: string): Promise<boolean>;
    unblock(name: string): Promise<boolean>;
    createBip32ChildKeyDerivation(
        version: VERSION_OPTIONS,
        index: number,
        exportable: boolean,
        temporary: boolean,
        parentKeyName: string,
        childKeyName: string,
    ): Promise<KeyInfo>;
    hashData(
        hashMode: BLOCKCHAIN_HASH_MODE,
        data: Buffer,
    ): Promise<Buffer<ArrayBufferLike>>;
    edDsaSign(
        type: BLOCKCHAIN_EdDSA_TYPE,
        privKeyName: string,
        data: Buffer,
    ): Promise<Buffer<ArrayBufferLike>>;
    getPubKey(
        type: BLOCKCHAIN_GET_PUB_KEY_TYPE,
        privKeyName: string,
    ): Promise<Buffer<ArrayBufferLike>>;
    edDsaVerify(
        type: BLOCKCHAIN_EdDSA_TYPE,
        pubKeyType: BLOCKCHAIN_PUB_KEY_TYPE,
        pubKey: Buffer,
        signature: Buffer,
        data: Buffer,
    ): Promise<boolean>;
    getAddress(
        type: ADDRESS_TYPE,
        version: ADDRESS_VERSION,
        hrp: ADDRESS_HRP,
        pk: string,
    ): Promise<Buffer<ArrayBufferLike>>;
    sign(
        type: BLOCKCHAIN_SIG_TYPE,
        hashMode: BLOCKCHAIN_HASH_MODE,
        hash: Buffer,
        pk: string,
    ): Promise<Buffer<ArrayBufferLike>>;
    getKeyInfo(name: string): Promise<KeyInfo>;
    import(
        format: IMPORT_EXPORT_FORMAT,
        exportable: boolean,
        temporary: boolean,
        name: string,
        data: string,
    ): Promise<boolean>;
    export(
        format: IMPORT_EXPORT_FORMAT,
        version: BLOCKCHAIN_EXPORT_VERSION,
        compressed: boolean,
        name: string,
    ): Promise<Buffer<ArrayBufferLike>>;
    verify(
        sigType: BLOCKCHAIN_SIG_TYPE,
        hashMode: BLOCKCHAIN_HASH_MODE,
        hashData: Buffer,
        signature: Buffer,
        pubKeyType: BLOCKCHAIN_SIG_VERIFY_PUB_KEY_TYPE,
        pubSignature: Buffer,
    ): Promise<boolean>;
    pubKeyRecovery(
        sigType: BLOCKCHAIN_SIG_TYPE,
        hashMode: BLOCKCHAIN_HASH_MODE,
        hashData: Buffer,
        signature: Buffer,
    ): Promise<Buffer<ArrayBufferLike>>;
    abn128RndCtxGetPt(
        x: string | Buffer<ArrayBufferLike>,
        y: string | Buffer<ArrayBufferLike>,
    ): Promise<Buffer<ArrayBufferLike>>;
    abn128RndCtxMultAdd(
        keyName: string,
        scalar: string | Buffer<ArrayBufferLike>,
    ): Promise<Buffer<ArrayBufferLike>>;
    abn128RndScs(): Promise<Buffer<ArrayBufferLike>[]>;
    abn128RndSc(): Promise<Buffer<ArrayBufferLike>>;
    abn128RndCtxRefresh(
        x: string | Buffer<ArrayBufferLike>,
        y: string | Buffer<ArrayBufferLike>,
    ): Promise<Buffer<ArrayBufferLike>>;
    abn128PscMult(
        keyName: string,
        x: string | Buffer<ArrayBufferLike>,
        y: string | Buffer<ArrayBufferLike>,
        neg?: boolean,
    ): Promise<Buffer<ArrayBufferLike>>;
}

Methods

  • Cria uma chave Extended Private Key (XPrv) para a blockchain no padrão BIP32.

    Parameters

    • name: string

      Nome da chave no HSM.

    • type: BLOCKCHAIN_KEYS

      Tipo de geração da chave.

    • exportable: boolean

      Se a chave será exportável.

    • temporary: boolean

      Se a chave será temporária.

    • Optionalversion: null | VERSION_OPTIONS

      Versão da chave que deve ser passado de acordo com a opção do tipo

    • Optionalseed: null | string

      Buffer contendo os dados necessários para a geração da chave. Os dados de entrada devem ser passados de acordo com a opção do type de enums.BLOCKCHAIN_KEYS.

    • Optionalpassphrase: null | string

    Returns Promise<boolean>

    Chave criada.

    exceptions.HsmError Caso não seja possível criar a chave ou ocorra algum erro na operação.

    Código de exemplo: Criando uma chave blockchain

  • Deleta uma chave armazenada no HSM.

    Parameters

    • name: string

      Nome da chave.

    Returns Promise<boolean>

    Retorna true se a chave foi deletada com sucesso.

    Caso o nome da chave seja inválido.

    Caso ocorra algum erro na deleção da chave.

    Código de exemplo: Excluindo uma chave blockchain

  • Bloqueia uma chave no HSM.

    Parameters

    • name: string

      Nome da chave.

    Returns Promise<boolean>

    Retorna true se a chave foi bloqueada com sucesso.

    Caso o nome da chave seja inválido.

    Caso ocorra algum erro na deleção da chave.

    Código de exemplo: Bloqueando uma chave blockchain

  • Desbloqueia uma chave no HSM.

    Parameters

    • name: string

      Nome da chave.

    Returns Promise<boolean>

    Retorna true se a chave foi desbloqueada com sucesso.

    Caso o nome da chave seja inválido.

    Caso ocorra algum erro na deleção da chave.

    Código de exemplo: Desbloqueando uma chave blockchain

  • Faz uma operação de Child Key Derivation (CKD). Deriva uma chave Extended Private Key (XPrv) para a blockchain no padrão BIP32.

    Parameters

    • version: VERSION_OPTIONS

      Versão da chave.

    • index: number

      Índice da chave que será derivada. Chaves non hardened usam índice de 0 a 231-1 e chaves hardened (irrestritamente seguras) usam índices de 231 a 232-1, como especificado no padrão BIP32. É altamente recomendado gerar chaves hardened.

    • exportable: boolean

      Se a chave será exportável.

    • temporary: boolean

      Se a chave será temporária.

    • parentKeyName: string

      Nome da chave pai no HSM. Deve ser uma chave XPrv.

    • childKeyName: string

      Nome da chave que será derivada no HSM.

    Returns Promise<KeyInfo>

    Informações da chave derivada.

    exceptions.HsmError Caso não seja possível derivar a chave ou ocorra algum erro na operação.

  • Gera uma assinatura EdDSA usando o módulo blockchain.

    Parameters

    • type: BLOCKCHAIN_EdDSA_TYPE

      Tipo da assinatura a ser gerada.

    • privKeyName: string

      Nome da chave privada.

    • data: Buffer

      Dados que serão assinados.

    Returns Promise<Buffer<ArrayBufferLike>>

    Assinatura gerada.

    exceptions.HsmError Caso não seja possível assinar os dados ou ocorra algum erro na operação.

  • Recupera o endereço de uma chave usando o módulo blockchain.

    Parameters

    • type: ADDRESS_TYPE

      Tipo do endereço a ser gerado.

    • version: ADDRESS_VERSION

      Versão do endereço.

    • hrp: ADDRESS_HRP

      HRP (Human Readable Part) da chave.

    • pk: string

      Chave privada da qual será gerado o endereço ou o script-hash.

    Returns Promise<Buffer<ArrayBufferLike>>

    Retorna o endereço.

    exceptions.HsmError Caso não seja possível recuperar o endereço ou ocorra algum erro na operação.

    Código de exemplo: Obtendo o endereço blockchain a partir da chave privada

    ATENÇÃO

    Endereços P2TR (sem tweak de chave) devem ser usados com assinaturas BIP340/Schnorr apenas em cenários de single-key-setting (assinatura única).
  • Recupera as propriedades de uma chave usando o módulo blockchain.

    Parameters

    • name: string

      Nome da chave privada.

    Returns Promise<KeyInfo>

    Retorna um objeto com os dados de blockchain da chave.

    exceptions.HsmError Caso não seja possível recuperar o endereço ou ocorra algum erro na operação.

  • Importa uma chave privada usando o módulo blockchain_interfaces.

    Parameters

    • format: IMPORT_EXPORT_FORMAT

      Formato da chave a ser importada.

    • exportable: boolean

      Se a chave será exportável.

    • temporary: boolean

      Se a chave será temporária.

    • name: string

      Nome da chave privada.

    • data: string

      Chave privada no formato especificado em enums.IMPORT_EXPORT_FORMAT.

    Returns Promise<boolean>

    True se a importação foi efetuada ou uma exceção caso o contrário.

    exceptions.HsmError Caso ocorra algum erro na operação.

    Código de exemplo: Importando chave privada blockchain

  • Calcula um ponto a partir de outro ponto e um contexto randómico.

    Parameters

    Returns Promise<Buffer<ArrayBufferLike>>

    Retorna um buffer com o ponto calculado.

    Caso algum parâmetro informado seja invalido.

    exceptions.InvalidParameterError Caso algum parâmetro informado seja invalido.

    exceptions.HsmError Caso ocorra algum erro na operação.

  • Multiplica um escalar pela chave privada e soma um escalar randômico.

    Parameters

    Returns Promise<Buffer<ArrayBufferLike>>

    Retorna um buffer com o resultado da operação.

    Caso o nome da chave seja inválido.

    exceptions.InvalidParameterError Caso algum parâmetro informado seja invalido.

    exceptions.HsmError Caso ocorra algum erro na operação.

  • Retrona quatro escalares randômicos.

    Returns Promise<Buffer<ArrayBufferLike>[]>

    Retorna um array de bufferes com os escalares randômicos.

    exceptions.HsmError Caso ocorra algum erro na operação.

  • Retrona um escalar randômico.

    Returns Promise<Buffer<ArrayBufferLike>>

    Retorna um buffer com o escalare randômico.

    exceptions.HsmError Caso ocorra algum erro na operação.

  • Atualiza o contexto randômico.

    Parameters

    Returns Promise<Buffer<ArrayBufferLike>>

    Retorna um buffer com o ponto calculado.

    Caso algum parâmetro informado seja invalido.

    exceptions.InvalidParameterError Caso algum parâmetro informado seja invalido.

    exceptions.HsmError Caso ocorra algum erro na operação.

  • Multiplica um escalar pela chave privada.

    Parameters

    Returns Promise<Buffer<ArrayBufferLike>>

    Retorna um buffer com o ponto calculado.

    Caso algum parâmetro informado seja invalido.

    exceptions.InvalidParameterError Caso algum parâmetro informado seja invalido.

    exceptions.HsmError Caso ocorra algum erro na operação.