Changeset 260
- Timestamp:
- 04/04/09 22:22:55 (3 years ago)
- Location:
- trunk/sandbox/jhb/oc2
- Files:
-
- 2 modified
-
documentation.py (modified) (1 diff)
-
rsa.py (modified) (8 diffs)
Legend:
- Unmodified
- Added
- Removed
-
trunk/sandbox/jhb/oc2/documentation.py
r259 r260 232 232 >>> issuer.getMasterPubKey().verifyContainerSignature(cdd) 233 233 True 234 234 >>> cdd.toString(True) 235 235 ############################################################################### 236 236 -
trunk/sandbox/jhb/oc2/rsa.py
r259 r260 95 95 96 96 97 def encrypt_int(message, ekey, n):97 def rsa_operation(message, ekey, n): 98 98 """Encrypts a message using encryption key 'ekey', working modulo 99 99 n""" … … 111 111 return pow(message, ekey, n) 112 112 113 def decrypt_int(cyphertext, dkey, n): 114 """Decrypts a cypher text using the decryption key 'dkey', working 115 modulo n""" 116 117 return encrypt_int(cyphertext, dkey, n) 118 119 def sign_int(message, dkey, n): 120 """Signs 'message' using key 'dkey', working modulo n""" 121 122 return decrypt_int(message, dkey, n) 123 124 def verify_int(signed, ekey, n): 125 """verifies 'signed' using key 'ekey', working modulo n""" 126 127 return encrypt_int(signed, ekey, n) 128 129 def blinding_int(m,secret,n): 113 114 def blinding_operation(m,secret,n): 130 115 return (m * secret) % n 131 116 … … 133 118 def encrypt(message, key): 134 119 """Encrypts a string 'message' with the public key 'key'""" 135 136 #return chopstring(message, key['e'], key['n'], encrypt_int) 137 return encrypt_int(message,key['e'],key['n']) 120 return rsa_operation(message,key['e'],key['n']) 121 138 122 def sign(message, key): 139 123 """Signs a string 'message' with the private key 'key'""" 140 141 #return chopstring(message, key['d'], key['p']*key['q'], decrypt_int) 142 return decrypt_int(message,key['d'],key['n']) 124 return rsa_operation(message,key['d'],key['n']) 143 125 144 126 def decrypt(cypher, key): 145 127 """Decrypts a cypher with the private key 'key'""" 146 147 #return gluechops(cypher, key['d'], key['p']*key['q'], decrypt_int) 148 return decrypt_int(cypher,key['d'],key['n']) 128 return rsa_operation(cypher,key['d'],key['n']) 149 129 150 130 def verify(cypher, key): 151 131 """Verifies a cypher with the public key 'key'""" 152 153 #return gluechops(cypher, key['e'], key['n'], encrypt_int) 154 return encrypt_int(cypher,key['e'],key['n']) 132 return rsa_operation(cypher,key['e'],key['n']) 155 133 156 134 def blind(message,secret,key): 157 #return chopstring(message,secret,key['n'],blinding_int) 158 return blinding_int(message,secret,key['n']) 135 return blinding_operation(message,secret,key['n']) 159 136 160 137 def unblind(message,secret,key): 161 #return gluechops(message,secret,key['n'],blinding_int) 162 return blinding_int(message,secret,key['n']) 138 return blinding_operation(message,secret,key['n']) 163 139 164 140 … … 398 374 399 375 400 dummypub = { 401 'e': 59343568823711559206614914329434374961303042335788099534897501357955675804133L, 402 'n': 32793647770017443581051908007908006621376604150499221366839445678176407494654130256572721798731647281073382247358431120858829497973290288823842062554766872356043862368004460824686561544242774370448685624290963022007959843337482265073763255429596031300239158232169931316001844162136279539357507455710562227577L 403 } 404 405 dummypriv = { 406 'q': 3660876769483489857077409618418989781902917148342703560038011826242773069902176126219730148875372119227365538620396693688963051979724315365417720940740849L, 407 'p': 8957867154497055858370988090953024497950216741166048812169220114248696092230327733254526217831517389137130597830562133311139440841609128753512364848094473L, 408 'd': 12619589565384678078150569778102981741046267149118420445896125941979396328586657133712760591528167393457329828435758755256948329844592838106750783634900284025380032774546264335257012829516042607077111098646252442031819834114954318384114125879377117610343879752299012777002244350133926279173002674800640331117L} 409 410 376 dummypub = {'e': 14113314172904951708574681727178419945334488710884393819171664976779680200797597414114771594818675165309793637334221026797603177014256605018822198106314722836374110842070715219892097224490412698863094421694900145536562274616319932131625829121465675029881660966735997768513498069724329875965098488010383588739L, 'n': 145150538976217551367176809671350273750494602624899590324368244897722593745479036259822375443517603452852324994768211967284921909083542545166771234362330874393991730925949129652583929144910470338348353919907753285823861580558682180771896411177636929426768872822501699256786375850666075860261984182867372954251L} 377 378 379 dummypriv = {'d': 123696117147104176428005963321746675718965595231084565714315557894285965050935507764060028854105522904648614509261060002795161536846964129662796047291190706239685012795528994459464895585008580460376045227460501329077360873393533273710765442351670778999647836893911520692642555450158992572095458544095097599595L, 'n': 145150538976217551367176809671350273750494602624899590324368244897722593745479036259822375443517603452852324994768211967284921909083542545166771234362330874393991730925949129652583929144910470338348353919907753285823861580558682180771896411177636929426768872822501699256786375850666075860261984182867372954251L} 411 380 412 381 # Do doctest if we're not imported … … 419 388 #blinding 420 389 #message = 'f'*65 421 message = 'c3ab8ff13720e8ad9047dd39466b3c8974e592c2fa383d4a3960714caef0c4f2'390 message = bytes2int('c3ab8ff13720e8ad9047dd39466b3c8974e592c2fa383d4a3960714caef0c4f2') 422 391 #print 'cleartext ', message 423 392 unblinder = getUnblinder(pub['n']) … … 430 399 t = time.time() 431 400 432 signedblind = encrypt_int(blinded, priv['d'], priv['p']*priv['q'])401 signedblind = rsa_operation(blinded, priv['d'], priv['n']) 433 402 times.append(time.time() - t) 434 403 t = time.time() … … 445 414 #full 446 415 t = time.time() 447 message = 'serial '*5416 message = bytes2int('serial '*5) 448 417 print 'cleartext ', message 449 418 cypher = encrypt(message,pub) … … 459 428 print 'blinded', blinded 460 429 signedblind = sign(blinded,priv) 461 signedblind = encrypt_int(blinded, priv['d'], priv['p']*priv['q'])430 signedblind = rsa_operation(blinded, priv['d'], priv['n']) 462 431 print 'signedblind', signedblind 463 432 unblinded = unblind(signedblind,unblinder,pub)
