#include "rijndael.h"
int
rijndael_set_key_enc_only(rijndael_ctx *ctx, const u_char *key, int bits)
{
int rounds;
rounds = rijndaelKeySetupEnc(ctx->ek, key, bits);
if (rounds == 0)
return -1;
ctx->Nr = rounds;
#ifdef WITH_AES_DECRYPT
ctx->enc_only = 1;
#endif
return 0;
}
#ifdef WITH_AES_DECRYPT
int
rijndael_set_key(rijndael_ctx *ctx, const u_char *key, int bits)
{
int rounds;
rounds = rijndaelKeySetupEnc(ctx->ek, key, bits);
if (rounds == 0)
return -1;
if (rijndaelKeySetupDec(ctx->dk, key, bits) != rounds)
return -1;
ctx->Nr = rounds;
ctx->enc_only = 0;
return 0;
}
void
rijndael_decrypt(rijndael_ctx *ctx, const u_char *src, u_char *dst)
{
rijndaelDecrypt(ctx->dk, ctx->Nr, src, dst);
}
#endif
void
rijndael_encrypt(rijndael_ctx *ctx, const u_char *src, u_char *dst)
{
rijndaelEncrypt(ctx->ek, ctx->Nr, src, dst);
}