LTKCPP-- LLRP Toolkit C Plus Plus Library
cmac.h
00001 /* crypto/cmac/cmac.h */
00002 /*
00003  * Written by Dr Stephen N Henson (steve@openssl.org) for the OpenSSL
00004  * project.
00005  */
00006 /* ====================================================================
00007  * Copyright (c) 2010 The OpenSSL Project.  All rights reserved.
00008  *
00009  * Redistribution and use in source and binary forms, with or without
00010  * modification, are permitted provided that the following conditions
00011  * are met:
00012  *
00013  * 1. Redistributions of source code must retain the above copyright
00014  *    notice, this list of conditions and the following disclaimer.
00015  *
00016  * 2. Redistributions in binary form must reproduce the above copyright
00017  *    notice, this list of conditions and the following disclaimer in
00018  *    the documentation and/or other materials provided with the
00019  *    distribution.
00020  *
00021  * 3. All advertising materials mentioning features or use of this
00022  *    software must display the following acknowledgment:
00023  *    "This product includes software developed by the OpenSSL Project
00024  *    for use in the OpenSSL Toolkit. (http://www.OpenSSL.org/)"
00025  *
00026  * 4. The names "OpenSSL Toolkit" and "OpenSSL Project" must not be used to
00027  *    endorse or promote products derived from this software without
00028  *    prior written permission. For written permission, please contact
00029  *    licensing@OpenSSL.org.
00030  *
00031  * 5. Products derived from this software may not be called "OpenSSL"
00032  *    nor may "OpenSSL" appear in their names without prior written
00033  *    permission of the OpenSSL Project.
00034  *
00035  * 6. Redistributions of any form whatsoever must retain the following
00036  *    acknowledgment:
00037  *    "This product includes software developed by the OpenSSL Project
00038  *    for use in the OpenSSL Toolkit (http://www.OpenSSL.org/)"
00039  *
00040  * THIS SOFTWARE IS PROVIDED BY THE OpenSSL PROJECT ``AS IS'' AND ANY
00041  * EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
00042  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
00043  * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE OpenSSL PROJECT OR
00044  * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
00045  * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
00046  * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
00047  * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
00048  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
00049  * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
00050  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
00051  * OF THE POSSIBILITY OF SUCH DAMAGE.
00052  * ====================================================================
00053  */
00054 
00055 #ifndef HEADER_CMAC_H
00056 # define HEADER_CMAC_H
00057 
00058 #ifdef __cplusplus
00059 extern "C" {
00060 #endif
00061 
00062 # include <openssl/evp.h>
00063 
00064 /* Opaque */
00065 typedef struct CMAC_CTX_st CMAC_CTX;
00066 
00067 CMAC_CTX *CMAC_CTX_new(void);
00068 void CMAC_CTX_cleanup(CMAC_CTX *ctx);
00069 void CMAC_CTX_free(CMAC_CTX *ctx);
00070 EVP_CIPHER_CTX *CMAC_CTX_get0_cipher_ctx(CMAC_CTX *ctx);
00071 int CMAC_CTX_copy(CMAC_CTX *out, const CMAC_CTX *in);
00072 
00073 int CMAC_Init(CMAC_CTX *ctx, const void *key, size_t keylen,
00074               const EVP_CIPHER *cipher, ENGINE *impl);
00075 int CMAC_Update(CMAC_CTX *ctx, const void *data, size_t dlen);
00076 int CMAC_Final(CMAC_CTX *ctx, unsigned char *out, size_t *poutlen);
00077 int CMAC_resume(CMAC_CTX *ctx);
00078 
00079 #ifdef  __cplusplus
00080 }
00081 #endif
00082 #endif