org.spongycastle.math.ec.ECCurve.getB()方法的使用及代码示例

x33g5p2x  于2022-01-19 转载在 其他  
字(11.4k)|赞(0)|评价(0)|浏览(70)

本文整理了Java中org.spongycastle.math.ec.ECCurve.getB()方法的一些代码示例,展示了ECCurve.getB()的具体用法。这些代码示例主要来源于Github/Stackoverflow/Maven等平台,是从一些精选项目中提取出来的代码,具有较强的参考意义,能在一定程度帮忙到你。ECCurve.getB()方法的具体详情如下:
包路径:org.spongycastle.math.ec.ECCurve
类名称:ECCurve
方法名:getB

ECCurve.getB介绍

暂无

代码示例

代码示例来源:origin: com.madgag.spongycastle/core

public boolean equals(ECCurve other)
{
  return this == other
    || (null != other
      && getField().equals(other.getField())
      && getA().toBigInteger().equals(other.getA().toBigInteger())
      && getB().toBigInteger().equals(other.getB().toBigInteger()));
}

代码示例来源:origin: com.madgag.spongycastle/core

public int hashCode() 
{
  return getField().hashCode()
    ^ Integers.rotateLeft(getA().toBigInteger().hashCode(), 8)
    ^ Integers.rotateLeft(getB().toBigInteger().hashCode(), 16);
}

代码示例来源:origin: com.madgag.spongycastle/prov

public static EllipticCurve convertCurve(
  ECCurve curve, 
  byte[]  seed)
{
  ECField field = convertField(curve.getField());
  BigInteger a = curve.getA().toBigInteger(), b = curve.getB().toBigInteger();
  // TODO: the Sun EC implementation doesn't currently handle the seed properly
  // so at the moment it's set to null. Should probably look at making this configurable
  return new EllipticCurve(field, a, b, null);
}

代码示例来源:origin: com.madgag.spongycastle/prov

private static EllipticCurve convertCurve(
  ECCurve  curve,
  byte[]   seed)
{
  ECField field = convertField(curve.getField());
  BigInteger a = curve.getA().toBigInteger(), b = curve.getB().toBigInteger();
  return new EllipticCurve(field, a, b, seed);
}

代码示例来源:origin: com.madgag.spongycastle/bcpkix-jdk15on

private static EllipticCurve convertCurve(
  ECCurve curve)
{
  ECField field = convertField(curve.getField());
  BigInteger a = curve.getA().toBigInteger(), b = curve.getB().toBigInteger();
  // TODO: the Sun EC implementation doesn't currently handle the seed properly
  // so at the moment it's set to null. Should probably look at making this configurable
  return new EllipticCurve(field, a, b, null);
}

代码示例来源:origin: com.madgag.spongycastle/pkix

private static EllipticCurve convertCurve(
  ECCurve curve)
{
  ECField field = convertField(curve.getField());
  BigInteger a = curve.getA().toBigInteger(), b = curve.getB().toBigInteger();
  // TODO: the Sun EC implementation doesn't currently handle the seed properly
  // so at the moment it's set to null. Should probably look at making this configurable
  return new EllipticCurve(field, a, b, null);
}

代码示例来源:origin: es.gob.afirma.jmulticard/jmulticard

private static BigInteger computeAffineY(final BigInteger affineX, final ECParameterSpec params) {
  final ECCurve bcCurve = toSpongyCastleECCurve(params);
  final ECFieldElement a = bcCurve.getA();
  final ECFieldElement b = bcCurve.getB();
  final ECFieldElement x = bcCurve.fromBigInteger(affineX);
  final ECFieldElement y = x.multiply(x).add(a).multiply(x).add(b).sqrt();
  return y.toBigInteger();
}

代码示例来源:origin: com.madgag/scprov-jdk15on

public static EllipticCurve convertCurve(
  ECCurve curve, 
  byte[]  seed)
{
  // TODO: the Sun EC implementation doesn't currently handle the seed properly
  // so at the moment it's set to null. Should probably look at making this configurable
  if (curve instanceof ECCurve.Fp)
  {
    return new EllipticCurve(new ECFieldFp(((ECCurve.Fp)curve).getQ()), curve.getA().toBigInteger(), curve.getB().toBigInteger(), null);
  }
  else
  {
    ECCurve.F2m curveF2m = (ECCurve.F2m)curve;
    int ks[];
    
    if (curveF2m.isTrinomial())
    {
      ks = new int[] { curveF2m.getK1() };
      
      return new EllipticCurve(new ECFieldF2m(curveF2m.getM(), ks), curve.getA().toBigInteger(), curve.getB().toBigInteger(), null);
    }
    else
    {
      ks = new int[] { curveF2m.getK3(), curveF2m.getK2(), curveF2m.getK1() };
      
      return new EllipticCurve(new ECFieldF2m(curveF2m.getM(), ks), curve.getA().toBigInteger(), curve.getB().toBigInteger(), null);
    } 
  }
}

