Bip38 Functions

int bip38_raw_from_private_key(const unsigned char *bytes, size_t bytes_len, const unsigned char *pass, size_t pass_len, uint32_t flags, unsigned char *bytes_out, size_t len)

Encode a private key in raw BIP 38 address format.

Parameters:
  • bytes – Private key to use.

  • bytes_len – Size of bytes in bytes. Must be EC_PRIVATE_KEY_LEN.

  • pass – Password for the encoded private key.

  • pass_len – Length of pass in bytes.

  • flagsBIP38 conversion flags indicating desired behavior.

  • bytes_out – Destination for the resulting raw BIP38 address.

  • len – Size of bytes_out. Must be BIP38_SERIALIZED_LEN.

Returns:

See Error Codes

int bip38_from_private_key(const unsigned char *bytes, size_t bytes_len, const unsigned char *pass, size_t pass_len, uint32_t flags, char **output)

Encode a private key in BIP 38 address format.

Parameters:
  • bytes – Private key to use.

  • bytes_len – Size of bytes in bytes. Must be EC_PRIVATE_KEY_LEN.

  • pass – Password for the encoded private key.

  • pass_len – Length of pass in bytes.

  • flagsBIP38 conversion flags indicating desired behavior.

  • output – Destination for the resulting BIP38 address.

Returns:

See Error Codes

int bip38_raw_to_private_key(const unsigned char *bytes, size_t bytes_len, const unsigned char *pass, size_t pass_len, uint32_t flags, unsigned char *bytes_out, size_t len)

Decode a raw BIP 38 address to a private key.

Parameters:
  • bytes – Raw BIP 38 address to decode.

  • bytes_len – Size of bytes in bytes. Must be BIP38_SERIALIZED_LEN.

  • pass – Password for the encoded private key.

  • pass_len – Length of pass in bytes.

  • flagsBIP38 conversion flags indicating desired behavior.

  • bytes_out – Destination for the resulting private key.

  • len – Size of bytes_out. Must be EC_PRIVATE_KEY_LEN.

Returns:

See Error Codes

int bip38_to_private_key(const char *bip38, const unsigned char *pass, size_t pass_len, uint32_t flags, unsigned char *bytes_out, size_t len)

Decode a BIP 38 address to a private key.

Parameters:
  • bip38 – BIP 38 address to decode.

  • pass – Password for the encoded private key.

  • pass_len – Length of pass in bytes.

  • flagsBIP38 conversion flags indicating desired behavior.

  • bytes_out – Destination for the resulting private key.

  • len – Size of bytes_out. Must be EC_PRIVATE_KEY_LEN.

Returns:

See Error Codes

int bip38_raw_get_flags(const unsigned char *bytes, size_t bytes_len, size_t *written)

Get compression and/or EC mult flags.

Parameters:
Returns:

See Error Codes

int bip38_get_flags(const char *bip38, size_t *written)

Get compression and/or EC mult flags.

Parameters:
Returns:

See Error Codes

Bip38 Constants

BIP38 conversion flags

BIP38_KEY_NETWORK_MASK

Mask for the bottom 8 bitflags which hold the network

BIP38_KEY_MAINNET

Address is for main network

BIP38_KEY_TESTNET

Address is for test network

BIP38_KEY_COMPRESSED

Public key is compressed

BIP38_KEY_EC_MULT

EC-Multiplied key (FIXME: Not implemented)

BIP38_KEY_QUICK_CHECK

Check structure only (no password required)

BIP38_KEY_RAW_MODE

Treat bytes in as raw data

BIP38_KEY_SWAP_ORDER

Hash comes after encrypted key

BIP38_SERIALIZED_LEN

Length of a raw BIP38 key in bytes