xref: /dflybsd-src/sys/crypto/rijndael/rijndael-api.c (revision 86d7f5d305c6adaa56ff4582ece9859d73106103)
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