mbedtls/library
Manuel Pégourié-Gonnard 377b2b624d aria: optimize byte perms on Arm
Use specific instructions for moving bytes around in a word. This speeds
things up, and as a side-effect, slightly lowers code size.

ARIA_P3 and ARIA_P1 are now 1 single-cycle instruction each (those
instructions are available in all architecture versions starting from v6-M).
Note: ARIA_P3 was already translated to a single instruction by Clang 3.8 and
armclang 6.5, but not arm-gcc 5.4 nor armcc 5.06.

ARIA_P2 is already efficiently translated to the minimal number of
instruction (1 in ARM mode, 2 in thumb mode) by all tested compilers

Manually compiled and inspected generated code with the following compilers:
arm-gcc 5.4, clang 3.8, armcc 5.06 (with and without --gnu), armclang 6.5.

Size reduction (arm-none-eabi-gcc -march=armv6-m -mthumb -Os): 5288 -> 5044 B

Effect on executing time of self-tests on a few boards:
FRDM-K64F   (Cortex-M4):    444 ->  385 us (-13%)
LPC1768     (Cortex-M3):    488 ->  432 us (-11%)
FRDM-KL64Z  (Cortex-M0):   1429 -> 1134 us (-20%)

Measured using a config.h with no cipher mode and the following program with
aria.c and aria.h copy-pasted to the online compiler:

 #include "mbed.h"
 #include "aria.h"

