multisig HMAC
Project description
multisig-hmac-python-version
Multisig scheme for HMAC authentication
Work in progress
Usage
Key management can happen in either of two modes, either by storing every of the component keys, or by storing a single master seed and using that to derive keys ad hoc.
Using stored keys:
m = MultisigHMAC()
# generate keys which need to be stored securely and need to be shared securely with each party
k1 = m.keygen()
k2 = m.keygen()
k3 = m.keygen()
# sign by each client with 2-of-3
data = b'Hello world'
s1 = m.sign(k1, data)
s3 = m.sign(k3, data)
out = m.combine([s1, s3])
sent = (out[0], base64.urlsafe_b64encode(out[1]))
# --- network ---
received = (sent[0], base64.urlsafe_b64decode(sent[1]))
# verify on the server
threshold = 2
keys = [k1, k2, k3]
signature = received
m.verify(keys, signature, data, threshold)
Using a derived master key:
m = MultisigHMAC()
# generate a master seed which needs to be stored securely
# this seed must NOT be shared with any other party
seed = m.seedgen()
k1 = m.keygen()
k2 = m.keygen()
k3 = m.keygen()
# sign by each client with 2-of-3
data = b'Hello world'
s1 = m.sign(k1, data)
s3 = m.sign(k3, data)
out = m.combine([s1, s3])
sent = (out[0], base64.urlsafe_b64encode(out[1]))
# --- network ---
received = (sent[0], base64.urlsafe_b64decode(sent[1]))
# verify on the server, but now keys are dynamically derived
threshold = 2
keys = [k1, k2, k3]
signature = received
m.verifyDerived(keys, signature, data, threshold)
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distributions
No source distribution files available for this release.See tutorial on generating distribution archives.
Built Distribution
Close
Hashes for multisig_hmac-0.2-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | d9175ec420a4941aec22cec9cb19a889e6eca4732d8b4f98500ff236f54a7add |
|
MD5 | 751acdb5c5d852497cd37226af4ea0f6 |
|
BLAKE2b-256 | 84760c1afadbc6ea67e14b82ab8d359bf4c08196d6b3ce852d5f28ec619ef795 |