def test_sha1(self): """ L{hashreqs.sha1} returns an object which can be used to compute a SHA1 hash as defined by U{RFC 3174<http://tools.ietf.org/rfc/rfc3174.txt>}. """ def format(s): return ''.join(s.split()).lower() # Test the result using values from section 7.3 of the RFC. self.assertEqual( sha1("abc").hexdigest(), format( "A9 99 3E 36 47 06 81 6A BA 3E 25 71 78 50 C2 6C 9C D0 D8 9D")) self.assertEqual( sha1("abcdbcdecdefdefgefghfghighijhi" "jkijkljklmklmnlmnomnopnopq").hexdigest(), format( "84 98 3E 44 1C 3B D2 6E BA AE 4A A1 F9 51 29 E5 E5 46 70 F1")) # It should have digest and update methods, too. self.assertEqual( sha1("abc").digest().encode('hex'), format( "A9 99 3E 36 47 06 81 6A BA 3E 25 71 78 50 C2 6C 9C D0 D8 9D")) hash = sha1() hash.update("abc") self.assertEqual( hash.digest().encode('hex'), format( "A9 99 3E 36 47 06 81 6A BA 3E 25 71 78 50 C2 6C 9C D0 D8 9D")) # Instances of it should have a digest_size attribute. self.assertEqual(sha1().digest_size, 20)
def test_sha1(self): """ L{hashreqs.sha1} returns an object which can be used to compute a SHA1 hash as defined by U{RFC 3174<http://tools.ietf.org/rfc/rfc3174.txt>}. """ def format(s): return ''.join(s.split()).lower() # Test the result using values from section 7.3 of the RFC. self.assertEqual( sha1("abc").hexdigest(), format( "A9 99 3E 36 47 06 81 6A BA 3E 25 71 78 50 C2 6C 9C D0 D8 9D")) self.assertEqual( sha1("abcdbcdecdefdefgefghfghighijhi" "jkijkljklmklmnlmnomnopnopq").hexdigest(), format( "84 98 3E 44 1C 3B D2 6E BA AE 4A A1 F9 51 29 E5 E5 46 70 F1")) # It should have digest and update methods, too. self.assertEqual( sha1("abc").digest().encode('hex'), format( "A9 99 3E 36 47 06 81 6A BA 3E 25 71 78 50 C2 6C 9C D0 D8 9D")) hash = sha1() hash.update("abc") self.assertEqual( hash.digest().encode('hex'), format( "A9 99 3E 36 47 06 81 6A BA 3E 25 71 78 50 C2 6C 9C D0 D8 9D")) # Instances of it should have a digest_size attribute. self.assertEqual( sha1().digest_size, 20)
def onAuthSet(iq): """ Called when the initializer sent the authentication request. The server checks the credentials and responds with an empty result signalling success. """ self.assertEquals('user', unicode(iq.query.username)) self.assertEquals(sha1('12345secret').hexdigest(), unicode(iq.query.digest).encode('utf-8')) self.assertEquals('resource', unicode(iq.query.resource)) # Send server response response = xmlstream.toResponse(iq, 'result') self.pipe.source.send(response)
def hashPassword(sid, password): """ Create a SHA1-digest string of a session identifier and password. @param sid: The stream session identifier. @type sid: C{unicode}. @param password: The password to be hashed. @type password: C{unicode}. """ if not isinstance(sid, unicode): raise TypeError("The session identifier must be a unicode object") if not isinstance(password, unicode): raise TypeError("The password must be a unicode object") input = u"%s%s" % (sid, password) return sha1(input.encode('utf-8')).hexdigest()
def testHandshake(self): """ Test basic operations of component handshake. """ d = self.init.initialize() # the initializer should have sent the handshake request handshake = self.output[-1] self.assertEquals('handshake', handshake.name) self.assertEquals('test:component', handshake.uri) self.assertEquals( sha1("%s%s" % ('12345', 'secret')).hexdigest(), unicode(handshake)) # successful authentication handshake.children = [] self.xmlstream.dataReceived(handshake.toXml()) return d
def testHandshake(self): """ Test basic operations of component handshake. """ d = self.init.initialize() # the initializer should have sent the handshake request handshake = self.output[-1] self.assertEquals('handshake', handshake.name) self.assertEquals('test:component', handshake.uri) self.assertEquals(sha1("%s%s" % ('12345', 'secret')).hexdigest(), unicode(handshake)) # successful authentication handshake.children = [] self.xmlstream.dataReceived(handshake.toXml()) return d
def testAuth(self): self.authComplete = False outlist = [] ca = component.ConnectComponentAuthenticator("cjid", "secret") xs = xmlstream.XmlStream(ca) xs.transport = DummyTransport(outlist) xs.addObserver(xmlstream.STREAM_AUTHD_EVENT, self.authPassed) # Go... xs.connectionMade() xs.dataReceived("<stream:stream xmlns='jabber:component:accept' xmlns:stream='http://etherx.jabber.org/streams' from='cjid' id='12345'>") # Calculate what we expect the handshake value to be hv = sha1("%s%s" % ("12345", "secret")).hexdigest() self.assertEquals(outlist[1], "<handshake>%s</handshake>" % (hv)) xs.dataReceived("<handshake/>") self.assertEquals(self.authComplete, True)
def testAuth(self): self.authComplete = False outlist = [] ca = component.ConnectComponentAuthenticator("cjid", "secret") xs = xmlstream.XmlStream(ca) xs.transport = DummyTransport(outlist) xs.addObserver(xmlstream.STREAM_AUTHD_EVENT, self.authPassed) # Go... xs.connectionMade() xs.dataReceived( "<stream:stream xmlns='jabber:component:accept' xmlns:stream='http://etherx.jabber.org/streams' from='cjid' id='12345'>" ) # Calculate what we expect the handshake value to be hv = sha1("%s%s" % ("12345", "secret")).hexdigest() self.assertEquals(outlist[1], "<handshake>%s</handshake>" % (hv)) xs.dataReceived("<handshake/>") self.assertEquals(self.authComplete, True)
def _secureEnoughString(): """ Create a pseudorandom, 16-character string for use in secure filenames. """ return armor(sha1(randomBytes(64)).digest())[:16]