; This has to do with FIPS 186 Curve p-384. ; Page 91 of http://nvlpubs.nist.gov/nistpubs/FIPS/NIST.FIPS.186-4.pdf (define p 39402006196394479212279040100143613805079739270465446667948293404245721771496870329047266088258938001861606973112319) ; (define n 39402006196394479212279040100143613805079739270465446667946905279627659399113263569398956308152294913554433653942643) (define dif 1388124618062372383606759648309780106643088307173319169676) (define n (- p dif)) (define (hi x) (string->number x 16)) (define b (hi "b3312fa7e23ee7e4988e056be3f82d19181d9c6efe8141120314088f5013875ac656398d8a2ed19d2a85c8edd3ec2aef")) (define c (hi "79d1e655f868f02fff48dcdee14151ddb80643c1406d0ca10dfe6fc52009540a495e8042ea5f744f6e184667cc722483")) (define G (cons (hi "aa87ca22be8b05378eb1c71ef320ad746e1d3b628ba79b9859f741e082542a385502f25dbf55296c3a545e3872760ab7") (hi "3617de4a96262c6f5d9e98bf9292dc29f8f41dbd289a147ce9da3113b5f0b8c00a60b1ce1d7e819d7a431d7c90ea0e5f"))) (map (((fileVal "Miller-Rabin") 'multi) 20) (list n p)) ; => (#t #t); n and p are both prime. (define tl ((fileVal "AGECp") p -3 b)) (let ((mp (caddr ((fileVal "GFp") p)))) (- p (mp (mp b b) c))) ; => 27 (good) (define (z x) ((tl 'mul) x G)) (z n) ; => 0 (right)