代码示例来源:origin: com.madgag/scprov-jdk15on

private static EllipticCurve convertCurve(
  ECCurve  curve,
  byte[]   seed)
{
  if (curve instanceof ECCurve.Fp)
  {
    return new EllipticCurve(new ECFieldFp(((ECCurve.Fp)curve).getQ()), curve.getA().toBigInteger(), curve.getB().toBigInteger(), seed);
  }
  else
  {
    ECCurve.F2m curveF2m = (ECCurve.F2m)curve;
    int ks[];
    
    if (curveF2m.isTrinomial())
    {
      ks = new int[] { curveF2m.getK1() };
      
      return new EllipticCurve(new ECFieldF2m(curveF2m.getM(), ks), curve.getA().toBigInteger(), curve.getB().toBigInteger(), seed);
    }
    else
    {
      ks = new int[] { curveF2m.getK3(), curveF2m.getK2(), curveF2m.getK1() };
      return new EllipticCurve(new ECFieldF2m(curveF2m.getM(), ks), curve.getA().toBigInteger(), curve.getB().toBigInteger(), seed);
    } 
  }
}

代码示例来源:origin: com.madgag.spongycastle/prov

public static String generateKeyFingerprint(ECPoint publicPoint, org.spongycastle.jce.spec.ECParameterSpec spec)
  {
    ECCurve curve = spec.getCurve();
    ECPoint g = spec.getG();

    if (curve != null)
    {
      return new Fingerprint(Arrays.concatenate(publicPoint.getEncoded(false), curve.getA().getEncoded(), curve.getB().getEncoded(), g.getEncoded(false))).toString();
    }

    return new Fingerprint(publicPoint.getEncoded(false)).toString();
  }
}

代码示例来源:origin: com.madgag.spongycastle/core

public DSTU4145ECBinary(ECDomainParameters params)
{
  ECCurve curve = params.getCurve();
  if (!ECAlgorithms.isF2mCurve(curve))
  {
    throw new IllegalArgumentException("only binary domain is possible");
  }
  // We always use big-endian in parameter encoding
  PolynomialExtensionField field = (PolynomialExtensionField)curve.getField();
  int[] exponents = field.getMinimalPolynomial().getExponentsPresent();
  if (exponents.length == 3)
  {
    f = new DSTU4145BinaryField(exponents[2], exponents[1]);
  }
  else if (exponents.length == 5)
  {
    f = new DSTU4145BinaryField(exponents[4], exponents[1], exponents[2], exponents[3]);
  }
  else
  {
    throw new IllegalArgumentException("curve must have a trinomial or pentanomial basis");
  }
  a = new ASN1Integer(curve.getA().toBigInteger());
  b = new DEROctetString(curve.getB().getEncoded());
  n = new ASN1Integer(params.getN());
  bp = new DEROctetString(DSTU4145PointEncoder.encodePoint(params.getG()));
}

代码示例来源:origin: com.madgag.spongycastle/core

v.add(new X9FieldElement(curve.getB()).toASN1Primitive());
v.add(new X9FieldElement(curve.getB()).toASN1Primitive());

代码示例来源:origin: com.madgag.spongycastle/core

private byte[] getZ(Digest digest)
{
  addUserID(digest, userID);
  addFieldElement(digest, ecParams.getCurve().getA());
  addFieldElement(digest, ecParams.getCurve().getB());
  addFieldElement(digest, ecParams.getG().getAffineXCoord());
  addFieldElement(digest, ecParams.getG().getAffineYCoord());
  addFieldElement(digest, pubPoint.getAffineXCoord());
  addFieldElement(digest, pubPoint.getAffineYCoord());
  byte[] rv = new byte[digest.getDigestSize()];
  digest.doFinal(rv, 0);
  return rv;
}

代码示例来源:origin: com.madgag.spongycastle/core

