18212855a312dc8ebe081a3e08b1d2d8f8757af02Brian Carlstrompackage org.bouncycastle.asn1.x9; 28212855a312dc8ebe081a3e08b1d2d8f8757af02Brian Carlstrom 38212855a312dc8ebe081a3e08b1d2d8f8757af02Brian Carlstromimport org.bouncycastle.math.ec.ECCurve; 48212855a312dc8ebe081a3e08b1d2d8f8757af02Brian Carlstromimport org.bouncycastle.math.ec.ECFieldElement; 58212855a312dc8ebe081a3e08b1d2d8f8757af02Brian Carlstrom 68212855a312dc8ebe081a3e08b1d2d8f8757af02Brian Carlstromimport java.math.BigInteger; 78212855a312dc8ebe081a3e08b1d2d8f8757af02Brian Carlstrom 88212855a312dc8ebe081a3e08b1d2d8f8757af02Brian Carlstrompublic class X9IntegerConverter 98212855a312dc8ebe081a3e08b1d2d8f8757af02Brian Carlstrom{ 108212855a312dc8ebe081a3e08b1d2d8f8757af02Brian Carlstrom public int getByteLength( 118212855a312dc8ebe081a3e08b1d2d8f8757af02Brian Carlstrom ECCurve c) 128212855a312dc8ebe081a3e08b1d2d8f8757af02Brian Carlstrom { 138212855a312dc8ebe081a3e08b1d2d8f8757af02Brian Carlstrom return (c.getFieldSize() + 7) / 8; 148212855a312dc8ebe081a3e08b1d2d8f8757af02Brian Carlstrom } 158212855a312dc8ebe081a3e08b1d2d8f8757af02Brian Carlstrom 168212855a312dc8ebe081a3e08b1d2d8f8757af02Brian Carlstrom public int getByteLength( 178212855a312dc8ebe081a3e08b1d2d8f8757af02Brian Carlstrom ECFieldElement fe) 188212855a312dc8ebe081a3e08b1d2d8f8757af02Brian Carlstrom { 198212855a312dc8ebe081a3e08b1d2d8f8757af02Brian Carlstrom return (fe.getFieldSize() + 7) / 8; 208212855a312dc8ebe081a3e08b1d2d8f8757af02Brian Carlstrom } 218212855a312dc8ebe081a3e08b1d2d8f8757af02Brian Carlstrom 228212855a312dc8ebe081a3e08b1d2d8f8757af02Brian Carlstrom public byte[] integerToBytes( 238212855a312dc8ebe081a3e08b1d2d8f8757af02Brian Carlstrom BigInteger s, 248212855a312dc8ebe081a3e08b1d2d8f8757af02Brian Carlstrom int qLength) 258212855a312dc8ebe081a3e08b1d2d8f8757af02Brian Carlstrom { 268212855a312dc8ebe081a3e08b1d2d8f8757af02Brian Carlstrom byte[] bytes = s.toByteArray(); 278212855a312dc8ebe081a3e08b1d2d8f8757af02Brian Carlstrom 288212855a312dc8ebe081a3e08b1d2d8f8757af02Brian Carlstrom if (qLength < bytes.length) 298212855a312dc8ebe081a3e08b1d2d8f8757af02Brian Carlstrom { 308212855a312dc8ebe081a3e08b1d2d8f8757af02Brian Carlstrom byte[] tmp = new byte[qLength]; 318212855a312dc8ebe081a3e08b1d2d8f8757af02Brian Carlstrom 328212855a312dc8ebe081a3e08b1d2d8f8757af02Brian Carlstrom System.arraycopy(bytes, bytes.length - tmp.length, tmp, 0, tmp.length); 338212855a312dc8ebe081a3e08b1d2d8f8757af02Brian Carlstrom 348212855a312dc8ebe081a3e08b1d2d8f8757af02Brian Carlstrom return tmp; 358212855a312dc8ebe081a3e08b1d2d8f8757af02Brian Carlstrom } 368212855a312dc8ebe081a3e08b1d2d8f8757af02Brian Carlstrom else if (qLength > bytes.length) 378212855a312dc8ebe081a3e08b1d2d8f8757af02Brian Carlstrom { 388212855a312dc8ebe081a3e08b1d2d8f8757af02Brian Carlstrom byte[] tmp = new byte[qLength]; 398212855a312dc8ebe081a3e08b1d2d8f8757af02Brian Carlstrom 408212855a312dc8ebe081a3e08b1d2d8f8757af02Brian Carlstrom System.arraycopy(bytes, 0, tmp, tmp.length - bytes.length, bytes.length); 418212855a312dc8ebe081a3e08b1d2d8f8757af02Brian Carlstrom 428212855a312dc8ebe081a3e08b1d2d8f8757af02Brian Carlstrom return tmp; 438212855a312dc8ebe081a3e08b1d2d8f8757af02Brian Carlstrom } 448212855a312dc8ebe081a3e08b1d2d8f8757af02Brian Carlstrom 458212855a312dc8ebe081a3e08b1d2d8f8757af02Brian Carlstrom return bytes; 468212855a312dc8ebe081a3e08b1d2d8f8757af02Brian Carlstrom } 478212855a312dc8ebe081a3e08b1d2d8f8757af02Brian Carlstrom} 48