def test1_authentication(self): ss = scramblesuit.ScrambleSuitTransport() ss.srvState = self.state realEpoch = util.getEpoch # Try three valid and one invalid epoch value. for epoch in util.expandedEpoch() + ["000000"]: util.getEpoch = lambda: epoch # Prepare ticket message. blurb = ticket.issueTicketAndKey(self.state) rawTicket = blurb[const.MASTER_KEY_LENGTH:] masterKey = blurb[:const.MASTER_KEY_LENGTH] ss.deriveSecrets(masterKey) ticketMsg = ticket.createTicketMessage(rawTicket, ss.recvHMAC) util.getEpoch = realEpoch buf = obfs_buf.Buffer() buf.write(ticketMsg) if epoch == "000000": self.assertFalse(ss.receiveTicket(buf)) else: self.assertTrue(ss.receiveTicket(buf))
def test2_receivePublicKey(self): buf = obfs_buf.Buffer(self.udh.createHandshake()) def callback(masterKey): self.failUnless(len(masterKey) == const.MASTER_KEY_LENGTH) self.failUnless(self.udh.receivePublicKey(buf, callback) == True) publicKey = self.udh.getRemotePublicKey() self.failUnless(len(publicKey) == const.PUBLIC_KEY_LENGTH)
def test3_invalidHMAC(self): # Make the HMAC invalid. handshake = self.udh.createHandshake() if handshake[-1] != 'a': handshake = handshake[:-1] + 'a' else: handshake = handshake[:-1] + 'b' buf = obfs_buf.Buffer(handshake) self.failIf(self.udh.receivePublicKey(buf, lambda x: x) == True)
def test4_extractPublicKey(self): # Create UniformDH authentication message. sharedSecret = "A" * const.SHARED_SECRET_LENGTH realEpoch = util.getEpoch # Try three valid and one invalid epoch value. for epoch in util.expandedEpoch() + ["000000"]: udh = uniformdh.new(sharedSecret, True) util.getEpoch = lambda: epoch authMsg = udh.createHandshake() util.getEpoch = realEpoch buf = obfs_buf.Buffer() buf.write(authMsg) if epoch == "000000": self.assertFalse(udh.extractPublicKey(buf)) else: self.assertTrue(udh.extractPublicKey(buf))
def __init__(self, circuit): self.circuit = circuit self.buffer = obfs_buf.Buffer() self.closed = False # True if connection is closed.
def setUp(self): self.test_string = "No pop no style, I strictly roots." self.buf = obfs_buf.Buffer(self.test_string)