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