1 package org.bouncycastle.util.encoders; 2 3 import java.io.ByteArrayOutputStream; 4 import java.io.IOException; 5 import java.io.OutputStream; 6 7 public class Hex 8 { 9 private static final Encoder encoder = new HexEncoder(); 10 11 /** 12 * encode the input data producing a Hex encoded byte array. 13 * 14 * @return a byte array containing the Hex encoded data. 15 */ 16 public static byte[] encode( 17 byte[] data) 18 { 19 return encode(data, 0, data.length); 20 } 21 22 /** 23 * encode the input data producing a Hex encoded byte array. 24 * 25 * @return a byte array containing the Hex encoded data. 26 */ 27 public static byte[] encode( 28 byte[] data, 29 int off, 30 int length) 31 { 32 ByteArrayOutputStream bOut = new ByteArrayOutputStream(); 33 34 try 35 { 36 encoder.encode(data, off, length, bOut); 37 } 38 catch (IOException e) 39 { 40 throw new RuntimeException("exception encoding Hex string: " + e); 41 } 42 43 return bOut.toByteArray(); 44 } 45 46 /** 47 * Hex encode the byte data writing it to the given output stream. 48 * 49 * @return the number of bytes produced. 50 */ 51 public static int encode( 52 byte[] data, 53 OutputStream out) 54 throws IOException 55 { 56 return encoder.encode(data, 0, data.length, out); 57 } 58 59 /** 60 * Hex encode the byte data writing it to the given output stream. 61 * 62 * @return the number of bytes produced. 63 */ 64 public static int encode( 65 byte[] data, 66 int off, 67 int length, 68 OutputStream out) 69 throws IOException 70 { 71 return encoder.encode(data, off, length, out); 72 } 73 74 /** 75 * decode the Hex encoded input data. It is assumed the input data is valid. 76 * 77 * @return a byte array representing the decoded data. 78 */ 79 public static byte[] decode( 80 byte[] data) 81 { 82 ByteArrayOutputStream bOut = new ByteArrayOutputStream(); 83 84 try 85 { 86 encoder.decode(data, 0, data.length, bOut); 87 } 88 catch (IOException e) 89 { 90 throw new RuntimeException("exception decoding Hex string: " + e); 91 } 92 93 return bOut.toByteArray(); 94 } 95 96 /** 97 * decode the Hex encoded String data - whitespace will be ignored. 98 * 99 * @return a byte array representing the decoded data. 100 */ 101 public static byte[] decode( 102 String data) 103 { 104 ByteArrayOutputStream bOut = new ByteArrayOutputStream(); 105 106 try 107 { 108 encoder.decode(data, bOut); 109 } 110 catch (IOException e) 111 { 112 throw new RuntimeException("exception decoding Hex string: " + e); 113 } 114 115 return bOut.toByteArray(); 116 } 117 118 /** 119 * decode the Hex encoded String data writing it to the given output stream, 120 * whitespace characters will be ignored. 121 * 122 * @return the number of bytes produced. 123 */ 124 public static int decode( 125 String data, 126 OutputStream out) 127 throws IOException 128 { 129 return encoder.decode(data, out); 130 } 131 } 132