Browse Source

changes made to enable things needed for proof structure in PRSONA

tristangurtler 3 years ago
parent
commit
7f27cdf91b
2 changed files with 61 additions and 0 deletions
  1. 9 0
      bgn2/inc/Scalar.hpp
  2. 52 0
      bgn2/src/Scalar.cpp

+ 9 - 0
bgn2/inc/Scalar.hpp

@@ -27,6 +27,8 @@ class Scalar
         void set(mpz_class input);
         void set_random();
 
+        mpz_class toInt() const;
+
         Scalar operator+(const Scalar& b) const;
         Scalar operator-(const Scalar& b) const;
         Scalar operator*(const Scalar& b) const;
@@ -36,6 +38,9 @@ class Scalar
         Scalar& operator--();
         Scalar operator--(int);
 
+        Scalar curveAdd(const Scalar& b) const;
+        Scalar curveSub(const Scalar& b) const;
+        Scalar curveMult(const Scalar& b) const;
         Scalar curveInverse() const;
 
         void mult(curvepoint_fp_t rop, const curvepoint_fp_t& op1) const;
@@ -43,6 +48,10 @@ class Scalar
         void mult(fp12e_t rop, const fp12e_t& op1) const;
 
         bool operator==(const Scalar& b) const;
+        bool operator<(const Scalar& b) const;
+        bool operator<=(const Scalar& b) const;
+        bool operator>(const Scalar& b) const;
+        bool operator>=(const Scalar& b) const;
         bool operator!=(const Scalar& b) const;
         
         friend std::ostream& operator<<(std::ostream& os, const Scalar& output);

+ 52 - 0
bgn2/src/Scalar.cpp

@@ -64,6 +64,11 @@ void Scalar::set_random()
     set(temp);
 }
 
+mpz_class Scalar::toInt() const
+{
+    return element;
+}
+
 Scalar Scalar::operator+(const Scalar& b) const
 {
     mpz_class temp = element + b.element;
@@ -138,6 +143,33 @@ Scalar Scalar::operator--(int)
     return retval;
 }
 
+Scalar Scalar::curveAdd(const Scalar& b) const
+{
+    mpz_class temp = element + b.element;
+
+    mpz_mod(temp.get_mpz_t(), temp.get_mpz_t(), mpz_bn_n.get_mpz_t());
+
+    return Scalar(temp);
+}
+
+Scalar Scalar::curveSub(const Scalar& b) const
+{
+    mpz_class temp = element - b.element;
+
+    mpz_mod(temp.get_mpz_t(), temp.get_mpz_t(), mpz_bn_n.get_mpz_t());
+
+    return Scalar(temp);
+}
+
+Scalar Scalar::curveMult(const Scalar& b) const
+{
+    mpz_class temp = element * b.element;
+
+    mpz_mod(temp.get_mpz_t(), temp.get_mpz_t(), mpz_bn_n.get_mpz_t());
+
+    return Scalar(temp);
+}
+
 Scalar Scalar::curveInverse() const
 {
     mpz_class temp;
@@ -172,6 +204,26 @@ bool Scalar::operator==(const Scalar& b) const
     return element == b.element;
 }
 
+bool Scalar::operator<(const Scalar& b) const
+{
+    return element < b.element;
+}
+
+bool Scalar::operator<=(const Scalar& b) const
+{
+    return element <= b.element;
+}
+
+bool Scalar::operator>(const Scalar& b) const
+{
+    return element > b.element;
+}
+
+bool Scalar::operator>=(const Scalar& b) const
+{
+    return element >= b.element;
+}
+
 bool Scalar::operator!=(const Scalar& b) const
 {
     return element != b.element;