use of java.security.DigestOutputStream in project robovm by robovm.
the class DigestOutputStreamTest method test_writeI.
/**
* java.security.DigestOutputStream#write(int)
*/
public void test_writeI() throws Exception {
// Test for method void java.security.DigestOutputStream.write(int)
DigestOutputStream dos = new DigestOutputStream(new ByteArrayOutputStream(), MessageDigest.getInstance("SHA"));
dos.write((byte) 43);
byte[] digestResult = dos.getMessageDigest().digest();
byte[] expected = { -87, 121, -17, 16, -52, 111, 106, 54, -33, 107, -118, 50, 51, 7, -18, 59, -78, -30, -37, -100 };
assertTrue("Digest did not return expected result.", Arrays.equals(digestResult, expected));
}
use of java.security.DigestOutputStream in project robovm by robovm.
the class DigestOutputStreamTest method testWriteint02.
/**
* Test #2 for <code>write(int)</code> method<br>
* Test #1 for <code>on(boolean)</code> method<br>
*
* Assertion: <code>write(int)</code> must not update digest if it is off<br>
* Assertion: <code>on(boolean)</code> turns digest functionality on
* if <code>true</code> passed as a parameter or off if <code>false</code>
* passed
*/
public final void testWriteint02() throws IOException {
for (int k = 0; k < algorithmName.length; k++) {
try {
MessageDigest md = MessageDigest.getInstance(algorithmName[k]);
ByteArrayOutputStream bos = new ByteArrayOutputStream(MY_MESSAGE_LEN);
DigestOutputStream dos = new DigestOutputStream(bos, md);
// turn digest off
dos.on(false);
for (int i = 0; i < MY_MESSAGE_LEN; i++) {
dos.write(myMessage[i]);
}
// check that bytes have been written correctly
assertTrue("write", Arrays.equals(MDGoldenData.getMessage(), bos.toByteArray()));
// check that digest value has not been updated by write()
assertTrue("update", Arrays.equals(dos.getMessageDigest().digest(), MDGoldenData.getDigest(algorithmName[k] + "_NU")));
return;
} catch (NoSuchAlgorithmException e) {
// allowed failure
}
}
fail(getName() + ": no MessageDigest algorithms available - test not performed");
}
use of java.security.DigestOutputStream in project robovm by robovm.
the class DigestOutputStreamTest method testWriteint03.
/**
* Test #3 for <code>write(int)</code> method<br>
*
* Assertion: broken <code>DigestOutputStream</code>instance:
* <code>OutputStream</code> not set. <code>write(int)</code> must
* not work
*/
public final void testWriteint03() throws IOException {
for (int k = 0; k < algorithmName.length; k++) {
try {
MessageDigest md = MessageDigest.getInstance(algorithmName[k]);
DigestOutputStream dos = new DigestOutputStream(null, md);
// must result in an exception
try {
for (int i = 0; i < MY_MESSAGE_LEN; i++) {
dos.write(myMessage[i]);
}
fail("OutputStream not set. write(int) must not work");
} catch (Exception e) {
return;
}
} catch (NoSuchAlgorithmException e) {
// allowed failure
}
}
fail(getName() + ": no MessageDigest algorithms available - test not performed");
}
use of java.security.DigestOutputStream in project robovm by robovm.
the class DigestOutputStreamTest method test_write$BII_3.
/**
* Test #3 for <code>write(byte[],int,int)</code> method<br>
*
* Assertion: put bytes into output stream<br>
*
* Assertion: updates associated digest<br>
*/
public final void test_write$BII_3() throws NoSuchAlgorithmException, IOException {
// check precondition
assertTrue(MY_MESSAGE_LEN % (CHUNK_SIZE + 1) != 0);
for (int k = 0; k < algorithmName.length; k++) {
try {
ByteArrayOutputStream bos = new ByteArrayOutputStream(MY_MESSAGE_LEN);
MessageDigest md = MessageDigest.getInstance(algorithmName[k]);
DigestOutputStream dos = new DigestOutputStream(bos, md);
// write message by chunks
for (int i = 0; i < MY_MESSAGE_LEN / (CHUNK_SIZE + 1); i++) {
dos.write(myMessage, i * (CHUNK_SIZE + 1), CHUNK_SIZE + 1);
}
// write remaining bytes
dos.write(myMessage, MY_MESSAGE_LEN / (CHUNK_SIZE + 1) * (CHUNK_SIZE + 1), MY_MESSAGE_LEN % (CHUNK_SIZE + 1));
// check write
assertTrue("write", Arrays.equals(myMessage, bos.toByteArray()));
// check that associated digest has been updated properly
assertTrue("update", Arrays.equals(dos.getMessageDigest().digest(), MDGoldenData.getDigest(algorithmName[k])));
return;
} catch (NoSuchAlgorithmException e) {
// allowed failure
}
}
fail(getName() + ": no MessageDigest algorithms available - test not performed");
}
use of java.security.DigestOutputStream in project iosched by google.
the class CloudFileManager method calulateHash.
public static byte[] calulateHash(JsonElement contents) {
MessageDigest md;
try {
md = MessageDigest.getInstance("MD5");
} catch (NoSuchAlgorithmException e) {
throw new InternalError("MD5 MessageDigest is not available");
}
OutputStream byteSink = new OutputStream() {
@Override
public void write(int b) throws IOException {
// ignore, since this is only used to calculate MD5
}
};
DigestOutputStream dis = new DigestOutputStream(byteSink, md);
new Gson().toJson(contents, new OutputStreamWriter(dis, Charset.forName(DEFAULT_CHARSET_NAME)));
return dis.getMessageDigest().digest();
}
Aggregations