Start line:  
End line:  

Snippet Preview

Snippet HTML Code

Stack Overflow Questions
  package org.bouncycastle.math.ec.custom.sec;
  
  
  
 public class SecP192R1FieldElement extends ECFieldElement
 {
     public static final BigInteger Q = .;
 
     protected int[] x;
 
     public SecP192R1FieldElement(BigInteger x)
     {
         if (x == null || x.signum() < 0 || x.compareTo() >= 0)
         {
             throw new IllegalArgumentException("x value invalid for SecP192R1FieldElement");
         }
 
         this. = SecP192R1Field.fromBigInteger(x);
     }
 
     public SecP192R1FieldElement()
     {
         this. = Nat192.create();
     }
 
     protected SecP192R1FieldElement(int[] x)
     {
         this. = x;
     }
 
     public boolean isZero()
     {
         return Nat192.isZero();
     }
 
     public boolean isOne()
     {
         return Nat192.isOne();
     }
 
     public boolean testBitZero()
     {
         return Nat192.getBit(, 0) == 1;
     }
 
     public BigInteger toBigInteger()
     {
         return Nat192.toBigInteger();
     }
 
     public String getFieldName()
     {
         return "SecP192R1Field";
     }
 
     public int getFieldSize()
     {
         return .bitLength();
     }
 
     public ECFieldElement add(ECFieldElement b)
     {
         int[] z = Nat192.create();
         SecP192R1Field.add(, ((SecP192R1FieldElement)b).z);
         return new SecP192R1FieldElement(z);
     }
 
     public ECFieldElement addOne()
     {
         int[] z = Nat192.create();
         SecP192R1Field.addOne(z);
         return new SecP192R1FieldElement(z);
     }
 
     {
         int[] z = Nat192.create();
         SecP192R1Field.subtract(, ((SecP192R1FieldElement)b).z);
         return new SecP192R1FieldElement(z);
     }
 
     {
         int[] z = Nat192.create();
         SecP192R1Field.multiply(, ((SecP192R1FieldElement)b).z);
         return new SecP192R1FieldElement(z);
     }
 
     public ECFieldElement divide(ECFieldElement b)
     {
 //        return multiply(b.invert());
         int[] z = Nat192.create();
         Mod.invert(., ((SecP192R1FieldElement)b).z);
         SecP192R1Field.multiply(zz);
        return new SecP192R1FieldElement(z);
    }
    public ECFieldElement negate()
    {
        int[] z = Nat192.create();
        SecP192R1Field.negate(z);
        return new SecP192R1FieldElement(z);
    }
    public ECFieldElement square()
    {
        int[] z = Nat192.create();
        SecP192R1Field.square(z);
        return new SecP192R1FieldElement(z);
    }
    public ECFieldElement invert()
    {
//        return new SecP192R1FieldElement(toBigInteger().modInverse(Q));
        int[] z = Nat192.create();
        Mod.invert(.z);
        return new SecP192R1FieldElement(z);
    }
    // D.1.4 91
    
return a sqrt root - the routine verifies that the calculation returns the right value - if none exists it returns null.
    public ECFieldElement sqrt()
    {
        // Raise this element to the exponent 2^190 - 2^62
        int[] x1 = this.;
        if (Nat192.isZero(x1) || Nat192.isOne(x1))
        {
            return this;
        }
        int[] t1 = Nat192.create();
        int[] t2 = Nat192.create();
        SecP192R1Field.square(x1t1);
        SecP192R1Field.multiply(t1x1t1);
        SecP192R1Field.squareN(t1, 2, t2);
        SecP192R1Field.multiply(t2t1t2);
        SecP192R1Field.squareN(t2, 4, t1);
        SecP192R1Field.multiply(t1t2t1);
        SecP192R1Field.squareN(t1, 8, t2);
        SecP192R1Field.multiply(t2t1t2);
        SecP192R1Field.squareN(t2, 16, t1);
        SecP192R1Field.multiply(t1t2t1);
        SecP192R1Field.squareN(t1, 32, t2);
        SecP192R1Field.multiply(t2t1t2);
        SecP192R1Field.squareN(t2, 64, t1);
        SecP192R1Field.multiply(t1t2t1);
        SecP192R1Field.squareN(t1, 62, t1);
        SecP192R1Field.square(t1t2);
        return Nat192.eq(x1t2) ? new SecP192R1FieldElement(t1) : null;
    }
    public boolean equals(Object other)
    {
        if (other == this)
        {
            return true;
        }
        if (!(other instanceof SecP192R1FieldElement))
        {
            return false;
        }
        SecP192R1FieldElement o = (SecP192R1FieldElement)other;
        return Nat192.eq(o.x);
    }
    public int hashCode()
    {
        return .hashCode() ^ Arrays.hashCode(, 0, 6);
    }
New to GrepCode? Check out our FAQ X