pksig_rsa_hw09

Hohenberger-Waters Stateful Signatures (RSA-based)

From: “S. Hohenberger, B. Waters. Realizing Hash-and-Sign Signatures under Standard Assumptions”, Section 3.
Published in: Eurocrypt 2009
Notes:
  • type: signature (public key)
  • setting: RSA
  • assumption: RSA
Author:J Ayo Akinyele/Christina Garman
Date:12/2011
Status:Needs Improvement.
class pksig_rsa_hw09.BlumIntegerSquareRoot(p, q)[source]

Bases: object

pow(modularInt)[source]
class pksig_rsa_hw09.LogFunction(base=10)[source]

Bases: object

class pksig_rsa_hw09.Prf[source]

Bases: object

classmethod eval(k, input1)[source]
classmethod keygen(bits)[source]
pksig_rsa_hw09.SHA1(bytes1)[source]
class pksig_rsa_hw09.Sig_RSA_Stateless_HW09(CH=<class 'charm.schemes.chamhash_rsa_hw09.ChamHash_HW09'>)[source]

Bases: charm.toolbox.PKSig.PKSig

This scheme is probablistic and thus time consuming, so we skip it when running doctests.

#doctest: +SKIP

>>> pksig = Sig_RSA_Stateless_HW09() 
>>> p = integer(13075790812874903063868976368194105132206964291400106069285054021531242344673657224376055832139406140158530256050580761865568307154219348003780027259560207) 
>>> q = integer(12220150399144091059083151334113293594120344494042436487743750419696868216757186059428173175925369884682105191510729093971051869295857706815002710593321543) 
>>> (public_key, secret_key) = pksig.keygen(1024, p, q) 
>>> msg = SHA1(b'this is the message I want to sign.') 
>>> signature = pksig.sign(public_key, secret_key, msg) 
>>> pksig.verify(public_key, msg, signature) 
True
HW_hash(key, c, input, keyLen)[source]
keygen(keyLength=1024, p=0, q=0)[source]
sign(pk, sk, message, s=0)[source]
verify(pk, message, sig)[source]
pksig_rsa_hw09.randomQR(n)[source]