Пример #1
0
 def verify(self, pk, M, S):
     modbits = int(pk['N']).bit_length()
     k = int(ceil(modbits / 8.0))
     emLen = int(ceil((modbits - 1) / 8.0))
     if len(S) != k:
         if debug: print("Sig is %s octets long, not %" % (len(S), k))
         return False
     s = Conversion.OS2IP(S)
     s = integer(s) % pk['N']  #Convert to modular integer
     m = (s**pk['e']) % pk['N']
     EM = Conversion.IP2OS(m, emLen)
     if debug:
         print("Verifying")
         print("k     =>", k)
         print("emLen =>", emLen)
         print("s     =>", s)
         print("m       =>", m)
         print("em      =>", EM)
         print("S     =>", S)
     return self.paddingscheme.verify(M, EM, modbits - 1)
Пример #2
0
 def testIP2OSLen(self):
     i = 9202000
     os = Conversion.IP2OS(i, 200)
     i2 = Conversion.OS2IP(os)
     self.assertEqual(i, i2)
Пример #3
0
 def testIP2OS(self):
     #9,202,000 = (0x)8c 69 50.
     os = Conversion.IP2OS(9202000)
     self.assertEqual(os, b'\x8c\x69\x50')
Пример #4
0
 def decrypt(self, pk, sk, c):
     octetlen = int(ceil(int(pk['N']).bit_length() / 8.0))
     M = (c**(sk['d'] % sk['phi_N'])) % pk['N']
     os = Conversion.IP2OS(int(M), octetlen)
     if debug: print("OS  =>", os)
     return self.paddingscheme.decode(os)
Пример #5
0
 def getRandomBits(self, length):
     i = randomBits(length)
     len = math.ceil(length / 8)
     return Conversion.IP2OS(i, len)
Пример #6
0
 def getRandomBytes(self, length):
     bits = length * 8
     val = randomBits(bits)
     return Conversion.IP2OS(val, length)