~edwargix/tallyard

c4f4f3d305850b3be7ca3c35d2f70727f0bcd91f — David Florness 5 years ago 00890fb
Begin crappy interface and choose r
3 files changed, 41 insertions(+), 52 deletions(-)

M crypto.rkt
M info.rkt
M main.rkt
M crypto.rkt => crypto.rkt +1 -1
@@ 1,7 1,7 @@
#lang racket
(require math/number-theory)

(provide e p q d)
(provide keylen e p q d n)

(define keylen 1024)
(define e 65537)

M info.rkt => info.rkt +1 -1
@@ 1,6 1,6 @@
#lang info
(define collection "vohea")
(define deps '("base"))
(define deps '("base" "simple-http" "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 +39 -50
@@ 1,50 1,39 @@
#lang racket/base

(module+ test
  (require rackunit))

;; Notice
;; To install (from within the package directory):
;;   $ raco pkg install
;; To install (once uploaded to pkgs.racket-lang.org):
;;   $ raco pkg install <<name>>
;; To uninstall:
;;   $ raco pkg remove <<name>>
;; To view documentation:
;;   $ raco docs <<name>>
;;
;; For your convenience, we have included LICENSE-MIT and LICENSE-APACHE files.
;; If you would prefer to use a different license, replace those files with the
;; desired license.
;;
;; Some users like to add a `private/` directory, place auxiliary files there,
;; and require them in `main.rkt`.
;;
;; See the current version of the racket style guide here:
;; http://docs.racket-lang.org/style/index.html

;; Code here



(module+ test
  ;; Any code in this `test` submodule runs when this file is run using DrRacket
  ;; or with `raco test`. The code here does not run when this file is
  ;; required by another module.

  (check-equal? (+ 2 2) 4))

(module+ main
  ;; (Optional) main submodule. Put code here if you need it to be executed when
  ;; this file is run using DrRacket or the `racket` executable.  The code here
  ;; does not run when this file is required by another module. Documentation:
  ;; http://docs.racket-lang.org/guide/Module_Syntax.html#%28part._main-and-test%29

  (require racket/cmdline)
  (define who (box "world"))
  (command-line
    #:program "my-program"
    #:once-each
    [("-n" "--name") name "Who to say hello to" (set-box! who name)]
    #:args ()
    (printf "hello ~a~n" (unbox who))))
#lang racket
(require simple-http)
(require binaryio)
(require "crypto.rkt")
(require racket/random)

(define vohea-server
  (update-port (update-host json-requester "localhost") 5598))

(define candidates (json-response-body (get vohea-server "/candidates")))

(define/contract (displayln-und s)
  (-> string? void?)
  (displayln s)
  (displayln (make-string (string-length s) #\=)))

(displayln-und "Log in")

(display "Username: ")
(define username (read-line))
(display "Password: ")
(define password (read-line))

(displayln-und "You may choose among the following candidates")
(for/list ([i (in-naturals)]
           [c candidates])
  (displayln (format "~a) ~a" i c)))

(display "Your ranking: ")
(define ranking (string-split (read-line)))

(define M (bytes->integer (string->bytes/utf-8 (string-join ranking ":")) #f))

(define r
  (let gen ([r (bytes->integer
                (crypto-random-bytes (/ keylen 8)) #f)])
    (if (eq? (gcd r n) 1)
        r
        (gen))))