| /* |
| * |
| * Copyright (c) 2011-2015 Nest Labs, Inc. |
| * All rights reserved. |
| * |
| * This document is the property of Nest. It is considered |
| * confidential and proprietary information. |
| * |
| * This document may not be reproduced or transmitted in any form, |
| * in whole or in part, without the express written permission of |
| * Nest. |
| * |
| * Description: |
| * Mapping of PolarSSL's AES API onto OpenSSL's functions. |
| */ |
| |
| #ifndef AES_H |
| #define AES_H |
| |
| #include <stdint.h> |
| |
| #include <openssl/aes.h> |
| |
| #define POLARSSL_ERR_AES_INVALID_KEY_LENGTH -0x0020 /**< Invalid key length. */ |
| #define POLARSSL_ERR_AES_INVALID_INPUT_LENGTH -0x0022 /**< Invalid data input length. */ |
| |
| /* Define PolarSSL's aes_context as an OpenSSL AES_KEY structure. |
| */ |
| typedef AES_KEY aes_context; |
| |
| /** |
| * \brief AES key schedule (encryption) |
| * |
| * \param ctx AES context to be initialized |
| * \param key encryption key |
| * \param keysize must be 128, 192 or 256 |
| * |
| * \return 0 if successful, or POLARSSL_ERR_AES_INVALID_KEY_LENGTH |
| */ |
| int aes_setkey_enc( aes_context *ctx, const unsigned char *key, unsigned int keysize ); |
| |
| /** |
| * \brief AES key schedule (decryption) |
| * |
| * \param ctx AES context to be initialized |
| * \param key decryption key |
| * \param keysize must be 128, 192 or 256 |
| * |
| * \return 0 if successful, or POLARSSL_ERR_AES_INVALID_KEY_LENGTH |
| */ |
| int aes_setkey_dec( aes_context *ctx, const unsigned char *key, unsigned int keysize ); |
| |
| /** |
| * \brief AES-ECB block encryption/decryption |
| * |
| * \param ctx AES context |
| * \param mode AES_ENCRYPT or AES_DECRYPT |
| * \param input 16-byte input block |
| * \param output 16-byte output block |
| * |
| * \return 0 if successful |
| */ |
| int aes_crypt_ecb( aes_context *ctx, |
| int mode, |
| const unsigned char input[16], |
| unsigned char output[16] ); |
| |
| |
| #endif |
| |