1b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallampackage org.bouncycastle.crypto.io; 2b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam 3b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallamimport java.io.IOException; 4b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallamimport java.io.OutputStream; 5b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam 6b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallamimport org.bouncycastle.crypto.Mac; 7b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam 8b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallampublic class MacOutputStream 94c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom extends OutputStream 10b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam{ 11b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam protected Mac mac; 12b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam 13b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam public MacOutputStream( 14b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam Mac mac) 15b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam { 16b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam this.mac = mac; 17b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam } 18b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam 19b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam public void write(int b) 20b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam throws IOException 21b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam { 22b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam mac.update((byte)b); 23b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam } 24b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam 25b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam public void write( 26b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam byte[] b, 27b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam int off, 28b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam int len) 29b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam throws IOException 30b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam { 31b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam mac.update(b, off, len); 32b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam } 33b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam 344c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom public byte[] getMac() 35b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam { 364c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom byte[] res = new byte[mac.getMacSize()]; 374c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom 384c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom mac.doFinal(res, 0); 394c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom 404c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom return res; 41b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam } 42b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam} 43