1656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project/* evp_locl.h */ 2e45f106cb6b47af1f21efe76e933bdea2f5dd1caNagendra Modadugu/* Written by Dr Stephen N Henson (steve@openssl.org) for the OpenSSL 3656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * project 2000. 4656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project */ 5656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project/* ==================================================================== 6656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * Copyright (c) 1999 The OpenSSL Project. All rights reserved. 7656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * 8656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * Redistribution and use in source and binary forms, with or without 9656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * modification, are permitted provided that the following conditions 10656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * are met: 11656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * 12656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * 1. Redistributions of source code must retain the above copyright 13656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * notice, this list of conditions and the following disclaimer. 14656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * 15656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * 2. Redistributions in binary form must reproduce the above copyright 16656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * notice, this list of conditions and the following disclaimer in 17656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * the documentation and/or other materials provided with the 18656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * distribution. 19656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * 20656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * 3. All advertising materials mentioning features or use of this 21656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * software must display the following acknowledgment: 22656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * "This product includes software developed by the OpenSSL Project 23656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * for use in the OpenSSL Toolkit. (http://www.OpenSSL.org/)" 24656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * 25656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * 4. The names "OpenSSL Toolkit" and "OpenSSL Project" must not be used to 26656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * endorse or promote products derived from this software without 27656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * prior written permission. For written permission, please contact 28656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * licensing@OpenSSL.org. 29656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * 30656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * 5. Products derived from this software may not be called "OpenSSL" 31656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * nor may "OpenSSL" appear in their names without prior written 32656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * permission of the OpenSSL Project. 33656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * 34656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * 6. Redistributions of any form whatsoever must retain the following 35656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * acknowledgment: 36656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * "This product includes software developed by the OpenSSL Project 37656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * for use in the OpenSSL Toolkit (http://www.OpenSSL.org/)" 38656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * 39656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * THIS SOFTWARE IS PROVIDED BY THE OpenSSL PROJECT ``AS IS'' AND ANY 40656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 41656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR 42656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE OpenSSL PROJECT OR 43656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 44656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT 45656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; 46656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 47656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, 48656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 49656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED 50656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * OF THE POSSIBILITY OF SUCH DAMAGE. 51656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * ==================================================================== 52656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * 53656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * This product includes cryptographic software written by Eric Young 54656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * (eay@cryptsoft.com). This product includes software written by Tim 55656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * Hudson (tjh@cryptsoft.com). 56656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * 57656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project */ 58656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project 59656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project/* Macros to code block cipher wrappers */ 60656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project 61656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project/* Wrapper functions for each cipher mode */ 62656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project 63656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define BLOCK_CIPHER_ecb_loop() \ 64221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom size_t i, bl; \ 65656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project bl = ctx->cipher->block_size;\ 66656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project if(inl < bl) return 1;\ 67656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project inl -= bl; \ 68656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project for(i=0; i <= inl; i+=bl) 69656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project 70656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define BLOCK_CIPHER_func_ecb(cname, cprefix, kstruct, ksched) \ 71221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstromstatic int cname##_ecb_cipher(EVP_CIPHER_CTX *ctx, unsigned char *out, const unsigned char *in, size_t inl) \ 72656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project{\ 73656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project BLOCK_CIPHER_ecb_loop() \ 74656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project cprefix##_ecb_encrypt(in + i, out + i, &((kstruct *)ctx->cipher_data)->ksched, ctx->encrypt);\ 75656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project return 1;\ 76656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project} 77656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project 78221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom#define EVP_MAXCHUNK ((size_t)1<<(sizeof(long)*8-2)) 79221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom 80656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define BLOCK_CIPHER_func_ofb(cname, cprefix, cbits, kstruct, ksched) \ 81221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstromstatic int cname##_ofb_cipher(EVP_CIPHER_CTX *ctx, unsigned char *out, const unsigned char *in, size_t inl) \ 82656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project{\ 83221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom while(inl>=EVP_MAXCHUNK)\ 84221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom {\ 85221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom cprefix##_ofb##cbits##_encrypt(in, out, (long)EVP_MAXCHUNK, &((kstruct *)ctx->cipher_data)->ksched, ctx->iv, &ctx->num);\ 86221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom inl-=EVP_MAXCHUNK;\ 87221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom in +=EVP_MAXCHUNK;\ 88221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom out+=EVP_MAXCHUNK;\ 89221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom }\ 90221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom if (inl)\ 91221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom cprefix##_ofb##cbits##_encrypt(in, out, (long)inl, &((kstruct *)ctx->cipher_data)->ksched, ctx->iv, &ctx->num);\ 92656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project return 1;\ 93656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project} 94656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project 95656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define BLOCK_CIPHER_func_cbc(cname, cprefix, kstruct, ksched) \ 96221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstromstatic int cname##_cbc_cipher(EVP_CIPHER_CTX *ctx, unsigned char *out, const unsigned char *in, size_t inl) \ 97656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project{\ 98221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom while(inl>=EVP_MAXCHUNK) \ 99221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom {\ 100221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom cprefix##_cbc_encrypt(in, out, (long)EVP_MAXCHUNK, &((kstruct *)ctx->cipher_data)->ksched, ctx->iv, ctx->encrypt);\ 101221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom inl-=EVP_MAXCHUNK;\ 102221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom in +=EVP_MAXCHUNK;\ 103221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom out+=EVP_MAXCHUNK;\ 104221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom }\ 105221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom if (inl)\ 106221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom cprefix##_cbc_encrypt(in, out, (long)inl, &((kstruct *)ctx->cipher_data)->ksched, ctx->iv, ctx->encrypt);\ 107656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project return 1;\ 108656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project} 109656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project 110656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define BLOCK_CIPHER_func_cfb(cname, cprefix, cbits, kstruct, ksched) \ 111221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstromstatic int cname##_cfb##cbits##_cipher(EVP_CIPHER_CTX *ctx, unsigned char *out, const unsigned char *in, size_t inl) \ 112656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project{\ 113221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom size_t chunk=EVP_MAXCHUNK;\ 114221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom if (cbits==1) chunk>>=3;\ 115221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom if (inl<chunk) chunk=inl;\ 116221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom while(inl && inl>=chunk)\ 117221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom {\ 118221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom cprefix##_cfb##cbits##_encrypt(in, out, (long)((cbits==1) && !(ctx->flags & EVP_CIPH_FLAG_LENGTH_BITS) ?inl*8:inl), &((kstruct *)ctx->cipher_data)->ksched, ctx->iv, &ctx->num, ctx->encrypt);\ 119221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom inl-=chunk;\ 120221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom in +=chunk;\ 121221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom out+=chunk;\ 122221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom if(inl<chunk) chunk=inl;\ 123221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom }\ 124656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project return 1;\ 125656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project} 126656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project 127656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define BLOCK_CIPHER_all_funcs(cname, cprefix, cbits, kstruct, ksched) \ 128656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project BLOCK_CIPHER_func_cbc(cname, cprefix, kstruct, ksched) \ 129656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project BLOCK_CIPHER_func_cfb(cname, cprefix, cbits, kstruct, ksched) \ 130656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project BLOCK_CIPHER_func_ecb(cname, cprefix, kstruct, ksched) \ 131656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project BLOCK_CIPHER_func_ofb(cname, cprefix, cbits, kstruct, ksched) 132656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project 133656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define BLOCK_CIPHER_def1(cname, nmode, mode, MODE, kstruct, nid, block_size, \ 134656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project key_len, iv_len, flags, init_key, cleanup, \ 135656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project set_asn1, get_asn1, ctrl) \ 136656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Projectstatic const EVP_CIPHER cname##_##mode = { \ 137656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project nid##_##nmode, block_size, key_len, iv_len, \ 138656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project flags | EVP_CIPH_##MODE##_MODE, \ 139656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project init_key, \ 140656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project cname##_##mode##_cipher, \ 141656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project cleanup, \ 142656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project sizeof(kstruct), \ 143656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project set_asn1, get_asn1,\ 144656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project ctrl, \ 145656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project NULL \ 146656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project}; \ 147656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Projectconst EVP_CIPHER *EVP_##cname##_##mode(void) { return &cname##_##mode; } 148656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project 149656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define BLOCK_CIPHER_def_cbc(cname, kstruct, nid, block_size, key_len, \ 150656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project iv_len, flags, init_key, cleanup, set_asn1, \ 151656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project get_asn1, ctrl) \ 152656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source ProjectBLOCK_CIPHER_def1(cname, cbc, cbc, CBC, kstruct, nid, block_size, key_len, \ 153656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project iv_len, flags, init_key, cleanup, set_asn1, get_asn1, ctrl) 154656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project 155656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define BLOCK_CIPHER_def_cfb(cname, kstruct, nid, key_len, \ 156656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project iv_len, cbits, flags, init_key, cleanup, \ 157656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project set_asn1, get_asn1, ctrl) \ 158221304ee937bc0910948a8be1320cb8cc4eb6d36Brian CarlstromBLOCK_CIPHER_def1(cname, cfb##cbits, cfb##cbits, CFB, kstruct, nid, 1, \ 159221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom key_len, iv_len, flags, init_key, cleanup, set_asn1, \ 160221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom get_asn1, ctrl) 161656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project 162656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define BLOCK_CIPHER_def_ofb(cname, kstruct, nid, key_len, \ 163656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project iv_len, cbits, flags, init_key, cleanup, \ 164656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project set_asn1, get_asn1, ctrl) \ 165656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source ProjectBLOCK_CIPHER_def1(cname, ofb##cbits, ofb, OFB, kstruct, nid, 1, \ 166656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project key_len, iv_len, flags, init_key, cleanup, set_asn1, \ 167656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project get_asn1, ctrl) 168656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project 169656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define BLOCK_CIPHER_def_ecb(cname, kstruct, nid, block_size, key_len, \ 17098d58bb80c64b02a33662f0ea80351d4a1535267Brian Carlstrom flags, init_key, cleanup, set_asn1, \ 171656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project get_asn1, ctrl) \ 172656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source ProjectBLOCK_CIPHER_def1(cname, ecb, ecb, ECB, kstruct, nid, block_size, key_len, \ 17398d58bb80c64b02a33662f0ea80351d4a1535267Brian Carlstrom 0, flags, init_key, cleanup, set_asn1, get_asn1, ctrl) 174656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project 175656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define BLOCK_CIPHER_defs(cname, kstruct, \ 176656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project nid, block_size, key_len, iv_len, cbits, flags, \ 177656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project init_key, cleanup, set_asn1, get_asn1, ctrl) \ 178656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source ProjectBLOCK_CIPHER_def_cbc(cname, kstruct, nid, block_size, key_len, iv_len, flags, \ 179656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project init_key, cleanup, set_asn1, get_asn1, ctrl) \ 180656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source ProjectBLOCK_CIPHER_def_cfb(cname, kstruct, nid, key_len, iv_len, cbits, \ 181656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project flags, init_key, cleanup, set_asn1, get_asn1, ctrl) \ 182656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source ProjectBLOCK_CIPHER_def_ofb(cname, kstruct, nid, key_len, iv_len, cbits, \ 183656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project flags, init_key, cleanup, set_asn1, get_asn1, ctrl) \ 18498d58bb80c64b02a33662f0ea80351d4a1535267Brian CarlstromBLOCK_CIPHER_def_ecb(cname, kstruct, nid, block_size, key_len, flags, \ 185656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project init_key, cleanup, set_asn1, get_asn1, ctrl) 186656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project 187656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project 188656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project/* 189656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define BLOCK_CIPHER_defs(cname, kstruct, \ 190656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project nid, block_size, key_len, iv_len, flags,\ 191656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project init_key, cleanup, set_asn1, get_asn1, ctrl)\ 192656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Projectstatic const EVP_CIPHER cname##_cbc = {\ 193656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project nid##_cbc, block_size, key_len, iv_len, \ 194656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project flags | EVP_CIPH_CBC_MODE,\ 195656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project init_key,\ 196656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project cname##_cbc_cipher,\ 197656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project cleanup,\ 198656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project sizeof(EVP_CIPHER_CTX)-sizeof((((EVP_CIPHER_CTX *)NULL)->c))+\ 199656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project sizeof((((EVP_CIPHER_CTX *)NULL)->c.kstruct)),\ 200656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project set_asn1, get_asn1,\ 201656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project ctrl, \ 202656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project NULL \ 203656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project};\ 204656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Projectconst EVP_CIPHER *EVP_##cname##_cbc(void) { return &cname##_cbc; }\ 205656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Projectstatic const EVP_CIPHER cname##_cfb = {\ 206656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project nid##_cfb64, 1, key_len, iv_len, \ 207656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project flags | EVP_CIPH_CFB_MODE,\ 208656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project init_key,\ 209656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project cname##_cfb_cipher,\ 210656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project cleanup,\ 211656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project sizeof(EVP_CIPHER_CTX)-sizeof((((EVP_CIPHER_CTX *)NULL)->c))+\ 212656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project sizeof((((EVP_CIPHER_CTX *)NULL)->c.kstruct)),\ 213656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project set_asn1, get_asn1,\ 214656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project ctrl,\ 215656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project NULL \ 216656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project};\ 217656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Projectconst EVP_CIPHER *EVP_##cname##_cfb(void) { return &cname##_cfb; }\ 218656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Projectstatic const EVP_CIPHER cname##_ofb = {\ 219656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project nid##_ofb64, 1, key_len, iv_len, \ 220656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project flags | EVP_CIPH_OFB_MODE,\ 221656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project init_key,\ 222656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project cname##_ofb_cipher,\ 223656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project cleanup,\ 224656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project sizeof(EVP_CIPHER_CTX)-sizeof((((EVP_CIPHER_CTX *)NULL)->c))+\ 225656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project sizeof((((EVP_CIPHER_CTX *)NULL)->c.kstruct)),\ 226656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project set_asn1, get_asn1,\ 227656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project ctrl,\ 228656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project NULL \ 229656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project};\ 230656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Projectconst EVP_CIPHER *EVP_##cname##_ofb(void) { return &cname##_ofb; }\ 231656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Projectstatic const EVP_CIPHER cname##_ecb = {\ 232656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project nid##_ecb, block_size, key_len, iv_len, \ 233656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project flags | EVP_CIPH_ECB_MODE,\ 234656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project init_key,\ 235656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project cname##_ecb_cipher,\ 236656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project cleanup,\ 237656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project sizeof(EVP_CIPHER_CTX)-sizeof((((EVP_CIPHER_CTX *)NULL)->c))+\ 238656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project sizeof((((EVP_CIPHER_CTX *)NULL)->c.kstruct)),\ 239656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project set_asn1, get_asn1,\ 240656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project ctrl,\ 241656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project NULL \ 242656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project};\ 243656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Projectconst EVP_CIPHER *EVP_##cname##_ecb(void) { return &cname##_ecb; } 244656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project*/ 245656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project 246656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define IMPLEMENT_BLOCK_CIPHER(cname, ksched, cprefix, kstruct, nid, \ 247656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project block_size, key_len, iv_len, cbits, \ 248656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project flags, init_key, \ 249656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project cleanup, set_asn1, get_asn1, ctrl) \ 250656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project BLOCK_CIPHER_all_funcs(cname, cprefix, cbits, kstruct, ksched) \ 251656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project BLOCK_CIPHER_defs(cname, kstruct, nid, block_size, key_len, iv_len, \ 252656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project cbits, flags, init_key, cleanup, set_asn1, \ 253656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project get_asn1, ctrl) 254656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project 255656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define EVP_C_DATA(kstruct, ctx) ((kstruct *)(ctx)->cipher_data) 256656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project 257221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom#define IMPLEMENT_CFBR(cipher,cprefix,kstruct,ksched,keysize,cbits,iv_len) \ 258656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project BLOCK_CIPHER_func_cfb(cipher##_##keysize,cprefix,cbits,kstruct,ksched) \ 259656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project BLOCK_CIPHER_def_cfb(cipher##_##keysize,kstruct, \ 260656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project NID_##cipher##_##keysize, keysize/8, iv_len, cbits, \ 261221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom 0, cipher##_init_key, NULL, \ 262221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom EVP_CIPHER_set_asn1_iv, \ 263221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom EVP_CIPHER_get_asn1_iv, \ 264221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom NULL) 265221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom 266221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstromstruct evp_pkey_ctx_st 267221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom { 268221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom /* Method associated with this operation */ 269221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom const EVP_PKEY_METHOD *pmeth; 270221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom /* Engine that implements this method or NULL if builtin */ 271221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom ENGINE *engine; 272221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom /* Key: may be NULL */ 273221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom EVP_PKEY *pkey; 274221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom /* Peer key for key agreement, may be NULL */ 275221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom EVP_PKEY *peerkey; 276221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom /* Actual operation */ 277221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom int operation; 278221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom /* Algorithm specific data */ 279221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom void *data; 280221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom /* Application specific data */ 281221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom void *app_data; 282221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom /* Keygen callback */ 283221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom EVP_PKEY_gen_cb *pkey_gencb; 284221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom /* implementation specific keygen data */ 285221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom int *keygen_info; 286221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom int keygen_info_count; 287221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom } /* EVP_PKEY_CTX */; 288221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom 289221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom#define EVP_PKEY_FLAG_DYNAMIC 1 290221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom 291221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstromstruct evp_pkey_method_st 292221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom { 293221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom int pkey_id; 294221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom int flags; 295221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom 296221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom int (*init)(EVP_PKEY_CTX *ctx); 297221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom int (*copy)(EVP_PKEY_CTX *dst, EVP_PKEY_CTX *src); 298221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom void (*cleanup)(EVP_PKEY_CTX *ctx); 299221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom 300221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom int (*paramgen_init)(EVP_PKEY_CTX *ctx); 301221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom int (*paramgen)(EVP_PKEY_CTX *ctx, EVP_PKEY *pkey); 302221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom 303221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom int (*keygen_init)(EVP_PKEY_CTX *ctx); 304221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom int (*keygen)(EVP_PKEY_CTX *ctx, EVP_PKEY *pkey); 305221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom 306221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom int (*sign_init)(EVP_PKEY_CTX *ctx); 307221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom int (*sign)(EVP_PKEY_CTX *ctx, unsigned char *sig, size_t *siglen, 308221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom const unsigned char *tbs, size_t tbslen); 309221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom 310221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom int (*verify_init)(EVP_PKEY_CTX *ctx); 311221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom int (*verify)(EVP_PKEY_CTX *ctx, 312221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom const unsigned char *sig, size_t siglen, 313221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom const unsigned char *tbs, size_t tbslen); 314221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom 315221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom int (*verify_recover_init)(EVP_PKEY_CTX *ctx); 316221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom int (*verify_recover)(EVP_PKEY_CTX *ctx, 317221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom unsigned char *rout, size_t *routlen, 318221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom const unsigned char *sig, size_t siglen); 319221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom 320221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom int (*signctx_init)(EVP_PKEY_CTX *ctx, EVP_MD_CTX *mctx); 321221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom int (*signctx)(EVP_PKEY_CTX *ctx, unsigned char *sig, size_t *siglen, 322221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom EVP_MD_CTX *mctx); 323221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom 324221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom int (*verifyctx_init)(EVP_PKEY_CTX *ctx, EVP_MD_CTX *mctx); 325221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom int (*verifyctx)(EVP_PKEY_CTX *ctx, const unsigned char *sig,int siglen, 326221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom EVP_MD_CTX *mctx); 327221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom 328221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom int (*encrypt_init)(EVP_PKEY_CTX *ctx); 329221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom int (*encrypt)(EVP_PKEY_CTX *ctx, unsigned char *out, size_t *outlen, 330221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom const unsigned char *in, size_t inlen); 331221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom 332221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom int (*decrypt_init)(EVP_PKEY_CTX *ctx); 333221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom int (*decrypt)(EVP_PKEY_CTX *ctx, unsigned char *out, size_t *outlen, 334221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom const unsigned char *in, size_t inlen); 335221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom 336221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom int (*derive_init)(EVP_PKEY_CTX *ctx); 337221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom int (*derive)(EVP_PKEY_CTX *ctx, unsigned char *key, size_t *keylen); 338221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom 339221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom int (*ctrl)(EVP_PKEY_CTX *ctx, int type, int p1, void *p2); 340221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom int (*ctrl_str)(EVP_PKEY_CTX *ctx, const char *type, const char *value); 341221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom 342221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom 343221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom } /* EVP_PKEY_METHOD */; 344e45f106cb6b47af1f21efe76e933bdea2f5dd1caNagendra Modadugu 345221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstromvoid evp_pkey_set_cb_translate(BN_GENCB *cb, EVP_PKEY_CTX *ctx); 346392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom 347392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstromint PKCS5_v2_PBKDF2_keyivgen(EVP_CIPHER_CTX *ctx, const char *pass, int passlen, 348392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom ASN1_TYPE *param, 349392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom const EVP_CIPHER *c, const EVP_MD *md, int en_de); 350392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom 351392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom#ifdef OPENSSL_FIPS 352392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom 353392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom#ifdef OPENSSL_DOING_MAKEDEPEND 354392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom#undef SHA1_Init 355392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom#undef SHA1_Update 356392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom#undef SHA224_Init 357392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom#undef SHA256_Init 358392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom#undef SHA384_Init 359392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom#undef SHA512_Init 360392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom#undef DES_set_key_unchecked 361392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom#endif 362392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom 363392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom#define RIPEMD160_Init private_RIPEMD160_Init 364392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom#define WHIRLPOOL_Init private_WHIRLPOOL_Init 365392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom#define MD5_Init private_MD5_Init 366392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom#define MD4_Init private_MD4_Init 367392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom#define MD2_Init private_MD2_Init 368392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom#define MDC2_Init private_MDC2_Init 369392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom#define SHA_Init private_SHA_Init 370392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom#define SHA1_Init private_SHA1_Init 371392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom#define SHA224_Init private_SHA224_Init 372392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom#define SHA256_Init private_SHA256_Init 373392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom#define SHA384_Init private_SHA384_Init 374392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom#define SHA512_Init private_SHA512_Init 375392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom 376392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom#define BF_set_key private_BF_set_key 377392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom#define CAST_set_key private_CAST_set_key 378392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom#define idea_set_encrypt_key private_idea_set_encrypt_key 379392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom#define SEED_set_key private_SEED_set_key 380392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom#define RC2_set_key private_RC2_set_key 381392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom#define RC4_set_key private_RC4_set_key 382392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom#define DES_set_key_unchecked private_DES_set_key_unchecked 383392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom#define Camellia_set_key private_Camellia_set_key 384392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom 385392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom#endif 386