Public key to bitmessage address

This page briefly describes, how to generate a Bitmessage Address from a public key. The variable after the list is used to refer to the step later


 * 1) Create a private and a public key for encryption and signing (resulting in 4 keys)
 * 2) Merge the public part of the signing key and the encryption key together. (encoded in uncompressed X9.62 format) (A)
 * 3) Take the SHA512 hash of A. (B)
 * 4) Take the RIPEMD160 of B. (C)
 * 5) Repeat step 1-4 until you have a result that starts with a zero (Or two zeros, if you want a short address). (D)
 * 6) Remove the zeros at the beginning of D. (E)
 * 7) Put the stream number (as a var_int) in front of E. (F)
 * 8) Put the address version (as a var_int) in front of F. (G)
 * 9) Take a double SHA512 (hash of a hash) of G and use the first four bytes as a checksum, that you append to the end. (H)
 * 10) base58 encode H. (J)
 * 11) Put "BM-" in front J. (K)

K is your full address

Note: Bitmessage's base58 encoding uses the following sequence (the same as Bitcoin's): "123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz". Many existing libraries for base58 do not use this ordering.