Blame crypto/cmac/cm_ameth.c

Packit c4476c
/*
Packit c4476c
 * Copyright 2010-2016 The OpenSSL Project Authors. All Rights Reserved.
Packit c4476c
 *
Packit c4476c
 * Licensed under the OpenSSL license (the "License").  You may not use
Packit c4476c
 * this file except in compliance with the License.  You can obtain a copy
Packit c4476c
 * in the file LICENSE in the source distribution or at
Packit c4476c
 * https://www.openssl.org/source/license.html
Packit c4476c
 */
Packit c4476c
Packit c4476c
#include <stdio.h>
Packit c4476c
#include "internal/cryptlib.h"
Packit c4476c
#include <openssl/evp.h>
Packit c4476c
#include <openssl/cmac.h>
Packit c4476c
#include "crypto/asn1.h"
Packit c4476c
Packit c4476c
/*
Packit c4476c
 * CMAC "ASN1" method. This is just here to indicate the maximum CMAC output
Packit c4476c
 * length and to free up a CMAC key.
Packit c4476c
 */
Packit c4476c
Packit c4476c
static int cmac_size(const EVP_PKEY *pkey)
Packit c4476c
{
Packit c4476c
    return EVP_MAX_BLOCK_LENGTH;
Packit c4476c
}
Packit c4476c
Packit c4476c
static void cmac_key_free(EVP_PKEY *pkey)
Packit c4476c
{
Packit c4476c
    CMAC_CTX *cmctx = EVP_PKEY_get0(pkey);
Packit c4476c
    CMAC_CTX_free(cmctx);
Packit c4476c
}
Packit c4476c
Packit c4476c
const EVP_PKEY_ASN1_METHOD cmac_asn1_meth = {
Packit c4476c
    EVP_PKEY_CMAC,
Packit c4476c
    EVP_PKEY_CMAC,
Packit c4476c
    0,
Packit c4476c
Packit c4476c
    "CMAC",
Packit c4476c
    "OpenSSL CMAC method",
Packit c4476c
Packit c4476c
    0, 0, 0, 0,
Packit c4476c
Packit c4476c
    0, 0, 0,
Packit c4476c
Packit c4476c
    cmac_size,
Packit c4476c
    0, 0,
Packit c4476c
    0, 0, 0, 0, 0, 0, 0,
Packit c4476c
Packit c4476c
    cmac_key_free,
Packit c4476c
    0,
Packit c4476c
    0, 0
Packit c4476c
};