Revision: 2230
Author: jpalanca
Date: Fri Jul 16 03:06:02 2010
Log: - xmppd and tlslite now use hashlib instead of md5 and sha. Fixes
issue 52
- runspade checks for netbsd OS
http://code.google.com/p/spade2/source/detail?r=2230
Modified:
/trunk/runspade.py
/trunk/tlslite/TLSRecordLayer.py
/trunk/tlslite/mathtls.py
/trunk/tlslite/messages.py
/trunk/tlslite/utils/cryptomath.py
/trunk/xmpp/auth.py
/trunk/xmppd/modules/dialback.py
/trunk/xmppd/modules/jep0078.py
/trunk/xmppd/modules/stream.py
/trunk/xmppd/xmppd.py
=======================================
--- /trunk/runspade.py Thu Jul 8 05:33:24 2010
+++ /trunk/runspade.py Fri Jul 16 03:06:02 2010
@@ -11,19 +11,12 @@
from getopt import getopt
try:
from spade import spade_backend
-# from spade import SpadeConfigParser
from spade import colors
- #from xmppd.filters import acc
except ImportError, e:
print "Could not import spade package!!! " + str(e)
- #from libspade import spade_backend
- #from libspade import SpadeConfigParser
- #from libspade import colors
from xmppd.xmppd import Server
-
-
__author__ = "Gustavo Aranda <
gus...@gmail.com> and Javier Palanca
<
jpal...@gmail.com>"
__version__ = "2.0-RC4"
__copyright__ = "Copyright (C) 2010"
@@ -31,35 +24,42 @@
def print_help():
+ configfilename = "/etc/spade/spade.xml"
+ jabberxml = "/etc/spade/xmppd.xml"
+ if sys.platform[:6] == 'netbsd':
+ configfilename = os.sep + "usr" + os.sep + "pkg" + configfilename
+ jabberxml = os.sep+ "usr" + os.sep + "pkg" + jabberxml
print
print "Usage: %s [options]" % sys.argv[0]
print " -h, --help display this help text and exit"
print " -v, --version display the version and exit"
print " -d, --debug enable the debug execution"
- print " -c, --configfile load the configuration file (default
/etc/spade/spade.xml)"
- print " -j, --jabber load the jabber configuration file (default
/usr/share/spade/jabberd/jabber.xml)"
- #print " -w, --web load the TurboGears(tm) web interface"
+ print " -c, --configfile load the configuration file
(default "+configfilename+")"
+ print " -j, --jabber load the jabber configuration file
(default "+jabberxml+")"
+ #print " -w, --web load the web interface"
raise SystemExit
def print_version():
- print "SPADE %s by Javier Palanca, Gustavo Aranda, Miguel Escriva,
Natalia Criado and others" % colors.color_yellow + __version__ +
colors.color_none
+ print "SPADE "+colors.color_yellow + __version__ + colors.color_none+"
by Javier Palanca, Gustavo Aranda, Miguel Escriva, Natalia Criado and
others"
print "
gus...@gmail.com -
http://spade2.googlecode.com"
raise SystemExit
# Actually start the program running.
def main():
- gui = False
+ configfilename = "/etc/spade/spade.xml"
+ jabberxml = "/etc/spade/xmppd.xml"
+ if sys.platform[:6] == 'netbsd':
+ configfilename = os.sep + "usr" + os.sep + "pkg" + configfilename
+ jabberxml = os.sep+ "usr" + os.sep + "pkg" + jabberxml
+
+
web = False
if len(sys.argv) < 2: pass
elif sys.argv[1] in ["--help", "-h"]: print_help()
elif sys.argv[1] in ["--version", "-v"]: print_version()
- elif sys.argv[1] in ["--gui", "-g"]: gui = True
#elif sys.argv[1] in ["--web", "-w"]: web = True
-
- configfilename = "/etc/spade/spade.xml"
- jabberxml = "/etc/spade/xmppd.xml"
dbg = []
if
os.name != "posix" or not os.path.exists(jabberxml) or not
os.path.exists(configfilename):
@@ -70,13 +70,12 @@
try:
for opt, arg in getopt(sys.argv[1:],
- "hvdgwc:j:",
["help", "version", "debug", "gui", "web", "configfile=",
+ "hvdwc:j:",
["help", "version", "debug", "web", "configfile=",
"jabber="])[0]:
if opt in ["-h", "--help"]: print_help()
elif opt in ["-v", "--version"]: print_version()
elif opt in ["-c", "--configfile"]: configfilename = arg
elif opt in ["-j", "--jabber"]: jabberxml = arg
- elif opt in ["-g", "--gui"]: gui = True
#elif opt in ["-w", "--web"]: web = True
elif opt in ["-d", "--debug"]: dbg = ['always']
except:
@@ -108,18 +107,15 @@
print '\n There is no jabber config file (xmppd.xml)'+
colors.color_red + " [failed]" + colors.color_none
raise SystemExit
- #s = xmppd.xmppd.Server(cfgfile=jabberxml, debug = dbg)
- os.chdir("xmppd")
- #s = xmppd.Server(cfgfile=jabberxml,
cmd_options={'enable_debug':dbg, 'enable_psyco':True})
- #s = Server(cfgfile=jabberxml,
cmd_options={'enable_debug':dbg, 'enable_psyco':True})
+ if sys.platform[:6] == 'netbsd':
+ pyvers= 'python'+str(numb)
+ path = "/usr/pkg/lib" + os.sep + pyvers + "/site-packages/xmppd/"
+ os.chdir(path)
+ else:
+ os.chdir("xmppd")
+
s = Server(cfgfile=jabberxml,
cmd_options={'enable_debug':dbg, 'enable_psyco':False})
- #s = xmppd.Server(cfgfile=jabberxml)
os.chdir("..")
- """
- for filter in s.router_filters:
- if isinstance(filter, acc.ACC):
- filter.loadConfig(configfilename)
- """
sys.stdout.write(".")
sys.stdout.flush()
=======================================
--- /trunk/tlslite/TLSRecordLayer.py Thu Jun 4 11:16:50 2009
+++ /trunk/tlslite/TLSRecordLayer.py Fri Jul 16 03:06:02 2010
@@ -12,8 +12,7 @@
from utils.cryptomath import getRandomBytes
from utils import hmac
from FileObject import FileObject
-import sha
-import md5
+import hashlib
import socket
import errno
import traceback
@@ -116,8 +115,8 @@
self._readBuffer = ""
#Handshake digests
- self._handshake_md5 = md5.md5()
- self._handshake_sha = sha.sha()
+ self._handshake_md5 = hashlib.md5()
+ self._handshake_sha = hashlib.sha1()
#TLS Protocol Version
self.version = (0,0) #read-only
@@ -935,8 +934,8 @@
def _handshakeStart(self, client):
self._client = client
- self._handshake_md5 = md5.md5()
- self._handshake_sha = sha.sha()
+ self._handshake_md5 = hashlib.md5()
+ self._handshake_sha = hashlib.sha1()
self._handshakeBuffer = []
self.allegedSharedKeyUsername = None
self.allegedSrpUsername = None
@@ -1114,9 +1113,9 @@
imac_md5.update(label + masterSecretStr + '\x36'*48)
imac_sha.update(label + masterSecretStr + '\x36'*40)
- md5Str = md5.md5(masterSecretStr + ('\x5c'*48) + \
+ md5Str = hashlib.md5(masterSecretStr + ('\x5c'*48) + \
imac_md5.digest()).digest()
- shaStr = sha.sha(masterSecretStr + ('\x5c'*40) + \
+ shaStr = hashlib.sha1(masterSecretStr + ('\x5c'*40) + \
imac_sha.digest()).digest()
return stringToBytes(md5Str + shaStr)
=======================================
--- /trunk/tlslite/mathtls.py Thu Jun 4 11:16:50 2009
+++ /trunk/tlslite/mathtls.py Fri Jul 16 03:06:02 2010
@@ -4,8 +4,7 @@
from utils.cryptomath import *
import hmac
-import md5
-import sha
+import hashlib
#1024, 1536, 2048, 3072, 4096, 6144, and 8192 bit groups]
goodGroupParameters =
[(2,0xEEAF0AB9ADB38DD69C33F80AFA8FC5E86072618775FF3C0B9EA2314C9C256576D674DF7496EA81D3383B4813D692C6E0E0D5D8E250B98BE48E495C1D6089DAD15DC7D7B46154D6B6CE8EF4AD69B15D4982559B297BCF1885C529F566660E57EC68EDBC3C05726CC02FD4CBF4976EAA9AFD5138FE8376435B9FC61D2FC0EB06E3),\
@@ -38,8 +37,8 @@
S2 = secret[ int(math.floor(len(secret)/2.0)) : ]
#Run the left half through P_MD5 and the right half through P_SHA1
- p_md5 = P_hash(md5, S1, concatArrays(stringToBytes(label), seed),
length)
- p_sha1 = P_hash(sha, S2, concatArrays(stringToBytes(label), seed),
length)
+ p_md5 = P_hash(hashlib, S1, concatArrays(stringToBytes(label), seed),
length)
+ p_sha1 = P_hash(hashlib, S2, concatArrays(stringToBytes(label), seed),
length)
#XOR the output values and return the result
for x in range(length):
@@ -54,8 +53,8 @@
index = 0
for x in range(26):
A = chr(ord('A')+x) * (x+1) # 'A', 'BB', 'CCC', etc..
- input = secretStr + sha.sha(A + secretStr + seedStr).digest()
- output = md5.md5(input).digest()
+ input = secretStr + hashlib.sha1(A + secretStr + seedStr).digest()
+ output = hashlib.md5(input).digest()
for c in output:
if index >= length:
return bytes
@@ -68,7 +67,7 @@
raise ValueError("username too long")
if len(salt)>=256:
raise ValueError("salt too long")
- return stringToNumber(sha.sha(salt + sha.sha(username + ":" +
password)\
+ return stringToNumber(hashlib.sha1(salt + hashlib.sha1(username + ":"
+ password)\
.digest()).digest())
#This function is used by VerifierDB.makeVerifier
@@ -88,10 +87,10 @@
return s
def makeU(N, A, B):
- return stringToNumber(sha.sha(PAD(N, A) + PAD(N, B)).digest())
+ return stringToNumber(hashlib.sha1(PAD(N, A) + PAD(N, B)).digest())
def makeK(N, g):
- return stringToNumber(sha.sha(numberToString(N) + PAD(N, g)).digest())
+ return stringToNumber(hashlib.sha1(numberToString(N) + PAD(N,
g)).digest())
"""
@@ -113,8 +112,8 @@
digestmod: A module supporting PEP 247. Defaults to the md5 module.
"""
if digestmod is None:
- import md5
- digestmod = md5
+ import hashlib
+ digestmod = hashlib
if key == None: #TREVNEW - for faster copying
return #TREVNEW
=======================================
--- /trunk/tlslite/messages.py Thu Jun 4 11:16:50 2009
+++ /trunk/tlslite/messages.py Fri Jul 16 03:06:02 2010
@@ -8,8 +8,7 @@
from X509 import X509
from X509CertChain import X509CertChain
-import sha
-import md5
+import hashlib
class RecordHeader3:
def __init__(self):
@@ -405,7 +404,7 @@
try:
bytes = clientRandom + serverRandom + self.write()[4:]
s = bytesToString(bytes)
- return stringToBytes(md5.md5(s).digest() + sha.sha(s).digest())
+ return stringToBytes(hashlib.md5(s).digest() +
hashlib.sha1(s).digest())
finally:
self.cipherSuite = oldCipherSuite
=======================================
--- /trunk/tlslite/utils/cryptomath.py Thu Jun 4 11:16:50 2009
+++ /trunk/tlslite/utils/cryptomath.py Fri Jul 16 03:06:02 2010
@@ -6,7 +6,7 @@
import math
import base64
import binascii
-import sha
+import hashlib
from compat import *
@@ -195,7 +195,7 @@
return int(math.ceil(bits / 8.0))
def hashAndBase64(s):
- return stringToBase64(sha.sha(s).digest())
+ return stringToBase64(hashlib.sha1(s).digest())
def getBase64Nonce(numChars=22): #defaults to an 132 bit nonce
bytes = getRandomBytes(numChars)
=======================================
--- /trunk/xmpp/auth.py Fri Oct 2 10:16:19 2009
+++ /trunk/xmpp/auth.py Fri Jul 16 03:06:02 2010
@@ -21,11 +21,11 @@
from protocol import *
from client import PlugIn
-import sha,base64,random,dispatcher
-import md5
-
-def HH(some): return
md5.new(some).hexdigest()
-def H(some): return
md5.new(some).digest()
+import base64,random,dispatcher
+import hashlib
+
+def HH(some): return hashlib.md5(some).hexdigest()
+def H(some): return hashlab.md5(some).digest()
def C(some): return ':'.join(some)
class NonSASL(PlugIn):
@@ -54,15 +54,15 @@
if query.getTag('digest'):
self.DEBUG("Performing digest authentication",'ok')
-
query.setTagData('digest',
sha.new(owner.Dispatcher.Stream._document_attrs['id']+self.password).hexdigest())
+
query.setTagData('digest',hashlib.sha1(owner.Dispatcher.Stream._document_attrs['id']+self.password).hexdigest())
if query.getTag('password'): query.delChild('password')
method='digest'
elif query.getTag('token'):
token=query.getTagData('token')
seq=query.getTagData('sequence')
self.DEBUG("Performing zero-k authentication",'ok')
- hash =
sha.new(
sha.new(self.password).hexdigest()+token).hexdigest()
- for foo in xrange(int(seq)): hash =
sha.new(hash).hexdigest()
+ hash =
hashlib.sha1(hashlib.sha1(self.password).hexdigest()+token).hexdigest()
+ for foo in xrange(int(seq)): hash =
hashlib.sha1(hash).hexdigest()
query.setTagData('hash',hash)
method='0k'
else:
@@ -81,7 +81,7 @@
def authComponent(self,owner):
""" Authenticate component. Send handshake stanza and wait for
result. Returns "ok" on success. """
self.handshake=0
- owner.send(Node(NS_COMPONENT_ACCEPT+'
handshake',payload=[
sha.new(owner.Dispatcher.Stream._document_attrs['id']+self.password).hexdigest()]))
+ owner.send(Node(NS_COMPONENT_ACCEPT+'
handshake',payload=[hashlib.sha1(owner.Dispatcher.Stream._document_attrs['id']+self.password).hexdigest()]))
owner.RegisterHandler('handshake',self.handshakeHandler,xmlns=NS_COMPONENT_ACCEPT)
while not self.handshake:
self.DEBUG("waiting on handshake",'notify')
=======================================
--- /trunk/xmppd/modules/dialback.py Thu Nov 2 10:05:07 2006
+++ /trunk/xmppd/modules/dialback.py Fri Jul 16 03:06:02 2010
@@ -6,7 +6,7 @@
from xmpp import *
from xmppd import *
-import socket,thread,sha
+import socket,thread,hashlib
class Dialback(PlugIn):
""" 4. <db:result from= to= /> ->
@@ -51,7 +51,7 @@
id=stanza['id']
key=stanza.getData()
self.DEBUG('Received dialback key %s for verification against
id %s.'%(key,id),'info')
- if key.strip()==
sha.new(id+self._owner.ID).hexdigest():
typ='valid'
+ if key.strip()==hashlib.sha1(id+self._owner.ID).hexdigest():
typ='valid'
else: typ='invalid'
rep=Node('db:verify',{'from':to,'to':frm,'id':id,'type':typ})
session.send(rep)
@@ -78,7 +78,7 @@
def __call__(self,session):
# Server connected, send request
- key=
sha.new(session.ID+self._owner.ID).hexdigest()
+ key=hashlib.sha1(session.ID+self._owner.ID).hexdigest()
req=Node('db:result',{'from':session.ourname,'to':session.peer},[key])
session.send(req)
=======================================
--- /trunk/xmppd/modules/jep0078.py Mon Oct 23 06:43:06 2006
+++ /trunk/xmppd/modules/jep0078.py Fri Jul 16 03:06:02 2010
@@ -7,7 +7,7 @@
from xmpp import *
from xmppd import *
#from xmppd import SESSION_OPENED
-import sha
+import hashlib
class NSA(PlugIn):
NS=NS_AUTH
@@ -33,7 +33,7 @@
servername=stanza['to'].getDomain()
username=stanza.T.query.T.username.getData().lower()
password=self._owner.AUTH.getpassword(username,servername)
- if password is not None:
digest=
sha.new(session.ID+password).hexdigest()
+ if password is not None:
digest=hashlib.sha1(session.ID+password).hexdigest()
try:
query_password = stanza.T.query.T.password.getData()
except:
=======================================
--- /trunk/xmppd/modules/stream.py Thu Jan 11 05:32:16 2007
+++ /trunk/xmppd/modules/stream.py Fri Jul 16 03:06:02 2010
@@ -11,7 +11,7 @@
from xmppd import *
import socket,thread
from tlslite.api import *
-import sha
+import hashlib
class TLS(PlugIn):
""" 3. <features/>
@@ -113,10 +113,10 @@
session.send(Node('starttls',{'xmlns':NS_TLS}))
raise NodeProcessed
-import sha,base64,random,md5
-
-def HH(some): return
md5.new(some).hexdigest()
-def H(some): return
md5.new(some).digest()
+import hashlib,base64,random
+
+def HH(some): return hashlib.md5(some).hexdigest()
+def H(some): return hashlib.md5(some).digest()
def C(some): return ':'.join(some)
class SASL(PlugIn):
@@ -374,7 +374,7 @@
handshake = str(stanza.getData())
for k,v in self.server.components.items():
try:
- truehs =
sha.new(str(session.ID)+v['password']).hexdigest()
+ truehs = hashlib.sha1(str(session.ID)+v['password']).hexdigest()
if handshake == truehs:
# We have a match!! It's THIS component!!
session.peer=v['jid'].lower()
=======================================
--- /trunk/xmppd/xmppd.py Fri Jun 18 08:57:16 2010
+++ /trunk/xmppd/xmppd.py Fri Jul 16 03:06:02 2010
@@ -32,7 +32,7 @@
from math import *
import traceback
-import socket,select,random,os,sys,thread,errno,time,threading,sha
+import socket,select,random,os,sys,thread,errno,time,threading,hashlib
globals()['DEFAULT_LANG'] = 'en'
#globals()['LANG_LIST'] = []
@@ -974,7 +974,7 @@
if cmd_options.setdefault('socker_info',False): import xmlrpclib
if not cmd_options.setdefault('password',None):
- globals()['RPC_PASSWORD'] =
sha.new(str(time.time())+globals()['SOCKER_TGUID']+
sha.new(str(time.time())).hexdigest()).hexdigest()
+ globals()['RPC_PASSWORD'] =
hashlib.sha1(str(time.time())+globals()['SOCKER_TGUID']+hashlib.sha1(str(time.time())).hexdigest()).hexdigest()
else:
globals()['RPC_PASSWORD'] = cmd_options['password']