Cipher Fayadh
Block cipher Feistel 128-bit dengan fungsi putaran sigma-delta
Loading...
Searching...
No Matches
Cmac Class Reference

Generator dan verifikator Message Authentication Code berbasis CMAC (RFC 4493). More...

#include <mac.hpp>

Public Member Functions

 Cmac (const BlockCipher &cipher)
 Membuat objek CMAC dan menurunkan subkey K1 dan K2 dari cipher.
 Cmac (const BlockCipher &&)=delete
 Cmac (const Cmac &)=delete
Cmac & operator= (const Cmac &)=delete
void update (const uint8_t *data, size_t len)
 Menambahkan chunk data ke dalam perhitungan CMAC secara inkremental.
void finalize (uint8_t tag[MAC_TAG_SIZE])
 Menyelesaikan perhitungan tag CMAC, menuliskan tag ke buffer keluaran, dan mereset state internal agar objek siap digunakan kembali.

Static Public Member Functions

static void compute (const BlockCipher &cipher, const uint8_t *data, size_t len, uint8_t tag[MAC_TAG_SIZE])
 Menghitung tag CMAC untuk seluruh data dalam satu pemanggilan (one-shot).
static bool verify (const BlockCipher &cipher, const uint8_t *data, size_t len, const uint8_t tag[MAC_TAG_SIZE])
 Memverifikasi keabsahan tag CMAC dalam waktu konstan (constant-time).

Detailed Description

Generator dan verifikator Message Authentication Code berbasis CMAC (RFC 4493).

Constructor & Destructor Documentation

◆ Cmac()

Cmac::Cmac ( const BlockCipher & cipher)
explicit

Membuat objek CMAC dan menurunkan subkey K1 dan K2 dari cipher.

Parameters
[in]cipherBlock cipher 128-bit yang dipakai. Hanya disimpan sebagai referensi, jadi objek ini harus tetap hidup selama Cmac dipakai.

Member Function Documentation

◆ compute()

void Cmac::compute ( const BlockCipher & cipher,
const uint8_t * data,
size_t len,
uint8_t tag[MAC_TAG_SIZE] )
static

Menghitung tag CMAC untuk seluruh data dalam satu pemanggilan (one-shot).

Parameters
[in]cipherBlock cipher 128-bit yang dipakai.
[in]dataData yang diautentikasi.
[in]lenPanjang data dalam byte.
[out]tagBuffer 16-byte untuk tag hasil perhitungan.
Exceptions
std::invalid_argumentjika data nullptr saat len > 0, atau tag nullptr.

◆ finalize()

void Cmac::finalize ( uint8_t tag[MAC_TAG_SIZE])

Menyelesaikan perhitungan tag CMAC, menuliskan tag ke buffer keluaran, dan mereset state internal agar objek siap digunakan kembali.

Parameters
[out]tagBuffer 16-byte untuk menyimpan tag hasil perhitungan.
Exceptions
std::invalid_argumentjika tag bernilai nullptr.

◆ update()

void Cmac::update ( const uint8_t * data,
size_t len )

Menambahkan chunk data ke dalam perhitungan CMAC secara inkremental.

Parameters
[in]dataPointer ke data byte masukan.
[in]lenPanjang data byte masukan.
Exceptions
std::invalid_argumentjika data bernilai nullptr saat len > 0.

◆ verify()

bool Cmac::verify ( const BlockCipher & cipher,
const uint8_t * data,
size_t len,
const uint8_t tag[MAC_TAG_SIZE] )
static

Memverifikasi keabsahan tag CMAC dalam waktu konstan (constant-time).

Parameters
[in]cipherBlock cipher 128-bit yang dipakai.
[in]dataData yang diautentikasi.
[in]lenPanjang data dalam byte.
[in]tagTag 16-byte yang akan dicocokkan.
Returns
true jika tag cocok dengan hasil perhitungan, false jika tidak.
Exceptions
std::invalid_argumentjika tag nullptr, atau data nullptr saat len > 0.

The documentation for this class was generated from the following files: