Skip to main content

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 Distribution

multisig-hmac-0.0.3.tar.gz (3.4 kB view details)

Uploaded Source

Built Distribution

multisig_hmac-0.0.3-py3-none-any.whl (4.5 kB view details)

Uploaded Python 3

File details

Details for the file multisig-hmac-0.0.3.tar.gz.

File metadata

  • Download URL: multisig-hmac-0.0.3.tar.gz
  • Upload date:
  • Size: 3.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.1.1 pkginfo/1.5.0.1 requests/2.22.0 setuptools/45.2.0 requests-toolbelt/0.9.1 tqdm/4.36.1 CPython/3.7.4

File hashes

Hashes for multisig-hmac-0.0.3.tar.gz
Algorithm Hash digest
SHA256 9f5c19eaa83b2222a991fcf1906fb74cf224effc3a8ff9c5ec0e60addcffd52f
MD5 8fa480b610c10903615a2cd294e7edc1
BLAKE2b-256 37feca5e518cc42dac9c75b1da72bad66e67a8402fd09741ba6c396fd9cb84be

See more details on using hashes here.

File details

Details for the file multisig_hmac-0.0.3-py3-none-any.whl.

File metadata

  • Download URL: multisig_hmac-0.0.3-py3-none-any.whl
  • Upload date:
  • Size: 4.5 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.1.1 pkginfo/1.5.0.1 requests/2.22.0 setuptools/45.2.0 requests-toolbelt/0.9.1 tqdm/4.36.1 CPython/3.7.4

File hashes

Hashes for multisig_hmac-0.0.3-py3-none-any.whl
Algorithm Hash digest
SHA256 76d36aae66ce5d339b568df02610e8914db91164a5efba95aaf6af76f0fa9dde
MD5 3daed61fd92cdf0d724da133721417aa
BLAKE2b-256 83836b57fb039705ca3ecd1e39be58dcc84abcb35521a3d68aba7f20c2e7e834

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page