Skip to content

instanceof Uint8Array returning false #175

Open
@bitsanity

Description

@bitsanity

Using secp256k1 npm module within nwjs-sdk-v0.51.2-linux-x64

let sigbytes = [an ECDSA signature in DER format, 71 bytes]
let dersig = Uint8Array.from( sigbytes );
let sigobj = SECP256K1.signatureImport( dersig );

Result

Error: Expected signature to be an Uint8Array", source: [...]/node_modules/secp256k1/lib/index.js (18)

Origin of the Error

function isUint8Array (name, value, length) {
  assert(value instanceof Uint8Array, `Expected ${name} to be an Uint8Array`)

Root Cause

The instanceof operator returns false. The typeof operator returns object, so javascript is seeing value as an object not as a Uint8Array.

Workaround/Fix

function isUint8Array (name, value, length) {
  assert(value instanceof Uint8Array || value.constructor.name === 'Uint8Array', `Expected ${name} to be an Uint8Array`)

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions