summaryrefslogtreecommitdiffstats
path: root/crypto/include
diff options
context:
space:
mode:
authorPauli <paul.dale@oracle.com>2017-02-01 10:10:13 +1000
committerAndy Polyakov <appro@openssl.org>2017-02-21 11:51:45 +0100
commitd42d0a4dc7925e3ea398821028a254c94665d733 (patch)
tree4525cbb07e99c47cd4e8576b014111ccd427e398 /crypto/include
parentad39b31c1ce0323d6f6ec44842d955f9f2556adf (diff)
Implementation of the ARIA cipher as described in RFC 5794.
This implementation is written in endian agnostic C code. No attempt at providing machine specific assembly code has been made. This implementation expands the evptests by including the test cases from RFC 5794 and ARIA official site rather than providing an individual test case. Support for ARIA has been integrated into the command line applications, but not TLS. Implemented modes are CBC, CFB1, CFB8, CFB128, CTR, ECB and OFB128. Reviewed-by: Andy Polyakov <appro@openssl.org> Reviewed-by: Rich Salz <rsalz@openssl.org> (Merged from https://github.com/openssl/openssl/pull/2337)
Diffstat (limited to 'crypto/include')
-rw-r--r--crypto/include/internal/aria.h56
1 files changed, 56 insertions, 0 deletions
diff --git a/crypto/include/internal/aria.h b/crypto/include/internal/aria.h
new file mode 100644
index 0000000000..4d37189ae4
--- /dev/null
+++ b/crypto/include/internal/aria.h
@@ -0,0 +1,56 @@
+/*
+ * Copyright 2006-2017 The OpenSSL Project Authors. All Rights Reserved.
+ *
+ * Licensed under the OpenSSL license (the "License"). You may not use
+ * this file except in compliance with the License. You can obtain a copy
+ * in the file LICENSE in the source distribution or at
+ * https://www.openssl.org/source/license.html
+ */
+
+/* ====================================================================
+ * Copyright (c) 2017 Oracle and/or its affiliates. All rights reserved.
+ */
+
+#ifndef HEADER_ARIA_H
+# define HEADER_ARIA_H
+
+# include <openssl/opensslconf.h>
+
+# ifdef OPENSSL_NO_ARIA
+# error ARIA is disabled.
+# endif
+
+# include <stddef.h>
+
+# define ARIA_ENCRYPT 1
+# define ARIA_DECRYPT 0
+
+# define ARIA_BLOCK_SIZE 16 /* Size of each encryption/decription block */
+# define ARIA_MAX_KEYS 17 /* Number of keys needed in the worst case */
+
+# ifdef __cplusplus
+extern "C" {
+# endif
+
+typedef unsigned char ARIA_u128[ARIA_BLOCK_SIZE];
+
+struct aria_key_st {
+ unsigned int rounds;
+ ARIA_u128 rd_key[ARIA_MAX_KEYS];
+};
+typedef struct aria_key_st ARIA_KEY;
+
+
+int aria_set_encrypt_key(const unsigned char *userKey, const int bits,
+ ARIA_KEY *key);
+int aria_set_decrypt_key(const unsigned char *userKey, const int bits,
+ ARIA_KEY *key);
+
+void aria_encrypt(const unsigned char *in, unsigned char *out,
+ const ARIA_KEY *key);
+
+# ifdef __cplusplus
+}
+# endif
+
+#endif