MacAuthenticatedInputStreampublic class MacAuthenticatedInputStream extends FilterInputStream An input stream filter that applies a MAC to the data passing through it. At
the end of the data that should be authenticated, the tag can be calculated.
After that, the stream should not be used. |
Fields Summary |
---|
private final Mac | mMac |
Constructors Summary |
---|
public MacAuthenticatedInputStream(InputStream in, Mac mac)
super(in);
mMac = mac;
|
Methods Summary |
---|
public boolean | isTagEqual(byte[] tag)
final byte[] actualTag = mMac.doFinal();
if (tag == null || actualTag == null || tag.length != actualTag.length) {
return false;
}
/*
* Attempt to prevent timing attacks by doing the same amount of work
* whether the first byte matches or not. Do not change this to a loop
* that exits early when a byte does not match.
*/
int value = 0;
for (int i = 0; i < tag.length; i++) {
value |= tag[i] ^ actualTag[i];
}
return value == 0;
| public int | read()
final int b = super.read();
if (b >= 0) {
mMac.update((byte) b);
}
return b;
| public int | read(byte[] buffer, int offset, int count)
int numRead = super.read(buffer, offset, count);
if (numRead > 0) {
mMac.update(buffer, offset, numRead);
}
return numRead;
|
|