- sevp
- db
Este módulo fornece suporte em Python ao protocolo de segurança SEVP para sistemas eletrônicos de votação.
start_server()
Inicialize o servidor e retorne um objeto ServerSocket.
connect_to_server()
Faça uma conexão TCP com o servidor e retorne um objeto ClientSocket.
build_record(message)
Empacote um objeto Message num record SEVP e retorne o record.
dissect_record(record)
Desempacote os campos de um record e retorne uma instância de Message.
load_private_key(path, password)
Carregue em memória uma chave privada e retorne um objeto RSAPrivateKey.
load_certificate(path)
Carregue um certificado em memória e retorne um objeto Certificate.
class SEVPSocket()
| __init__(socket)
Construa um objeto SEVPSocket.
| send_message(message)
Serialize um objeto Message e o envie pelo socket.
| receive_message()
Receba um record pelo socket, desempacote o record e retorne um objeto Message.
| close_connection()
Feche imediatamente a conexão atual.
class ClientSocket(SEVPSocket)
| __init__(socket)
Construa um objeto ClientSocket.
| do_handshake()
Execute o handshake, estabelecendo uma conexão segura.
| get_server_cert()
Solicite o certificado ao servidor e o retorne como um objeto Certificate.
| check_certificate(cert)
Valide a assinatura e o CN do certificado.
| send_client_public_key()
Envie a chave pública.
| rcv_secret_key()
Receba a chave secreta para geração do MAC.
| send_encrypted_msn(code, data)
Envie dados encriptados com a chave pública do servidor.
| rcv_encrypted_msn()
Receba dados encriptados, os desencripte e verifique sua integridade e autenticidade.
class ServerSocket(SEVPSocket)
| __init__(socket)
Construa um objeto ServerSocket.
| accept_incoming_conn()
Habilite o servidor para aceitar uma conexão de chegada e retorne uma tupla (ServerSocket, endereço).
| do_handshake()
Execute o handshake, estabelecendo uma conexão segura.
| send_server_cert()
Efetue o envio do certificado.
| rcv_client_hello()
Receba a mensagem "client hello" e retorne um objeto Message.
| rcv_client_public_key()
Recebe a chave pública do cliente e retorna uma instância de RSAPublicKey.
| send_secret_key()
Gere uma chave secreta para geração de MAC e a envie.
| send_encrypted_msn(code, data)
Envie dados encriptados com a chave pública do cliente.
| rcv_encrypted_msn()
Receba dados encriptados, os desencripte e verifique sua integridade e autenticidade.
class Message()
| __init__(data, code=1, mac_key=None)
Construa um objeto Message.
| mac(mac_key)
Gere o MAC de um dado a partir de uma chave e retorne o MAC.
| encrypt(public_key)
Encripte os dados, possivelmente concatenados com o MAC, utilizando uma chave.
| decrypt(private_key)
Desencripte os dados utilizando uma chave.
| verify(mac_key)
Verifique se a mensagem corresponde ao MAC contido nos dados.
| separate_data_from_mac()
Separe os bytes referentes aos dados (aplicação) dos referentes ao MAC.
Este módulo fornece uma classe com métodos que manipulam o Banco de Dados do servidor.
class DB()
| __init__(path)
Instância um objeto DB passando o path (arquivo.csv) como argumento.
| get_fieldnames()
Retorna uma lista contendo os fieldnames do arquivo.csv.
| read_file()
Lê um arquivo e o imprime na tela.
| write_line(dict)
Acrescenta uma linha no arquivo, o argumento(linha) deve ser do tipo Dicionário.
| update_line(key, dict)
Substitui uma linha do arquivo,os argumentos devem ser um fieldname e um Dicionário respectivamente.