柳澤です。

NTTと三菱電機が作った国産ブロック暗号であるCamelliaが
currentのカーネルで使えるようになっていたのに触発されて
geli(8)でCamelliaを使えるようにするpatchを書いてみました。
そこで質問なのですが、こんなちょっとしたpatchを作って
FreeBSD本体に入れて欲しい場合は誰に頼めば良いのでしょうか。
教えて頂ければ幸いです。

このパッチは今日の0時頃のcurrentに対して作りました。
使うにはpatchを当てた後にgeliのカーネルモジュールと
sbin/geonの再コンパイルが必要になります。
使ってみた感想も歓迎します。

# 羅馬は1日にしてならずと言いますが、
# 1日もかけずできちゃいました。 (^^;
# 阿呆みたいに簡単なのでもう誰か作っているかも知れないですね。
# random(4)のyarrowアルゴリズムでCamelliaを使おうともしましたが、
# こちらはAESべったりなのでやりにくいです。

-- 
-------------------------------------------------------
Yoshisato YANAGISAWA 
<[&#x30E1;&#x30FC;&#x30EB;&#x30A2;&#x30C9;&#x30EC;&#x30B9;&#x4FDD;&#x8B77;]>
Dept. of Mathematical and Computing Sciences,
Graduate School of Information Science and Engineering,
Tokyo Institute of Technology.
/* If you are an *BSD user, let's join http://bsdstats.org/ */
diff -ruN src.bak/sbin/geom/class/eli/geli.8 src/sbin/geom/class/eli/geli.8
--- src.bak/sbin/geom/class/eli/geli.8	2007-03-05 21:39:49.000000000 +0900
+++ src/sbin/geom/class/eli/geli.8	2007-06-16 13:48:37.000000000 +0900
@@ -146,7 +146,8 @@
 .It
 Supports many cryptographic algorithms (currently
 .Nm AES ,
-.Nm Blowfish
+.Nm Blowfish ,
+.Nm Camellia
 and
 .Nm 3DES ) .
 .It
@@ -227,7 +228,8 @@
 Encryption algorithm to use.
 Currently supported algorithms are:
 .Nm AES ,
-.Nm Blowfish
+.Nm Blowfish ,
+.Nm Camellia
 and
 .Nm 3DES .
 The default is
@@ -260,7 +262,9 @@
 128 for
 .Nm AES ,
 128 for
-.Nm Blowfish
+.Nm Blowfish ,
+128 for
+.Nm Camellia
 and 192 for
 .Nm 3DES .
 .It Fl s Ar sectorsize
diff -ruN src.bak/sys/geom/eli/g_eli.h src/sys/geom/eli/g_eli.h
--- src.bak/sys/geom/eli/g_eli.h	2006-09-16 19:43:17.000000000 +0900
+++ src/sys/geom/eli/g_eli.h	2007-06-16 13:50:23.000000000 +0900
@@ -286,6 +286,8 @@
 		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 @@
 		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 @@
 				keylen = 0;
 		}
 		return (keylen);
-	case CRYPTO_AES_CBC:
+	case CRYPTO_AES_CBC: /* FALLTHROUGH */
+	case CRYPTO_CAMELLIA_CBC:
 		switch (keylen) {
 		case 0:
 			return (128);
diff -ruN src.bak/sys/geom/eli/g_eli_crypto.c src/sys/geom/eli/g_eli_crypto.c
--- src.bak/sys/geom/eli/g_eli_crypto.c	2007-03-21 12:42:50.000000000 +0900
+++ src/sys/geom/eli/g_eli_crypto.c	2007-06-16 13:51:23.000000000 +0900
@@ -158,6 +158,21 @@
 	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;

メールによる返信