186d7f5d3SJohn Marino /* $FreeBSD: src/sys/crypto/rijndael/rijndael-api.c,v 1.2 2008/01/15 18:34:47 sobomax Exp $ */
286d7f5d3SJohn Marino /* $KAME: rijndael.c,v 1.3 2003/08/28 14:20:22 itojun Exp $ */
386d7f5d3SJohn Marino
486d7f5d3SJohn Marino /*
586d7f5d3SJohn Marino * rijndael-alg-fst.c
686d7f5d3SJohn Marino *
786d7f5d3SJohn Marino * @version 3.0 (December 2000)
886d7f5d3SJohn Marino *
986d7f5d3SJohn Marino * Optimised ANSI C code for the Rijndael cipher (now AES)
1086d7f5d3SJohn Marino *
1186d7f5d3SJohn Marino * @author Vincent Rijmen <vincent.rijmen@esat.kuleuven.ac.be>
1286d7f5d3SJohn Marino * @author Antoon Bosselaers <antoon.bosselaers@esat.kuleuven.ac.be>
1386d7f5d3SJohn Marino * @author Paulo Barreto <paulo.barreto@terra.com.br>
1486d7f5d3SJohn Marino *
1586d7f5d3SJohn Marino * This code is hereby placed in the public domain.
1686d7f5d3SJohn Marino *
1786d7f5d3SJohn Marino * THIS SOFTWARE IS PROVIDED BY THE AUTHORS ''AS IS'' AND ANY EXPRESS
1886d7f5d3SJohn Marino * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
1986d7f5d3SJohn Marino * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
2086d7f5d3SJohn Marino * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHORS OR CONTRIBUTORS BE
2186d7f5d3SJohn Marino * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
2286d7f5d3SJohn Marino * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
2386d7f5d3SJohn Marino * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
2486d7f5d3SJohn Marino * BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
2586d7f5d3SJohn Marino * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
2686d7f5d3SJohn Marino * OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
2786d7f5d3SJohn Marino * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
2886d7f5d3SJohn Marino */
2986d7f5d3SJohn Marino
3086d7f5d3SJohn Marino #include <sys/types.h>
3186d7f5d3SJohn Marino #ifdef _KERNEL
3286d7f5d3SJohn Marino #include <sys/systm.h>
3386d7f5d3SJohn Marino #endif
3486d7f5d3SJohn Marino
3586d7f5d3SJohn Marino #include <crypto/rijndael/rijndael.h>
3686d7f5d3SJohn Marino
3786d7f5d3SJohn Marino void
rijndael_set_key(rijndael_ctx * ctx,const u_char * key,int bits)3886d7f5d3SJohn Marino rijndael_set_key(rijndael_ctx *ctx, const u_char *key, int bits)
3986d7f5d3SJohn Marino {
4086d7f5d3SJohn Marino
4186d7f5d3SJohn Marino ctx->Nr = rijndaelKeySetupEnc(ctx->ek, key, bits);
4286d7f5d3SJohn Marino rijndaelKeySetupDec(ctx->dk, key, bits);
4386d7f5d3SJohn Marino }
4486d7f5d3SJohn Marino
4586d7f5d3SJohn Marino void
rijndael_decrypt(const rijndael_ctx * ctx,const u_char * src,u_char * dst)4686d7f5d3SJohn Marino rijndael_decrypt(const rijndael_ctx *ctx, const u_char *src, u_char *dst)
4786d7f5d3SJohn Marino {
4886d7f5d3SJohn Marino
4986d7f5d3SJohn Marino rijndaelDecrypt(ctx->dk, ctx->Nr, src, dst);
5086d7f5d3SJohn Marino }
5186d7f5d3SJohn Marino
5286d7f5d3SJohn Marino void
rijndael_encrypt(const rijndael_ctx * ctx,const u_char * src,u_char * dst)5386d7f5d3SJohn Marino rijndael_encrypt(const rijndael_ctx *ctx, const u_char *src, u_char *dst)
5486d7f5d3SJohn Marino {
5586d7f5d3SJohn Marino
5686d7f5d3SJohn Marino rijndaelEncrypt(ctx->ek, ctx->Nr, src, dst);
5786d7f5d3SJohn Marino }
58