int main() {
    Timer t;
    t.start();
    int ret = mbedtls_aria_self_test(0);
    t.stop();
    printf("ret = %d; time = %d us\n", ret, t.read_us());
}
2018-02-27 12:39:12 +01:00
..
.gitignore
aes.c Merge remote-tracking branch 'upstream-public/pr/964' into development 2018-01-02 16:24:29 +01:00
aesni.c
arc4.c
aria.c aria: optimize byte perms on Arm 2018-02-27 12:39:12 +01:00
asn1parse.c Fix 1 byte overread in mbedtls_asn1_get_int() 2016-10-13 13:54:14 +01:00
asn1write.c
base64.c Add comment to integer overflow fix in base64.c 2017-02-15 23:31:07 +02:00
bignum.c Zeroize stack before returning from mpi_fill_random 2017-10-18 12:41:30 +01:00
blowfish.c
camellia.c
ccm.c Allow alternate core implementation of CCM 2017-04-04 11:37:15 +02:00
certs.c Undo API change from SHA1 deprecation 2017-07-27 21:44:33 +01:00
cipher_wrap.c ARIA ciphersuites for TLS 1.2 2018-02-27 12:39:12 +01:00
cipher.c fix bug in get_one_and_zeros_padding() 2017-12-23 23:40:08 +01:00
cmac.c Merge remote-tracking branch 'upstream-public/pr/866' into development 2018-01-02 15:55:55 +01:00
CMakeLists.txt ARIA build integration 2018-02-27 12:39:12 +01:00
ctr_drbg.c ctr_drbg: Typo fix in the file description comment. 2018-02-10 11:11:41 +02:00
debug.c Fix compiler warning in debug.c 2017-02-15 09:08:26 +00:00
des.c
dhm.c Merge remote-tracking branch 'upstream-restricted/pr/410' into development-restricted 2018-01-26 18:43:04 +00:00
ecdh.c Address PR cpomments reviews 2017-10-10 19:04:27 +03:00
ecdsa.c Merge remote-tracking branch 'upstream-public/pr/1027' into development 2018-01-09 10:42:03 +00:00
ecjpake.c Add support for alternative ECJPAKE implementation 2018-01-24 10:36:22 +00:00
ecp_curves.c ECP: Add module and function level replacement options. 2017-05-11 22:42:14 +01:00
ecp.c Fix information leak in ecp_gen_keypair_base 2017-10-17 15:19:38 +01:00
entropy_poll.c
entropy.c Merge branch 'development' into development-restricted 2018-01-25 17:28:31 +00:00
error.c something to do with whitespaces 2018-02-27 12:39:12 +01:00
gcm.c Merge remote-tracking branch 'upstream-public/pr/964' into development 2018-01-02 16:24:29 +01:00
havege.c
hmac_drbg.c Zeroize tmp bufs in hmac_drbg.c functions 2017-06-26 10:22:24 +01:00
Makefile ARIA build integration 2018-02-27 12:39:12 +01:00
md2.c MD: Make deprecated functions not inline 2018-02-22 10:24:30 +00:00
md4.c MD: Make deprecated functions not inline 2018-02-22 10:24:30 +00:00
md5.c MD: Make deprecated functions not inline 2018-02-22 10:24:30 +00:00
md_wrap.c New MD API: rename functions from _ext to _ret 2018-01-22 11:54:42 +01:00
md.c Merge branch 'development' into development-restricted 2018-01-25 17:28:31 +00:00
memory_buffer_alloc.c
net_sockets.c Merge remote-tracking branch 'upstream-public/pr/895' into development 2017-11-29 20:49:21 +01:00
oid.c pkcs5v2: add support for additional hmacSHA algorithms 2018-02-08 17:18:15 +08:00
padlock.c
pem.c Merge branch 'development' into development-restricted 2018-01-25 17:28:31 +00:00
pk_wrap.c Merge branch 'development' into iotssl-1619 2017-12-22 10:24:32 +00:00
pk.c Change PK module preprocessor check on word size 2017-08-04 13:32:15 +01:00
pkcs5.c pkcs5v2: add support for additional hmacSHA algorithms 2018-02-08 17:18:15 +08:00
pkcs11.c
pkcs12.c
pkparse.c Merge branch 'pr_1135' into development-proposed 2018-02-14 17:20:42 +01:00
pkwrite.c Adapt PK test suite to use new interface 2017-08-23 16:17:27 +01:00
platform.c Fix undefined function in platform.c 2017-12-20 12:52:49 +01:00
ripemd160.c MD: Make deprecated functions not inline 2018-02-22 10:24:30 +00:00
rsa_internal.c Add explicit type cast to avoid truncation warning 2018-01-03 09:27:40 +00:00
rsa.c Merge branch 'development' into development-restricted 2018-01-25 17:28:31 +00:00
sha1.c MD: Make deprecated functions not inline 2018-02-22 10:24:30 +00:00
sha256.c MD: Make deprecated functions not inline 2018-02-22 10:24:30 +00:00
sha512.c MD: Make deprecated functions not inline 2018-02-22 10:24:30 +00:00
ssl_cache.c Address PR review comments 2017-10-29 17:53:52 +02:00
ssl_ciphersuites.c Add remaining ARIA suites to priority list 2018-02-27 12:39:12 +01:00
ssl_cli.c Merge branch 'development' into iotssl-1251-2.7 2018-01-19 11:25:10 +01:00
ssl_cookie.c Fix resource leak when using mutex and ssl_cookie 2017-03-02 12:26:11 +00:00
ssl_srv.c Merge remote-tracking branch 'upstream-restricted/pr/410' into development-restricted 2018-01-26 18:43:04 +00:00
ssl_ticket.c
ssl_tls.c ARIA ciphersuites for TLS 1.2 2018-02-27 12:39:12 +01:00
threading.c Remove mutexes from ECP hardware acceleration 2017-07-27 21:44:32 +01:00
timing.c Fix alarm(0) failure on mingw32 2018-01-29 10:24:50 +01:00
version_features.c MBEDTLS_ARIA_ALT added as a feature 2018-02-27 12:39:12 +01:00
version.c
x509_create.c
x509_crl.c Fix potential integer overflow parsing DER CRL 2017-07-27 21:44:34 +01:00
x509_crt.c Fix handshake failure in suite B 2018-02-06 15:59:38 +02:00
x509_csr.c Prevent signed integer overflow in CSR parsing 2017-07-27 21:44:34 +01:00
x509.c Correctly handle leap year in x509_date_is_valid() 2017-10-12 23:21:37 +01:00
x509write_crt.c New MD API: rename functions from _ext to _ret 2018-01-22 11:54:42 +01:00
x509write_csr.c Clarify code-paths in x509write_csr and x509write_crt 2017-09-22 16:05:43 +01:00
xtea.c