All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.bouncycastle.crypto.prng.drbg.DualECPoints Maven / Gradle / Ivy

Go to download

The Bouncy Castle Crypto package is a Java implementation of cryptographic algorithms. This jar contains JCE provider and lightweight API for the Bouncy Castle Cryptography APIs for Java 1.8 and later with debug enabled.

The newest version!
package org.bouncycastle.crypto.prng.drbg;

import org.bouncycastle.math.ec.ECPoint;

/**
 * General class for providing point pairs for use with DualEC DRBG. See NIST SP 800-90A for further details.
 */
public class DualECPoints
{
    private final ECPoint p;
    private final ECPoint q;
    private final int securityStrength;
    private final int cofactor;

    /**
     * Base Constructor.
     * 

* The cofactor is used to calculate the output block length (maxOutlen) according to *

     *     max_outlen = largest multiple of 8 less than ((field size in bits) - (13 + log2(cofactor))
     * 
* * @param securityStrength maximum security strength to be associated with these parameters * @param p the P point. * @param q the Q point. * @param cofactor cofactor associated with the domain parameters for the point generation. */ public DualECPoints(int securityStrength, ECPoint p, ECPoint q, int cofactor) { if (!p.getCurve().equals(q.getCurve())) { throw new IllegalArgumentException("points need to be on the same curve"); } this.securityStrength = securityStrength; this.p = p; this.q = q; this.cofactor = cofactor; } public int getSeedLen() { return p.getCurve().getFieldSize(); } public int getMaxOutlen() { return ((p.getCurve().getFieldSize() - (13 + log2(cofactor))) / 8) * 8; } public ECPoint getP() { return p; } public ECPoint getQ() { return q; } public int getSecurityStrength() { return securityStrength; } public int getCofactor() { return cofactor; } private static int log2(int value) { int log = 0; while ((value >>= 1) != 0) { log++; } return log; } }




© 2015 - 2024 Weber Informatics LLC | Privacy Policy