private byte[] getZ(Digest digest, byte[] userID, ECPoint pubPoint)
{
  addUserID(digest, userID);
  addFieldElement(digest, ecParams.getCurve().getA());
  addFieldElement(digest, ecParams.getCurve().getB());
  addFieldElement(digest, ecParams.getG().getAffineXCoord());
  addFieldElement(digest, ecParams.getG().getAffineYCoord());
  addFieldElement(digest, pubPoint.getAffineXCoord());
  addFieldElement(digest, pubPoint.getAffineYCoord());
  byte[] rv = new byte[digest.getDigestSize()];
  digest.doFinal(rv, 0);
  return rv;
}

代码示例来源:origin: com.madgag.spongycastle/core

public ECPoint twice()
{
  if (this.isInfinity())
  {
    return this;
  }
  ECCurve curve = this.getCurve();
  ECFieldElement X1 = this.x;
  if (X1.isZero())
  {
    // A point with X == 0 is it's own additive inverse
    return curve.getInfinity();
  }
  ECFieldElement L1 = this.y, Z1 = this.zs[0];
  boolean Z1IsOne = Z1.isOne();
  ECFieldElement L1Z1 = Z1IsOne ? L1 : L1.multiply(Z1);
  ECFieldElement Z1Sq = Z1IsOne ? Z1 : Z1.square();
  ECFieldElement T = L1.square().add(L1Z1).add(Z1Sq);
  if (T.isZero())
  {
    return new SecT233R1Point(curve, T, curve.getB().sqrt(), withCompression);
  }
  ECFieldElement X3 = T.square();
  ECFieldElement Z3 = Z1IsOne ? T : T.multiply(Z1Sq);
  ECFieldElement X1Z1 = Z1IsOne ? X1 : X1.multiply(Z1);
  ECFieldElement L3 = X1Z1.squarePlusProduct(T, L1Z1).add(X3).add(Z3);
  return new SecT233R1Point(curve, X3, L3, new ECFieldElement[]{ Z3 }, this.withCompression);
}

代码示例来源:origin: com.madgag.spongycastle/core

public ECPoint twice()
{
  if (this.isInfinity())
  {
    return this;
  }
  ECCurve curve = this.getCurve();
  ECFieldElement X1 = this.x;
  if (X1.isZero())
  {
    // A point with X == 0 is it's own additive inverse
    return curve.getInfinity();
  }
  ECFieldElement L1 = this.y, Z1 = this.zs[0];
  boolean Z1IsOne = Z1.isOne();
  ECFieldElement L1Z1 = Z1IsOne ? L1 : L1.multiply(Z1);
  ECFieldElement Z1Sq = Z1IsOne ? Z1 : Z1.square();
  ECFieldElement T = L1.square().add(L1Z1).add(Z1Sq);
  if (T.isZero())
  {
    return new SecT409R1Point(curve, T, curve.getB().sqrt(), withCompression);
  }
  ECFieldElement X3 = T.square();
  ECFieldElement Z3 = Z1IsOne ? T : T.multiply(Z1Sq);
  ECFieldElement X1Z1 = Z1IsOne ? X1 : X1.multiply(Z1);
  ECFieldElement L3 = X1Z1.squarePlusProduct(T, L1Z1).add(X3).add(Z3);
  return new SecT409R1Point(curve, X3, L3, new ECFieldElement[]{ Z3 }, this.withCompression);
}

代码示例来源:origin: com.madgag.spongycastle/core

public ECPoint twice()
{
  if (this.isInfinity())
  {
    return this;
  }
  ECCurve curve = this.getCurve();
  ECFieldElement X1 = this.x;
  if (X1.isZero())
  {
    // A point with X == 0 is it's own additive inverse
    return curve.getInfinity();
  }
  ECFieldElement L1 = this.y, Z1 = this.zs[0];
  boolean Z1IsOne = Z1.isOne();
  ECFieldElement L1Z1 = Z1IsOne ? L1 : L1.multiply(Z1);
  ECFieldElement Z1Sq = Z1IsOne ? Z1 : Z1.square();
  ECFieldElement T = L1.square().add(L1Z1).add(Z1Sq);
  if (T.isZero())
  {
    return new SecT163R2Point(curve, T, curve.getB().sqrt(), withCompression);
  }
  ECFieldElement X3 = T.square();
  ECFieldElement Z3 = Z1IsOne ? T : T.multiply(Z1Sq);
  ECFieldElement X1Z1 = Z1IsOne ? X1 : X1.multiply(Z1);
  ECFieldElement L3 = X1Z1.squarePlusProduct(T, L1Z1).add(X3).add(Z3);
  return new SecT163R2Point(curve, X3, L3, new ECFieldElement[]{ Z3 }, this.withCompression);
}

