[Nym3-commit] r239 - trunk/nym3

laurent at conuropsis.org laurent at conuropsis.org
Thu May 5 20:36:00 CEST 2005


Author: laurent
Date: 2005-05-05 20:35:58 +0200 (Thu, 05 May 2005)
New Revision: 239

Modified:
   trunk/nym3/Crypto.py
Log:
Fix various bugs in nym_encrypt.


Modified: trunk/nym3/Crypto.py
===================================================================
--- trunk/nym3/Crypto.py	2005-05-05 17:09:51 UTC (rev 238)
+++ trunk/nym3/Crypto.py	2005-05-05 18:35:58 UTC (rev 239)
@@ -30,22 +30,21 @@
 import Message
 
 def nym_encrypt(data, key):
-    """Encrypts data with the given key using nymservers fashion
-    """
+    """Encrypts data with the given key, following specs §4.2.
+       Key is the ASN.1 encoding of the actual public key"""
+    key = _cr.pk_decode_public_key(key)
     n = Message.nbBits(_cr.pk_get_modulus(key)) / 8
     assert n == 128 or n == 256
     dataC = compressData(data)
-    paddingLen = len(dataC) - (len(dataC) / 128) * 128
-    if paddingLen != 0:
-        paddingLen = 128 - paddingLen
-    dataP = dataC + '0'*paddingLen
+    paddingLen = 128 - (len(dataC) % 128)
+    dataP = dataC + chr(0) * paddingLen
     k = ""
     for i in range(0, 20):
-        k = k + chr(random.randint(0, 255))
+        k = k + chr(random.randint(0, 255)) # TODO : better random.
     K = _cr.Keyset(k)
     dataE = _cr.lioness_encrypt(dataP, K.getLionessKeys(""))
     #42 : size of OAEP padding(bytes)
     #20 : size of k (bytes)
     rsaLen = n - OAEP_OVERHEAD - 20
-    rsaPart = pk_encrypt(k + dataE[0:rsaLen],key)
-    return rsaPart + dataEnc[rsaLen:]
+    rsaPart = _cr.pk_encrypt(k + dataE[:rsaLen], key)
+    return rsaPart + dataE[rsaLen:]



More information about the Nym3-commit mailing list