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

org.bouncycastle.asn1.x9.X9IntegerConverter 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.asn1.x9;

import java.math.BigInteger;

import org.bouncycastle.math.ec.ECCurve;
import org.bouncycastle.math.ec.ECFieldElement;

/**
 * A class which converts integers to byte arrays, allowing padding and calculations
 * to be done according the the filed size of the curve or field element involved.
 */
public class X9IntegerConverter
{
    /**
     * Return the curve's field size in bytes.
     *
     * @param c the curve of interest.
     * @return the field size in bytes (rounded up).
     */
    public int getByteLength(
        ECCurve c)
    {
        return (c.getFieldSize() + 7) / 8;
    }

    /**
     * Return the field element's field size in bytes.
     *
     * @param fe the field element of interest.
     * @return the field size in bytes (rounded up).
     */
    public int getByteLength(
        ECFieldElement fe)
    {
        return (fe.getFieldSize() + 7) / 8;
    }

    /**
     * Convert an integer to a byte array, ensuring it is exactly qLength long.
     *
     * @param s the integer to be converted.
     * @param qLength the length
     * @return the resulting byte array.
     */
    public byte[] integerToBytes(
        BigInteger s,
        int        qLength)
    {
        byte[] bytes = s.toByteArray();
        
        if (qLength < bytes.length)
        {
            byte[] tmp = new byte[qLength];
        
            System.arraycopy(bytes, bytes.length - tmp.length, tmp, 0, tmp.length);
            
            return tmp;
        }
        else if (qLength > bytes.length)
        {
            byte[] tmp = new byte[qLength];
        
            System.arraycopy(bytes, 0, tmp, tmp.length - bytes.length, bytes.length);
            
            return tmp; 
        }
    
        return bytes;
    }
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy