[MerlinEPGCenter] - implement workaround to fix zapping to channel when alternatives...
[enigma2-plugins.git] / mytube / src / __init__.py
1 import hashlib
2
3 def bin2long(s):
4         return reduce(lambda x, y:(x << 8L) + y, map(ord, s))
5
6 def long2bin(l):
7         res = ""
8         for byte in range(128):
9                 res += chr((l >> (1024 - (byte + 1) * 8)) & 0xff)
10         return res
11
12 def rsa_pub1024(src, mod):
13         return long2bin(pow(bin2long(src), 65537, bin2long(mod)))
14
15 def decrypt_block(src, mod):
16         if len(src) != 128 and len(src) != 202:
17                 return None
18         dest = rsa_pub1024(src[:128], mod)
19         hash = hashlib.sha1(dest[1:107])
20         if len(src) == 202:
21                 hash.update(src[131:192])
22         result = hash.digest()
23         if result == dest[107:127]:
24                 return dest
25         return None
26