File: reset.cc

package info (click to toggle)
bobcat 6.11.00-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 15,292 kB
  • sloc: cpp: 21,370; fortran: 6,507; makefile: 2,787; sh: 724; perl: 401; ansic: 26
file content (31 lines) | stat: -rw-r--r-- 791 bytes parent folder | download | duplicates (3)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
#include "hmacbuf.ih"

void HMacBuf::reset()
{
    if (d_ctx != 0 or d_key.empty())
        return;

    //  man evp_mac_fetch:
    // MACs are a bit complex insofar that some of them use other algorithms
    // for actual computation.  HMAC uses a digest, and CMAC uses a cipher.

    EVP_MAC *mac = EVP_MAC_fetch(0, "cmac", 0);

    OSSL_PARAM params[] =
    {
        OSSL_PARAM_construct_utf8_string("cipher", &d_cipher[0], 0),
        OSSL_PARAM_construct_utf8_string("digest", &d_digest[0], 0),
        OSSL_PARAM_construct_end()
    };

    d_ctx = EVP_MAC_CTX_new(mac);

    call(EVP_MAC_init(d_ctx,
                reinterpret_cast<unsigned char const *>(d_key.c_str()),
                d_key.length(), params), "init");

    EVP_MAC_free(mac);

    d_digest.erase();
    setp();
}