forked from aniruddh22/make_npdata
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
Hykem
committed
Apr 25, 2014
1 parent
866f423
commit 25c42dd
Showing
28 changed files
with
8,186 additions
and
287 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,21 @@ | ||
# Compiled Object files | ||
*.slo | ||
*.lo | ||
*.o | ||
|
||
# Compiled Dynamic libraries | ||
*.so | ||
*.dylib | ||
|
||
# Compiled Static libraries | ||
*.lai | ||
*.la | ||
*.a | ||
|
||
# Unwanted files and folders | ||
src/Debug | ||
src/Release | ||
bin/* | ||
*.opensdf | ||
*.suo | ||
*.sdf |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,18 @@ | ||
CC = gcc | ||
CFLAGS = | ||
|
||
ifeq ($(DEBUG), 1) | ||
CFLAGS+=-g -O0 | ||
else | ||
CFLAGS+=-O2 | ||
endif | ||
|
||
TARGET = make_npdata | ||
OBJS = make_npdata.o aes.o sha1.o lz.o utils.o | ||
|
||
all: $(TARGET) | ||
|
||
$(TARGET): $(OBJS) | ||
$(CC) $(CFLAGS) -o $@ $(OBJS) | ||
|
||
|
Large diffs are not rendered by default.
Oops, something went wrong.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,177 @@ | ||
/** | ||
* \file aes.h | ||
* | ||
* \brief AES block cipher | ||
* | ||
* Copyright (C) 2006-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. | ||
*/ | ||
#include <string.h> | ||
|
||
#ifdef _MSC_VER | ||
#include <basetsd.h> | ||
typedef UINT32 uint32_t; | ||
#else | ||
#include <inttypes.h> | ||
#endif | ||
|
||
#define AES_ENCRYPT 1 | ||
#define AES_DECRYPT 0 | ||
|
||
#define POLARSSL_ERR_AES_INVALID_KEY_LENGTH -0x0020 /**< Invalid key length. */ | ||
#define POLARSSL_ERR_AES_INVALID_INPUT_LENGTH -0x0022 /**< Invalid data input length. */ | ||
|
||
// Regular implementation | ||
// | ||
|
||
/** | ||
* \brief AES context structure | ||
*/ | ||
typedef struct | ||
{ | ||
int nr; /*!< number of rounds */ | ||
uint32_t *rk; /*!< AES round keys */ | ||
uint32_t buf[68]; /*!< unaligned data */ | ||
} | ||
aes_context; | ||
|
||
#ifdef __cplusplus | ||
extern "C" { | ||
#endif | ||
|
||
/** | ||
* \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] ); | ||
|
||
/** | ||
* \brief AES-CBC buffer encryption/decryption | ||
* Length should be a multiple of the block | ||
* size (16 bytes) | ||
* | ||
* \param ctx AES context | ||
* \param mode AES_ENCRYPT or AES_DECRYPT | ||
* \param length length of the input data | ||
* \param iv initialization vector (updated after use) | ||
* \param input buffer holding the input data | ||
* \param output buffer holding the output data | ||
* | ||
* \return 0 if successful, or POLARSSL_ERR_AES_INVALID_INPUT_LENGTH | ||
*/ | ||
int aes_crypt_cbc( aes_context *ctx, | ||
int mode, | ||
size_t length, | ||
unsigned char iv[16], | ||
const unsigned char *input, | ||
unsigned char *output ); | ||
|
||
/** | ||
* \brief AES-CFB128 buffer encryption/decryption. | ||
* | ||
* Note: Due to the nature of CFB you should use the same key schedule for | ||
* both encryption and decryption. So a context initialized with | ||
* aes_setkey_enc() for both AES_ENCRYPT and AES_DECRYPT. | ||
* | ||
* both | ||
* \param ctx AES context | ||
* \param mode AES_ENCRYPT or AES_DECRYPT | ||
* \param length length of the input data | ||
* \param iv_off offset in IV (updated after use) | ||
* \param iv initialization vector (updated after use) | ||
* \param input buffer holding the input data | ||
* \param output buffer holding the output data | ||
* | ||
* \return 0 if successful | ||
*/ | ||
int aes_crypt_cfb128( aes_context *ctx, | ||
int mode, | ||
size_t length, | ||
size_t *iv_off, | ||
unsigned char iv[16], | ||
const unsigned char *input, | ||
unsigned char *output ); | ||
|
||
/** | ||
* \brief AES-CTR buffer encryption/decryption | ||
* | ||
* Warning: You have to keep the maximum use of your counter in mind! | ||
* | ||
* Note: Due to the nature of CTR you should use the same key schedule for | ||
* both encryption and decryption. So a context initialized with | ||
* aes_setkey_enc() for both AES_ENCRYPT and AES_DECRYPT. | ||
* | ||
* \param length The length of the data | ||
* \param nc_off The offset in the current stream_block (for resuming | ||
* within current cipher stream). The offset pointer to | ||
* should be 0 at the start of a stream. | ||
* \param nonce_counter The 128-bit nonce and counter. | ||
* \param stream_block The saved stream-block for resuming. Is overwritten | ||
* by the function. | ||
* \param input The input data stream | ||
* \param output The output data stream | ||
* | ||
* \return 0 if successful | ||
*/ | ||
int aes_crypt_ctr( aes_context *ctx, | ||
size_t length, | ||
size_t *nc_off, | ||
unsigned char nonce_counter[16], | ||
unsigned char stream_block[16], | ||
const unsigned char *input, | ||
unsigned char *output ); | ||
|
||
void aes_cmac(aes_context *ctx, int length, unsigned char *input, unsigned char *output); | ||
|
||
#ifdef __cplusplus | ||
} | ||
#endif |
Oops, something went wrong.