+# $Id: ec,v 1.1 2004/03/23 15:19:32 mdw Exp $
+#
+# Elliptic curve tests
+
+check {
+ "prime: 6277101735386680763835789423207666416083908700390324961279
+ prime: -3, 0x64210519e59c80e70fa7e9ab72243049feb8deecc146b9b1"
+ "0x188da80eb03090f67cbf20eb43a18800f4ff0afd82ff1012,
+ 0x07192b95ffc8da78631011ed6b24cdd573f977a11e794811"
+ 0;
+ "prime: 6277101735386680763835789423207666416083908700390324961279
+ prime: -3, 0x64210519e59c80e70fa7e9ab72243049feb8deecc146b9b1"
+ "0x188da80eb03090f67cbf20eb43a18800f4ff0afd82ff1012,
+ 0x07192b95ffc8da78631011ed6b24cdd573f977a11e794810"
+ -1;
+ "prime: 6277101735386680763835789423207666416083908700390324961279
+ prime: -3, 0x64210519e59c80e70fa7e9ab72243049feb8deecc146b9b1"
+ "0x188da80eb03090f67cbf20eb43a18800f4ff0afd82ff1012,
+ 0xf8e6d46a003725879cefee1294db32298c06885ee186b7ee"
+ 0;
+ "prime: 6277101735386680763835789423207666416083908700390324961279
+ prime: -3, 0x64210519e59c80e70fa7e9ab72243049feb8deecc146b9b1"
+ "0x188da80eb03090f67cbf20eb43a18801f4ff0afd82ff1411,
+ 0xdccf19d3e76abfa05d529c07575f54c94fa5fc9f3decc246"
+ 0;
+ "prime: 6277101735386680763835789423207666416083908700390324961279
+ primeproj: -3, 0x64210519e59c80e70fa7e9ab72243049feb8deecc146b9b1"
+ "0x188da80eb03090f67cbf20eb43a18800f4ff0afd82ff1012,
+ 0x07192b95ffc8da78631011ed6b24cdd573f977a11e794811"
+ 0;
+ "prime: 6277101735386680763835789423207666416083908700390324961279
+ primeproj: -3, 0x64210519e59c80e70fa7e9ab72243049feb8deecc146b9b1"
+ "0x188da80eb03090f67cbf20eb43a18800f4ff0afd82ff1012,
+ 0x07192b95ffc8da78631011ed6b24cdd573f977a11e794810"
+ -1;
+ "prime: 6277101735386680763835789423207666416083908700390324961279
+ primeproj: -3, 0x64210519e59c80e70fa7e9ab72243049feb8deecc146b9b1"
+ "0x188da80eb03090f67cbf20eb43a18800f4ff0afd82ff1012,
+ 0xf8e6d46a003725879cefee1294db32298c06885ee186b7ee"
+ 0;
+
+ "binpoly: 0x800000000000000000000000000000000000000c9
+ bin: 1, 0x20a601907b8c953ca1481eb10512f78744a3205fd"
+ "0x3f0eba16286a2d57ea0991168d4994637e8343e36,
+ 0x0d51fbc6c71a0094fa2cdd545b11c5c0c797324f1"
+ 0;
+ "binpoly: 0x800000000000000000000000000000000000000c9
+ bin: 1, 0x20a601907b8c953ca1481eb10512f78744a3205fd"
+ "0x3f0eba16286a2d57ea0991168d4994637e8343e36,
+ 0x0d51fbc6c71a0094fa2cdd545b11c5c0c797324f0"
+ -1;
+ "binpoly: 0x800000000000000000000000000000000000000c9
+ bin: 1, 0x20a601907b8c953ca1481eb10512f78744a3205fd"
+ "0x3f0eba16286a2d57ea0991168d4994637e8343e36,
+ 0x325f41d0ef702dc310254c42d65851a3b91471ac7"
+ 0;
+ "binpoly: 0x800000000000000000000000000000000000000c9
+ binproj: 1, 0x20a601907b8c953ca1481eb10512f78744a3205fd"
+ "0x3f0eba16286a2d57ea0991168d4994637e8343e36,
+ 0x0d51fbc6c71a0094fa2cdd545b11c5c0c797324f1"
+ 0;
+ "binpoly: 0x800000000000000000000000000000000000000c9
+ binproj: 1, 0x20a601907b8c953ca1481eb10512f78744a3205fd"
+ "0x3f0eba16286a2d57ea0991168d4994637e8343e36,
+ 0x0d51fbc6c71a0094fa2cdd545b11c5c0c797324f0"
+ -1;
+ "binpoly: 0x800000000000000000000000000000000000000c9
+ binproj: 1, 0x20a601907b8c953ca1481eb10512f78744a3205fd"
+ "0x3f0eba16286a2d57ea0991168d4994637e8343e36,
+ 0x325f41d0ef702dc310254c42d65851a3b91471ac7"
+ 0;
+ "binpoly: 0x800000000000000000000000000000000000000c9
+ binproj: 1, 0x20a601907b8c953ca1481eb10512f78744a3205fd"
+ "0x3f0eba16286a2d57ea0591168d4994637e8343e36,
+ 0x7fa8423c5ae194b56cdf21998ad8a721ef1201b8c"
+ 0;
+}
+
+find {
+ "prime: 6277101735386680763835789423207666416083908700390324961279
+ prime: -3, 0x64210519e59c80e70fa7e9ab72243049feb8deecc146b9b1"
+ 0x188da80eb03090f67cbf20eb43a18800f4ff0afd82ff1012
+ "0x188da80eb03090f67cbf20eb43a18800f4ff0afd82ff1012,
+ 0x07192b95ffc8da78631011ed6b24cdd573f977a11e794811";
+ "prime: 6277101735386680763835789423207666416083908700390324961279
+ prime: -3, 0x64210519e59c80e70fa7e9ab72243049feb8deecc146b9b1"
+ 0x188da80eb03090f67cbf20eb43a18800f4ff0afd82ff1011 inf;
+ "prime: 6277101735386680763835789423207666416083908700390324961279
+ prime: -3, 0x64210519e59c80e70fa7e9ab72243049feb8deecc146b9b1"
+ 0x188da80eb03090f67cbf20eb43a18801f4ff0afd82ff1411
+ "0x188da80eb03090f67cbf20eb43a18801f4ff0afd82ff1411,
+ 0xdccf19d3e76abfa05d529c07575f54c94fa5fc9f3decc246";
+
+ "binpoly: 0x800000000000000000000000000000000000000c9
+ bin: 1, 0x20a601907b8c953ca1481eb10512f78744a3205fd"
+ 0x3f0eba16286a2d57ea0991168d4994637e8343e36
+ "0x3f0eba16286a2d57ea0991168d4994637e8343e36,
+ 0x325f41d0ef702dc310254c42d65851a3b91471ac7";
+ "binpoly: 0x800000000000000000000000000000000000000c9
+ bin: 1, 0x20a601907b8c953ca1481eb10512f78744a3205fd"
+ 0x310eba16386a2d57ea0591168d4997637e8745e36 inf;
+ "binpoly: 0x800000000000000000000000000000000000000c9
+ bin: 1, 0x20a601907b8c953ca1481eb10512f78744a3205fd"
+ 0x3f0eba16286a2d57ea0591168d4994637e8343e36
+ "0x3f0eba16286a2d57ea0591168d4994637e8343e36,
+ 0x7fa8423c5ae194b56cdf21998ad8a721ef1201b8c";
+}
+
+neg {
+ "prime: 6277101735386680763835789423207666416083908700390324961279
+ prime: -3, 0x64210519e59c80e70fa7e9ab72243049feb8deecc146b9b1"
+ "0x188da80eb03090f67cbf20eb43a18800f4ff0afd82ff1012,
+ 0x07192b95ffc8da78631011ed6b24cdd573f977a11e794811"
+ "0x188da80eb03090f67cbf20eb43a18800f4ff0afd82ff1012,
+ 0xf8e6d46a003725879cefee1294db32298c06885ee186b7ee";
+ "prime: 6277101735386680763835789423207666416083908700390324961279
+ primeproj: -3, 0x64210519e59c80e70fa7e9ab72243049feb8deecc146b9b1"
+ "0x188da80eb03090f67cbf20eb43a18800f4ff0afd82ff1012,
+ 0x07192b95ffc8da78631011ed6b24cdd573f977a11e794811"
+ "0x188da80eb03090f67cbf20eb43a18800f4ff0afd82ff1012,
+ 0xf8e6d46a003725879cefee1294db32298c06885ee186b7ee";
+
+ "binpoly: 0x800000000000000000000000000000000000000c9
+ bin: 1, 0x20a601907b8c953ca1481eb10512f78744a3205fd"
+ "0x3f0eba16286a2d57ea0991168d4994637e8343e36,
+ 0x325f41d0ef702dc310254c42d65851a3b91471ac7"
+ "0x3f0eba16286a2d57ea0991168d4994637e8343e36,
+ 0x0d51fbc6c71a0094fa2cdd545b11c5c0c797324f1";
+ "binpoly: 0x800000000000000000000000000000000000000c9
+ binproj: 1, 0x20a601907b8c953ca1481eb10512f78744a3205fd"
+ "0x3f0eba16286a2d57ea0991168d4994637e8343e36,
+ 0x325f41d0ef702dc310254c42d65851a3b91471ac7"
+ "0x3f0eba16286a2d57ea0991168d4994637e8343e36,
+ 0x0d51fbc6c71a0094fa2cdd545b11c5c0c797324f1";
+}
+
+dbl {
+ "prime: 6277101735386680763835789423207666416083908700390324961279
+ prime: -3, 0x64210519e59c80e70fa7e9ab72243049feb8deecc146b9b1"
+ "0x188da80eb03090f67cbf20eb43a18800f4ff0afd82ff1012,
+ 0x07192b95ffc8da78631011ed6b24cdd573f977a11e794811"
+ "0xdafebf5828783f2ad35534631588a3f629a70fb16982a888,
+ 0xdd6bda0d993da0fa46b27bbc141b868f59331afa5c7e93ab";
+ "prime: 6277101735386680763835789423207666416083908700390324961279
+ primeproj: -3, 0x64210519e59c80e70fa7e9ab72243049feb8deecc146b9b1"
+ "0x188da80eb03090f67cbf20eb43a18800f4ff0afd82ff1012,
+ 0x07192b95ffc8da78631011ed6b24cdd573f977a11e794811"
+ "0xdafebf5828783f2ad35534631588a3f629a70fb16982a888,
+ 0xdd6bda0d993da0fa46b27bbc141b868f59331afa5c7e93ab";
+
+ "binpoly: 0x800000000000000000000000000000000000000c9
+ bin: 1, 0x20a601907b8c953ca1481eb10512f78744a3205fd"
+ "0x3f0eba16286a2d57ea0991168d4994637e8343e36,
+ 0x325f41d0ef702dc310254c42d65851a3b91471ac7"
+ "0x1aeb33fed9c49e0200a0c561ea66d5ab85bd4c2d4,
+ 0x49ed3be7f510e30e2462c517ad39038e493fc573c";
+ "binpoly: 0x800000000000000000000000000000000000000c9
+ binproj: 1, 0x20a601907b8c953ca1481eb10512f78744a3205fd"
+ "0x3f0eba16286a2d57ea0991168d4994637e8343e36,
+ 0x325f41d0ef702dc310254c42d65851a3b91471ac7"
+ "0x1aeb33fed9c49e0200a0c561ea66d5ab85bd4c2d4,
+ 0x49ed3be7f510e30e2462c517ad39038e493fc573c";
+}
+
+add {
+ "prime: 6277101735386680763835789423207666416083908700390324961279
+ prime: -3, 0x64210519e59c80e70fa7e9ab72243049feb8deecc146b9b1"
+ "0x188da80eb03090f67cbf20eb43a18800f4ff0afd82ff1012,
+ 0x07192b95ffc8da78631011ed6b24cdd573f977a11e794811"
+ "0xdafebf5828783f2ad35534631588a3f629a70fb16982a888,
+ 0xdd6bda0d993da0fa46b27bbc141b868f59331afa5c7e93ab"
+ "0x76e32a2557599e6edcd283201fb2b9aadfd0d359cbb263da,
+ 0x782c37e372ba4520aa62e0fed121d49ef3b543660cfd05fd";
+ "prime: 6277101735386680763835789423207666416083908700390324961279
+ primeproj: -3, 0x64210519e59c80e70fa7e9ab72243049feb8deecc146b9b1"
+ "0x188da80eb03090f67cbf20eb43a18800f4ff0afd82ff1012,
+ 0x07192b95ffc8da78631011ed6b24cdd573f977a11e794811"
+ "0xdafebf5828783f2ad35534631588a3f629a70fb16982a888,
+ 0xdd6bda0d993da0fa46b27bbc141b868f59331afa5c7e93ab"
+ "0x76e32a2557599e6edcd283201fb2b9aadfd0d359cbb263da,
+ 0x782c37e372ba4520aa62e0fed121d49ef3b543660cfd05fd";
+
+ "binpoly: 0x800000000000000000000000000000000000000c9
+ bin: 1, 0x20a601907b8c953ca1481eb10512f78744a3205fd"
+ "0x3f0eba16286a2d57ea0991168d4994637e8343e36,
+ 0x325f41d0ef702dc310254c42d65851a3b91471ac7"
+ "0x1aeb33fed9c49e0200a0c561ea66d5ab85bd4c2d4,
+ 0x49ed3be7f510e30e2462c517ad39038e493fc573c"
+ "0x634000577f86aa315009d6f9b906691f6edd691fe,
+ 0x235a3db7a94446301e666cafea5e12cb331f4a140";
+ "binpoly: 0x800000000000000000000000000000000000000c9
+ binproj: 1, 0x20a601907b8c953ca1481eb10512f78744a3205fd"
+ "0x3f0eba16286a2d57ea0991168d4994637e8343e36,
+ 0x325f41d0ef702dc310254c42d65851a3b91471ac7"
+ "0x1aeb33fed9c49e0200a0c561ea66d5ab85bd4c2d4,
+ 0x49ed3be7f510e30e2462c517ad39038e493fc573c"
+ "0x634000577f86aa315009d6f9b906691f6edd691fe,
+ 0x235a3db7a94446301e666cafea5e12cb331f4a140";
+}
+
+sub {
+ "prime: 6277101735386680763835789423207666416083908700390324961279
+ prime: -3, 0x64210519e59c80e70fa7e9ab72243049feb8deecc146b9b1"
+ "0x76e32a2557599e6edcd283201fb2b9aadfd0d359cbb263da,
+ 0x782c37e372ba4520aa62e0fed121d49ef3b543660cfd05fd"
+ "0x188da80eb03090f67cbf20eb43a18800f4ff0afd82ff1012,
+ 0x07192b95ffc8da78631011ed6b24cdd573f977a11e794811"
+ "0xdafebf5828783f2ad35534631588a3f629a70fb16982a888,
+ 0xdd6bda0d993da0fa46b27bbc141b868f59331afa5c7e93ab";
+ "prime: 6277101735386680763835789423207666416083908700390324961279
+ primeproj: -3, 0x64210519e59c80e70fa7e9ab72243049feb8deecc146b9b1"
+ "0x76e32a2557599e6edcd283201fb2b9aadfd0d359cbb263da,
+ 0x782c37e372ba4520aa62e0fed121d49ef3b543660cfd05fd"
+ "0x188da80eb03090f67cbf20eb43a18800f4ff0afd82ff1012,
+ 0x07192b95ffc8da78631011ed6b24cdd573f977a11e794811"
+ "0xdafebf5828783f2ad35534631588a3f629a70fb16982a888,
+ 0xdd6bda0d993da0fa46b27bbc141b868f59331afa5c7e93ab";
+
+ "binpoly: 0x800000000000000000000000000000000000000c9
+ bin: 1, 0x20a601907b8c953ca1481eb10512f78744a3205fd"
+ "0x634000577f86aa315009d6f9b906691f6edd691fe,
+ 0x235a3db7a94446301e666cafea5e12cb331f4a140"
+ "0x3f0eba16286a2d57ea0991168d4994637e8343e36,
+ 0x325f41d0ef702dc310254c42d65851a3b91471ac7"
+ "0x1aeb33fed9c49e0200a0c561ea66d5ab85bd4c2d4,
+ 0x49ed3be7f510e30e2462c517ad39038e493fc573c";
+ "binpoly: 0x800000000000000000000000000000000000000c9
+ binproj: 1, 0x20a601907b8c953ca1481eb10512f78744a3205fd"
+ "0x634000577f86aa315009d6f9b906691f6edd691fe,
+ 0x235a3db7a94446301e666cafea5e12cb331f4a140"
+ "0x3f0eba16286a2d57ea0991168d4994637e8343e36,
+ 0x325f41d0ef702dc310254c42d65851a3b91471ac7"
+ "0x1aeb33fed9c49e0200a0c561ea66d5ab85bd4c2d4,
+ 0x49ed3be7f510e30e2462c517ad39038e493fc573c";
+}
+
+mul {
+ "prime: 6277101735386680763835789423207666416083908700390324961279
+ prime: -3, 0x64210519e59c80e70fa7e9ab72243049feb8deecc146b9b1"
+ "0x188da80eb03090f67cbf20eb43a18800f4ff0afd82ff1012,
+ 0x07192b95ffc8da78631011ed6b24cdd573f977a11e794811"
+ 6277101735386680763835789423176059013767194773182842284080
+ "0x188da80eb03090f67cbf20eb43a18800f4ff0afd82ff1012,
+ 0xf8e6d46a003725879cefee1294db32298c06885ee186b7ee";
+ "prime: 6277101735386680763835789423207666416083908700390324961279
+ prime: -3, 0x64210519e59c80e70fa7e9ab72243049feb8deecc146b9b1"
+ "0x188da80eb03090f67cbf20eb43a18800f4ff0afd82ff1012,
+ 0x07192b95ffc8da78631011ed6b24cdd573f977a11e794811"
+ 6277101735386680763835789423176059013767194773182842284081
+ inf;
+ "prime: 6277101735386680763835789423207666416083908700390324961279
+ primeproj: -3, 0x64210519e59c80e70fa7e9ab72243049feb8deecc146b9b1"
+ "0x188da80eb03090f67cbf20eb43a18800f4ff0afd82ff1012,
+ 0x07192b95ffc8da78631011ed6b24cdd573f977a11e794811"
+ 6277101735386680763835789423176059013767194773182842284080
+ "0x188da80eb03090f67cbf20eb43a18800f4ff0afd82ff1012,
+ 0xf8e6d46a003725879cefee1294db32298c06885ee186b7ee";
+ "prime: 6277101735386680763835789423207666416083908700390324961279
+ primeproj: -3, 0x64210519e59c80e70fa7e9ab72243049feb8deecc146b9b1"
+ "0x188da80eb03090f67cbf20eb43a18800f4ff0afd82ff1012,
+ 0x07192b95ffc8da78631011ed6b24cdd573f977a11e794811"
+ 6277101735386680763835789423176059013767194773182842284081
+ inf;
+
+ "binpoly: 0x800000000000000000000000000000000000000c9
+ bin: 1, 0x20a601907b8c953ca1481eb10512f78744a3205fd"
+ "0x3f0eba16286a2d57ea0991168d4994637e8343e36,
+ 0x325f41d0ef702dc310254c42d65851a3b91471ac7"
+ 5846006549323611672814742442876390689256843201586
+ "0x3f0eba16286a2d57ea0991168d4994637e8343e36,
+ 0xd51fbc6c71a0094fa2cdd545b11c5c0c797324f1";
+ "binpoly: 0x800000000000000000000000000000000000000c9
+ bin: 1, 0x20a601907b8c953ca1481eb10512f78744a3205fd"
+ "0x3f0eba16286a2d57ea0991168d4994637e8343e36,
+ 0x325f41d0ef702dc310254c42d65851a3b91471ac7"
+ 5846006549323611672814742442876390689256843201587
+ inf;
+ "binpoly: 0x800000000000000000000000000000000000000c9
+ binproj: 1, 0x20a601907b8c953ca1481eb10512f78744a3205fd"
+ "0x3f0eba16286a2d57ea0991168d4994637e8343e36,
+ 0x325f41d0ef702dc310254c42d65851a3b91471ac7"
+ 5846006549323611672814742442876390689256843201586
+ "0x3f0eba16286a2d57ea0991168d4994637e8343e36,
+ 0xd51fbc6c71a0094fa2cdd545b11c5c0c797324f1";
+ "binpoly: 0x800000000000000000000000000000000000000c9
+ binproj: 1, 0x20a601907b8c953ca1481eb10512f78744a3205fd"
+ "0x3f0eba16286a2d57ea0991168d4994637e8343e36,
+ 0x325f41d0ef702dc310254c42d65851a3b91471ac7"
+ 5846006549323611672814742442876390689256843201587
+ inf;
+}