Example program to test AES-GCM functionality. Used for a workshop

Dependencies:   mbed

Embed: (wiki syntax)

« Back to documentation index

aesni.h File Reference

aesni.h File Reference

AES-NI for hardware AES acceleration on some Intel processors. More...

Go to the source code of this file.

Functions

int aesni_supports (unsigned int what)
 AES-NI features detection routine.
int aesni_crypt_ecb (aes_context *ctx, int mode, const unsigned char input[16], unsigned char output[16])
 AES-NI AES-ECB block en(de)cryption.
void aesni_gcm_mult (unsigned char c[16], const unsigned char a[16], const unsigned char b[16])
 GCM multiplication: c = a * b in GF(2^128)
void aesni_inverse_key (unsigned char *invkey, const unsigned char *fwdkey, int nr)
 Compute decryption round keys from encryption round keys.
int aesni_setkey_enc (unsigned char *rk, const unsigned char *key, size_t bits)
 Perform key expansion (for encryption)

Detailed Description

AES-NI for hardware AES acceleration on some Intel processors.

Copyright (C) 2013, Brainspark B.V.

This file is part of PolarSSL (http://www.polarssl.org) Lead Maintainer: Paul Bakker <polarssl_maintainer at polarssl.org>

All rights reserved.

This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version.

This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.

You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.

Definition in file aesni.h.


Function Documentation

int aesni_crypt_ecb ( aes_context ctx,
int  mode,
const unsigned char  input[16],
unsigned char  output[16] 
)

AES-NI AES-ECB block en(de)cryption.

Parameters:
ctxAES context
modeAES_ENCRYPT or AES_DECRYPT
input16-byte input block
output16-byte output block
Returns:
0 on success (cannot fail)

Definition at line 94 of file aesni.c.

void aesni_gcm_mult ( unsigned char  c[16],
const unsigned char  a[16],
const unsigned char  b[16] 
)

GCM multiplication: c = a * b in GF(2^128)

Parameters:
cResult
aFirst operand
bSecond operand
Note:
Both operands and result are bit strings interpreted as elements of GF(2^128) as per the GCM spec.

Definition at line 140 of file aesni.c.

void aesni_inverse_key ( unsigned char *  invkey,
const unsigned char *  fwdkey,
int  nr 
)

Compute decryption round keys from encryption round keys.

Parameters:
invkeyRound keys for the equivalent inverse cipher
fwdkeyOriginal round keys (for encryption)
nrNumber of rounds (that is, number of round keys minus one)

Definition at line 251 of file aesni.c.

int aesni_setkey_enc ( unsigned char *  rk,
const unsigned char *  key,
size_t  bits 
)

Perform key expansion (for encryption)

Parameters:
rkDestination buffer where the round keys are written
keyEncryption key
bitsKey size in bits (must be 128, 192 or 256)
Returns:
0 if successful, or POLARSSL_ERR_AES_INVALID_KEY_LENGTH

Definition at line 446 of file aesni.c.

int aesni_supports ( unsigned int  what )

AES-NI features detection routine.

Parameters:
whatThe feature to detect (POLARSSL_AESNI_AES or POLARSSL_AESNI_CLMUL)
Returns:
1 if CPU has support for the feature, 0 otherwise

Definition at line 47 of file aesni.c.