New multiprecision integer arithmetic suite.
[u/mdw/catacomb] / tests / mpmont
diff --git a/tests/mpmont b/tests/mpmont
new file mode 100644 (file)
index 0000000..1cb2a70
--- /dev/null
@@ -0,0 +1,53 @@
+# Test vectors for Montgomery reduction
+#
+# $Id: mpmont,v 1.1 1999/11/17 18:02:17 mdw Exp $
+
+create {
+  340809809850981098423498794792349    # m
+  266454859                            # -m^{-1} mod b
+  130655606683780235388773757767708    # R mod m
+  237786678640282040194246459306177;   # R^2 mod m
+}
+
+mul {
+  43289823545
+  234324324
+  6456542564
+  10807149256;
+}
+
+exp {
+  4325987397987458979875737589783
+  435365332435654643667
+  8745435676786567758678547
+  2439674515119108242643169132064;
+
+  # --- Quick RSA test ---
+
+  905609324890967090294090970600361            # This is p
+  3
+  905609324890967090294090970600360            # This is (p - 1)
+  1;                                           # Fermat test: p is prime
+
+  734589569806680985408670989082927            # This is q
+  5
+  734589569806680985408670989082926            # And this is (q - 1)
+  1;                                           # Fermat again: q is prime
+
+  # --- Encrypt a message ---
+  #
+  # The public and private exponents are from the GCD test.  The message
+  # is just obvious.  The modulus is the product of the two primes above.
+
+  665251164384574309450646977867045404520085938543622535546005136647
+  123456789012345678901234567890123456789012345678901234567890
+  5945908509680983480596809586040589085680968709809890671
+  25906467774034212974484417859588980567136610347807401817990462701;
+
+  # --- And decrypt it again --- 
+
+  665251164384574309450646977867045404520085938543622535546005136647
+  25906467774034212974484417859588980567136610347807401817990462701
+  514778499400157641662814932021958856708417966520837469125919104431
+  123456789012345678901234567890123456789012345678901234567890;
+}