Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(206)

Side by Side Diff: third_party/twisted_8_1/twisted/conch/ssh/common.py

Issue 12261012: Remove third_party/twisted_8_1 (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/tools/build
Patch Set: Created 7 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
(Empty)
1 # -*- test-case-name: twisted.conch.test.test_ssh -*-
2 # Copyright (c) 2001-2007 Twisted Matrix Laboratories.
3 # See LICENSE for details.
4
5
6 """
7 Common functions for the SSH classes.
8
9 Maintainer: U{Paul Swartz<mailto:z3p@twistedmatrix.com>}
10 """
11
12 import struct, warnings
13
14 try:
15 from Crypto import Util
16 except ImportError:
17 warnings.warn("PyCrypto not installed, but continuing anyways!",
18 RuntimeWarning)
19
20 from twisted.python import randbytes
21
22 class Entropy(object):
23 """
24 A Crypto.Util.randpool.RandomPool mock for compatibility.
25 """
26 def get_bytes(self, numBytes):
27 """
28 Get a number of random bytes.
29 """
30 warnings.warn("entropy.get_bytes is deprecated, please use "
31 "twisted.python.randbytes.secureRandom instead.",
32 category=DeprecationWarning, stacklevel=2)
33 return randbytes.secureRandom(numBytes)
34
35 entropy = Entropy()
36
37
38 def NS(t):
39 """
40 net string
41 """
42 return struct.pack('!L',len(t)) + t
43
44 def getNS(s, count=1):
45 """
46 get net string
47 """
48 ns = []
49 c = 0
50 for i in range(count):
51 l, = struct.unpack('!L',s[c:c+4])
52 ns.append(s[c+4:4+l+c])
53 c += 4 + l
54 return tuple(ns) + (s[c:],)
55
56 def MP(number):
57 if number==0: return '\000'*4
58 assert number>0
59 bn = Util.number.long_to_bytes(number)
60 if ord(bn[0])&128:
61 bn = '\000' + bn
62 return struct.pack('>L',len(bn)) + bn
63
64 def getMP(data, count=1):
65 """
66 Get multiple precision integer out of the string. A multiple precision
67 integer is stored as a 4-byte length followed by length bytes of the
68 integer. If count is specified, get count integers out of the string.
69 The return value is a tuple of count integers followed by the rest of
70 the data.
71 """
72 mp = []
73 c = 0
74 for i in range(count):
75 length, = struct.unpack('>L',data[c:c+4])
76 mp.append(Util.number.bytes_to_long(data[c+4:c+4+length]))
77 c += 4 + length
78 return tuple(mp) + (data[c:],)
79
80 def _MPpow(x, y, z):
81 """return the MP version of (x**y)%z
82 """
83 return MP(pow(x,y,z))
84
85 def ffs(c, s):
86 """
87 first from second
88 goes through the first list, looking for items in the second, returns the fi rst one
89 """
90 for i in c:
91 if i in s: return i
92
93 getMP_py = getMP
94 MP_py = MP
95 _MPpow_py = _MPpow
96 pyPow = pow
97
98 def _fastgetMP(data, count=1):
99 mp = []
100 c = 0
101 for i in range(count):
102 length = struct.unpack('!L', data[c:c+4])[0]
103 mp.append(long(gmpy.mpz(data[c + 4:c + 4 + length][::-1] + '\x00', 256)) )
104 c += length + 4
105 return tuple(mp) + (data[c:],)
106
107 def _fastMP(i):
108 i2 = gmpy.mpz(i).binary()[::-1]
109 return struct.pack('!L', len(i2)) + i2
110
111 def _fastMPpow(x, y, z=None):
112 r = pyPow(gmpy.mpz(x),y,z).binary()[::-1]
113 return struct.pack('!L', len(r)) + r
114
115 def _fastpow(x, y, z=None):
116 return pyPow(gmpy.mpz(x), y, z)
117
118 def install():
119 global getMP, MP, _MPpow
120 getMP = _fastgetMP
121 MP = _fastMP
122 _MPpow = _fastMPpow
123 __builtins__['pow'] = _fastpow # evil evil
124
125 try:
126 import gmpy
127 install()
128 except ImportError:
129 pass
130
OLDNEW
« no previous file with comments | « third_party/twisted_8_1/twisted/conch/ssh/channel.py ('k') | third_party/twisted_8_1/twisted/conch/ssh/connection.py » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698