package io.kaif.token; import java.io.UnsupportedEncodingException; import java.security.InvalidKeyException; import java.security.NoSuchAlgorithmException; import javax.crypto.Mac; import javax.crypto.spec.SecretKeySpec; class Hmac { public static Hmac createSHA1(final String key) { try { return new Hmac(key.getBytes("UTF-8")); } catch (final UnsupportedEncodingException e) { throw new RuntimeException("unexpected", e); } } private final Mac mac; private Hmac(final byte[] keys) { try { mac = Mac.getInstance("HmacSHA1"); final SecretKeySpec secret = new SecretKeySpec(keys, mac.getAlgorithm()); mac.init(secret); } catch (final InvalidKeyException e) { throw new RuntimeException(e); } catch (final NoSuchAlgorithmException e) { throw new RuntimeException(e); } } public synchronized byte[] digest(final byte[] data) { return mac.doFinal(data); } }