def test_recinto1(self): """Cria chave para recinto, manda chave """ # login # manda recinto, senha # recebe chaveprivada, assina recinto recinto = '00001' private_key_pem, assinado = UseCases.gera_chaves_recinto( self.db_session, recinto) private_key = assinador.load_private_key(private_key_pem) assinado = assinador.sign(recinto.encode('utf-8'), private_key) assinado = b85encode(assinado).decode('utf-8') # manda recinto encriptado com chave # recebe OK com chave correta payload = {'assinado': assinado, 'recinto': recinto} token = authentication.generate_token(payload) request = Request({'Authorization': 'Bearer %s' % token}, payload) assert authentication.valida_assinatura(request, self.db_session)[0] is True # manda recinto sem encriptar, recebe erro payload = {'assinado': recinto, 'recinto': recinto} token = authentication.generate_token(payload) request = Request({'Authorization': 'Bearer %s' % token}, payload) assert authentication.valida_assinatura(request, self.db_session)[0] is False # manda assinado com outra chave, recebe erro private_key2, _ = assinador.generate_keys() assinado2 = assinador.sign(recinto.encode('utf-8'), private_key2) payload2 = {'assinado': assinado2, 'recinto': recinto} token2 = authentication.generate_token(payload2) request2 = Request({'Authorization': 'Bearer %s' % token2}, payload2) assert authentication.valida_assinatura(request2, self.db_session)[0] is False
def test_gerachaverecinto_and_sign(self): recinto = '00001' private_key_pem, assinado = UseCases.gera_chaves_recinto( self.db_session, recinto) public_key_pem = UseCases.get_public_key(self.db_session, recinto) private_key = assinador.load_private_key(private_key_pem) public_key = assinador.load_public_key(public_key_pem) message = b'TESTE' signed = assinador.sign(message, private_key) assinador.verify(signed, message, public_key)
def get_private_key(): recinto = request.json.get('recinto') try: private_key_pem, assinado = UseCases.gera_chaves_recinto( current_app.config['db_session'], recinto ) return jsonify({'pem': private_key_pem.decode('utf-8'), 'assinado': b85encode(assinado).decode('utf-8')}), 200 except Exception as err: logging.error(err, exc_info=True) return jsonify(_response(err, 400)), 400