# HMAC

## MAC

[HMAC video](https://www.youtube.com/watch?v=DiLPn_ldAAQ\&index=22\&list=PL6N5qY2nvvJE8X75VkXglSrVhLv1tVcfy)

In order to understand *hex* and *type* parameters read [Hash](https://github.com/liesware/coherence/wiki/Hash)

### HMAC

[spec](https://tools.ietf.org/html/rfc2104)

Description: Message authentication code based on hash.

Uses: General porpuse

## How to ???

```python
import requests
import json
import os,binascii

def sending(message):
    url = 'http://127.0.0.1:6613/'
    response = requests.post(url, data=message)
    print response.content
    return response.content

data_js='{"version":1,"algorithm":"HMAC","type":"string","plaintext":"Hello world!","hex":0,\
"key":"0123456789ABCDEF0123456789ABCDEF","family":"sha3_512"}'
sending(data_js)
```

Calculate HMAC-SHA3*512 to string* "Hello world!"\_ with the key given.

On *data\_js\["family"]* can be one of *{sha3\_512, sha3\_384, sha3\_256, sha3\_224, sha\_512, sha\_384, sha\_256, sha\_224, sha\_1 ,whirlpool}*

Json to HMAC string

```javascript
{"version":1,"algorithm":"HMAC","type":"string","plaintext":"your string","hex":BOOL,
"key":"hex string","family":"hash flavor"}
```

Json to HMAC file

```javascript
{"version":1,"algorithm":"HMAC","type":"file","file":"your file",
"key":"hex string","family":"hash flavor"}
```
