From add37b85d38858f51533c83fd9756efe4a48aaea Mon Sep 17 00:00:00 2001 From: David Florness Date: Sat, 9 Nov 2019 22:44:02 -0700 Subject: [PATCH] Send blindy-signed ballot to server --- crypto.rkt | 4 ++-- info.rkt | 2 +- main.rkt | 17 ++++++++++++----- server.rkt | 9 ++++++++- 4 files changed, 23 insertions(+), 9 deletions(-) diff --git a/crypto.rkt b/crypto.rkt index be0b4c8..2adf34a 100644 --- a/crypto.rkt +++ b/crypto.rkt @@ -7,8 +7,8 @@ (define e 65537) (define (gen) - (let* ([p (random-prime (expt 2 keylen))] - [q (random-prime (expt 2 keylen))] + (let* ([p (random-prime (expt 2 (/ keylen 2)))] + [q (random-prime (expt 2 (/ keylen 2)))] [λn (lcm (sub1 p) (sub1 q))]) (if (and (eq? (gcd e λn) 1) (not (eq? (arithmetic-shift (abs (- p q)) diff --git a/info.rkt b/info.rkt index ec26753..3071601 100644 --- a/info.rkt +++ b/info.rkt @@ -1,6 +1,6 @@ #lang info (define collection "vohea") -(define deps '("base" "simple-http" "crypto")) +(define deps '("base" "crypto")) (define build-deps '("scribble-lib" "racket-doc" "rackunit-lib")) (define scribblings '(("scribblings/vohea.scrbl" ()))) (define pkg-desc "Description Here") diff --git a/main.rkt b/main.rkt index e8a7a08..f867d53 100644 --- a/main.rkt +++ b/main.rkt @@ -1,13 +1,15 @@ #lang racket -(require simple-http) (require binaryio) (require "crypto.rkt") (require racket/random) +(require net/url) +(require json) -(define vohea-server - (update-port (update-host json-requester "localhost") 5598)) +(define/contract (vohea-url path) + (-> string? url?) + (string->url (string-append "http://localhost:5598" path))) -(define candidates (json-response-body (get vohea-server "/candidates"))) +(define candidates (read-json (get-pure-port (vohea-url "/candidates")))) (define/contract (displayln-und s) (-> string? void?) @@ -29,7 +31,7 @@ (display "Your ranking: ") (define ranking (string-split (read-line))) -(define M (bytes->integer (string->bytes/utf-8 (string-join ranking ":")) #f)) +(define m (bytes->integer (string->bytes/utf-8 (string-join ranking ":")) #f)) (define r (let gen ([r (bytes->integer @@ -37,3 +39,8 @@ (if (eq? (gcd r n) 1) r (gen)))) + +(define M (modulo (* m (expt r e)) n)) + +(read (post-pure-port (vohea-url "/sign") + (integer->bytes M (/ keylen 8) #f))) diff --git a/server.rkt b/server.rkt index 9971f38..a247d31 100644 --- a/server.rkt +++ b/server.rkt @@ -21,14 +21,21 @@ (response/xexpr '(html (body (p "you're going to vote"))))) +(define (sign req) + (println (request-post-data/raw req)) + (println (request-bindings req)) + (response/xexpr + '(html (body (p "hello there"))))) + (define-values (dispatcher url-generator) (dispatch-rules [("candidates") candidates] [("vote") vote] + [("sign") #:method "post" sign] [else candidates])) (serve/servlet dispatcher #:port 5598 - #:command-line? #f + #:command-line? #t #:servlet-path "" #:servlet-regexp #rx"") -- 2.38.4