代码示例来源:origin: com.madgag.spongycastle/core

public ECPoint twice()
{
  if (this.isInfinity())
  {
    return this;
  }
  ECCurve curve = this.getCurve();
  ECFieldElement X1 = this.x;
  if (X1.isZero())
  {
    // A point with X == 0 is it's own additive inverse
    return curve.getInfinity();
  }
  ECFieldElement L1 = this.y, Z1 = this.zs[0];
  boolean Z1IsOne = Z1.isOne();
  ECFieldElement L1Z1 = Z1IsOne ? L1 : L1.multiply(Z1);
  ECFieldElement Z1Sq = Z1IsOne ? Z1 : Z1.square();
  ECFieldElement T = L1.square().add(L1Z1).add(Z1Sq);
  if (T.isZero())
  {
    return new SecT163K1Point(curve, T, curve.getB(), withCompression);
  }
  ECFieldElement X3 = T.square();
  ECFieldElement Z3 = Z1IsOne ? T : T.multiply(Z1Sq);
  ECFieldElement t1 = L1.add(X1).square();
  ECFieldElement L3 = t1.add(T).add(Z1Sq).multiply(t1).add(X3);
  return new SecT163K1Point(curve, X3, L3, new ECFieldElement[]{ Z3 }, this.withCompression);
}

代码示例来源:origin: com.madgag.spongycastle/core

public ECPoint twice()
{
  if (this.isInfinity())
  {
    return this;
  }
  ECCurve curve = this.getCurve();
  ECFieldElement X1 = this.x;
  if (X1.isZero())
  {
    // A point with X == 0 is it's own additive inverse
    return curve.getInfinity();
  }
  ECFieldElement L1 = this.y, Z1 = this.zs[0];
  boolean Z1IsOne = Z1.isOne();
  ECFieldElement L1Z1 = Z1IsOne ? L1 : L1.multiply(Z1);
  ECFieldElement Z1Sq = Z1IsOne ? Z1 : Z1.square();
  ECFieldElement a = curve.getA();
  ECFieldElement aZ1Sq = Z1IsOne ? a : a.multiply(Z1Sq);
  ECFieldElement T = L1.square().add(L1Z1).add(aZ1Sq);
  if (T.isZero())
  {
    return new SecT131R1Point(curve, T, curve.getB().sqrt(), withCompression);
  }
  ECFieldElement X3 = T.square();
  ECFieldElement Z3 = Z1IsOne ? T : T.multiply(Z1Sq);
  ECFieldElement X1Z1 = Z1IsOne ? X1 : X1.multiply(Z1);
  ECFieldElement L3 = X1Z1.squarePlusProduct(T, L1Z1).add(X3).add(Z3);
  return new SecT131R1Point(curve, X3, L3, new ECFieldElement[]{ Z3 }, this.withCompression);
}

代码示例来源:origin: com.madgag.spongycastle/core

public ECPoint twice()
{
  if (this.isInfinity())
  {
    return this;
  }
  ECCurve curve = this.getCurve();
  ECFieldElement X1 = this.x;
  if (X1.isZero())
  {
    // A point with X == 0 is it's own additive inverse
    return curve.getInfinity();
  }
  ECFieldElement L1 = this.y, Z1 = this.zs[0];
  boolean Z1IsOne = Z1.isOne();
  ECFieldElement L1Z1 = Z1IsOne ? L1 : L1.multiply(Z1);
  ECFieldElement Z1Sq = Z1IsOne ? Z1 : Z1.square();
  ECFieldElement a = curve.getA();
  ECFieldElement aZ1Sq = Z1IsOne ? a : a.multiply(Z1Sq);
  ECFieldElement T = L1.square().add(L1Z1).add(aZ1Sq);
  if (T.isZero())
  {
    return new SecT131R2Point(curve, T, curve.getB().sqrt(), withCompression);
  }
  ECFieldElement X3 = T.square();
  ECFieldElement Z3 = Z1IsOne ? T : T.multiply(Z1Sq);
  ECFieldElement X1Z1 = Z1IsOne ? X1 : X1.multiply(Z1);
  ECFieldElement L3 = X1Z1.squarePlusProduct(T, L1Z1).add(X3).add(Z3);
  return new SecT131R2Point(curve, X3, L3, new ECFieldElement[]{ Z3 }, this.withCompression);
}

相关文章