# CryptoMacBinding

`import { CryptoMacBinding } from "destack:crypto/binding";`

Mac binding family.

```ds title="CryptoMacBinding"
export interface CryptoMacBinding {
    computeMac(key: CryptoKeyHandle, parameters: &'a readonly CryptoMacParameters, payload: &'b readonly [uint8]): Result<uint8[], HostError>;
    verifyMac(key: CryptoKeyHandle, parameters: &'a readonly CryptoMacParameters, payload: &'b readonly [uint8], tag: &'c readonly [uint8]): Result<boolean, HostError>;
    openMac(key: CryptoKeyHandle, parameters: &'a readonly CryptoMacParameters): Result<CryptoMacHandle, HostError>;
    updateMac(mac: CryptoMacHandle, payload: &'a readonly [uint8]): Result<void, HostError>;
    finishMac(mac: CryptoMacHandle): Result<uint8[], HostError>;
    closeMac(mac: CryptoMacHandle): Result<void, HostError>;
}
```

[language/library/src/crypto/binding/mac.ds:22:94](https://github.com/destack-sh/destack/blob/main/language/library/src/crypto/binding/mac.ds#L22-L94)

## Members

### `computeMac(key: CryptoKeyHandle, parameters: &'a readonly CryptoMacParameters, payload: &'b readonly [uint8]): Result<uint8[], HostError>`

Compute one message authentication code in one shot.

### `verifyMac(key: CryptoKeyHandle, parameters: &'a readonly CryptoMacParameters, payload: &'b readonly [uint8], tag: &'c readonly [uint8]): Result<boolean, HostError>`

Verify one message authentication code in one shot.

### `openMac(key: CryptoKeyHandle, parameters: &'a readonly CryptoMacParameters): Result<CryptoMacHandle, HostError>`

Open one streaming MAC context.

### `updateMac(mac: CryptoMacHandle, payload: &'a readonly [uint8]): Result<void, HostError>`

Update one streaming MAC context.

### `finishMac(mac: CryptoMacHandle): Result<uint8[], HostError>`

Finalize one streaming MAC context and return one tag.

### `closeMac(mac: CryptoMacHandle): Result<void, HostError>`

Close one streaming MAC context.
