Add ARIA 32-bit implementation

Modified code from http://seed.kisa.or.kr to human readable code.
Previous 8-bit code is available with -DOPENSSL_SMALL_FOOTPRINT.
New code is >2x faster.

Reviewed-by: Andy Polyakov <appro@openssl.org>
Reviewed-by: Rich Salz <rsalz@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/3242)
This commit is contained in:
letrhee-nsr 2017-04-18 19:39:46 +09:00 committed by Andy Polyakov
parent 6e64c56066
commit dc99b885de
2 changed files with 869 additions and 105 deletions

File diff suppressed because it is too large Load Diff

View File

@ -11,6 +11,8 @@
* Copyright (c) 2017 Oracle and/or its affiliates. All rights reserved.
*/
/* Copyright (c) 2017 National Security Resarch Institute. All rights reserved. */
#ifndef HEADER_ARIA_H
# define HEADER_ARIA_H
@ -20,8 +22,6 @@
# error ARIA is disabled.
# endif
# include <stddef.h>
# define ARIA_ENCRYPT 1
# define ARIA_DECRYPT 0
@ -32,11 +32,14 @@
extern "C" {
# endif
typedef unsigned char ARIA_u128[ARIA_BLOCK_SIZE];
typedef union {
unsigned char c[ARIA_BLOCK_SIZE];
unsigned int u[ARIA_BLOCK_SIZE / sizeof(unsigned int)];
} ARIA_u128;
struct aria_key_st {
unsigned int rounds;
ARIA_u128 rd_key[ARIA_MAX_KEYS];
unsigned int rounds;
};
typedef struct aria_key_st ARIA_KEY;