Version 0.5.0 of tinydtls
Dependents: tinydtls_test_cellular tinydtls_test_ethernet tiny-dtls
aes/rijndael.h@0:ff9ebe0cf0e9, 2013-10-18 (annotated)
- Committer:
- ashleymills
- Date:
- Fri Oct 18 13:18:30 2013 +0000
- Revision:
- 0:ff9ebe0cf0e9
Upgraded to tinydtls 0.5.0
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
ashleymills | 0:ff9ebe0cf0e9 | 1 | /* $OpenBSD: rijndael.h,v 1.13 2008/06/09 07:49:45 djm Exp $ */ |
ashleymills | 0:ff9ebe0cf0e9 | 2 | |
ashleymills | 0:ff9ebe0cf0e9 | 3 | /** |
ashleymills | 0:ff9ebe0cf0e9 | 4 | * rijndael-alg-fst.h |
ashleymills | 0:ff9ebe0cf0e9 | 5 | * |
ashleymills | 0:ff9ebe0cf0e9 | 6 | * @version 3.0 (December 2000) |
ashleymills | 0:ff9ebe0cf0e9 | 7 | * |
ashleymills | 0:ff9ebe0cf0e9 | 8 | * Optimised ANSI C code for the Rijndael cipher (now AES) |
ashleymills | 0:ff9ebe0cf0e9 | 9 | * |
ashleymills | 0:ff9ebe0cf0e9 | 10 | * @author Vincent Rijmen <vincent.rijmen@esat.kuleuven.ac.be> |
ashleymills | 0:ff9ebe0cf0e9 | 11 | * @author Antoon Bosselaers <antoon.bosselaers@esat.kuleuven.ac.be> |
ashleymills | 0:ff9ebe0cf0e9 | 12 | * @author Paulo Barreto <paulo.barreto@terra.com.br> |
ashleymills | 0:ff9ebe0cf0e9 | 13 | * |
ashleymills | 0:ff9ebe0cf0e9 | 14 | * This code is hereby placed in the public domain. |
ashleymills | 0:ff9ebe0cf0e9 | 15 | * |
ashleymills | 0:ff9ebe0cf0e9 | 16 | * THIS SOFTWARE IS PROVIDED BY THE AUTHORS ''AS IS'' AND ANY EXPRESS |
ashleymills | 0:ff9ebe0cf0e9 | 17 | * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED |
ashleymills | 0:ff9ebe0cf0e9 | 18 | * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE |
ashleymills | 0:ff9ebe0cf0e9 | 19 | * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHORS OR CONTRIBUTORS BE |
ashleymills | 0:ff9ebe0cf0e9 | 20 | * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR |
ashleymills | 0:ff9ebe0cf0e9 | 21 | * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF |
ashleymills | 0:ff9ebe0cf0e9 | 22 | * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR |
ashleymills | 0:ff9ebe0cf0e9 | 23 | * BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, |
ashleymills | 0:ff9ebe0cf0e9 | 24 | * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE |
ashleymills | 0:ff9ebe0cf0e9 | 25 | * OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, |
ashleymills | 0:ff9ebe0cf0e9 | 26 | * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
ashleymills | 0:ff9ebe0cf0e9 | 27 | */ |
ashleymills | 0:ff9ebe0cf0e9 | 28 | #ifndef __RIJNDAEL_H |
ashleymills | 0:ff9ebe0cf0e9 | 29 | #define __RIJNDAEL_H |
ashleymills | 0:ff9ebe0cf0e9 | 30 | |
ashleymills | 0:ff9ebe0cf0e9 | 31 | #define AES_MAXKEYBITS (256) |
ashleymills | 0:ff9ebe0cf0e9 | 32 | #define AES_MAXKEYBYTES (AES_MAXKEYBITS/8) |
ashleymills | 0:ff9ebe0cf0e9 | 33 | /* for 256-bit keys, fewer for less */ |
ashleymills | 0:ff9ebe0cf0e9 | 34 | #define AES_MAXROUNDS 14 |
ashleymills | 0:ff9ebe0cf0e9 | 35 | |
ashleymills | 0:ff9ebe0cf0e9 | 36 | /* bergmann: to avoid conflicts with typedefs from certain Contiki platforms, |
ashleymills | 0:ff9ebe0cf0e9 | 37 | * the following type names have been prefixed with "aes_": */ |
ashleymills | 0:ff9ebe0cf0e9 | 38 | typedef unsigned char u_char; |
ashleymills | 0:ff9ebe0cf0e9 | 39 | typedef unsigned char aes_u8; |
ashleymills | 0:ff9ebe0cf0e9 | 40 | typedef unsigned short aes_u16; |
ashleymills | 0:ff9ebe0cf0e9 | 41 | typedef unsigned int aes_u32; |
ashleymills | 0:ff9ebe0cf0e9 | 42 | |
ashleymills | 0:ff9ebe0cf0e9 | 43 | /* The structure for key information */ |
ashleymills | 0:ff9ebe0cf0e9 | 44 | typedef struct { |
ashleymills | 0:ff9ebe0cf0e9 | 45 | #ifdef WITH_AES_DECRYPT |
ashleymills | 0:ff9ebe0cf0e9 | 46 | int enc_only; /* context contains only encrypt schedule */ |
ashleymills | 0:ff9ebe0cf0e9 | 47 | #endif |
ashleymills | 0:ff9ebe0cf0e9 | 48 | int Nr; /* key-length-dependent number of rounds */ |
ashleymills | 0:ff9ebe0cf0e9 | 49 | aes_u32 ek[4*(AES_MAXROUNDS + 1)]; /* encrypt key schedule */ |
ashleymills | 0:ff9ebe0cf0e9 | 50 | #ifdef WITH_AES_DECRYPT |
ashleymills | 0:ff9ebe0cf0e9 | 51 | aes_u32 dk[4*(AES_MAXROUNDS + 1)]; /* decrypt key schedule */ |
ashleymills | 0:ff9ebe0cf0e9 | 52 | #endif |
ashleymills | 0:ff9ebe0cf0e9 | 53 | } rijndael_ctx; |
ashleymills | 0:ff9ebe0cf0e9 | 54 | |
ashleymills | 0:ff9ebe0cf0e9 | 55 | int rijndael_set_key(rijndael_ctx *, const u_char *, int); |
ashleymills | 0:ff9ebe0cf0e9 | 56 | int rijndael_set_key_enc_only(rijndael_ctx *, const u_char *, int); |
ashleymills | 0:ff9ebe0cf0e9 | 57 | void rijndael_decrypt(rijndael_ctx *, const u_char *, u_char *); |
ashleymills | 0:ff9ebe0cf0e9 | 58 | void rijndael_encrypt(rijndael_ctx *, const u_char *, u_char *); |
ashleymills | 0:ff9ebe0cf0e9 | 59 | |
ashleymills | 0:ff9ebe0cf0e9 | 60 | int rijndaelKeySetupEnc(unsigned int [], const unsigned char [], int); |
ashleymills | 0:ff9ebe0cf0e9 | 61 | int rijndaelKeySetupDec(unsigned int [], const unsigned char [], int); |
ashleymills | 0:ff9ebe0cf0e9 | 62 | void rijndaelEncrypt(const unsigned int [], int, const unsigned char [], |
ashleymills | 0:ff9ebe0cf0e9 | 63 | unsigned char []); |
ashleymills | 0:ff9ebe0cf0e9 | 64 | |
ashleymills | 0:ff9ebe0cf0e9 | 65 | #endif /* __RIJNDAEL_H */ |