diff options
author | pjd <pjd@FreeBSD.org> | 2007-09-01 06:33:02 +0000 |
---|---|---|
committer | pjd <pjd@FreeBSD.org> | 2007-09-01 06:33:02 +0000 |
commit | 9afb74d04914b9d6ab998cb5c47f761f326e9961 (patch) | |
tree | d9ebf6d71be9eb475dfffdb174dd1a4ef169db01 /sys/geom | |
parent | 3ee1ed30a1cb2db54f874866c48d04aba457b560 (diff) | |
download | FreeBSD-src-9afb74d04914b9d6ab998cb5c47f761f326e9961.zip FreeBSD-src-9afb74d04914b9d6ab998cb5c47f761f326e9961.tar.gz |
Add support for Camellia encryption algorithm.
PR: kern/113790
Submitted by: Yoshisato YANAGISAWA <yanagisawa@csg.is.titech.ac.jp>
Approved by: re (bmah)
Diffstat (limited to 'sys/geom')
-rw-r--r-- | sys/geom/eli/g_eli.h | 7 | ||||
-rw-r--r-- | sys/geom/eli/g_eli_crypto.c | 15 |
2 files changed, 21 insertions, 1 deletions
diff --git a/sys/geom/eli/g_eli.h b/sys/geom/eli/g_eli.h index 5460eea..8079c9d 100644 --- a/sys/geom/eli/g_eli.h +++ b/sys/geom/eli/g_eli.h @@ -286,6 +286,8 @@ g_eli_str2ealgo(const char *name) return (CRYPTO_AES_CBC); else if (strcasecmp("blowfish", name) == 0) return (CRYPTO_BLF_CBC); + else if (strcasecmp("camellia", name) == 0) + return (CRYPTO_CAMELLIA_CBC); else if (strcasecmp("3des", name) == 0) return (CRYPTO_3DES_CBC); return (CRYPTO_ALGORITHM_MIN - 1); @@ -321,6 +323,8 @@ g_eli_algo2str(u_int algo) return ("AES-CBC"); case CRYPTO_BLF_CBC: return ("Blowfish-CBC"); + case CRYPTO_CAMELLIA_CBC: + return ("CAMELLIA-CBC"); case CRYPTO_3DES_CBC: return ("3DES-CBC"); case CRYPTO_MD5_HMAC: @@ -390,7 +394,8 @@ g_eli_keylen(u_int algo, u_int keylen) keylen = 0; } return (keylen); - case CRYPTO_AES_CBC: + case CRYPTO_AES_CBC: /* FALLTHROUGH */ + case CRYPTO_CAMELLIA_CBC: switch (keylen) { case 0: return (128); diff --git a/sys/geom/eli/g_eli_crypto.c b/sys/geom/eli/g_eli_crypto.c index b484f90..c26b367 100644 --- a/sys/geom/eli/g_eli_crypto.c +++ b/sys/geom/eli/g_eli_crypto.c @@ -158,6 +158,21 @@ g_eli_crypto_cipher(u_int algo, int enc, u_char *data, size_t datasize, case CRYPTO_BLF_CBC: type = EVP_bf_cbc(); break; + case CRYPTO_CAMELLIA_CBC: + switch (keysize) { + case 128: + type = EVP_camellia_128_cbc(); + break; + case 192: + type = EVP_camellia_192_cbc(); + break; + case 256: + type = EVP_camellia_256_cbc(); + break; + default: + return (EINVAL); + } + break; case CRYPTO_3DES_CBC: type = EVP_des_ede3_cbc(); break; |