cmll_cfb.c revision 296341
1249259Sdim/* crypto/camellia/camellia_cfb.c -*- mode:C; c-file-style: "eay" -*- */ 2249259Sdim/* ==================================================================== 3249259Sdim * Copyright (c) 2006 The OpenSSL Project. All rights reserved. 4249259Sdim * 5249259Sdim * Redistribution and use in source and binary forms, with or without 6249259Sdim * modification, are permitted provided that the following conditions 7249259Sdim * are met: 8249259Sdim * 9249259Sdim * 1. Redistributions of source code must retain the above copyright 10249259Sdim * notice, this list of conditions and the following disclaimer. 11249259Sdim * 12249259Sdim * 2. Redistributions in binary form must reproduce the above copyright 13249259Sdim * notice, this list of conditions and the following disclaimer in 14249259Sdim * the documentation and/or other materials provided with the 15249259Sdim * distribution. 16249259Sdim * 17249259Sdim * 3. All advertising materials mentioning features or use of this 18249259Sdim * software must display the following acknowledgment: 19249259Sdim * "This product includes software developed by the OpenSSL Project 20249259Sdim * for use in the OpenSSL Toolkit. (http://www.openssl.org/)" 21249259Sdim * 22249259Sdim * 4. The names "OpenSSL Toolkit" and "OpenSSL Project" must not be used to 23249259Sdim * endorse or promote products derived from this software without 24249259Sdim * prior written permission. For written permission, please contact 25249259Sdim * openssl-core@openssl.org. 26249259Sdim * 27249259Sdim * 5. Products derived from this software may not be called "OpenSSL" 28249259Sdim * nor may "OpenSSL" appear in their names without prior written 29249259Sdim * permission of the OpenSSL Project. 30263508Sdim * 31249259Sdim * 6. Redistributions of any form whatsoever must retain the following 32263508Sdim * acknowledgment: 33249259Sdim * "This product includes software developed by the OpenSSL Project 34249259Sdim * for use in the OpenSSL Toolkit (http://www.openssl.org/)" 35249259Sdim * 36249259Sdim * THIS SOFTWARE IS PROVIDED BY THE OpenSSL PROJECT ``AS IS'' AND ANY 37249259Sdim * EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 38263508Sdim * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR 39263508Sdim * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE OpenSSL PROJECT OR 40263508Sdim * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 41263508Sdim * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT 42263508Sdim * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; 43263508Sdim * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 44263508Sdim * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, 45249259Sdim * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 46249259Sdim * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED 47249259Sdim * OF THE POSSIBILITY OF SUCH DAMAGE. 48249259Sdim * ==================================================================== 49249259Sdim * 50249259Sdim */ 51263508Sdim/* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) 52263508Sdim * All rights reserved. 53263508Sdim * 54263508Sdim * This package is an SSL implementation written 55249259Sdim * by Eric Young (eay@cryptsoft.com). 56249259Sdim * The implementation was written so as to conform with Netscapes SSL. 57249259Sdim * 58249259Sdim * This library is free for commercial and non-commercial use as long as 59249259Sdim * the following conditions are aheared to. The following conditions 60249259Sdim * apply to all code found in this distribution, be it the RC4, RSA, 61249259Sdim * lhash, DES, etc., code; not just the SSL code. The SSL documentation 62263508Sdim * included with this distribution is covered by the same copyright terms 63249259Sdim * except that the holder is Tim Hudson (tjh@cryptsoft.com). 64263508Sdim * 65263508Sdim * Copyright remains Eric Young's, and as such any Copyright notices in 66263508Sdim * the code are not to be removed. 67263508Sdim * If this package is used in a product, Eric Young should be given attribution 68263508Sdim * as the author of the parts of the library used. 69249259Sdim * This can be in the form of a textual message at program startup or 70249259Sdim * in documentation (online or textual) provided with the package. 71249259Sdim * 72249259Sdim * Redistribution and use in source and binary forms, with or without 73 * modification, are permitted provided that the following conditions 74 * are met: 75 * 1. Redistributions of source code must retain the copyright 76 * notice, this list of conditions and the following disclaimer. 77 * 2. Redistributions in binary form must reproduce the above copyright 78 * notice, this list of conditions and the following disclaimer in the 79 * documentation and/or other materials provided with the distribution. 80 * 3. All advertising materials mentioning features or use of this software 81 * must display the following acknowledgement: 82 * "This product includes cryptographic software written by 83 * Eric Young (eay@cryptsoft.com)" 84 * The word 'cryptographic' can be left out if the rouines from the library 85 * being used are not cryptographic related :-). 86 * 4. If you include any Windows specific code (or a derivative thereof) from 87 * the apps directory (application code) you must include an acknowledgement: 88 * "This product includes software written by Tim Hudson (tjh@cryptsoft.com)" 89 * 90 * THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND 91 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 92 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 93 * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE 94 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 95 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 96 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 97 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 98 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 99 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 100 * SUCH DAMAGE. 101 * 102 * The licence and distribution terms for any publically available version or 103 * derivative of this code cannot be changed. i.e. this code cannot simply be 104 * copied and put under another distribution licence 105 * [including the GNU Public Licence.] 106 */ 107 108#include <openssl/camellia.h> 109#include <openssl/modes.h> 110 111/* 112 * The input and output encrypted as though 128bit cfb mode is being used. 113 * The extra state information to record how much of the 128bit block we have 114 * used is contained in *num; 115 */ 116 117void Camellia_cfb128_encrypt(const unsigned char *in, unsigned char *out, 118 size_t length, const CAMELLIA_KEY *key, 119 unsigned char *ivec, int *num, const int enc) 120{ 121 122 CRYPTO_cfb128_encrypt(in, out, length, key, ivec, num, enc, 123 (block128_f) Camellia_encrypt); 124} 125 126/* N.B. This expects the input to be packed, MS bit first */ 127void Camellia_cfb1_encrypt(const unsigned char *in, unsigned char *out, 128 size_t length, const CAMELLIA_KEY *key, 129 unsigned char *ivec, int *num, const int enc) 130{ 131 CRYPTO_cfb128_1_encrypt(in, out, length, key, ivec, num, enc, 132 (block128_f) Camellia_encrypt); 133} 134 135void Camellia_cfb8_encrypt(const unsigned char *in, unsigned char *out, 136 size_t length, const CAMELLIA_KEY *key, 137 unsigned char *ivec, int *num, const int enc) 138{ 139 CRYPTO_cfb128_8_encrypt(in, out, length, key, ivec, num, enc, 140 (block128_f) Camellia_encrypt); 141} 142