module Generate.Montgomery.Parameters ( curves ) where import Protolude import Generate.Montgomery.Types ------------------------------------------------------------------------------- -- Curves ------------------------------------------------------------------------------- curves :: [Curve] curves = [ curve448 , curve25519 , curve383187 , m221 , m383 , m511 ] ------------------------------------------------------------------------------- -- Parameters ------------------------------------------------------------------------------- curve448 :: Curve curve448 = Curve { types = Types { curve = "Curve448" , field = PrimeField "Fq" 0xfffffffffffffffffffffffffffffffffffffffffffffffffffffffeffffffffffffffffffffffffffffffffffffffffffffffffffffffff , field' = PrimeField "Fr" 0x3fffffffffffffffffffffffffffffffffffffffffffffffffffffff7cca23e9c44edb49aed63690216cc2728dc58f552378c292ab5844f3 , imports = Nothing } , parameters = Parameters { a = PF 0x262a6 , b = PF 0x1 , h = 0x4 , q = 0xfffffffffffffffffffffffffffffffffffffffffffffffffffffffeffffffffffffffffffffffffffffffffffffffffffffffffffffffff , r = 0x3fffffffffffffffffffffffffffffffffffffffffffffffffffffff7cca23e9c44edb49aed63690216cc2728dc58f552378c292ab5844f3 , x = PF 0x5 , y = PF 0x7d235d1295f5b1f66c98ab6e58326fcecbae5d34f55545d060f75dc28df3f6edb8027e2346430d211312c4b150677af76fd7223d457b5b1a } } curve25519 :: Curve curve25519 = Curve { types = Types { curve = "Curve25519" , field = PrimeField "Fq" 0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffed , field' = PrimeField "Fr" 0x1000000000000000000000000000000014def9dea2f79cd65812631a5cf5d3ed , imports = Nothing } , parameters = Parameters { a = PF 0x76d06 , b = PF 0x1 , h = 0x8 , q = 0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffed , r = 0x1000000000000000000000000000000014def9dea2f79cd65812631a5cf5d3ed , x = PF 0x9 , y = PF 0x20ae19a1b8a086b4e01edd2c7748d14c923d4d7e6d7c61b229e9c5a27eced3d9 } } curve383187 :: Curve curve383187 = Curve { types = Types { curve = "Curve383187" , field = PrimeField "Fq" 0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff45 , field' = PrimeField "Fr" 0x1000000000000000000000000000000000000000000000000e85a85287a1488acd41ae84b2b7030446f72088b00a0e21 , imports = Nothing } , parameters = Parameters { a = PF 0x38251 , b = PF 0x1 , h = 0x8 , q = 0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff45 , r = 0x1000000000000000000000000000000000000000000000000e85a85287a1488acd41ae84b2b7030446f72088b00a0e21 , x = PF 0x5 , y = PF 0x1eebe07dc1871896732b12d5504a32370471965c7a11f2c89865f855ab3cbd7c224e3620c31af3370788457dd5ce46df } } m221 :: Curve m221 = Curve { types = Types { curve = "M221" , field = PrimeField "Fq" 0x1ffffffffffffffffffffffffffffffffffffffffffffffffffffffd , field' = PrimeField "Fr" 0x40000000000000000000000000015a08ed730e8a2f77f005042605b , imports = Nothing } , parameters = Parameters { a = PF 0x1c93a , b = PF 0x1 , h = 0x8 , q = 0x1ffffffffffffffffffffffffffffffffffffffffffffffffffffffd , r = 0x40000000000000000000000000015a08ed730e8a2f77f005042605b , x = PF 0x4 , y = PF 0xf7acdd2a4939571d1cef14eca37c228e61dbff10707dc6c08c5056d } } m383 :: Curve m383 = Curve { types = Types { curve = "M383" , field = PrimeField "Fq" 0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff45 , field' = PrimeField "Fr" 0x10000000000000000000000000000000000000000000000006c79673ac36ba6e7a32576f7b1b249e46bbc225be9071d7 , imports = Nothing } , parameters = Parameters { a = PF 0x1f82fe , b = PF 0x1 , h = 0x8 , q = 0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff45 , r = 0x10000000000000000000000000000000000000000000000006c79673ac36ba6e7a32576f7b1b249e46bbc225be9071d7 , x = PF 0xc , y = PF 0x1ec7ed04aaf834af310e304b2da0f328e7c165f0e8988abd3992861290f617aa1f1b2e7d0b6e332e969991b62555e77e } } m511 :: Curve m511 = Curve { types = Types { curve = "M511" , field = PrimeField "Fq" 0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff45 , field' = PrimeField "Fr" 0x100000000000000000000000000000000000000000000000000000000000000017b5feff30c7f5677ab2aeebd13779a2ac125042a6aa10bfa54c15bab76baf1b , imports = Nothing } , parameters = Parameters { a = PF 0x81806 , b = PF 0x1 , h = 0x8 , q = 0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff45 , r = 0x100000000000000000000000000000000000000000000000000000000000000017b5feff30c7f5677ab2aeebd13779a2ac125042a6aa10bfa54c15bab76baf1b , x = PF 0x5 , y = PF 0x2fbdc0ad8530803d28fdbad354bb488d32399ac1cf8f6e01ee3f96389b90c809422b9429e8a43dbf49308ac4455940abe9f1dbca542093a895e30a64af056fa5 } }