def test_aes_ok_encrypt(): saved_key = "thT80v8XOBJaFZ85wmP05TdqSX/BB4lVTIvGuac/vgE=" request_nonce = "I3AWYKKIgTtchOGCHwNi6A==" request_verifer = "eij8zQB61XVoh36SisyTDFbmh5J88oVzq/gVpOKQHQM=" message = "https://webmail.gurkenbruehe.de" kpc = AESCipher(saved_key, request_nonce) assert kpc.is_valid(request_nonce, request_verifer) assert kpc.encrypt( message) == "LTvHK1ctTVFVT9APqW6jhwKtdsZ5Vu21Pa79pLV4b+Y="
def set_verifier(self, new_client_id=None): if new_client_id: client_id = new_client_id key = Conf().backend.get_key_for_client(client_id) if not key: raise AuthenticationError() else: client_id = self.get_client_id() key = self.kpc.get_key() nonce = AESCipher.generate_nonce() response_kpc = AESCipher(key, nonce) self.response_dict.update({"Nonce": nonce, "Verifier": response_kpc.encrypt(nonce)}) self.set_response_kpc = response_kpc
def authenticate(self): client_id = self.get_client_id() log.info("Authenticate client %s" % client_id) key = Conf().backend.get_config(client_id) if not key: raise AuthenticationError() nonce = self.request_dict['Nonce'] verifier = self.request_dict['Verifier'] kpc = AESCipher(key, nonce) # wrong saved key in database -> force associate if not kpc.is_valid(nonce, verifier): raise InvalidAuthentication() self.set_kpc = kpc self.set_verifier()
def test_entry_spec_unicode(): saved_key = "thT80v8XOBJaFZ85wmP05TdqSX/BB4lVTIvGuac/vgE=" request_nonce = "I3AWYKKIgTtchOGCHwNi6A==" request_verifer = "eij8zQB61XVoh36SisyTDFbmh5J88oVzq/gVpOKQHQM=" kpc = AESCipher(saved_key, request_nonce) entry = EntrySpec(uuid=u"1", title=u"ä", login=u"ü", password=u"ö", url=u"http://www.fuß.de/login/form.html") assert entry.to_json_dict(kpc)
def authenticate(self): client_id = self.get_client_id() log.info("Authenticate client %s" % client_id) key = Conf().backend.get_key_for_client(client_id) # FIXME: Fix unit tests # Special case when methods used in unit test are not mocked correctly. # <TestAES name='AESCipher().key' id='25131856'> is not None :S if key is None or not isinstance(key, basestring): raise AuthenticationError() nonce = self.request_dict['Nonce'] verifier = self.request_dict['Verifier'] kpc = AESCipher(key, nonce) # wrong saved key in database -> force associate if not kpc.is_valid(nonce, verifier): raise InvalidAuthentication() self.set_kpc = kpc self.set_verifier()
def test_gen_nonce(): nonce = AESCipher.generate_nonce() assert len( nonce ) == 24 # a 16 char number should always result in a 24 char base64 string