diff --git a/ecdsa.h b/ecdsa.h index d21a3855d..90c607010 100644 --- a/ecdsa.h +++ b/ecdsa.h @@ -48,10 +48,16 @@ typedef struct { } ecdsa_curve; +// 4 byte prefix + 40 byte data (segwit) #define MAX_ADDR_RAW_SIZE (4 + 40) +// bottle neck is segwit bech32: +// 4 human readable prefix + 1 separator + 64 data + 6 checksum + 1 NUL +// the standard says 83 characters in hrp, but currently all coins use only 2 +#define MAX_ADDR_SIZE (4+1+64+6+1) +// 4 byte prefix + 32 byte privkey + 1 byte compressed marker #define MAX_WIF_RAW_SIZE (4 + 32 + 1) -#define MAX_ADDR_SIZE (54) -#define MAX_WIF_SIZE (58) +// (4+32+1 + 4 [checksum]) * 8 / log2(58) plus NUL. +#define MAX_WIF_SIZE (57) void point_copy(const curve_point *cp1, curve_point *cp2); void point_add(const ecdsa_curve *curve, const curve_point *cp1, curve_point *cp2);