package com.vtence.molecule.crypto;
import org.junit.Test;
import static java.nio.charset.StandardCharsets.UTF_8;
import static org.hamcrest.Matchers.equalTo;
import static org.hamcrest.Matchers.is;
import static org.hamcrest.Matchers.not;
import static org.junit.Assert.assertThat;
public class HMacDigestTest {
HMacDigest hmac = HMacDigest.SHA256();
String secret = "secret";
@Test
public void
computesDigestBasedOnSecretKey() throws Exception {
byte[] digest = hmac.compute(secret, b("content"));
assertThat("digest", s(digest), not(equalTo("content")));
assertThat("valid digest", hmac.verify(secret, b("content"), digest), is(true));
assertThat("tampered digest", hmac.verify(secret, b("content"), b("tampered")), is(false));
assertThat("different content", hmac.verify(secret, b("other content"), digest), is(false));
}
private byte[] b(String s) {
return s.getBytes(UTF_8);
}
private String s(byte[] b) {
return new String(b, UTF_8);
}
}