1392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom/* crypto/cmac/cmac.h */ 2392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom/* Written by Dr Stephen N Henson (steve@openssl.org) for the OpenSSL 3392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom * project. 4392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom */ 5392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom/* ==================================================================== 6392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom * Copyright (c) 2010 The OpenSSL Project. All rights reserved. 7392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom * 8392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom * Redistribution and use in source and binary forms, with or without 9392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom * modification, are permitted provided that the following conditions 10392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom * are met: 11392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom * 12392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom * 1. Redistributions of source code must retain the above copyright 13392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom * notice, this list of conditions and the following disclaimer. 14392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom * 15392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom * 2. Redistributions in binary form must reproduce the above copyright 16392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom * notice, this list of conditions and the following disclaimer in 17392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom * the documentation and/or other materials provided with the 18392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom * distribution. 19392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom * 20392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom * 3. All advertising materials mentioning features or use of this 21392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom * software must display the following acknowledgment: 22392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom * "This product includes software developed by the OpenSSL Project 23392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom * for use in the OpenSSL Toolkit. (http://www.OpenSSL.org/)" 24392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom * 25392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom * 4. The names "OpenSSL Toolkit" and "OpenSSL Project" must not be used to 26392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom * endorse or promote products derived from this software without 27392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom * prior written permission. For written permission, please contact 28392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom * licensing@OpenSSL.org. 29392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom * 30392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom * 5. Products derived from this software may not be called "OpenSSL" 31392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom * nor may "OpenSSL" appear in their names without prior written 32392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom * permission of the OpenSSL Project. 33392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom * 34392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom * 6. Redistributions of any form whatsoever must retain the following 35392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom * acknowledgment: 36392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom * "This product includes software developed by the OpenSSL Project 37392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom * for use in the OpenSSL Toolkit (http://www.OpenSSL.org/)" 38392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom * 39392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom * THIS SOFTWARE IS PROVIDED BY THE OpenSSL PROJECT ``AS IS'' AND ANY 40392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom * EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 41392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR 42392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE OpenSSL PROJECT OR 43392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 44392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT 45392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; 46392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 47392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, 48392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 49392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED 50392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom * OF THE POSSIBILITY OF SUCH DAMAGE. 51392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom * ==================================================================== 52392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom */ 53392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom 54392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom 55392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom#ifndef HEADER_CMAC_H 56392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom#define HEADER_CMAC_H 57392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom 58392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom#ifdef __cplusplus 59392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstromextern "C" { 60392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom#endif 61392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom 62392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom#include <openssl/evp.h> 63392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom 64392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom/* Opaque */ 65392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstromtypedef struct CMAC_CTX_st CMAC_CTX; 66392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom 67392aa7cc7d2b122614c5393c3e357da07fd07af3Brian CarlstromCMAC_CTX *CMAC_CTX_new(void); 68392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstromvoid CMAC_CTX_cleanup(CMAC_CTX *ctx); 69392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstromvoid CMAC_CTX_free(CMAC_CTX *ctx); 70392aa7cc7d2b122614c5393c3e357da07fd07af3Brian CarlstromEVP_CIPHER_CTX *CMAC_CTX_get0_cipher_ctx(CMAC_CTX *ctx); 71392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstromint CMAC_CTX_copy(CMAC_CTX *out, const CMAC_CTX *in); 72392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom 73392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstromint CMAC_Init(CMAC_CTX *ctx, const void *key, size_t keylen, 74392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom const EVP_CIPHER *cipher, ENGINE *impl); 75392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstromint CMAC_Update(CMAC_CTX *ctx, const void *data, size_t dlen); 76392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstromint CMAC_Final(CMAC_CTX *ctx, unsigned char *out, size_t *poutlen); 77392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstromint CMAC_resume(CMAC_CTX *ctx); 78392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom 79392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom#ifdef __cplusplus 80392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom} 81392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom#endif 82392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom#endif 83