コード例 #1
0
    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
コード例 #2
0
 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)
コード例 #3
0
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