summaryrefslogtreecommitdiff
path: root/src/gp/utils.gp
diff options
context:
space:
mode:
Diffstat (limited to 'src/gp/utils.gp')
-rw-r--r--src/gp/utils.gp52
1 files changed, 52 insertions, 0 deletions
diff --git a/src/gp/utils.gp b/src/gp/utils.gp
new file mode 100644
index 0000000..932a44a
--- /dev/null
+++ b/src/gp/utils.gp
@@ -0,0 +1,52 @@
+/*
+ * ecgen, tool for generating Elliptic curve domain parameters
+ * Copyright (C) 2017 J08nY
+ */
+
+ random_primer(range:vec) = {
+ local(p:int);
+ until(isprime(p),
+ p = randomprime(range):int;
+ );
+ return(p);
+ }
+
+/**
+ * Calculates a random prime of bit size bits.
+ *
+ * @param bits bit size of the requested prime
+ * @return random prime between 2^(bits - 1) and 2^bits
+ */
+random_prime(bits:small) = {
+ return(random_primer([2^(bits-1), 2^bits]));
+}
+
+random_intr(range:vec) = {
+ return(random(range));
+}
+
+/**
+ * Generates a random integer with bit size bits.
+ *
+ * @param bits bit size of the requested integer
+ * @return random int between 2^(bits - 1) and 2^bits
+ */
+random_int(bits:small) = {
+ return(random_intr([2^(bits-1), 2^bits]));
+}
+
+/**
+ * Converts a list to a vector.
+ *
+ * @param l list to convert
+ * @return a vector of the lists values
+ */
+list_to_vec(l:list) = {
+ local(v:vec, n:int);
+ n = length(l);
+ v = vector(n);
+ for(i=1, n,
+ v[i] = l[i];
+ );
+ return(v);
+} \ No newline at end of file