epgcache: add possibility to change the default epg cache read/write path
[enigma2.git] / lib / python / Plugins / SystemPlugins / CrashlogAutoSubmit / __init__.py
1 import sha
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 = sha.new(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
27 def validate_cert(cert, key):
28         buf = decrypt_block(cert[8:], key) 
29         if buf is None:
30                 return None
31         return buf[36:107] + cert[139:196]
32
33 def read_random():
34         try:
35                 fd = open("/dev/urandom", "r")
36                 buf = fd.read(8)
37                 fd.close()
38                 return buf
39         except:
40                 return None