Skip to content

Commit

Permalink
Browse files Browse the repository at this point in the history
Added wrapper for AXTLS AES code
  • Loading branch information
Michael Brown committed Jan 31, 2007
1 parent 0d07657 commit 1ae70e1
Show file tree
Hide file tree
Showing 2 changed files with 61 additions and 0 deletions.
53 changes: 53 additions & 0 deletions src/crypto/axtls_aes.c
@@ -0,0 +1,53 @@
#include "crypto/axtls/crypto.h"
#include <string.h>
#include <gpxe/crypto.h>
#include <gpxe/aes.h>

static int aes_setkey ( void *ctx, const void *key, size_t keylen ) {
AES_CTX *aesctx = ctx;
AES_MODE mode;

switch ( keylen ) {
case ( 128 / 8 ):
mode = AES_MODE_128;
break;
case ( 256 / 8 ):
mode = AES_MODE_256;
break;
default:
return -EINVAL;
}

AES_set_key ( aesctx, key, aesctx->iv, mode );
return 0;
}

static void aes_setiv ( void *ctx, const void *iv ) {
AES_CTX *aesctx = ctx;

memcpy ( aesctx->iv, iv, sizeof ( aesctx->iv ) );
}

static void aes_encrypt ( void *ctx, const void *data, void *dst,
size_t len ) {
AES_CTX *aesctx = ctx;

AES_cbc_encrypt ( aesctx, data, dst, len );
}

static void aes_decrypt ( void *ctx, const void *data, void *dst,
size_t len ) {
AES_CTX *aesctx = ctx;

AES_cbc_decrypt ( aesctx, data, dst, len );
}

struct crypto_algorithm aes_algorithm = {
.name = "aes",
.ctxsize = sizeof ( AES_CTX ),
.blocksize = 16,
.setkey = aes_setkey,
.setiv = aes_setiv,
.encode = aes_encrypt,
.decode = aes_decrypt,
};
8 changes: 8 additions & 0 deletions src/include/gpxe/aes.h
@@ -0,0 +1,8 @@
#ifndef _GPXE_AES_H
#define _GPXE_AES_H

struct crypto_algorithm;

extern struct crypto_algorithm aes_algorithm;

#endif /* _GPXE_AES_H */

0 comments on commit 1ae70e1

Please sign in to comment.