Advertisement
easklund

japp

Dec 17th, 2017
80
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.30 KB | None | 0 0
  1. def convertValue(value):
  2. hexa = intToByte(value)
  3. hexa = byteToHex(hexa)
  4. if int(hexa[0],16) >= 8:
  5. hexa = '00' + hexa
  6. return hexa
  7.  
  8. def convertShort(i, length):
  9. typeInt = hexToByte('02')
  10. l = intToByte(length//2)
  11. i = twos_complement(i)
  12. value = intToByte(i)
  13. return byteToHex(typeInt + l + value)
  14.  
  15. def intToByte(integer):
  16. size = (integer.bit_length() + 7 ) // 8
  17. if integer == 0:
  18. size = 1
  19. four_bytes = integer.to_bytes(size, byteorder='big')
  20. return four_bytes
  21.  
  22. def compute(p, q):
  23. version = 0
  24. e = 65537
  25. n = p * q
  26. d = e**(-1)
  27. ex1 = d % (p - 1) #exponent1 INTEGER, -- d mod (p-1)
  28. ex2 = d % (q - 1) #exponent2 INTEGER, -- d mod (q-1)
  29. coeff = ~q % p #coefficient INTEGER, -- (inverse of q) mod p
  30. v1 = convertToDER(version)
  31. e1 = convertToDER(e)
  32. n1 = convertToDER(n)
  33. d1 = convertToDER(d)
  34. ex11 = convertToDER(ex11)
  35. ex21 = convertToDER(ex21)
  36. c1 = convertToDER(c1)
  37. value = v1+e1+n1+d1+ex11+ex21+c1
  38.  
  39. length = len(convertValue(value))
  40. if lenght < 127:
  41. lhex = intToByte(length//2)
  42. else:
  43. leng = intToByte(length//2)
  44. size = intToHex(len(leng))
  45. l = '1' + toBin(size,7)
  46. lhex= hex(int(l, 2))
  47.  
  48. return hexToByte('30' + lhex + value)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement