~edwargix/tallyard

add37b85d38858f51533c83fd9756efe4a48aaea — David Florness 5 years ago c4f4f3d
Send blindy-signed ballot to server
4 files changed, 23 insertions(+), 9 deletions(-)

M crypto.rkt
M info.rkt
M main.rkt
M server.rkt
M crypto.rkt => crypto.rkt +2 -2
@@ 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))

M info.rkt => info.rkt +1 -1
@@ 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")

M main.rkt => main.rkt +12 -5
@@ 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)))

M server.rkt => server.rkt +8 -1
@@ 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"")