View Source Tezex.Crypto (tezex v0.1.0)
A set of functions to check Tezos signed messages and verify a public key corresponds to a wallet address (public key hash).
Link to this section Summary
Functions
Verify that address is the public key hash of pubkey.
Verify that address is the public key hash of pubkey and that signature is a valid signature for message signed with the private key corresponding to public key pubkey.
Derive public key hash (Tezos wallet address) from public key
Verify that signature is a valid signature for message signed with the private key corresponding to public key pubkey
Link to this section Functions
Verify that address is the public key hash of pubkey.
examples
Examples
iex> pubkey = "sppk7aBerAEA6tv4wzg6FnK7i5YrGtEGFVvNjWhc2QX8bhzpouBVFSW"
iex> Tezex.Crypto.check_address("tz2BC83pvEAag6r2ZV7kPghNAbjFoiqhCvZx", pubkey)
:ok
iex> Tezex.Crypto.check_address("tz1burnburnburnburnburnburnburjAYjjX", pubkey)
{:error, :mismatch}
Verify that address is the public key hash of pubkey and that signature is a valid signature for message signed with the private key corresponding to public key pubkey.
examples
Examples
iex> address = "tz2BC83pvEAag6r2ZV7kPghNAbjFoiqhCvZx"
iex> address_b = "tz1burnburnburnburnburnburnburjAYjjX"
iex> signature = "spsig1ZNQaUKNERZSiEiNviqa5EAPkcNASXhfkXtxRatZTDZAnUB4Ra2Jus8b1oEpFnPx8Z6g28pd8vK3R8nPK29JDU5FiSLH5T"
iex> message = "05010000007154657a6f73205369676e6564204d6573736167653a207369676e206d6520696e20617320747a32424338337076454161673672325a56376b5067684e41626a466f69716843765a78206f6e206f626a6b742e636f6d20617420323032312d31302d30345431383a35393a31332e3939305a"
iex> public_key = "sppk7aBerAEA6tv4wzg6FnK7i5YrGtEGFVvNjWhc2QX8bhzpouBVFSW"
iex> Tezex.Crypto.check_signature(address, signature, message, public_key)
true
iex> Tezex.Crypto.check_signature(address_b, signature, message, public_key)
false
iex> Tezex.Crypto.check_signature(address, signature, "", public_key)
false
Derive public key hash (Tezos wallet address) from public key
examples
Examples
iex> Tezex.Crypto.derive_address("edpktsPhZ8weLEXqf4Fo5FS9Qx8ZuX4QpEBEwe63L747G8iDjTAF6w")
{:ok, "tz1LKpeN8ZSSFNyTWiBNaE4u4sjaq7J1Vz2z"}
iex> Tezex.Crypto.derive_address("sppk7aBerAEA6tv4wzg6FnK7i5YrGtEGFVvNjWhc2QX8bhzpouBVFSW")
{:ok, "tz2BC83pvEAag6r2ZV7kPghNAbjFoiqhCvZx"}
iex> Tezex.Crypto.derive_address("p2pk65yRxCX65k6qRPrbqGWvfW5JnLB1p3dn1oM5o9cyqLKPPhJaBMa")
{:ok, "tz3bPFa6mGv8m4Ppn7w5KSDyAbEPwbJNpC9p"}
Verify that signature is a valid signature for message signed with the private key corresponding to public key pubkey