carloscfreitas / if837-protocolos-de-comunicacao

Um sistema de votação seguro para uma rede WiFi não confiável.

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Table of Contents

sevp

Este módulo fornece suporte em Python ao protocolo de segurança SEVP para sistemas eletrônicos de votação.

start_server

start_server()

Inicialize o servidor e retorne um objeto ServerSocket.

connect_to_server

connect_to_server()

Faça uma conexão TCP com o servidor e retorne um objeto ClientSocket.

build_record

build_record(message)

Empacote um objeto Message num record SEVP e retorne o record.

dissect_record

dissect_record(record)

Desempacote os campos de um record e retorne uma instância de Message.

load_private_key

load_private_key(path, password)

Carregue em memória uma chave privada e retorne um objeto RSAPrivateKey.

load_certificate

load_certificate(path)

Carregue um certificado em memória e retorne um objeto Certificate.

SEVPSocket Objects

class SEVPSocket()

__init__

 | __init__(socket)

Construa um objeto SEVPSocket.

send_message

 | send_message(message)

Serialize um objeto Message e o envie pelo socket.

receive_message

 | receive_message()

Receba um record pelo socket, desempacote o record e retorne um objeto Message.

close_connection

 | close_connection()

Feche imediatamente a conexão atual.

ClientSocket Objects

class ClientSocket(SEVPSocket)

__init__

 | __init__(socket)

Construa um objeto ClientSocket.

do_handshake

 | do_handshake()

Execute o handshake, estabelecendo uma conexão segura.

get_server_cert

 | get_server_cert()

Solicite o certificado ao servidor e o retorne como um objeto Certificate.

check_certificate

 | check_certificate(cert)

Valide a assinatura e o CN do certificado.

send_client_public_key

 | send_client_public_key()

Envie a chave pública.

rcv_secret_key

 | rcv_secret_key()

Receba a chave secreta para geração do MAC.

send_encrypted_msn

 | send_encrypted_msn(code, data)

Envie dados encriptados com a chave pública do servidor.

rcv_encrypted_msn

 | rcv_encrypted_msn()

Receba dados encriptados, os desencripte e verifique sua integridade e autenticidade.

ServerSocket Objects

class ServerSocket(SEVPSocket)

__init__

 | __init__(socket)

Construa um objeto ServerSocket.

accept_incoming_conn

 | accept_incoming_conn()

Habilite o servidor para aceitar uma conexão de chegada e retorne uma tupla (ServerSocket, endereço).

do_handshake

 | do_handshake()

Execute o handshake, estabelecendo uma conexão segura.

send_server_cert

 | send_server_cert()

Efetue o envio do certificado.

rcv_client_hello

 | rcv_client_hello()

Receba a mensagem "client hello" e retorne um objeto Message.

rcv_client_public_key

 | rcv_client_public_key()

Recebe a chave pública do cliente e retorna uma instância de RSAPublicKey.

send_secret_key

 | send_secret_key()

Gere uma chave secreta para geração de MAC e a envie.

send_encrypted_msn

 | send_encrypted_msn(code, data)

Envie dados encriptados com a chave pública do cliente.

rcv_encrypted_msn

 | rcv_encrypted_msn()

Receba dados encriptados, os desencripte e verifique sua integridade e autenticidade.

Message Objects

class Message()

__init__

 | __init__(data, code=1, mac_key=None)

Construa um objeto Message.

mac

 | mac(mac_key)

Gere o MAC de um dado a partir de uma chave e retorne o MAC.

encrypt

 | encrypt(public_key)

Encripte os dados, possivelmente concatenados com o MAC, utilizando uma chave.

decrypt

 | decrypt(private_key)

Desencripte os dados utilizando uma chave.

verify

 | verify(mac_key)

Verifique se a mensagem corresponde ao MAC contido nos dados.

separate_data_from_mac

 | separate_data_from_mac()

Separe os bytes referentes aos dados (aplicação) dos referentes ao MAC.

db

Este módulo fornece uma classe com métodos que manipulam o Banco de Dados do servidor.

DB Objects

class DB()

__init__

 | __init__(path)

Instância um objeto DB passando o path (arquivo.csv) como argumento.

get_fieldnames

 | get_fieldnames()

Retorna uma lista contendo os fieldnames do arquivo.csv.

read_file

 | read_file()

Lê um arquivo e o imprime na tela.

write_line

 | write_line(dict)

Acrescenta uma linha no arquivo, o argumento(linha) deve ser do tipo Dicionário.

update_line

 | update_line(key, dict)

Substitui uma linha do arquivo,os argumentos devem ser um fieldname e um Dicionário respectivamente.

About

Um sistema de votação seguro para uma rede WiFi não confiável.


Languages

Language:Python 96.5%Language:Makefile 3.5%