summaryrefslogtreecommitdiff
path: root/src/crypto/fipsmodule/ec/make_ec_scalar_base_mult_tests.go
diff options
context:
space:
mode:
Diffstat (limited to 'src/crypto/fipsmodule/ec/make_ec_scalar_base_mult_tests.go')
-rw-r--r--src/crypto/fipsmodule/ec/make_ec_scalar_base_mult_tests.go60
1 files changed, 60 insertions, 0 deletions
diff --git a/src/crypto/fipsmodule/ec/make_ec_scalar_base_mult_tests.go b/src/crypto/fipsmodule/ec/make_ec_scalar_base_mult_tests.go
new file mode 100644
index 00000000..716da55b
--- /dev/null
+++ b/src/crypto/fipsmodule/ec/make_ec_scalar_base_mult_tests.go
@@ -0,0 +1,60 @@
+/* Copyright (c) 2018, Google Inc.
+ *
+ * Permission to use, copy, modify, and/or distribute this software for any
+ * purpose with or without fee is hereby granted, provided that the above
+ * copyright notice and this permission notice appear in all copies.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
+ * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
+ * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY
+ * SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
+ * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION
+ * OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN
+ * CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. */
+
+package main
+
+import (
+ "crypto/elliptic"
+ "fmt"
+ "math/big"
+)
+
+const numPoints = 64
+
+func printPadded(key string, n, max *big.Int) {
+ padded := make([]byte, len(max.Bytes()))
+ b := n.Bytes()
+ copy(padded[len(padded)-len(b):], b)
+ fmt.Printf("%s = %x\n", key, padded)
+}
+
+func printMultiples(name string, curve elliptic.Curve) {
+ n := new(big.Int)
+ for i := -numPoints; i <= numPoints; i++ {
+ fmt.Printf("Curve = %s\n", name)
+ n.SetInt64(int64(i))
+ if i < 0 {
+ n = n.Add(n, curve.Params().N)
+ }
+ fmt.Printf("# N = %d\n", i)
+ printPadded("N", n, curve.Params().N)
+ x, y := curve.ScalarBaseMult(n.Bytes())
+ printPadded("X", x, curve.Params().P)
+ printPadded("Y", y, curve.Params().P)
+ fmt.Printf("\n")
+ }
+}
+
+func main() {
+ fmt.Printf(`# This file contains multiples of the base point for various curves. The point
+# at infinity is represented as X = 0, Y = 0.
+#
+# This file is generated by make_ec_scalar_base_mult_tests.go
+
+`)
+ printMultiples("P-224", elliptic.P224())
+ printMultiples("P-256", elliptic.P256())
+ printMultiples("P-384", elliptic.P384())
+ printMultiples("P-521", elliptic.P521())
+}