--- /dev/null
+#include "Mac.h"
+#include "Crypto.h"
+
+Mac::Mac() {
+}
+
+void Mac::update(Array<char> *array, int32_t offset, int32_t len) {
+ sha2_hmac_update(&ctx, (const unsigned char *) &array->internalArray()[offset], len);
+}
+
+Array<char> * Mac::doFinal() {
+ Array<char> * hmac = new Array<char>(32);
+ sha2_hmac_finish(&ctx, (unsigned char *) hmac->internalArray());
+ return hmac;
+}
+
+void Mac::init(AESKey *key) {
+ sha2_hmac_starts(&ctx, (const unsigned char *) key->getKey()->internalArray(), key->getKey()->length(), false);
+}