| /* GENERATED SOURCE. DO NOT MODIFY. */ |
| package com.android.org.bouncycastle.asn1.x9; |
| |
| import java.math.BigInteger; |
| |
| import com.android.org.bouncycastle.math.ec.ECCurve; |
| import com.android.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. |
| * @hide This class is not part of the Android public SDK API |
| */ |
| 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; |
| } |
| } |