Camellia cipher, contributed by NTT

Submitted by: Masashi Fujita
Reviewed by: Bodo Moeller
diff --git a/CHANGES b/CHANGES
index b55eba3..33c9186 100644
--- a/CHANGES
+++ b/CHANGES
@@ -284,8 +284,21 @@
   *) Add print and set support for Issuing Distribution Point CRL extension.
      [Steve Henson]
 
+  *) Change 'Configure' script to enable Camellia by default.
+     [NTT]
+
  Changes between 0.9.8b and 0.9.8c  [xx XXX xxxx]
 
+  *) Add the symmetric cipher Camellia (128-bit, 192-bit, 256-bit key
+     versions), which is now available for royalty-free use
+     (see http://info.isl.ntt.co.jp/crypt/eng/info/chiteki.html).
+     Also, add Camellia TLS ciphersuites from RFC 4132.
+
+     To minimize changes between patchlevels in the OpenSSL 0.9.8
+     series, Camellia remains excluded from compilation unless OpenSSL
+     is configured with 'enable-camellia'.
+     [NTT]
+
   *) Disable the padding bug check when compression is in use. The padding
      bug check assumes the first packet is of even length, this is not
      necessarily true if compresssion is enabled and can result in false
diff --git a/Makefile.org b/Makefile.org
index cf5df2f..b55b6ba 100644
--- a/Makefile.org
+++ b/Makefile.org
@@ -112,7 +112,7 @@
 SDIRS=  \
 	objects \
 	md2 md4 md5 sha mdc2 hmac ripemd whrlpool \
-	des aes rc2 rc4 rc5 idea bf cast \
+	des aes rc2 rc4 rc5 idea bf cast camellia \
 	bn ec rsa dsa ecdsa dh ecdh dso engine \
 	buffer bio stack lhash rand err \
 	evp asn1 pem x509 x509v3 conf txt_db pkcs7 pkcs12 comp ocsp ui krb5 \
diff --git a/apps/Makefile b/apps/Makefile
index 7167fc5..90d4517 100644
--- a/apps/Makefile
+++ b/apps/Makefile
@@ -865,26 +865,27 @@
 speed.o: ../e_os.h ../include/openssl/aes.h ../include/openssl/asn1.h
 speed.o: ../include/openssl/bio.h ../include/openssl/blowfish.h
 speed.o: ../include/openssl/bn.h ../include/openssl/buffer.h
-speed.o: ../include/openssl/cast.h ../include/openssl/conf.h
-speed.o: ../include/openssl/crypto.h ../include/openssl/des.h
-speed.o: ../include/openssl/des_old.h ../include/openssl/dsa.h
-speed.o: ../include/openssl/e_os2.h ../include/openssl/ec.h
-speed.o: ../include/openssl/ecdh.h ../include/openssl/ecdsa.h
-speed.o: ../include/openssl/engine.h ../include/openssl/err.h
-speed.o: ../include/openssl/evp.h ../include/openssl/hmac.h
-speed.o: ../include/openssl/idea.h ../include/openssl/lhash.h
-speed.o: ../include/openssl/md2.h ../include/openssl/md4.h
-speed.o: ../include/openssl/md5.h ../include/openssl/obj_mac.h
-speed.o: ../include/openssl/objects.h ../include/openssl/opensslconf.h
-speed.o: ../include/openssl/opensslv.h ../include/openssl/ossl_typ.h
-speed.o: ../include/openssl/pkcs7.h ../include/openssl/rand.h
-speed.o: ../include/openssl/rc2.h ../include/openssl/rc4.h
-speed.o: ../include/openssl/ripemd.h ../include/openssl/rsa.h
-speed.o: ../include/openssl/safestack.h ../include/openssl/sha.h
-speed.o: ../include/openssl/stack.h ../include/openssl/symhacks.h
-speed.o: ../include/openssl/txt_db.h ../include/openssl/ui.h
-speed.o: ../include/openssl/ui_compat.h ../include/openssl/x509.h
-speed.o: ../include/openssl/x509_vfy.h apps.h speed.c testdsa.h testrsa.h
+speed.o: ../include/openssl/camellia.h ../include/openssl/cast.h
+speed.o: ../include/openssl/conf.h ../include/openssl/crypto.h
+speed.o: ../include/openssl/des.h ../include/openssl/des_old.h
+speed.o: ../include/openssl/dsa.h ../include/openssl/e_os2.h
+speed.o: ../include/openssl/ec.h ../include/openssl/ecdh.h
+speed.o: ../include/openssl/ecdsa.h ../include/openssl/engine.h
+speed.o: ../include/openssl/err.h ../include/openssl/evp.h
+speed.o: ../include/openssl/hmac.h ../include/openssl/idea.h
+speed.o: ../include/openssl/lhash.h ../include/openssl/md2.h
+speed.o: ../include/openssl/md4.h ../include/openssl/md5.h
+speed.o: ../include/openssl/obj_mac.h ../include/openssl/objects.h
+speed.o: ../include/openssl/opensslconf.h ../include/openssl/opensslv.h
+speed.o: ../include/openssl/ossl_typ.h ../include/openssl/pkcs7.h
+speed.o: ../include/openssl/rand.h ../include/openssl/rc2.h
+speed.o: ../include/openssl/rc4.h ../include/openssl/ripemd.h
+speed.o: ../include/openssl/rsa.h ../include/openssl/safestack.h
+speed.o: ../include/openssl/sha.h ../include/openssl/stack.h
+speed.o: ../include/openssl/symhacks.h ../include/openssl/txt_db.h
+speed.o: ../include/openssl/ui.h ../include/openssl/ui_compat.h
+speed.o: ../include/openssl/x509.h ../include/openssl/x509_vfy.h apps.h speed.c
+speed.o: testdsa.h testrsa.h
 spkac.o: ../e_os.h ../include/openssl/asn1.h ../include/openssl/bio.h
 spkac.o: ../include/openssl/buffer.h ../include/openssl/conf.h
 spkac.o: ../include/openssl/crypto.h ../include/openssl/e_os2.h
diff --git a/apps/dsa.c b/apps/dsa.c
index 091f936..ab258eb 100644
--- a/apps/dsa.c
+++ b/apps/dsa.c
@@ -84,6 +84,9 @@
  * -aes128	- encrypt output if PEM format
  * -aes192	- encrypt output if PEM format
  * -aes256	- encrypt output if PEM format
+ * -camellia128 - encrypt output if PEM format
+ * -camellia192 - encrypt output if PEM format
+ * -camellia256 - encrypt output if PEM format
  * -text	- print a text version
  * -modulus	- print the DSA public key
  */
@@ -220,6 +223,10 @@
 		BIO_printf(bio_err," -aes128, -aes192, -aes256\n");
 		BIO_printf(bio_err,"                 encrypt PEM output with cbc aes\n");
 #endif
+#ifndef OPENSSL_NO_CAMELLIA
+		BIO_printf(bio_err," -camellia128, -camellia192, -camellia256\n");
+		BIO_printf(bio_err,"                 encrypt PEM output with cbc camellia\n");
+#endif
 		BIO_printf(bio_err," -text           print the key in text\n");
 		BIO_printf(bio_err," -noout          don't print key out\n");
 		BIO_printf(bio_err," -modulus        print the DSA public value\n");
diff --git a/apps/gendsa.c b/apps/gendsa.c
index 828e27f..936a42b 100644
--- a/apps/gendsa.c
+++ b/apps/gendsa.c
@@ -148,6 +148,14 @@
 		else if (strcmp(*argv,"-aes256") == 0)
 			enc=EVP_aes_256_cbc();
 #endif
+#ifndef OPENSSL_NO_CAMELLIA
+		else if (strcmp(*argv,"-camellia128") == 0)
+			enc=EVP_camellia_128_cbc();
+		else if (strcmp(*argv,"-camellia192") == 0)
+			enc=EVP_camellia_192_cbc();
+		else if (strcmp(*argv,"-camellia256") == 0)
+			enc=EVP_camellia_256_cbc();
+#endif
 		else if (**argv != '-' && dsaparams == NULL)
 			{
 			dsaparams = *argv;
@@ -174,6 +182,10 @@
 		BIO_printf(bio_err," -aes128, -aes192, -aes256\n");
 		BIO_printf(bio_err,"                 encrypt PEM output with cbc aes\n");
 #endif
+#ifndef OPENSSL_NO_CAMELLIA
+		BIO_printf(bio_err," -camellia128, -camellia192, -camellia256\n");
+		BIO_printf(bio_err,"                 encrypt PEM output with cbc camellia\n");
+#endif
 #ifndef OPENSSL_NO_ENGINE
 		BIO_printf(bio_err," -engine e - use engine e, possibly a hardware device.\n");
 #endif
diff --git a/apps/genrsa.c b/apps/genrsa.c
index 4f62cfd..d716a3c 100644
--- a/apps/genrsa.c
+++ b/apps/genrsa.c
@@ -168,6 +168,14 @@
 		else if (strcmp(*argv,"-aes256") == 0)
 			enc=EVP_aes_256_cbc();
 #endif
+#ifndef OPENSSL_NO_CAMELLIA
+		else if (strcmp(*argv,"-camellia128") == 0)
+			enc=EVP_camellia_128_cbc();
+		else if (strcmp(*argv,"-camellia192") == 0)
+			enc=EVP_camellia_192_cbc();
+		else if (strcmp(*argv,"-camellia256") == 0)
+			enc=EVP_camellia_256_cbc();
+#endif
 		else if (strcmp(*argv,"-passout") == 0)
 			{
 			if (--argc < 1) goto bad;
@@ -191,6 +199,10 @@
 		BIO_printf(bio_err," -aes128, -aes192, -aes256\n");
 		BIO_printf(bio_err,"                 encrypt PEM output with cbc aes\n");
 #endif
+#ifndef OPENSSL_NO_CAMELLIA
+		BIO_printf(bio_err," -camellia128, -camellia192, -camellia256\n");
+		BIO_printf(bio_err,"                 encrypt PEM output with cbc camellia\n");
+#endif
 		BIO_printf(bio_err," -out file       output the key to 'file\n");
 		BIO_printf(bio_err," -passout arg    output file pass phrase source\n");
 		BIO_printf(bio_err," -f4             use F4 (0x10001) for the E value\n");
diff --git a/apps/openssl.c b/apps/openssl.c
index a9f3df0..f996bb3 100644
--- a/apps/openssl.c
+++ b/apps/openssl.c
@@ -56,7 +56,7 @@
  * [including the GNU Public Licence.]
  */
 /* ====================================================================
- * Copyright (c) 1998-2001 The OpenSSL Project.  All rights reserved.
+ * Copyright (c) 1998-2006 The OpenSSL Project.  All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
  * modification, are permitted provided that the following conditions
@@ -459,7 +459,11 @@
 		for (fp=functions; fp->name != NULL; fp++)
 			{
 			nl=0;
+#ifdef OPENSSL_NO_CAMELLIA
 			if (((i++) % 5) == 0)
+#else
+			if (((i++) % 4) == 0)
+#endif
 				{
 				BIO_printf(bio_err,"\n");
 				nl=1;
@@ -480,7 +484,11 @@
 					BIO_printf(bio_err,"\nCipher commands (see the `enc' command for more details)\n");
 					}
 				}
+#ifdef OPENSSL_NO_CAMELLIA
 			BIO_printf(bio_err,"%-15s",fp->name);
+#else
+			BIO_printf(bio_err,"%-18s",fp->name);
+#endif
 			}
 		BIO_printf(bio_err,"\n\n");
 		ret=0;
diff --git a/apps/pkcs12.c b/apps/pkcs12.c
index 2e1c0e2..9fa33f6 100644
--- a/apps/pkcs12.c
+++ b/apps/pkcs12.c
@@ -3,7 +3,7 @@
  * project.
  */
 /* ====================================================================
- * Copyright (c) 1999-2002 The OpenSSL Project.  All rights reserved.
+ * Copyright (c) 1999-2006 The OpenSSL Project.  All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
  * modification, are permitted provided that the following conditions
@@ -164,6 +164,11 @@
 		else if (!strcmp(*args,"-aes192")) enc=EVP_aes_192_cbc();
 		else if (!strcmp(*args,"-aes256")) enc=EVP_aes_256_cbc();
 #endif
+#ifndef OPENSSL_NO_CAMELLIA
+		else if (!strcmp(*args,"-camellia128")) enc=EVP_camellia_128_cbc();
+		else if (!strcmp(*args,"-camellia192")) enc=EVP_camellia_192_cbc();
+		else if (!strcmp(*args,"-camellia256")) enc=EVP_camellia_256_cbc();
+#endif
 		else if (!strcmp (*args, "-noiter")) iter = 1;
 		else if (!strcmp (*args, "-maciter"))
 					 maciter = PKCS12_DEFAULT_ITER;
@@ -292,6 +297,10 @@
 	BIO_printf (bio_err, "-aes128, -aes192, -aes256\n");
 	BIO_printf (bio_err, "              encrypt PEM output with cbc aes\n");
 #endif
+#ifndef OPENSSL_NO_CAMELLIA
+	BIO_printf (bio_err, "-camellia128, -camellia192, -camellia256\n");
+	BIO_printf (bio_err, "              encrypt PEM output with cbc camellia\n");
+#endif
 	BIO_printf (bio_err, "-nodes        don't encrypt private keys\n");
 	BIO_printf (bio_err, "-noiter       don't use encryption iteration\n");
 	BIO_printf (bio_err, "-maciter      use MAC iteration\n");
diff --git a/apps/progs.h b/apps/progs.h
index 3458b11..a1a421a 100644
--- a/apps/progs.h
+++ b/apps/progs.h
@@ -177,6 +177,24 @@
 #ifndef OPENSSL_NO_AES
 	{FUNC_TYPE_CIPHER,"aes-256-ecb",enc_main},
 #endif
+#ifndef OPENSSL_NO_CAMELLIA
+	{FUNC_TYPE_CIPHER,"camellia-128-cbc",enc_main},
+#endif
+#ifndef OPENSSL_NO_CAMELLIA
+	{FUNC_TYPE_CIPHER,"camellia-128-ecb",enc_main},
+#endif
+#ifndef OPENSSL_NO_CAMELLIA
+	{FUNC_TYPE_CIPHER,"camellia-192-cbc",enc_main},
+#endif
+#ifndef OPENSSL_NO_CAMELLIA
+	{FUNC_TYPE_CIPHER,"camellia-192-ecb",enc_main},
+#endif
+#ifndef OPENSSL_NO_CAMELLIA
+	{FUNC_TYPE_CIPHER,"camellia-256-cbc",enc_main},
+#endif
+#ifndef OPENSSL_NO_CAMELLIA
+	{FUNC_TYPE_CIPHER,"camellia-256-ecb",enc_main},
+#endif
 	{FUNC_TYPE_CIPHER,"base64",enc_main},
 #ifndef OPENSSL_NO_DES
 	{FUNC_TYPE_CIPHER,"des",enc_main},
diff --git a/apps/progs.pl b/apps/progs.pl
index aac86a3..0238108 100644
--- a/apps/progs.pl
+++ b/apps/progs.pl
@@ -58,6 +58,9 @@
 	"aes-128-cbc", "aes-128-ecb",
 	"aes-192-cbc", "aes-192-ecb",
 	"aes-256-cbc", "aes-256-ecb",
+	"camellia-128-cbc", "camellia-128-ecb",
+	"camellia-192-cbc", "camellia-192-ecb",
+	"camellia-256-cbc", "camellia-256-ecb",
 	"base64",
 	"des", "des3", "desx", "idea", "rc4", "rc4-40",
 	"rc2", "bf", "cast", "rc5",
@@ -76,6 +79,7 @@
 	$t=sprintf("\t{FUNC_TYPE_CIPHER,\"%s\",enc_main},\n",$_);
 	if    ($_ =~ /des/)  { $t="#ifndef OPENSSL_NO_DES\n${t}#endif\n"; }
 	elsif ($_ =~ /aes/)  { $t="#ifndef OPENSSL_NO_AES\n${t}#endif\n"; }
+	elsif ($_ =~ /camellia/)  { $t="#ifndef OPENSSL_NO_CAMELLIA\n${t}#endif\n"; }
 	elsif ($_ =~ /idea/) { $t="#ifndef OPENSSL_NO_IDEA\n${t}#endif\n"; }
 	elsif ($_ =~ /rc4/)  { $t="#ifndef OPENSSL_NO_RC4\n${t}#endif\n"; }
 	elsif ($_ =~ /rc2/)  { $t="#ifndef OPENSSL_NO_RC2\n${t}#endif\n"; }
diff --git a/apps/rsa.c b/apps/rsa.c
index 3166c6a..f79f375 100644
--- a/apps/rsa.c
+++ b/apps/rsa.c
@@ -84,6 +84,9 @@
  * -aes128	- encrypt output if PEM format
  * -aes192	- encrypt output if PEM format
  * -aes256	- encrypt output if PEM format
+ * -camellia128 - encrypt output if PEM format
+ * -camellia192 - encrypt output if PEM format
+ * -camellia256 - encrypt output if PEM format
  * -text	- print a text version
  * -modulus	- print the RSA key modulus
  * -check	- verify key consistency
@@ -224,6 +227,10 @@
 		BIO_printf(bio_err," -aes128, -aes192, -aes256\n");
 		BIO_printf(bio_err,"                 encrypt PEM output with cbc aes\n");
 #endif
+#ifndef OPENSSL_NO_CAMELLIA
+		BIO_printf(bio_err," -camellia128, -camellia192, -camellia256\n");
+		BIO_printf(bio_err,"                 encrypt PEM output with cbc camellia\n");
+#endif
 		BIO_printf(bio_err," -text           print the key in text\n");
 		BIO_printf(bio_err," -noout          don't print key out\n");
 		BIO_printf(bio_err," -modulus        print the RSA key modulus\n");
diff --git a/apps/smime.c b/apps/smime.c
index c5453ea..69ce280 100644
--- a/apps/smime.c
+++ b/apps/smime.c
@@ -168,6 +168,14 @@
 		else if (!strcmp(*args,"-aes256"))
 				cipher = EVP_aes_256_cbc();
 #endif
+#ifndef OPENSSL_NO_CAMELLIA
+		else if (!strcmp(*args,"-camellia128"))
+				cipher = EVP_camellia_128_cbc();
+		else if (!strcmp(*args,"-camellia192"))
+				cipher = EVP_camellia_192_cbc();
+		else if (!strcmp(*args,"-camellia256"))
+				cipher = EVP_camellia_256_cbc();
+#endif
 		else if (!strcmp (*args, "-text")) 
 				flags |= PKCS7_TEXT;
 		else if (!strcmp (*args, "-nointern")) 
@@ -430,6 +438,10 @@
 		BIO_printf (bio_err, "-aes128, -aes192, -aes256\n");
 		BIO_printf (bio_err, "               encrypt PEM output with cbc aes\n");
 #endif
+#ifndef OPENSSL_NO_CAMELLIA
+		BIO_printf (bio_err, "-camellia128, -camellia192, -camellia256\n");
+		BIO_printf (bio_err, "               encrypt PEM output with cbc camellia\n");
+#endif
 		BIO_printf (bio_err, "-nointern      don't search certificates in message for signer\n");
 		BIO_printf (bio_err, "-nosigs        don't verify message signature\n");
 		BIO_printf (bio_err, "-noverify      don't verify signers certificate\n");
diff --git a/apps/speed.c b/apps/speed.c
index 9b8365c..c53f815 100644
--- a/apps/speed.c
+++ b/apps/speed.c
@@ -119,6 +119,9 @@
 #ifndef OPENSSL_NO_AES
 #include <openssl/aes.h>
 #endif
+#ifndef OPENSSL_NO_CAMELLIA
+#include <openssl/camellia.h>
+#endif
 #ifndef OPENSSL_NO_MD2
 #include <openssl/md2.h>
 #endif
@@ -195,7 +198,7 @@
 static int do_multi(int multi);
 #endif
 
-#define ALGOR_NUM	21
+#define ALGOR_NUM	24
 #define SIZE_NUM	5
 #define RSA_NUM		4
 #define DSA_NUM		3
@@ -207,7 +210,9 @@
   "md2","mdc2","md4","md5","hmac(md5)","sha1","rmd160","rc4",
   "des cbc","des ede3","idea cbc",
   "rc2 cbc","rc5-32/12 cbc","blowfish cbc","cast cbc",
-  "aes-128 cbc","aes-192 cbc","aes-256 cbc","evp","sha256","sha512"};
+  "aes-128 cbc","aes-192 cbc","aes-256 cbc",
+  "camellia-128 cbc","camellia-192 cbc","camellia-256 cbc",
+  "evp","sha256","sha512"};
 static double results[ALGOR_NUM][SIZE_NUM];
 static int lengths[SIZE_NUM]={16,64,256,1024,8*1024};
 static double rsa_results[RSA_NUM][2];
@@ -379,6 +384,17 @@
 		 0x56,0x78,0x9a,0xbc,0xde,0xf0,0x12,0x34,
 		 0x78,0x9a,0xbc,0xde,0xf0,0x12,0x34,0x56};
 #endif
+#ifndef OPENSSL_NO_CAMELLIA
+	static const unsigned char ckey24[24]=
+		{0x12,0x34,0x56,0x78,0x9a,0xbc,0xde,0xf0,
+		 0x34,0x56,0x78,0x9a,0xbc,0xde,0xf0,0x12,
+		 0x56,0x78,0x9a,0xbc,0xde,0xf0,0x12,0x34};
+	static const unsigned char ckey32[32]=
+		{0x12,0x34,0x56,0x78,0x9a,0xbc,0xde,0xf0,
+		 0x34,0x56,0x78,0x9a,0xbc,0xde,0xf0,0x12,
+		 0x56,0x78,0x9a,0xbc,0xde,0xf0,0x12,0x34,
+		 0x78,0x9a,0xbc,0xde,0xf0,0x12,0x34,0x56};
+#endif
 #ifndef OPENSSL_NO_AES
 #define MAX_BLOCK_SIZE 128
 #else
@@ -398,6 +414,9 @@
 #ifndef OPENSSL_NO_AES
 	AES_KEY aes_ks1, aes_ks2, aes_ks3;
 #endif
+#ifndef OPENSSL_NO_CAMELLIA
+	CAMELLIA_KEY camellia_ks1, camellia_ks2, camellia_ks3;
+#endif
 #define	D_MD2		0
 #define	D_MDC2		1
 #define	D_MD4		2
@@ -416,9 +435,12 @@
 #define D_CBC_128_AES	15
 #define D_CBC_192_AES	16
 #define D_CBC_256_AES	17
-#define D_EVP		18
-#define D_SHA256	19
-#define D_SHA512	20
+#define D_CBC_128_CML   18 
+#define D_CBC_192_CML   19
+#define D_CBC_256_CML   20 
+#define D_EVP		21
+#define D_SHA256	22	
+#define D_SHA512	23
 	double d=0.0;
 	long c[ALGOR_NUM][SIZE_NUM];
 #define	R_DSA_512	0
@@ -761,6 +783,12 @@
 		else	if (strcmp(*argv,"aes-256-cbc") == 0) doit[D_CBC_256_AES]=1;
 		else
 #endif
+#ifndef OPENSSL_NO_CAMELLIA
+			if (strcmp(*argv,"camellia-128-cbc") == 0) doit[D_CBC_128_CML]=1;
+		else    if (strcmp(*argv,"camellia-192-cbc") == 0) doit[D_CBC_192_CML]=1;
+		else    if (strcmp(*argv,"camellia-256-cbc") == 0) doit[D_CBC_256_CML]=1;
+		else
+#endif
 #ifndef OPENSSL_NO_RSA
 #if 0 /* was: #ifdef RSAref */
 			if (strcmp(*argv,"rsaref") == 0) 
@@ -831,6 +859,15 @@
 			}
 		else
 #endif
+#ifndef OPENSSL_NO_CAMELLIA
+			if (strcmp(*argv,"camellia") == 0)
+			{
+			doit[D_CBC_128_CML]=1;
+			doit[D_CBC_192_CML]=1;
+			doit[D_CBC_256_CML]=1;
+			}
+		else
+#endif
 #ifndef OPENSSL_NO_RSA
 			if (strcmp(*argv,"rsa") == 0)
 			{
@@ -957,6 +994,10 @@
 #ifndef OPENSSL_NO_AES
 			BIO_printf(bio_err,"aes-128-cbc aes-192-cbc aes-256-cbc ");
 #endif
+#ifndef OPENSSL_NO_CAMELLIA
+			BIO_printf(bio_err,"\n");
+			BIO_printf(bio_err,"camellia-128-cbc camellia-192-cbc camellia-256-cbc ");
+#endif
 #ifndef OPENSSL_NO_RC4
 			BIO_printf(bio_err,"rc4");
 #endif
@@ -994,6 +1035,9 @@
 #ifndef OPENSSL_NO_AES
 			BIO_printf(bio_err,"aes      ");
 #endif
+#ifndef OPENSSL_NO_CAMELLIA
+			BIO_printf(bio_err,"camellia ");
+#endif
 #ifndef OPENSSL_NO_RSA
 			BIO_printf(bio_err,"rsa      ");
 #endif
@@ -1002,7 +1046,8 @@
 #endif
 #if !defined(OPENSSL_NO_IDEA) || !defined(OPENSSL_NO_RC2) || \
     !defined(OPENSSL_NO_DES) || !defined(OPENSSL_NO_RSA) || \
-    !defined(OPENSSL_NO_BF) || !defined(OPENSSL_NO_AES)
+    !defined(OPENSSL_NO_BF) || !defined(OPENSSL_NO_AES) || \
+    !defined(OPENSSL_NO_CAMELLIA) 
 			BIO_printf(bio_err,"\n");
 #endif
 
@@ -1091,6 +1136,11 @@
 	AES_set_encrypt_key(key24,192,&aes_ks2);
 	AES_set_encrypt_key(key32,256,&aes_ks3);
 #endif
+#ifndef OPENSSL_NO_CAMELLIA
+	Camellia_set_key(key16,128,&camellia_ks1);
+	Camellia_set_key(ckey24,192,&camellia_ks2);
+	Camellia_set_key(ckey32,256,&camellia_ks3);
+#endif
 #ifndef OPENSSL_NO_IDEA
 	idea_set_encrypt_key(key16,&idea_ks);
 #endif
@@ -1144,6 +1194,9 @@
 	c[D_CBC_128_AES][0]=count;
 	c[D_CBC_192_AES][0]=count;
 	c[D_CBC_256_AES][0]=count;
+	c[D_CBC_128_CML][0]=count;
+	c[D_CBC_192_CML][0]=count;
+	c[D_CBC_256_CML][0]=count;
 	c[D_SHA256][0]=count;
 	c[D_SHA512][0]=count;
 
@@ -1176,6 +1229,9 @@
 		c[D_CBC_128_AES][i]=c[D_CBC_128_AES][i-1]*l0/l1;
 		c[D_CBC_192_AES][i]=c[D_CBC_192_AES][i-1]*l0/l1;
 		c[D_CBC_256_AES][i]=c[D_CBC_256_AES][i-1]*l0/l1;
+ 		c[D_CBC_128_CML][i]=c[D_CBC_128_CML][i-1]*l0/l1;
+		c[D_CBC_192_CML][i]=c[D_CBC_192_CML][i-1]*l0/l1;
+		c[D_CBC_256_CML][i]=c[D_CBC_256_CML][i-1]*l0/l1;
 		}
 #ifndef OPENSSL_NO_RSA
 	rsa_c[R_RSA_512][0]=count/2000;
@@ -1572,6 +1628,51 @@
 		}
 
 #endif
+#ifndef OPENSSL_NO_CAMELLIA
+	if (doit[D_CBC_128_CML])
+		{
+		for (j=0; j<SIZE_NUM; j++)
+			{
+			print_message(names[D_CBC_128_CML],c[D_CBC_128_CML][j],lengths[j]);
+			Time_F(START);
+			for (count=0,run=1; COND(c[D_CBC_128_CML][j]); count++)
+				Camellia_cbc_encrypt(buf,buf,
+				        (unsigned long)lengths[j],&camellia_ks1,
+				        iv,CAMELLIA_ENCRYPT);
+			d=Time_F(STOP);
+			print_result(D_CBC_128_CML,j,count,d);
+			}
+		}
+	if (doit[D_CBC_192_CML])
+		{
+		for (j=0; j<SIZE_NUM; j++)
+			{
+			print_message(names[D_CBC_192_CML],c[D_CBC_192_CML][j],lengths[j]);
+			Time_F(START);
+			for (count=0,run=1; COND(c[D_CBC_192_CML][j]); count++)
+				Camellia_cbc_encrypt(buf,buf,
+				        (unsigned long)lengths[j],&camellia_ks2,
+				        iv,CAMELLIA_ENCRYPT);
+			d=Time_F(STOP);
+			print_result(D_CBC_192_CML,j,count,d);
+			}
+		}
+	if (doit[D_CBC_256_CML])
+		{
+		for (j=0; j<SIZE_NUM; j++)
+			{
+			print_message(names[D_CBC_256_CML],c[D_CBC_256_CML][j],lengths[j]);
+			Time_F(START);
+			for (count=0,run=1; COND(c[D_CBC_256_CML][j]); count++)
+				Camellia_cbc_encrypt(buf,buf,
+				        (unsigned long)lengths[j],&camellia_ks3,
+				        iv,CAMELLIA_ENCRYPT);
+			d=Time_F(STOP);
+			print_result(D_CBC_256_CML,j,count,d);
+			}
+		}
+
+#endif
 #ifndef OPENSSL_NO_IDEA
 	if (doit[D_CBC_IDEA])
 		{
diff --git a/config b/config
index a0a7767..1d5fd91 100755
--- a/config
+++ b/config
@@ -803,7 +803,7 @@
   i386-*) options="$options 386" ;;
 esac
 
-for i in bf cast des dh dsa ec hmac idea md2 md5 mdc2 rc2 rc4 rc5 aes ripemd rsa sha
+for i in aes bf camellia cast des dh dsa ec hmac idea md2 md5 mdc2 rc2 rc4 rc5 ripemd rsa sha
 do
   if [ ! -d crypto/$i ]
   then
diff --git a/crypto/asn1/Makefile b/crypto/asn1/Makefile
index 7691d71..c8bfc1d 100644
--- a/crypto/asn1/Makefile
+++ b/crypto/asn1/Makefile
@@ -318,9 +318,9 @@
 ameth_lib.o: ../../include/openssl/buffer.h ../../include/openssl/crypto.h
 ameth_lib.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h
 ameth_lib.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h
-ameth_lib.o: ../../include/openssl/err.h ../../include/openssl/evp.h
-ameth_lib.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h
-ameth_lib.o: ../../include/openssl/objects.h
+ameth_lib.o: ../../include/openssl/engine.h ../../include/openssl/err.h
+ameth_lib.o: ../../include/openssl/evp.h ../../include/openssl/lhash.h
+ameth_lib.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h
 ameth_lib.o: ../../include/openssl/opensslconf.h
 ameth_lib.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
 ameth_lib.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h
@@ -391,12 +391,13 @@
 d2i_pr.o: ../../e_os.h ../../include/openssl/asn1.h ../../include/openssl/bio.h
 d2i_pr.o: ../../include/openssl/bn.h ../../include/openssl/buffer.h
 d2i_pr.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h
-d2i_pr.o: ../../include/openssl/err.h ../../include/openssl/evp.h
-d2i_pr.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h
-d2i_pr.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h
-d2i_pr.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
-d2i_pr.o: ../../include/openssl/safestack.h ../../include/openssl/stack.h
-d2i_pr.o: ../../include/openssl/symhacks.h ../cryptlib.h asn1_locl.h d2i_pr.c
+d2i_pr.o: ../../include/openssl/engine.h ../../include/openssl/err.h
+d2i_pr.o: ../../include/openssl/evp.h ../../include/openssl/lhash.h
+d2i_pr.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h
+d2i_pr.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h
+d2i_pr.o: ../../include/openssl/ossl_typ.h ../../include/openssl/safestack.h
+d2i_pr.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h
+d2i_pr.o: ../cryptlib.h asn1_locl.h d2i_pr.c
 d2i_pu.o: ../../e_os.h ../../include/openssl/asn1.h ../../include/openssl/bio.h
 d2i_pu.o: ../../include/openssl/bn.h ../../include/openssl/buffer.h
 d2i_pu.o: ../../include/openssl/crypto.h ../../include/openssl/dsa.h
diff --git a/crypto/engine/Makefile b/crypto/engine/Makefile
index f3d18ac..a292122 100644
--- a/crypto/engine/Makefile
+++ b/crypto/engine/Makefile
@@ -219,8 +219,8 @@
 tb_asnmth.o: ../../include/openssl/opensslconf.h
 tb_asnmth.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
 tb_asnmth.o: ../../include/openssl/safestack.h ../../include/openssl/stack.h
-tb_asnmth.o: ../../include/openssl/symhacks.h ../cryptlib.h eng_int.h
-tb_asnmth.o: tb_asnmth.c
+tb_asnmth.o: ../../include/openssl/symhacks.h ../asn1/asn1_locl.h ../cryptlib.h
+tb_asnmth.o: eng_int.h tb_asnmth.c
 tb_cipher.o: ../../e_os.h ../../include/openssl/bio.h
 tb_cipher.o: ../../include/openssl/buffer.h ../../include/openssl/crypto.h
 tb_cipher.o: ../../include/openssl/e_os2.h ../../include/openssl/engine.h
diff --git a/crypto/evp/Makefile b/crypto/evp/Makefile
index dae46eb..89e2eee 100644
--- a/crypto/evp/Makefile
+++ b/crypto/evp/Makefile
@@ -19,7 +19,7 @@
 
 LIB=$(TOP)/libcrypto.a
 LIBSRC= encode.c digest.c evp_enc.c evp_key.c evp_acnf.c \
-	e_des.c e_bf.c e_idea.c e_des3.c \
+	e_des.c e_bf.c e_idea.c e_des3.c e_camellia.c\
 	e_rc4.c e_aes.c names.c \
 	e_xcbc_d.c e_rc2.c e_cast.c e_rc5.c \
 	m_null.c m_md2.c m_md4.c m_md5.c m_sha.c m_sha1.c m_wp.c \
@@ -31,7 +31,7 @@
 	e_old.c pmeth_lib.c pmeth_fn.c pmeth_gn.c m_sigver.c
 
 LIBOBJ=	encode.o digest.o evp_enc.o evp_key.o evp_acnf.o \
-	e_des.o e_bf.o e_idea.o e_des3.o \
+	e_des.o e_bf.o e_idea.o e_des3.o e_camellia.o\
 	e_rc4.o e_aes.o names.o \
 	e_xcbc_d.o e_rc2.o e_cast.o e_rc5.o \
 	m_null.o m_md2.o m_md4.o m_md5.o m_sha.o m_sha1.o m_wp.o \
@@ -195,6 +195,15 @@
 e_bf.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
 e_bf.o: ../../include/openssl/safestack.h ../../include/openssl/stack.h
 e_bf.o: ../../include/openssl/symhacks.h ../cryptlib.h e_bf.c evp_locl.h
+e_camellia.o: ../../include/openssl/asn1.h ../../include/openssl/bio.h
+e_camellia.o: ../../include/openssl/camellia.h ../../include/openssl/crypto.h
+e_camellia.o: ../../include/openssl/e_os2.h ../../include/openssl/err.h
+e_camellia.o: ../../include/openssl/evp.h ../../include/openssl/lhash.h
+e_camellia.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h
+e_camellia.o: ../../include/openssl/opensslconf.h
+e_camellia.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
+e_camellia.o: ../../include/openssl/safestack.h ../../include/openssl/stack.h
+e_camellia.o: ../../include/openssl/symhacks.h e_camellia.c evp_locl.h
 e_cast.o: ../../e_os.h ../../include/openssl/asn1.h ../../include/openssl/bio.h
 e_cast.o: ../../include/openssl/buffer.h ../../include/openssl/cast.h
 e_cast.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h
@@ -600,16 +609,16 @@
 p_lib.o: ../../include/openssl/crypto.h ../../include/openssl/dh.h
 p_lib.o: ../../include/openssl/dsa.h ../../include/openssl/e_os2.h
 p_lib.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h
-p_lib.o: ../../include/openssl/ecdsa.h ../../include/openssl/err.h
-p_lib.o: ../../include/openssl/evp.h ../../include/openssl/lhash.h
-p_lib.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h
-p_lib.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h
-p_lib.o: ../../include/openssl/ossl_typ.h ../../include/openssl/pkcs7.h
-p_lib.o: ../../include/openssl/rsa.h ../../include/openssl/safestack.h
-p_lib.o: ../../include/openssl/sha.h ../../include/openssl/stack.h
-p_lib.o: ../../include/openssl/symhacks.h ../../include/openssl/x509.h
-p_lib.o: ../../include/openssl/x509_vfy.h ../asn1/asn1_locl.h ../cryptlib.h
-p_lib.o: p_lib.c
+p_lib.o: ../../include/openssl/ecdsa.h ../../include/openssl/engine.h
+p_lib.o: ../../include/openssl/err.h ../../include/openssl/evp.h
+p_lib.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h
+p_lib.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h
+p_lib.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
+p_lib.o: ../../include/openssl/pkcs7.h ../../include/openssl/rsa.h
+p_lib.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h
+p_lib.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h
+p_lib.o: ../../include/openssl/x509.h ../../include/openssl/x509_vfy.h
+p_lib.o: ../asn1/asn1_locl.h ../cryptlib.h p_lib.c
 p_open.o: ../../e_os.h ../../include/openssl/asn1.h ../../include/openssl/bio.h
 p_open.o: ../../include/openssl/buffer.h ../../include/openssl/crypto.h
 p_open.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h
diff --git a/crypto/evp/c_allc.c b/crypto/evp/c_allc.c
index fc16432..68630dd 100644
--- a/crypto/evp/c_allc.c
+++ b/crypto/evp/c_allc.c
@@ -183,4 +183,31 @@
 	EVP_add_cipher_alias(SN_aes_256_cbc,"AES256");
 	EVP_add_cipher_alias(SN_aes_256_cbc,"aes256");
 #endif
+
+#ifndef OPENSSL_NO_CAMELLIA
+	EVP_add_cipher(EVP_camellia_128_ecb());
+	EVP_add_cipher(EVP_camellia_128_cbc());
+	EVP_add_cipher(EVP_camellia_128_cfb());
+	EVP_add_cipher(EVP_camellia_128_cfb1());
+	EVP_add_cipher(EVP_camellia_128_cfb8());
+	EVP_add_cipher(EVP_camellia_128_ofb());
+	EVP_add_cipher_alias(SN_camellia_128_cbc,"CAMELLIA128");
+	EVP_add_cipher_alias(SN_camellia_128_cbc,"camellia128");
+	EVP_add_cipher(EVP_camellia_192_ecb());
+	EVP_add_cipher(EVP_camellia_192_cbc());
+	EVP_add_cipher(EVP_camellia_192_cfb());
+	EVP_add_cipher(EVP_camellia_192_cfb1());
+	EVP_add_cipher(EVP_camellia_192_cfb8());
+	EVP_add_cipher(EVP_camellia_192_ofb());
+	EVP_add_cipher_alias(SN_camellia_192_cbc,"CAMELLIA192");
+	EVP_add_cipher_alias(SN_camellia_192_cbc,"camellia192");
+	EVP_add_cipher(EVP_camellia_256_ecb());
+	EVP_add_cipher(EVP_camellia_256_cbc());
+	EVP_add_cipher(EVP_camellia_256_cfb());
+	EVP_add_cipher(EVP_camellia_256_cfb1());
+	EVP_add_cipher(EVP_camellia_256_cfb8());
+	EVP_add_cipher(EVP_camellia_256_ofb());
+	EVP_add_cipher_alias(SN_camellia_256_cbc,"CAMELLIA256");
+	EVP_add_cipher_alias(SN_camellia_256_cbc,"camellia256");
+#endif
 	}
diff --git a/crypto/evp/evp.h b/crypto/evp/evp.h
index 32a1ebe..59460fb 100644
--- a/crypto/evp/evp.h
+++ b/crypto/evp/evp.h
@@ -734,6 +734,29 @@
 const EVP_CIPHER *EVP_aes_256_ctr(void);
 #endif
 #endif
+#ifndef OPENSSL_NO_CAMELLIA
+const EVP_CIPHER *EVP_camellia_128_ecb(void);
+const EVP_CIPHER *EVP_camellia_128_cbc(void);
+const EVP_CIPHER *EVP_camellia_128_cfb1(void);
+const EVP_CIPHER *EVP_camellia_128_cfb8(void);
+const EVP_CIPHER *EVP_camellia_128_cfb128(void);
+# define EVP_camellia_128_cfb EVP_camellia_128_cfb128
+const EVP_CIPHER *EVP_camellia_128_ofb(void);
+const EVP_CIPHER *EVP_camellia_192_ecb(void);
+const EVP_CIPHER *EVP_camellia_192_cbc(void);
+const EVP_CIPHER *EVP_camellia_192_cfb1(void);
+const EVP_CIPHER *EVP_camellia_192_cfb8(void);
+const EVP_CIPHER *EVP_camellia_192_cfb128(void);
+# define EVP_camellia_192_cfb EVP_camellia_192_cfb128
+const EVP_CIPHER *EVP_camellia_192_ofb(void);
+const EVP_CIPHER *EVP_camellia_256_ecb(void);
+const EVP_CIPHER *EVP_camellia_256_cbc(void);
+const EVP_CIPHER *EVP_camellia_256_cfb1(void);
+const EVP_CIPHER *EVP_camellia_256_cfb8(void);
+const EVP_CIPHER *EVP_camellia_256_cfb128(void);
+# define EVP_camellia_256_cfb EVP_camellia_256_cfb128
+const EVP_CIPHER *EVP_camellia_256_ofb(void);
+#endif
 
 void OPENSSL_add_all_algorithms_noconf(void);
 void OPENSSL_add_all_algorithms_conf(void);
@@ -1091,6 +1114,7 @@
 
 /* Function codes. */
 #define EVP_F_AES_INIT_KEY				 133
+#define EVP_F_CAMELLIA_INIT_KEY				 159
 #define EVP_F_D2I_PKEY					 100
 #define EVP_F_DSAPKEY2PKCS8				 134
 #define EVP_F_DSA_PKEY2PKCS8				 135
@@ -1158,6 +1182,7 @@
 #define EVP_R_BN_DECODE_ERROR				 112
 #define EVP_R_BN_PUBKEY_ERROR				 113
 #define EVP_R_BUFFER_TOO_SMALL				 155
+#define EVP_R_CAMELLIA_KEY_SETUP_FAILED			 157
 #define EVP_R_CIPHER_PARAMETER_ERROR			 122
 #define EVP_R_COMMAND_NOT_SUPPORTED			 147
 #define EVP_R_CTRL_NOT_IMPLEMENTED			 132
diff --git a/crypto/evp/evp_err.c b/crypto/evp/evp_err.c
index 150bfd0..448c9b8 100644
--- a/crypto/evp/evp_err.c
+++ b/crypto/evp/evp_err.c
@@ -71,6 +71,7 @@
 static ERR_STRING_DATA EVP_str_functs[]=
 	{
 {ERR_FUNC(EVP_F_AES_INIT_KEY),	"AES_INIT_KEY"},
+{ERR_FUNC(EVP_F_CAMELLIA_INIT_KEY),	"CAMELLIA_INIT_KEY"},
 {ERR_FUNC(EVP_F_D2I_PKEY),	"D2I_PKEY"},
 {ERR_FUNC(EVP_F_DSAPKEY2PKCS8),	"DSAPKEY2PKCS8"},
 {ERR_FUNC(EVP_F_DSA_PKEY2PKCS8),	"DSA_PKEY2PKCS8"},
@@ -141,6 +142,7 @@
 {ERR_REASON(EVP_R_BN_DECODE_ERROR)       ,"bn decode error"},
 {ERR_REASON(EVP_R_BN_PUBKEY_ERROR)       ,"bn pubkey error"},
 {ERR_REASON(EVP_R_BUFFER_TOO_SMALL)      ,"buffer too small"},
+{ERR_REASON(EVP_R_CAMELLIA_KEY_SETUP_FAILED),"camellia key setup failed"},
 {ERR_REASON(EVP_R_CIPHER_PARAMETER_ERROR),"cipher parameter error"},
 {ERR_REASON(EVP_R_COMMAND_NOT_SUPPORTED) ,"command not supported"},
 {ERR_REASON(EVP_R_CTRL_NOT_IMPLEMENTED)  ,"ctrl not implemented"},
diff --git a/crypto/evp/evp_test.c b/crypto/evp/evp_test.c
index 3bf8e9a..6ecbecc 100644
--- a/crypto/evp/evp_test.c
+++ b/crypto/evp/evp_test.c
@@ -417,6 +417,13 @@
 		continue;
 		}
 #endif
+#ifdef OPENSSL_NO_CAMELLIA
+	    if (strstr(cipher, "CAMELLIA") == cipher)
+		{
+		fprintf(stdout, "Cipher disabled, skipping %s\n", cipher); 
+		continue;
+		}
+#endif
 	    fprintf(stderr,"Can't find %s\n",cipher);
 	    EXIT(3);
 	    }
diff --git a/crypto/evp/evptests.txt b/crypto/evp/evptests.txt
index 80bd9c7..193009f 100644
--- a/crypto/evp/evptests.txt
+++ b/crypto/evp/evptests.txt
@@ -181,3 +181,132 @@
 RC4:ef012345ef012345ef012345ef012345::0000000000000000000000000000000000000000:d6a141a7ec3c38dfbd615a1162e1c7ba36b67858
 RC4:0123456789abcdef0123456789abcdef::123456789ABCDEF0123456789ABCDEF0123456789ABCDEF012345678:66a0949f8af7d6891f7f832ba833c00c892ebe30143ce28740011ecf
 RC4:ef012345ef012345ef012345ef012345::00000000000000000000:d6a141a7ec3c38dfbd61
+
+
+# Camellia tests from RFC3713
+# For all ECB encrypts and decrypts, the transformed sequence is
+#   CAMELLIA-bits-ECB:key::plaintext:ciphertext:encdec
+CAMELLIA-128-ECB:0123456789abcdeffedcba9876543210::0123456789abcdeffedcba9876543210:67673138549669730857065648eabe43
+CAMELLIA-192-ECB:0123456789abcdeffedcba98765432100011223344556677::0123456789abcdeffedcba9876543210:b4993401b3e996f84ee5cee7d79b09b9
+CAMELLIA-256-ECB:0123456789abcdeffedcba987654321000112233445566778899aabbccddeeff::0123456789abcdeffedcba9876543210:9acc237dff16d76c20ef7c919e3a7509
+
+# ECB-CAMELLIA128.Encrypt
+CAMELLIA-128-ECB:000102030405060708090A0B0C0D0E0F::00112233445566778899AABBCCDDEEFF:77CF412067AF8270613529149919546F:1
+CAMELLIA-192-ECB:000102030405060708090A0B0C0D0E0F1011121314151617::00112233445566778899AABBCCDDEEFF:B22F3C36B72D31329EEE8ADDC2906C68:1
+CAMELLIA-256-ECB:000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F::00112233445566778899AABBCCDDEEFF:2EDF1F3418D53B88841FC8985FB1ECF2:1
+
+# ECB-CAMELLIA128.Encrypt and ECB-CAMELLIA128.Decrypt 
+CAMELLIA-128-ECB:2B7E151628AED2A6ABF7158809CF4F3C::6BC1BEE22E409F96E93D7E117393172A:432FC5DCD628115B7C388D770B270C96
+CAMELLIA-128-ECB:2B7E151628AED2A6ABF7158809CF4F3C::AE2D8A571E03AC9C9EB76FAC45AF8E51:0BE1F14023782A22E8384C5ABB7FAB2B
+CAMELLIA-128-ECB:2B7E151628AED2A6ABF7158809CF4F3C::30C81C46A35CE411E5FBC1191A0A52EF:A0A1ABCD1893AB6FE0FE5B65DF5F8636
+CAMELLIA-128-ECB:2B7E151628AED2A6ABF7158809CF4F3C::F69F2445DF4F9B17AD2B417BE66C3710:E61925E0D5DFAA9BB29F815B3076E51A
+
+# ECB-CAMELLIA192.Encrypt and ECB-CAMELLIA192.Decrypt 
+CAMELLIA-192-ECB:8E73B0F7DA0E6452C810F32B809079E562F8EAD2522C6B7B::6BC1BEE22E409F96E93D7E117393172A:CCCC6C4E138B45848514D48D0D3439D3
+CAMELLIA-192-ECB:8E73B0F7DA0E6452C810F32B809079E562F8EAD2522C6B7B::AE2D8A571E03AC9C9EB76FAC45AF8E51:5713C62C14B2EC0F8393B6AFD6F5785A
+CAMELLIA-192-ECB:8E73B0F7DA0E6452C810F32B809079E562F8EAD2522C6B7B::30C81C46A35CE411E5FBC1191A0A52EF:B40ED2B60EB54D09D030CF511FEEF366
+CAMELLIA-192-ECB:8E73B0F7DA0E6452C810F32B809079E562F8EAD2522C6B7B::F69F2445DF4F9B17AD2B417BE66C3710:909DBD95799096748CB27357E73E1D26
+
+# ECB-CAMELLIA256.Encrypt and ECB-CAMELLIA256.Decrypt 
+CAMELLIA-256-ECB:603DEB1015CA71BE2B73AEF0857D77811F352C073B6108D72D9810A30914DFF4::6BC1BEE22E409F96E93D7E117393172A:BEFD219B112FA00098919CD101C9CCFA
+CAMELLIA-256-ECB:603DEB1015CA71BE2B73AEF0857D77811F352C073B6108D72D9810A30914DFF4::AE2D8A571E03AC9C9EB76FAC45AF8E51:C91D3A8F1AEA08A9386CF4B66C0169EA
+CAMELLIA-256-ECB:603DEB1015CA71BE2B73AEF0857D77811F352C073B6108D72D9810A30914DFF4::30C81C46A35CE411E5FBC1191A0A52EF:A623D711DC5F25A51BB8A80D56397D28
+CAMELLIA-256-ECB:603DEB1015CA71BE2B73AEF0857D77811F352C073B6108D72D9810A30914DFF4::F69F2445DF4F9B17AD2B417BE66C3710:7960109FB6DC42947FCFE59EA3C5EB6B
+
+# For all CBC encrypts and decrypts, the transformed sequence is
+#   CAMELLIA-bits-CBC:key:IV/ciphertext':plaintext:ciphertext:encdec
+# CBC-CAMELLIA128.Encrypt and CBC-CAMELLIA128.Decrypt 
+CAMELLIA-128-CBC:2B7E151628AED2A6ABF7158809CF4F3C:000102030405060708090A0B0C0D0E0F:6BC1BEE22E409F96E93D7E117393172A:1607CF494B36BBF00DAEB0B503C831AB
+CAMELLIA-128-CBC:2B7E151628AED2A6ABF7158809CF4F3C:1607CF494B36BBF00DAEB0B503C831AB:AE2D8A571E03AC9C9EB76FAC45AF8E51:A2F2CF671629EF7840C5A5DFB5074887
+CAMELLIA-128-CBC:2B7E151628AED2A6ABF7158809CF4F3C:A2F2CF671629EF7840C5A5DFB5074887:30C81C46A35CE411E5FBC1191A0A52EF:0F06165008CF8B8B5A63586362543E54
+CAMELLIA-128-CBC:2B7E151628AED2A6ABF7158809CF4F3C:36A84CDAFD5F9A85ADA0F0A993D6D577:F69F2445DF4F9B17AD2B417BE66C3710:74C64268CDB8B8FAF5B34E8AF3732980
+
+# CBC-CAMELLIA192.Encrypt and CBC-CAMELLIA192.Decrypt 
+CAMELLIA-192-CBC:8E73B0F7DA0E6452C810F32B809079E562F8EAD2522C6B7B:000102030405060708090A0B0C0D0E0F:6BC1BEE22E409F96E93D7E117393172A:2A4830AB5AC4A1A2405955FD2195CF93
+CAMELLIA-192-CBC:8E73B0F7DA0E6452C810F32B809079E562F8EAD2522C6B7B:2A4830AB5AC4A1A2405955FD2195CF93:AE2D8A571E03AC9C9EB76FAC45AF8E51:5D5A869BD14CE54264F892A6DD2EC3D5
+CAMELLIA-192-CBC:8E73B0F7DA0E6452C810F32B809079E562F8EAD2522C6B7B:5D5A869BD14CE54264F892A6DD2EC3D5:30C81C46A35CE411E5FBC1191A0A52EF:37D359C3349836D884E310ADDF68C449
+CAMELLIA-192-CBC:8E73B0F7DA0E6452C810F32B809079E562F8EAD2522C6B7B:37D359C3349836D884E310ADDF68C449:F69F2445DF4F9B17AD2B417BE66C3710:01FAAA930B4AB9916E9668E1428C6B08
+
+# CBC-CAMELLIA256.Encrypt and CBC-CAMELLIA256.Decrypt 
+CAMELLIA-256-CBC:603DEB1015CA71BE2B73AEF0857D77811F352C073B6108D72D9810A30914DFF4:000102030405060708090A0B0C0D0E0F:6BC1BEE22E409F96E93D7E117393172A:E6CFA35FC02B134A4D2C0B6737AC3EDA
+CAMELLIA-256-CBC:603DEB1015CA71BE2B73AEF0857D77811F352C073B6108D72D9810A30914DFF4:E6CFA35FC02B134A4D2C0B6737AC3EDA:AE2D8A571E03AC9C9EB76FAC45AF8E51:36CBEB73BD504B4070B1B7DE2B21EB50
+CAMELLIA-256-CBC:603DEB1015CA71BE2B73AEF0857D77811F352C073B6108D72D9810A30914DFF4:36CBEB73BD504B4070B1B7DE2B21EB50:30C81C46A35CE411E5FBC1191A0A52EF:E31A6055297D96CA3330CDF1B1860A83
+CAMELLIA-256-CBC:603DEB1015CA71BE2B73AEF0857D77811F352C073B6108D72D9810A30914DFF4:E31A6055297D96CA3330CDF1B1860A83:F69F2445DF4F9B17AD2B417BE66C3710:5D563F6D1CCCF236051C0C5C1C58F28F
+
+# We don't support CFB{1,8}-CAMELLIAxxx.{En,De}crypt
+# For all CFB128 encrypts and decrypts, the transformed sequence is
+#   CAMELLIA-bits-CFB:key:IV/ciphertext':plaintext:ciphertext:encdec
+# CFB128-CAMELLIA128.Encrypt 
+CAMELLIA-128-CFB:2B7E151628AED2A6ABF7158809CF4F3C:000102030405060708090A0B0C0D0E0F:6BC1BEE22E409F96E93D7E117393172A:14F7646187817EB586599146B82BD719:1
+CAMELLIA-128-CFB:2B7E151628AED2A6ABF7158809CF4F3C:14F7646187817EB586599146B82BD719:AE2D8A571E03AC9C9EB76FAC45AF8E51:A53D28BB82DF741103EA4F921A44880B:1
+CAMELLIA-128-CFB:2B7E151628AED2A6ABF7158809CF4F3C:A53D28BB82DF741103EA4F921A44880B:30C81C46A35CE411E5FBC1191A0A52EF:9C2157A664626D1DEF9EA420FDE69B96:1
+CAMELLIA-128-CFB:2B7E151628AED2A6ABF7158809CF4F3C:9C2157A664626D1DEF9EA420FDE69B96:F69F2445DF4F9B17AD2B417BE66C3710:742A25F0542340C7BAEF24CA8482BB09:1
+
+# CFB128-CAMELLIA128.Decrypt 
+CAMELLIA-128-CFB:2B7E151628AED2A6ABF7158809CF4F3C:000102030405060708090A0B0C0D0E0F:6BC1BEE22E409F96E93D7E117393172A:14F7646187817EB586599146B82BD719:0
+CAMELLIA-128-CFB:2B7E151628AED2A6ABF7158809CF4F3C:14F7646187817EB586599146B82BD719:AE2D8A571E03AC9C9EB76FAC45AF8E51:A53D28BB82DF741103EA4F921A44880B:0
+CAMELLIA-128-CFB:2B7E151628AED2A6ABF7158809CF4F3C:A53D28BB82DF741103EA4F921A44880B:30C81C46A35CE411E5FBC1191A0A52EF:9C2157A664626D1DEF9EA420FDE69B96:0
+CAMELLIA-128-CFB:2B7E151628AED2A6ABF7158809CF4F3C:9C2157A664626D1DEF9EA420FDE69B96:F69F2445DF4F9B17AD2B417BE66C3710:742A25F0542340C7BAEF24CA8482BB09:0
+
+# CFB128-CAMELLIA192.Encrypt
+CAMELLIA-192-CFB:8E73B0F7DA0E6452C810F32B809079E562F8EAD2522C6B7B:000102030405060708090A0B0C0D0E0F:6BC1BEE22E409F96E93D7E117393172A:C832BB9780677DAA82D9B6860DCD565E:1
+CAMELLIA-192-CFB:8E73B0F7DA0E6452C810F32B809079E562F8EAD2522C6B7B:C832BB9780677DAA82D9B6860DCD565E:AE2D8A571E03AC9C9EB76FAC45AF8E51:86F8491627906D780C7A6D46EA331F98:1
+CAMELLIA-192-CFB:8E73B0F7DA0E6452C810F32B809079E562F8EAD2522C6B7B:86F8491627906D780C7A6D46EA331F98:30C81C46A35CE411E5FBC1191A0A52EF:69511CCE594CF710CB98BB63D7221F01:1
+CAMELLIA-192-CFB:8E73B0F7DA0E6452C810F32B809079E562F8EAD2522C6B7B:69511CCE594CF710CB98BB63D7221F01:F69F2445DF4F9B17AD2B417BE66C3710:D5B5378A3ABED55803F25565D8907B84:1
+
+# CFB128-CAMELLIA192.Decrypt
+CAMELLIA-192-CFB:8E73B0F7DA0E6452C810F32B809079E562F8EAD2522C6B7B:000102030405060708090A0B0C0D0E0F:6BC1BEE22E409F96E93D7E117393172A:C832BB9780677DAA82D9B6860DCD565E:0
+CAMELLIA-192-CFB:8E73B0F7DA0E6452C810F32B809079E562F8EAD2522C6B7B:C832BB9780677DAA82D9B6860DCD565E:AE2D8A571E03AC9C9EB76FAC45AF8E51:86F8491627906D780C7A6D46EA331F98:0
+CAMELLIA-192-CFB:8E73B0F7DA0E6452C810F32B809079E562F8EAD2522C6B7B:86F8491627906D780C7A6D46EA331F98:30C81C46A35CE411E5FBC1191A0A52EF:69511CCE594CF710CB98BB63D7221F01:0
+CAMELLIA-192-CFB:8E73B0F7DA0E6452C810F32B809079E562F8EAD2522C6B7B:69511CCE594CF710CB98BB63D7221F01:F69F2445DF4F9B17AD2B417BE66C3710:D5B5378A3ABED55803F25565D8907B84:0
+
+# CFB128-CAMELLIA256.Encrypt 
+CAMELLIA-256-CFB:603DEB1015CA71BE2B73AEF0857D77811F352C073B6108D72D9810A30914DFF4:000102030405060708090A0B0C0D0E0F:6BC1BEE22E409F96E93D7E117393172A:CF6107BB0CEA7D7FB1BD31F5E7B06C93:1
+CAMELLIA-256-CFB:603DEB1015CA71BE2B73AEF0857D77811F352C073B6108D72D9810A30914DFF4:CF6107BB0CEA7D7FB1BD31F5E7B06C93:AE2D8A571E03AC9C9EB76FAC45AF8E51:89BEDB4CCDD864EA11BA4CBE849B5E2B:1
+CAMELLIA-256-CFB:603DEB1015CA71BE2B73AEF0857D77811F352C073B6108D72D9810A30914DFF4:89BEDB4CCDD864EA11BA4CBE849B5E2B:30C81C46A35CE411E5FBC1191A0A52EF:555FC3F34BDD2D54C62D9E3BF338C1C4:1
+CAMELLIA-256-CFB:603DEB1015CA71BE2B73AEF0857D77811F352C073B6108D72D9810A30914DFF4:555FC3F34BDD2D54C62D9E3BF338C1C4:F69F2445DF4F9B17AD2B417BE66C3710:5953ADCE14DB8C7F39F1BD39F359BFFA:1
+
+# CFB128-CAMELLIA256.Decrypt 
+CAMELLIA-256-CFB:603DEB1015CA71BE2B73AEF0857D77811F352C073B6108D72D9810A30914DFF4:000102030405060708090A0B0C0D0E0F:6BC1BEE22E409F96E93D7E117393172A:CF6107BB0CEA7D7FB1BD31F5E7B06C93:0
+CAMELLIA-256-CFB:603DEB1015CA71BE2B73AEF0857D77811F352C073B6108D72D9810A30914DFF4:CF6107BB0CEA7D7FB1BD31F5E7B06C93:AE2D8A571E03AC9C9EB76FAC45AF8E51:89BEDB4CCDD864EA11BA4CBE849B5E2B:0
+CAMELLIA-256-CFB:603DEB1015CA71BE2B73AEF0857D77811F352C073B6108D72D9810A30914DFF4:89BEDB4CCDD864EA11BA4CBE849B5E2B:30C81C46A35CE411E5FBC1191A0A52EF:555FC3F34BDD2D54C62D9E3BF338C1C4:0
+CAMELLIA-256-CFB:603DEB1015CA71BE2B73AEF0857D77811F352C073B6108D72D9810A30914DFF4:555FC3F34BDD2D54C62D9E3BF338C1C4:F69F2445DF4F9B17AD2B417BE66C3710:5953ADCE14DB8C7F39F1BD39F359BFFA:0
+
+# For all OFB encrypts and decrypts, the transformed sequence is
+#   CAMELLIA-bits-OFB:key:IV/output':plaintext:ciphertext:encdec
+# OFB-CAMELLIA128.Encrypt 
+CAMELLIA-128-OFB:2B7E151628AED2A6ABF7158809CF4F3C:000102030405060708090A0B0C0D0E0F:6BC1BEE22E409F96E93D7E117393172A:14F7646187817EB586599146B82BD719:1
+CAMELLIA-128-OFB:2B7E151628AED2A6ABF7158809CF4F3C:50FE67CC996D32B6DA0937E99BAFEC60:AE2D8A571E03AC9C9EB76FAC45AF8E51:25623DB569CA51E01482649977E28D84:1
+CAMELLIA-128-OFB:2B7E151628AED2A6ABF7158809CF4F3C:D9A4DADA0892239F6B8B3D7680E15674:30C81C46A35CE411E5FBC1191A0A52EF:C776634A60729DC657D12B9FCA801E98:1
+CAMELLIA-128-OFB:2B7E151628AED2A6ABF7158809CF4F3C:A78819583F0308E7A6BF36B1386ABF23:F69F2445DF4F9B17AD2B417BE66C3710:D776379BE0E50825E681DA1A4C980E8E:1
+
+# OFB-CAMELLIA128.Decrypt 
+CAMELLIA-128-OFB:2B7E151628AED2A6ABF7158809CF4F3C:000102030405060708090A0B0C0D0E0F:6BC1BEE22E409F96E93D7E117393172A:14F7646187817EB586599146B82BD719:0
+CAMELLIA-128-OFB:2B7E151628AED2A6ABF7158809CF4F3C:50FE67CC996D32B6DA0937E99BAFEC60:AE2D8A571E03AC9C9EB76FAC45AF8E51:25623DB569CA51E01482649977E28D84:0
+CAMELLIA-128-OFB:2B7E151628AED2A6ABF7158809CF4F3C:D9A4DADA0892239F6B8B3D7680E15674:30C81C46A35CE411E5FBC1191A0A52EF:C776634A60729DC657D12B9FCA801E98:0
+CAMELLIA-128-OFB:2B7E151628AED2A6ABF7158809CF4F3C:A78819583F0308E7A6BF36B1386ABF23:F69F2445DF4F9B17AD2B417BE66C3710:D776379BE0E50825E681DA1A4C980E8E:0
+
+# OFB-CAMELLIA192.Encrypt 
+CAMELLIA-192-OFB:8E73B0F7DA0E6452C810F32B809079E562F8EAD2522C6B7B:000102030405060708090A0B0C0D0E0F:6BC1BEE22E409F96E93D7E117393172A:C832BB9780677DAA82D9B6860DCD565E:1
+CAMELLIA-192-OFB:8E73B0F7DA0E6452C810F32B809079E562F8EAD2522C6B7B:A609B38DF3B1133DDDFF2718BA09565E:AE2D8A571E03AC9C9EB76FAC45AF8E51:8ECEB7D0350D72C7F78562AEBDF99339:1
+CAMELLIA-192-OFB:8E73B0F7DA0E6452C810F32B809079E562F8EAD2522C6B7B:52EF01DA52602FE0975F78AC84BF8A50:30C81C46A35CE411E5FBC1191A0A52EF:BDD62DBBB9700846C53B507F544696F0:1
+CAMELLIA-192-OFB:8E73B0F7DA0E6452C810F32B809079E562F8EAD2522C6B7B:BD5286AC63AABD7EB067AC54B553F71D:F69F2445DF4F9B17AD2B417BE66C3710:E28014E046B802F385C4C2E13EAD4A72:1
+
+# OFB-CAMELLIA192.Decrypt 
+CAMELLIA-192-OFB:8E73B0F7DA0E6452C810F32B809079E562F8EAD2522C6B7B:000102030405060708090A0B0C0D0E0F:6BC1BEE22E409F96E93D7E117393172A:C832BB9780677DAA82D9B6860DCD565E:0
+CAMELLIA-192-OFB:8E73B0F7DA0E6452C810F32B809079E562F8EAD2522C6B7B:A609B38DF3B1133DDDFF2718BA09565E:AE2D8A571E03AC9C9EB76FAC45AF8E51:8ECEB7D0350D72C7F78562AEBDF99339:0
+CAMELLIA-192-OFB:8E73B0F7DA0E6452C810F32B809079E562F8EAD2522C6B7B:52EF01DA52602FE0975F78AC84BF8A50:30C81C46A35CE411E5FBC1191A0A52EF:BDD62DBBB9700846C53B507F544696F0:0
+CAMELLIA-192-OFB:8E73B0F7DA0E6452C810F32B809079E562F8EAD2522C6B7B:BD5286AC63AABD7EB067AC54B553F71D:F69F2445DF4F9B17AD2B417BE66C3710:E28014E046B802F385C4C2E13EAD4A72:0
+
+# OFB-CAMELLIA256.Encrypt 
+CAMELLIA-256-OFB:603DEB1015CA71BE2B73AEF0857D77811F352C073B6108D72D9810A30914DFF4:000102030405060708090A0B0C0D0E0F:6BC1BEE22E409F96E93D7E117393172A:CF6107BB0CEA7D7FB1BD31F5E7B06C93:1
+CAMELLIA-256-OFB:603DEB1015CA71BE2B73AEF0857D77811F352C073B6108D72D9810A30914DFF4:B7BF3A5DF43989DD97F0FA97EBCE2F4A:AE2D8A571E03AC9C9EB76FAC45AF8E51:127AD97E8E3994E4820027D7BA109368:1
+CAMELLIA-256-OFB:603DEB1015CA71BE2B73AEF0857D77811F352C073B6108D72D9810A30914DFF4:E1C656305ED1A7A6563805746FE03EDC:30C81C46A35CE411E5FBC1191A0A52EF:6BFF6265A6A6B7A535BC65A80B17214E:1
+CAMELLIA-256-OFB:603DEB1015CA71BE2B73AEF0857D77811F352C073B6108D72D9810A30914DFF4:41635BE625B48AFC1666DD42A09D96E7:F69F2445DF4F9B17AD2B417BE66C3710:0A4A0404E26AA78A27CB271E8BF3CF20:1
+
+# OFB-CAMELLIA256.Decrypt 
+CAMELLIA-256-OFB:603DEB1015CA71BE2B73AEF0857D77811F352C073B6108D72D9810A30914DFF4:000102030405060708090A0B0C0D0E0F:6BC1BEE22E409F96E93D7E117393172A:CF6107BB0CEA7D7FB1BD31F5E7B06C93:0
+CAMELLIA-256-OFB:603DEB1015CA71BE2B73AEF0857D77811F352C073B6108D72D9810A30914DFF4:B7BF3A5DF43989DD97F0FA97EBCE2F4A:AE2D8A571E03AC9C9EB76FAC45AF8E51:127AD97E8E3994E4820027D7BA109368:0
+CAMELLIA-256-OFB:603DEB1015CA71BE2B73AEF0857D77811F352C073B6108D72D9810A30914DFF4:E1C656305ED1A7A6563805746FE03EDC:30C81C46A35CE411E5FBC1191A0A52EF:6BFF6265A6A6B7A535BC65A80B17214E:0
+CAMELLIA-256-OFB:603DEB1015CA71BE2B73AEF0857D77811F352C073B6108D72D9810A30914DFF4:41635BE625B48AFC1666DD42A09D96E7:F69F2445DF4F9B17AD2B417BE66C3710:0A4A0404E26AA78A27CB271E8BF3CF20:0
+
diff --git a/crypto/objects/obj_dat.h b/crypto/objects/obj_dat.h
index ef97651..15c40b3 100644
--- a/crypto/objects/obj_dat.h
+++ b/crypto/objects/obj_dat.h
@@ -62,12 +62,12 @@
  * [including the GNU Public Licence.]
  */
 
-#define NUM_NID 807
-#define NUM_SN 803
-#define NUM_LN 803
-#define NUM_OBJ 765
+#define NUM_NID 825
+#define NUM_SN 821
+#define NUM_LN 821
+#define NUM_OBJ 777
 
-static unsigned char lvalues[5385]={
+static unsigned char lvalues[5490]={
 0x00,                                        /* [  0] OBJ_undef */
 0x2A,0x86,0x48,0x86,0xF7,0x0D,               /* [  1] OBJ_rsadsi */
 0x2A,0x86,0x48,0x86,0xF7,0x0D,0x01,          /* [  7] OBJ_pkcs */
@@ -833,6 +833,18 @@
 0x2A,0x86,0x48,0x86,0xF7,0x0D,0x02,0x09,     /* [5360] OBJ_hmacWithSHA256 */
 0x2A,0x86,0x48,0x86,0xF7,0x0D,0x02,0x0A,     /* [5368] OBJ_hmacWithSHA384 */
 0x2A,0x86,0x48,0x86,0xF7,0x0D,0x02,0x0B,     /* [5376] OBJ_hmacWithSHA512 */
+0x2A,0x83,0x08,0x8C,0x9A,0x4B,0x3D,0x01,0x01,0x01,0x02,/* [5384] OBJ_camellia_128_cbc */
+0x2A,0x83,0x08,0x8C,0x9A,0x4B,0x3D,0x01,0x01,0x01,0x03,/* [5395] OBJ_camellia_192_cbc */
+0x2A,0x83,0x08,0x8C,0x9A,0x4B,0x3D,0x01,0x01,0x01,0x04,/* [5406] OBJ_camellia_256_cbc */
+0x03,0xA2,0x31,0x05,0x03,0x01,0x09,0x01,     /* [5417] OBJ_camellia_128_ecb */
+0x03,0xA2,0x31,0x05,0x03,0x01,0x09,0x15,     /* [5425] OBJ_camellia_192_ecb */
+0x03,0xA2,0x31,0x05,0x03,0x01,0x09,0x29,     /* [5433] OBJ_camellia_256_ecb */
+0x03,0xA2,0x31,0x05,0x03,0x01,0x09,0x04,     /* [5441] OBJ_camellia_128_cfb128 */
+0x03,0xA2,0x31,0x05,0x03,0x01,0x09,0x18,     /* [5449] OBJ_camellia_192_cfb128 */
+0x03,0xA2,0x31,0x05,0x03,0x01,0x09,0x2C,     /* [5457] OBJ_camellia_256_cfb128 */
+0x03,0xA2,0x31,0x05,0x03,0x01,0x09,0x03,     /* [5465] OBJ_camellia_128_ofb128 */
+0x03,0xA2,0x31,0x05,0x03,0x01,0x09,0x17,     /* [5473] OBJ_camellia_192_ofb128 */
+0x03,0xA2,0x31,0x05,0x03,0x01,0x09,0x2B,     /* [5481] OBJ_camellia_256_ofb128 */
 };
 
 static ASN1_OBJECT nid_objs[NUM_NID]={
@@ -2136,6 +2148,36 @@
 	&(lvalues[5368]),0},
 {"hmacWithSHA512","hmacWithSHA512",NID_hmacWithSHA512,8,
 	&(lvalues[5376]),0},
+{"CAMELLIA-128-CBC","camellia-128-cbc",NID_camellia_128_cbc,11,
+	&(lvalues[5384]),0},
+{"CAMELLIA-192-CBC","camellia-192-cbc",NID_camellia_192_cbc,11,
+	&(lvalues[5395]),0},
+{"CAMELLIA-256-CBC","camellia-256-cbc",NID_camellia_256_cbc,11,
+	&(lvalues[5406]),0},
+{"CAMELLIA-128-ECB","camellia-128-ecb",NID_camellia_128_ecb,8,
+	&(lvalues[5417]),0},
+{"CAMELLIA-192-ECB","camellia-192-ecb",NID_camellia_192_ecb,8,
+	&(lvalues[5425]),0},
+{"CAMELLIA-256-ECB","camellia-256-ecb",NID_camellia_256_ecb,8,
+	&(lvalues[5433]),0},
+{"CAMELLIA-128-CFB","camellia-128-cfb",NID_camellia_128_cfb128,8,
+	&(lvalues[5441]),0},
+{"CAMELLIA-192-CFB","camellia-192-cfb",NID_camellia_192_cfb128,8,
+	&(lvalues[5449]),0},
+{"CAMELLIA-256-CFB","camellia-256-cfb",NID_camellia_256_cfb128,8,
+	&(lvalues[5457]),0},
+{"CAMELLIA-128-CFB1","camellia-128-cfb1",NID_camellia_128_cfb1,0,NULL,0},
+{"CAMELLIA-192-CFB1","camellia-192-cfb1",NID_camellia_192_cfb1,0,NULL,0},
+{"CAMELLIA-256-CFB1","camellia-256-cfb1",NID_camellia_256_cfb1,0,NULL,0},
+{"CAMELLIA-128-CFB8","camellia-128-cfb8",NID_camellia_128_cfb8,0,NULL,0},
+{"CAMELLIA-192-CFB8","camellia-192-cfb8",NID_camellia_192_cfb8,0,NULL,0},
+{"CAMELLIA-256-CFB8","camellia-256-cfb8",NID_camellia_256_cfb8,0,NULL,0},
+{"CAMELLIA-128-OFB","camellia-128-ofb",NID_camellia_128_ofb128,8,
+	&(lvalues[5465]),0},
+{"CAMELLIA-192-OFB","camellia-192-ofb",NID_camellia_192_ofb128,8,
+	&(lvalues[5473]),0},
+{"CAMELLIA-256-OFB","camellia-256-ofb",NID_camellia_256_ofb128,8,
+	&(lvalues[5481]),0},
 };
 
 static ASN1_OBJECT *sn_objs[NUM_SN]={
@@ -2163,6 +2205,24 @@
 &(nid_objs[92]),/* "BF-ECB" */
 &(nid_objs[94]),/* "BF-OFB" */
 &(nid_objs[14]),/* "C" */
+&(nid_objs[807]),/* "CAMELLIA-128-CBC" */
+&(nid_objs[813]),/* "CAMELLIA-128-CFB" */
+&(nid_objs[816]),/* "CAMELLIA-128-CFB1" */
+&(nid_objs[819]),/* "CAMELLIA-128-CFB8" */
+&(nid_objs[810]),/* "CAMELLIA-128-ECB" */
+&(nid_objs[822]),/* "CAMELLIA-128-OFB" */
+&(nid_objs[808]),/* "CAMELLIA-192-CBC" */
+&(nid_objs[814]),/* "CAMELLIA-192-CFB" */
+&(nid_objs[817]),/* "CAMELLIA-192-CFB1" */
+&(nid_objs[820]),/* "CAMELLIA-192-CFB8" */
+&(nid_objs[811]),/* "CAMELLIA-192-ECB" */
+&(nid_objs[823]),/* "CAMELLIA-192-OFB" */
+&(nid_objs[809]),/* "CAMELLIA-256-CBC" */
+&(nid_objs[815]),/* "CAMELLIA-256-CFB" */
+&(nid_objs[818]),/* "CAMELLIA-256-CFB1" */
+&(nid_objs[821]),/* "CAMELLIA-256-CFB8" */
+&(nid_objs[812]),/* "CAMELLIA-256-ECB" */
+&(nid_objs[824]),/* "CAMELLIA-256-OFB" */
 &(nid_objs[108]),/* "CAST5-CBC" */
 &(nid_objs[110]),/* "CAST5-CFB" */
 &(nid_objs[109]),/* "CAST5-ECB" */
@@ -3128,6 +3188,24 @@
 &(nid_objs[687]),/* "c2tnb359v1" */
 &(nid_objs[689]),/* "c2tnb431r1" */
 &(nid_objs[483]),/* "cNAMERecord" */
+&(nid_objs[807]),/* "camellia-128-cbc" */
+&(nid_objs[813]),/* "camellia-128-cfb" */
+&(nid_objs[816]),/* "camellia-128-cfb1" */
+&(nid_objs[819]),/* "camellia-128-cfb8" */
+&(nid_objs[810]),/* "camellia-128-ecb" */
+&(nid_objs[822]),/* "camellia-128-ofb" */
+&(nid_objs[808]),/* "camellia-192-cbc" */
+&(nid_objs[814]),/* "camellia-192-cfb" */
+&(nid_objs[817]),/* "camellia-192-cfb1" */
+&(nid_objs[820]),/* "camellia-192-cfb8" */
+&(nid_objs[811]),/* "camellia-192-ecb" */
+&(nid_objs[823]),/* "camellia-192-ofb" */
+&(nid_objs[809]),/* "camellia-256-cbc" */
+&(nid_objs[815]),/* "camellia-256-cfb" */
+&(nid_objs[818]),/* "camellia-256-cfb1" */
+&(nid_objs[821]),/* "camellia-256-cfb8" */
+&(nid_objs[812]),/* "camellia-256-ecb" */
+&(nid_objs[824]),/* "camellia-256-ofb" */
 &(nid_objs[443]),/* "caseIgnoreIA5StringSyntax" */
 &(nid_objs[108]),/* "cast5-cbc" */
 &(nid_objs[110]),/* "cast5-cfb" */
@@ -4103,6 +4181,15 @@
 &(nid_objs[507]),/* OBJ_id_hex_partial_message       1 3 6 1 7 1 1 1 */
 &(nid_objs[508]),/* OBJ_id_hex_multipart_message     1 3 6 1 7 1 1 2 */
 &(nid_objs[57]),/* OBJ_netscape                     2 16 840 1 113730 */
+&(nid_objs[810]),/* OBJ_camellia_128_ecb             0 3 4401 5 3 1 9 1 */
+&(nid_objs[822]),/* OBJ_camellia_128_ofb128          0 3 4401 5 3 1 9 3 */
+&(nid_objs[813]),/* OBJ_camellia_128_cfb128          0 3 4401 5 3 1 9 4 */
+&(nid_objs[811]),/* OBJ_camellia_192_ecb             0 3 4401 5 3 1 9 21 */
+&(nid_objs[823]),/* OBJ_camellia_192_ofb128          0 3 4401 5 3 1 9 23 */
+&(nid_objs[814]),/* OBJ_camellia_192_cfb128          0 3 4401 5 3 1 9 24 */
+&(nid_objs[812]),/* OBJ_camellia_256_ecb             0 3 4401 5 3 1 9 41 */
+&(nid_objs[824]),/* OBJ_camellia_256_ofb128          0 3 4401 5 3 1 9 43 */
+&(nid_objs[815]),/* OBJ_camellia_256_cfb128          0 3 4401 5 3 1 9 44 */
 &(nid_objs[437]),/* OBJ_pilot                        0 9 2342 19200300 100 */
 &(nid_objs[799]),/* OBJ_id_GostR3411_94_with_GostR3410_94_cc 1 2 643 2 9 1 3 3 */
 &(nid_objs[800]),/* OBJ_id_GostR3411_94_with_GostR3410_2001_cc 1 2 643 2 9 1 3 4 */
@@ -4448,6 +4535,9 @@
 &(nid_objs[138]),/* OBJ_ms_efs                       1 3 6 1 4 1 311 10 3 4 */
 &(nid_objs[648]),/* OBJ_ms_smartcard_login           1 3 6 1 4 1 311 20 2 2 */
 &(nid_objs[649]),/* OBJ_ms_upn                       1 3 6 1 4 1 311 20 2 3 */
+&(nid_objs[807]),/* OBJ_camellia_128_cbc             1 2 392 200011 61 1 1 1 2 */
+&(nid_objs[808]),/* OBJ_camellia_192_cbc             1 2 392 200011 61 1 1 1 3 */
+&(nid_objs[809]),/* OBJ_camellia_256_cbc             1 2 392 200011 61 1 1 1 4 */
 &(nid_objs[196]),/* OBJ_id_smime_mod_cms             1 2 840 113549 1 9 16 0 1 */
 &(nid_objs[197]),/* OBJ_id_smime_mod_ess             1 2 840 113549 1 9 16 0 2 */
 &(nid_objs[198]),/* OBJ_id_smime_mod_oid             1 2 840 113549 1 9 16 0 3 */
diff --git a/crypto/objects/obj_mac.h b/crypto/objects/obj_mac.h
index 42b12db..f8d22bd 100644
--- a/crypto/objects/obj_mac.h
+++ b/crypto/objects/obj_mac.h
@@ -3545,3 +3545,91 @@
 #define NID_id_GostR3410_2001_ParamSet_cc		801
 #define OBJ_id_GostR3410_2001_ParamSet_cc		OBJ_cryptocom,1L,8L,1L
 
+#define SN_camellia_128_cbc		"CAMELLIA-128-CBC"
+#define LN_camellia_128_cbc		"camellia-128-cbc"
+#define NID_camellia_128_cbc		807
+#define OBJ_camellia_128_cbc		1L,2L,392L,200011L,61L,1L,1L,1L,2L
+
+#define SN_camellia_192_cbc		"CAMELLIA-192-CBC"
+#define LN_camellia_192_cbc		"camellia-192-cbc"
+#define NID_camellia_192_cbc		808
+#define OBJ_camellia_192_cbc		1L,2L,392L,200011L,61L,1L,1L,1L,3L
+
+#define SN_camellia_256_cbc		"CAMELLIA-256-CBC"
+#define LN_camellia_256_cbc		"camellia-256-cbc"
+#define NID_camellia_256_cbc		809
+#define OBJ_camellia_256_cbc		1L,2L,392L,200011L,61L,1L,1L,1L,4L
+
+#define OBJ_ntt_ds		0L,3L,4401L,5L
+
+#define OBJ_camellia		OBJ_ntt_ds,3L,1L,9L
+
+#define SN_camellia_128_ecb		"CAMELLIA-128-ECB"
+#define LN_camellia_128_ecb		"camellia-128-ecb"
+#define NID_camellia_128_ecb		810
+#define OBJ_camellia_128_ecb		OBJ_camellia,1L
+
+#define SN_camellia_128_ofb128		"CAMELLIA-128-OFB"
+#define LN_camellia_128_ofb128		"camellia-128-ofb"
+#define NID_camellia_128_ofb128		822
+#define OBJ_camellia_128_ofb128		OBJ_camellia,3L
+
+#define SN_camellia_128_cfb128		"CAMELLIA-128-CFB"
+#define LN_camellia_128_cfb128		"camellia-128-cfb"
+#define NID_camellia_128_cfb128		813
+#define OBJ_camellia_128_cfb128		OBJ_camellia,4L
+
+#define SN_camellia_192_ecb		"CAMELLIA-192-ECB"
+#define LN_camellia_192_ecb		"camellia-192-ecb"
+#define NID_camellia_192_ecb		811
+#define OBJ_camellia_192_ecb		OBJ_camellia,21L
+
+#define SN_camellia_192_ofb128		"CAMELLIA-192-OFB"
+#define LN_camellia_192_ofb128		"camellia-192-ofb"
+#define NID_camellia_192_ofb128		823
+#define OBJ_camellia_192_ofb128		OBJ_camellia,23L
+
+#define SN_camellia_192_cfb128		"CAMELLIA-192-CFB"
+#define LN_camellia_192_cfb128		"camellia-192-cfb"
+#define NID_camellia_192_cfb128		814
+#define OBJ_camellia_192_cfb128		OBJ_camellia,24L
+
+#define SN_camellia_256_ecb		"CAMELLIA-256-ECB"
+#define LN_camellia_256_ecb		"camellia-256-ecb"
+#define NID_camellia_256_ecb		812
+#define OBJ_camellia_256_ecb		OBJ_camellia,41L
+
+#define SN_camellia_256_ofb128		"CAMELLIA-256-OFB"
+#define LN_camellia_256_ofb128		"camellia-256-ofb"
+#define NID_camellia_256_ofb128		824
+#define OBJ_camellia_256_ofb128		OBJ_camellia,43L
+
+#define SN_camellia_256_cfb128		"CAMELLIA-256-CFB"
+#define LN_camellia_256_cfb128		"camellia-256-cfb"
+#define NID_camellia_256_cfb128		815
+#define OBJ_camellia_256_cfb128		OBJ_camellia,44L
+
+#define SN_camellia_128_cfb1		"CAMELLIA-128-CFB1"
+#define LN_camellia_128_cfb1		"camellia-128-cfb1"
+#define NID_camellia_128_cfb1		816
+
+#define SN_camellia_192_cfb1		"CAMELLIA-192-CFB1"
+#define LN_camellia_192_cfb1		"camellia-192-cfb1"
+#define NID_camellia_192_cfb1		817
+
+#define SN_camellia_256_cfb1		"CAMELLIA-256-CFB1"
+#define LN_camellia_256_cfb1		"camellia-256-cfb1"
+#define NID_camellia_256_cfb1		818
+
+#define SN_camellia_128_cfb8		"CAMELLIA-128-CFB8"
+#define LN_camellia_128_cfb8		"camellia-128-cfb8"
+#define NID_camellia_128_cfb8		819
+
+#define SN_camellia_192_cfb8		"CAMELLIA-192-CFB8"
+#define LN_camellia_192_cfb8		"camellia-192-cfb8"
+#define NID_camellia_192_cfb8		820
+
+#define SN_camellia_256_cfb8		"CAMELLIA-256-CFB8"
+#define LN_camellia_256_cfb8		"camellia-256-cfb8"
+#define NID_camellia_256_cfb8		821
+
diff --git a/crypto/objects/obj_mac.num b/crypto/objects/obj_mac.num
index dab08d3..5646deb 100644
--- a/crypto/objects/obj_mac.num
+++ b/crypto/objects/obj_mac.num
@@ -804,3 +804,21 @@
 hmacWithSHA256		804
 hmacWithSHA384		805
 hmacWithSHA512		806
+camellia_128_cbc		807
+camellia_192_cbc		808
+camellia_256_cbc		809
+camellia_128_ecb		810
+camellia_192_ecb		811
+camellia_256_ecb		812
+camellia_128_cfb128		813
+camellia_192_cfb128		814
+camellia_256_cfb128		815
+camellia_128_cfb1		816
+camellia_192_cfb1		817
+camellia_256_cfb1		818
+camellia_128_cfb8		819
+camellia_192_cfb8		820
+camellia_256_cfb8		821
+camellia_128_ofb128		822
+camellia_192_ofb128		823
+camellia_256_ofb128		824
diff --git a/crypto/objects/objects.txt b/crypto/objects/objects.txt
index d2dcea2..97b520d 100644
--- a/crypto/objects/objects.txt
+++ b/crypto/objects/objects.txt
@@ -1134,3 +1134,41 @@
 cryptocom 1 3 4		: id-GostR3411-94-with-GostR3410-2001-cc : GOST R 34.11-94 with GOST R 34.10-2001 Cryptocom
 
 cryptocom 1 8 1		: id-GostR3410-2001-ParamSet-cc : GOST R 3410-2001 Parameter Set Cryptocom
+
+# Definitions for Camellia cipher - CBC MODE
+
+1 2 392 200011 61 1 1 1 2 : CAMELLIA-128-CBC		: camellia-128-cbc
+1 2 392 200011 61 1 1 1 3 : CAMELLIA-192-CBC		: camellia-192-cbc
+1 2 392 200011 61 1 1 1 4 : CAMELLIA-256-CBC		: camellia-256-cbc
+
+# Definitions for Camellia cipher - ECB, CFB, OFB MODE
+
+!Alias ntt-ds 0 3 4401 5
+!Alias camellia ntt-ds 3 1 9 
+
+camellia 1		: CAMELLIA-128-ECB		: camellia-128-ecb
+!Cname camellia-128-ofb128
+camellia 3		: CAMELLIA-128-OFB		: camellia-128-ofb
+!Cname camellia-128-cfb128
+camellia 4		: CAMELLIA-128-CFB		: camellia-128-cfb
+
+camellia 21		: CAMELLIA-192-ECB		: camellia-192-ecb
+!Cname camellia-192-ofb128
+camellia 23		: CAMELLIA-192-OFB		: camellia-192-ofb
+!Cname camellia-192-cfb128
+camellia 24		: CAMELLIA-192-CFB		: camellia-192-cfb
+
+camellia 41		: CAMELLIA-256-ECB		: camellia-256-ecb
+!Cname camellia-256-ofb128
+camellia 43		: CAMELLIA-256-OFB		: camellia-256-ofb
+!Cname camellia-256-cfb128
+camellia 44		: CAMELLIA-256-CFB		: camellia-256-cfb
+
+# There are no OIDs for these modes...
+
+			: CAMELLIA-128-CFB1		: camellia-128-cfb1
+			: CAMELLIA-192-CFB1		: camellia-192-cfb1
+			: CAMELLIA-256-CFB1		: camellia-256-cfb1
+			: CAMELLIA-128-CFB8		: camellia-128-cfb8
+			: CAMELLIA-192-CFB8		: camellia-192-cfb8
+			: CAMELLIA-256-CFB8		: camellia-256-cfb8
diff --git a/crypto/pem/Makefile b/crypto/pem/Makefile
index 03976ff..306b2eb 100644
--- a/crypto/pem/Makefile
+++ b/crypto/pem/Makefile
@@ -125,18 +125,19 @@
 pem_lib.o: ../../include/openssl/crypto.h ../../include/openssl/des.h
 pem_lib.o: ../../include/openssl/des_old.h ../../include/openssl/e_os2.h
 pem_lib.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h
-pem_lib.o: ../../include/openssl/ecdsa.h ../../include/openssl/err.h
-pem_lib.o: ../../include/openssl/evp.h ../../include/openssl/lhash.h
-pem_lib.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h
-pem_lib.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h
-pem_lib.o: ../../include/openssl/ossl_typ.h ../../include/openssl/pem.h
-pem_lib.o: ../../include/openssl/pem2.h ../../include/openssl/pkcs12.h
-pem_lib.o: ../../include/openssl/pkcs7.h ../../include/openssl/rand.h
-pem_lib.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h
-pem_lib.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h
-pem_lib.o: ../../include/openssl/ui.h ../../include/openssl/ui_compat.h
-pem_lib.o: ../../include/openssl/x509.h ../../include/openssl/x509_vfy.h
-pem_lib.o: ../asn1/asn1_locl.h ../cryptlib.h pem_lib.c
+pem_lib.o: ../../include/openssl/ecdsa.h ../../include/openssl/engine.h
+pem_lib.o: ../../include/openssl/err.h ../../include/openssl/evp.h
+pem_lib.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h
+pem_lib.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h
+pem_lib.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
+pem_lib.o: ../../include/openssl/pem.h ../../include/openssl/pem2.h
+pem_lib.o: ../../include/openssl/pkcs12.h ../../include/openssl/pkcs7.h
+pem_lib.o: ../../include/openssl/rand.h ../../include/openssl/safestack.h
+pem_lib.o: ../../include/openssl/sha.h ../../include/openssl/stack.h
+pem_lib.o: ../../include/openssl/symhacks.h ../../include/openssl/ui.h
+pem_lib.o: ../../include/openssl/ui_compat.h ../../include/openssl/x509.h
+pem_lib.o: ../../include/openssl/x509_vfy.h ../asn1/asn1_locl.h ../cryptlib.h
+pem_lib.o: pem_lib.c
 pem_oth.o: ../../e_os.h ../../include/openssl/asn1.h
 pem_oth.o: ../../include/openssl/bio.h ../../include/openssl/buffer.h
 pem_oth.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h
@@ -170,10 +171,10 @@
 pem_pkey.o: ../../include/openssl/bio.h ../../include/openssl/buffer.h
 pem_pkey.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h
 pem_pkey.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h
-pem_pkey.o: ../../include/openssl/ecdsa.h ../../include/openssl/err.h
-pem_pkey.o: ../../include/openssl/evp.h ../../include/openssl/lhash.h
-pem_pkey.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h
-pem_pkey.o: ../../include/openssl/opensslconf.h
+pem_pkey.o: ../../include/openssl/ecdsa.h ../../include/openssl/engine.h
+pem_pkey.o: ../../include/openssl/err.h ../../include/openssl/evp.h
+pem_pkey.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h
+pem_pkey.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h
 pem_pkey.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
 pem_pkey.o: ../../include/openssl/pem.h ../../include/openssl/pem2.h
 pem_pkey.o: ../../include/openssl/pkcs12.h ../../include/openssl/pkcs7.h
diff --git a/doc/apps/ciphers.pod b/doc/apps/ciphers.pod
index 00d4cb1..2643a1e 100644
--- a/doc/apps/ciphers.pod
+++ b/doc/apps/ciphers.pod
@@ -240,6 +240,10 @@
 
 cipher suites using SHA1.
 
+=item B<Camellia>
+
+cipher suites using Camellia.
+
 =back
 
 =head1 CIPHER SUITE NAMES
@@ -335,6 +339,24 @@
  TLS_DH_anon_WITH_AES_128_CBC_SHA        ADH-AES128-SHA
  TLS_DH_anon_WITH_AES_256_CBC_SHA        ADH-AES256-SHA
 
+=head2 Camellia ciphersuites from RFC4132, extending TLS v1.0
+
+ TLS_RSA_WITH_CAMELLIA_128_CBC_SHA      CAMELLIA128-SHA
+ TLS_RSA_WITH_CAMELLIA_256_CBC_SHA      CAMELLIA256-SHA
+
+ TLS_DH_DSS_WITH_CAMELLIA_128_CBC_SHA   Not implemented.
+ TLS_DH_DSS_WITH_CAMELLIA_256_CBC_SHA   Not implemented.
+ TLS_DH_RSA_WITH_CAMELLIA_128_CBC_SHA   Not implemented.
+ TLS_DH_RSA_WITH_CAMELLIA_256_CBC_SHA   Not implemented.
+
+ TLS_DHE_DSS_WITH_CAMELLIA_128_CBC_SHA  DHE-DSS-CAMELLIA128-SHA
+ TLS_DHE_DSS_WITH_CAMELLIA_256_CBC_SHA  DHE-DSS-CAMELLIA256-SHA
+ TLS_DHE_RSA_WITH_CAMELLIA_128_CBC_SHA  DHE-RSA-CAMELLIA128-SHA
+ TLS_DHE_RSA_WITH_CAMELLIA_256_CBC_SHA  DHE-RSA-CAMELLIA256-SHA
+
+ TLS_DH_anon_WITH_CAMELLIA_128_CBC_SHA  ADH-CAMELLIA128-SHA
+ TLS_DH_anon_WITH_CAMELLIA_256_CBC_SHA  ADH-CAMELLIA256-SHA
+
 =head2 Additional Export 1024 and other cipher suites
 
 Note: these ciphers can also be used in SSL v3.
diff --git a/doc/apps/smime.pod b/doc/apps/smime.pod
index 84b673f..caf2d26 100644
--- a/doc/apps/smime.pod
+++ b/doc/apps/smime.pod
@@ -20,6 +20,9 @@
 [B<-aes128>]
 [B<-aes192>]
 [B<-aes256>]
+[B<-camellia128>]
+[B<-camellia192>]
+[B<-camellia256>]
 [B<-in file>]
 [B<-certfile file>]
 [B<-signer file>]
@@ -129,10 +132,10 @@
 is a hash of each subject name (using B<x509 -hash>) should be linked
 to each certificate.
 
-=item B<-des -des3 -rc2-40 -rc2-64 -rc2-128 -aes128 -aes192 -aes256>
+=item B<-des -des3 -rc2-40 -rc2-64 -rc2-128 -aes128 -aes192 -aes256 -camellia128 -camellia192 -camellia256>
 
 the encryption algorithm to use. DES (56 bits), triple DES (168 bits),
-40, 64 or 128 bit RC2 or 128, 192 or 256 bit AES respectively.  If not
+40, 64 or 128 bit RC2, 128, 192 or 256 bit AES, or 128, 192 or 256 bit Camellia respectively.  If not
 specified 40 bit RC2 is used. Only used with B<-encrypt>.
 
 =item B<-nointern>
@@ -354,6 +357,10 @@
 
  openssl smime -verify -inform DER -in signature.der -content content.txt
 
+Create an encrypted message using 128 bit Camellia:
+
+ openssl smime -encrypt -in plain.txt -camellia128 -out mail.msg cert.pem
+
 =head1 BUGS
 
 The MIME parser isn't very clever: it seems to handle most messages that I've thrown
diff --git a/ssl/s3_lib.c b/ssl/s3_lib.c
index bfb7051..63edc36 100644
--- a/ssl/s3_lib.c
+++ b/ssl/s3_lib.c
@@ -932,6 +932,89 @@
 	SSL_ALL_STRENGTHS,
 	},
 
+#ifndef OPENSSL_NO_CAMELLIA
+	/* Camellia ciphersuites from RFC4132 (128-bit portion) */
+
+	/* Cipher 41 */
+	{
+	1,
+	TLS1_TXT_RSA_WITH_CAMELLIA_128_CBC_SHA,
+	TLS1_CK_RSA_WITH_CAMELLIA_128_CBC_SHA,
+	SSL_kRSA|SSL_aRSA|SSL_CAMELLIA|SSL_SHA|SSL_TLSV1,
+	SSL_NOT_EXP|SSL_HIGH,
+	0,
+	128,
+	128,
+	SSL_ALL_CIPHERS,
+	SSL_ALL_STRENGTHS
+	},
+	/* Cipher 42 */
+	{
+	0, /* not implemented (non-ephemeral DH) */
+	TLS1_TXT_DH_DSS_WITH_CAMELLIA_128_CBC_SHA,
+	TLS1_CK_DH_DSS_WITH_CAMELLIA_128_CBC_SHA,
+	SSL_kDHd|SSL_aDH|SSL_CAMELLIA|SSL_SHA|SSL_TLSV1,
+	SSL_NOT_EXP|SSL_HIGH,
+	0,
+	128,
+	128,
+	SSL_ALL_CIPHERS,
+	SSL_ALL_STRENGTHS
+	},
+	/* Cipher 43 */
+	{
+	0, /* not implemented (non-ephemeral DH) */
+	TLS1_TXT_DH_RSA_WITH_CAMELLIA_128_CBC_SHA,
+	TLS1_CK_DH_RSA_WITH_CAMELLIA_128_CBC_SHA,
+	SSL_kDHr|SSL_aDH|SSL_CAMELLIA|SSL_SHA|SSL_TLSV1,
+	SSL_NOT_EXP|SSL_HIGH,
+	0,
+	128,
+	128,
+	SSL_ALL_CIPHERS,
+	SSL_ALL_STRENGTHS
+	},
+	/* Cipher 44 */
+	{
+	1,
+	TLS1_TXT_DHE_DSS_WITH_CAMELLIA_128_CBC_SHA,
+	TLS1_CK_DHE_DSS_WITH_CAMELLIA_128_CBC_SHA,
+	SSL_kEDH|SSL_aDSS|SSL_CAMELLIA|SSL_SHA|SSL_TLSV1,
+	SSL_NOT_EXP|SSL_HIGH,
+	0,
+	128,
+	128,
+	SSL_ALL_CIPHERS,
+	SSL_ALL_STRENGTHS
+	},
+	/* Cipher 45 */
+	{
+	1,
+	TLS1_TXT_DHE_RSA_WITH_CAMELLIA_128_CBC_SHA,
+	TLS1_CK_DHE_RSA_WITH_CAMELLIA_128_CBC_SHA,
+	SSL_kEDH|SSL_aRSA|SSL_CAMELLIA|SSL_SHA|SSL_TLSV1,
+	SSL_NOT_EXP|SSL_HIGH,
+	0,
+	128,
+	128,
+	SSL_ALL_CIPHERS,
+	SSL_ALL_STRENGTHS
+	},
+	/* Cipher 46 */
+	{
+	1,
+	TLS1_TXT_ADH_WITH_CAMELLIA_128_CBC_SHA,
+	TLS1_CK_ADH_WITH_CAMELLIA_128_CBC_SHA,
+	SSL_kEDH|SSL_aNULL|SSL_CAMELLIA|SSL_SHA|SSL_TLSV1,
+	SSL_NOT_EXP|SSL_HIGH,
+	0,
+	128,
+	128,
+	SSL_ALL_CIPHERS,
+	SSL_ALL_STRENGTHS
+	},
+#endif /* OPENSSL_NO_CAMELLIA */
+
 #if TLS1_ALLOW_EXPERIMENTAL_CIPHERSUITES
 	/* New TLS Export CipherSuites from expired ID */
 #if 0
@@ -1028,6 +1111,90 @@
 	    SSL_ALL_STRENGTHS
 	    },
 #endif
+
+#ifndef OPENSSL_NO_CAMELLIA
+	/* Camellia ciphersuites from RFC4132 (256-bit portion) */
+
+	/* Cipher 84 */
+	{
+	1,
+	TLS1_TXT_RSA_WITH_CAMELLIA_256_CBC_SHA,
+	TLS1_CK_RSA_WITH_CAMELLIA_256_CBC_SHA,
+	SSL_kRSA|SSL_aRSA|SSL_CAMELLIA|SSL_SHA|SSL_TLSV1,
+	SSL_NOT_EXP|SSL_HIGH,
+	0,
+	256,
+	256,
+	SSL_ALL_CIPHERS,
+	SSL_ALL_STRENGTHS
+	},
+	/* Cipher 85 */
+	{
+	0, /* not implemented (non-ephemeral DH) */
+	TLS1_TXT_DH_DSS_WITH_CAMELLIA_256_CBC_SHA,
+	TLS1_CK_DH_DSS_WITH_CAMELLIA_256_CBC_SHA,
+	SSL_kDHd|SSL_aDH|SSL_CAMELLIA|SSL_SHA|SSL_TLSV1,
+	SSL_NOT_EXP|SSL_HIGH,
+	0,
+	256,
+	256,
+	SSL_ALL_CIPHERS,
+	SSL_ALL_STRENGTHS
+	},
+	/* Cipher 86 */
+	{
+	0, /* not implemented (non-ephemeral DH) */
+	TLS1_TXT_DH_RSA_WITH_CAMELLIA_256_CBC_SHA,
+	TLS1_CK_DH_RSA_WITH_CAMELLIA_256_CBC_SHA,
+	SSL_kDHr|SSL_aDH|SSL_CAMELLIA|SSL_SHA|SSL_TLSV1,
+	SSL_NOT_EXP|SSL_HIGH,
+	0,
+	256,
+	256,
+	SSL_ALL_CIPHERS,
+	SSL_ALL_STRENGTHS
+	},
+	/* Cipher 87 */
+	{
+	1,
+	TLS1_TXT_DHE_DSS_WITH_CAMELLIA_256_CBC_SHA,
+	TLS1_CK_DHE_DSS_WITH_CAMELLIA_256_CBC_SHA,
+	SSL_kEDH|SSL_aDSS|SSL_CAMELLIA|SSL_SHA|SSL_TLSV1,
+	SSL_NOT_EXP|SSL_HIGH,
+	0,
+	256,
+	256,
+	SSL_ALL_CIPHERS,
+	SSL_ALL_STRENGTHS
+	},
+	/* Cipher 88 */
+	{
+	1,
+	TLS1_TXT_DHE_RSA_WITH_CAMELLIA_256_CBC_SHA,
+	TLS1_CK_DHE_RSA_WITH_CAMELLIA_256_CBC_SHA,
+	SSL_kEDH|SSL_aRSA|SSL_CAMELLIA|SSL_SHA|SSL_TLSV1,
+	SSL_NOT_EXP|SSL_HIGH,
+	0,
+	256,
+	256,
+	SSL_ALL_CIPHERS,
+	SSL_ALL_STRENGTHS
+	},
+	/* Cipher 89 */
+	{
+	1,
+	TLS1_TXT_ADH_WITH_CAMELLIA_256_CBC_SHA,
+	TLS1_CK_ADH_WITH_CAMELLIA_256_CBC_SHA,
+	SSL_kEDH|SSL_aNULL|SSL_CAMELLIA|SSL_SHA|SSL_TLSV1,
+	SSL_NOT_EXP|SSL_HIGH,
+	0,
+	256,
+	256,
+	SSL_ALL_CIPHERS,
+	SSL_ALL_STRENGTHS
+	},
+#endif /* OPENSSL_NO_CAMELLIA */
+
 #ifndef OPENSSL_NO_PSK
 	/* Cipher 8A */
 	{
@@ -1437,6 +1604,7 @@
             },
 #endif	/* OPENSSL_NO_ECDH */
 
+
 /* end of list */
 	};
 
diff --git a/ssl/ssl.h b/ssl/ssl.h
index 7e89b0a..96ba10d 100644
--- a/ssl/ssl.h
+++ b/ssl/ssl.h
@@ -308,6 +308,7 @@
 #define SSL_TXT_RC2		"RC2"
 #define SSL_TXT_IDEA		"IDEA"
 #define SSL_TXT_AES		"AES"
+#define SSL_TXT_CAMELLIA	"CAMELLIA"
 #define SSL_TXT_MD5		"MD5"
 #define SSL_TXT_SHA1		"SHA1"
 #define SSL_TXT_SHA		"SHA"
diff --git a/ssl/ssl_algs.c b/ssl/ssl_algs.c
index ac82d45..052e939 100644
--- a/ssl/ssl_algs.c
+++ b/ssl/ssl_algs.c
@@ -82,6 +82,11 @@
 	EVP_add_cipher(EVP_aes_192_cbc());
 	EVP_add_cipher(EVP_aes_256_cbc());
 #endif
+#ifndef OPENSSL_NO_CAMELLIA
+	EVP_add_cipher(EVP_camellia_128_cbc());
+	EVP_add_cipher(EVP_camellia_256_cbc());
+#endif
+
 #ifndef OPENSSL_NO_MD2
 	EVP_add_digest(EVP_md2());
 #endif
diff --git a/ssl/ssl_ciph.c b/ssl/ssl_ciph.c
index dd4c956..6bf337b 100644
--- a/ssl/ssl_ciph.c
+++ b/ssl/ssl_ciph.c
@@ -102,6 +102,11 @@
 #define SSL_ENC_AES128_IDX	7
 #define SSL_ENC_AES256_IDX	8
 #define SSL_ENC_NUM_IDX		9
+#define SSL_ENC_CAMELLIA128_IDX	9
+#define SSL_ENC_CAMELLIA256_IDX	10
+#undef  SSL_ENC_NUM_IDX
+#define SSL_ENC_NUM_IDX		11
+
 
 static const EVP_CIPHER *ssl_cipher_methods[SSL_ENC_NUM_IDX]={
 	NULL,NULL,NULL,NULL,NULL,NULL,
@@ -170,6 +175,7 @@
 	{0,SSL_TXT_eNULL,0,SSL_eNULL,0,0,0,0,SSL_ENC_MASK,0},
 	{0,SSL_TXT_eFZA,0,SSL_eFZA,  0,0,0,0,SSL_ENC_MASK,0},
 	{0,SSL_TXT_AES,	0,SSL_AES,   0,0,0,0,SSL_ENC_MASK,0},
+	{0,SSL_TXT_CAMELLIA,	0,SSL_CAMELLIA,   0,0,0,0,SSL_ENC_MASK,0},
 
 	{0,SSL_TXT_MD5,	0,SSL_MD5,   0,0,0,0,SSL_MAC_MASK,0},
 	{0,SSL_TXT_SHA1,0,SSL_SHA1,  0,0,0,0,SSL_MAC_MASK,0},
@@ -215,6 +221,10 @@
 	  EVP_get_cipherbyname(SN_aes_128_cbc);
 	ssl_cipher_methods[SSL_ENC_AES256_IDX]=
 	  EVP_get_cipherbyname(SN_aes_256_cbc);
+	ssl_cipher_methods[SSL_ENC_CAMELLIA128_IDX]=
+	  EVP_get_cipherbyname(SN_camellia_128_cbc);
+	ssl_cipher_methods[SSL_ENC_CAMELLIA256_IDX]=
+	  EVP_get_cipherbyname(SN_camellia_256_cbc);
 
 	ssl_digest_methods[SSL_MD_MD5_IDX]=
 		EVP_get_digestbyname(SN_md5);
@@ -323,6 +333,15 @@
 		default: i=-1; break;
 			}
 		break;
+	case SSL_CAMELLIA:
+		switch(c->alg_bits)
+			{
+		case 128: i=SSL_ENC_CAMELLIA128_IDX; break;
+		case 256: i=SSL_ENC_CAMELLIA256_IDX; break;
+		default: i=-1; break;
+			}
+		break;
+
 	default:
 		i= -1;
 		break;
@@ -414,6 +433,7 @@
 	mask |= (ssl_cipher_methods[SSL_ENC_IDEA_IDX] == NULL) ? SSL_IDEA:0;
 	mask |= (ssl_cipher_methods[SSL_ENC_eFZA_IDX] == NULL) ? SSL_eFZA:0;
 	mask |= (ssl_cipher_methods[SSL_ENC_AES128_IDX] == NULL) ? SSL_AES:0;
+	mask |= (ssl_cipher_methods[SSL_ENC_CAMELLIA128_IDX] == NULL) ? SSL_CAMELLIA:0;
 
 	mask |= (ssl_digest_methods[SSL_MD_MD5_IDX ] == NULL) ? SSL_MD5 :0;
 	mask |= (ssl_digest_methods[SSL_MD_SHA1_IDX] == NULL) ? SSL_SHA1:0;
@@ -1106,6 +1126,15 @@
 		default: enc="AES(?""?""?)"; break;
 			}
 		break;
+	case SSL_CAMELLIA:
+		switch(cipher->strength_bits)
+			{
+		case 128: enc="Camellia(128)"; break;
+		case 256: enc="Camellia(256)"; break;
+		default: enc="Camellia(?""?""?)"; break;
+			}
+		break;
+		
 	default:
 		enc="unknown";
 		break;
diff --git a/ssl/ssl_locl.h b/ssl/ssl_locl.h
index f98ac77..b85861b 100644
--- a/ssl/ssl_locl.h
+++ b/ssl/ssl_locl.h
@@ -1,4 +1,3 @@
-
 /* ssl/ssl_locl.h */
 /* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com)
  * All rights reserved.
@@ -276,7 +275,7 @@
  * that the different entities within are mutually exclusive:
  * ONLY ONE BIT PER MASK CAN BE SET AT A TIME.
  */
-#define SSL_MKEY_MASK		0x080000FFL
+#define SSL_MKEY_MASK		0x200000FFL
 #define SSL_kRSA		0x00000001L /* RSA key exchange */
 #define SSL_kDHr		0x00000002L /* DH cert RSA CA cert */
 #define SSL_kDHd		0x00000004L /* DH cert DSA CA cert */
@@ -286,7 +285,7 @@
 #define SSL_kECDH               0x00000040L /* ECDH w/ long-term keys */
 #define SSL_kECDHE              0x00000080L /* ephemeral ECDH */
 #define SSL_EDH			(SSL_kEDH|(SSL_AUTH_MASK^SSL_aNULL))
-#define SSL_kPSK                0x08000000L /* PSK */
+#define SSL_kPSK                0x20000000L /* PSK */
 
 #define SSL_AUTH_MASK		0x10007f00L
 #define SSL_aRSA		0x00000100L /* Authenticate with RSA */
@@ -308,7 +307,7 @@
 #define SSL_KRB5                (SSL_kKRB5|SSL_aKRB5)
 #define SSL_PSK                 (SSL_kPSK|SSL_aPSK)
 
-#define SSL_ENC_MASK		0x043F8000L
+#define SSL_ENC_MASK		0x0C3F8000L
 #define SSL_DES			0x00008000L
 #define SSL_3DES		0x00010000L
 #define SSL_RC4			0x00020000L
@@ -317,6 +316,7 @@
 #define SSL_eFZA		0x00100000L
 #define SSL_eNULL		0x00200000L
 #define SSL_AES			0x04000000L
+#define SSL_CAMELLIA		0x08000000L
 
 #define SSL_MAC_MASK		0x00c00000L
 #define SSL_MD5			0x00400000L
@@ -328,7 +328,7 @@
 #define SSL_SSLV3		0x02000000L
 #define SSL_TLSV1		SSL_SSLV3	/* for now */
 
-/* we have used 1fffffff - 3 bits left to go. */
+/* we have used 3fffffff - 2 bits left to go. */
 
 /*
  * Export and cipher strength information. For each cipher we have to decide
diff --git a/ssl/tls1.h b/ssl/tls1.h
index fbe80e9..1c1ca15 100644
--- a/ssl/tls1.h
+++ b/ssl/tls1.h
@@ -260,6 +260,21 @@
 #define TLS1_CK_DHE_RSA_WITH_AES_256_SHA		0x03000039
 #define TLS1_CK_ADH_WITH_AES_256_SHA			0x0300003A
 
+/* Camellia ciphersuites form RFC4132 */
+#define TLS1_CK_RSA_WITH_CAMELLIA_128_CBC_SHA		0x03000041
+#define TLS1_CK_DH_DSS_WITH_CAMELLIA_128_CBC_SHA	0x03000042
+#define TLS1_CK_DH_RSA_WITH_CAMELLIA_128_CBC_SHA	0x03000043
+#define TLS1_CK_DHE_DSS_WITH_CAMELLIA_128_CBC_SHA	0x03000044
+#define TLS1_CK_DHE_RSA_WITH_CAMELLIA_128_CBC_SHA	0x03000045
+#define TLS1_CK_ADH_WITH_CAMELLIA_128_CBC_SHA		0x03000046
+
+#define TLS1_CK_RSA_WITH_CAMELLIA_256_CBC_SHA		0x03000084
+#define TLS1_CK_DH_DSS_WITH_CAMELLIA_256_CBC_SHA	0x03000085
+#define TLS1_CK_DH_RSA_WITH_CAMELLIA_256_CBC_SHA	0x03000086
+#define TLS1_CK_DHE_DSS_WITH_CAMELLIA_256_CBC_SHA	0x03000087
+#define TLS1_CK_DHE_RSA_WITH_CAMELLIA_256_CBC_SHA	0x03000088
+#define TLS1_CK_ADH_WITH_CAMELLIA_256_CBC_SHA		0x03000089
+
 /* ECC ciphersuites from draft-ietf-tls-ecc-12.txt with changes soon to be in draft 13 */
 #define TLS1_CK_ECDH_ECDSA_WITH_NULL_SHA                0x0300C001
 #define TLS1_CK_ECDH_ECDSA_WITH_RC4_128_SHA             0x0300C002
@@ -358,6 +373,22 @@
 #define TLS1_TXT_PSK_WITH_AES_128_CBC_SHA		"PSK-AES128-CBC-SHA"
 #define TLS1_TXT_PSK_WITH_AES_256_CBC_SHA		"PSK-AES256-CBC-SHA"
 
+/* Camellia ciphersuites from RFC4132 */
+#define TLS1_TXT_RSA_WITH_CAMELLIA_128_CBC_SHA		"CAMELLIA128-SHA"
+#define TLS1_TXT_DH_DSS_WITH_CAMELLIA_128_CBC_SHA	"DH-DSS-CAMELLIA128-SHA"
+#define TLS1_TXT_DH_RSA_WITH_CAMELLIA_128_CBC_SHA	"DH-RSA-CAMELLIA128-SHA"
+#define TLS1_TXT_DHE_DSS_WITH_CAMELLIA_128_CBC_SHA	"DHE-DSS-CAMELLIA128-SHA"
+#define TLS1_TXT_DHE_RSA_WITH_CAMELLIA_128_CBC_SHA	"DHE-RSA-CAMELLIA128-SHA"
+#define TLS1_TXT_ADH_WITH_CAMELLIA_128_CBC_SHA		"ADH-CAMELLIA128-SHA"
+
+#define TLS1_TXT_RSA_WITH_CAMELLIA_256_CBC_SHA		"CAMELLIA256-SHA"
+#define TLS1_TXT_DH_DSS_WITH_CAMELLIA_256_CBC_SHA	"DH-DSS-CAMELLIA256-SHA"
+#define TLS1_TXT_DH_RSA_WITH_CAMELLIA_256_CBC_SHA	"DH-RSA-CAMELLIA256-SHA"
+#define TLS1_TXT_DHE_DSS_WITH_CAMELLIA_256_CBC_SHA	"DHE-DSS-CAMELLIA256-SHA"
+#define TLS1_TXT_DHE_RSA_WITH_CAMELLIA_256_CBC_SHA	"DHE-RSA-CAMELLIA256-SHA"
+#define TLS1_TXT_ADH_WITH_CAMELLIA_256_CBC_SHA		"ADH-CAMELLIA256-SHA"
+
+
 #define TLS_CT_RSA_SIGN			1
 #define TLS_CT_DSS_SIGN			2
 #define TLS_CT_RSA_FIXED_DH		3
diff --git a/test/Makefile b/test/Makefile
index 398de38..e7e171a 100644
--- a/test/Makefile
+++ b/test/Makefile
@@ -561,11 +561,8 @@
 md5test.o: ../include/openssl/opensslconf.h ../include/openssl/opensslv.h
 md5test.o: ../include/openssl/ossl_typ.h ../include/openssl/safestack.h
 md5test.o: ../include/openssl/stack.h ../include/openssl/symhacks.h md5test.c
-mdc2test.o: ../include/openssl/buffer.h ../include/openssl/crypto.h
-mdc2test.o: ../include/openssl/e_os2.h ../include/openssl/opensslconf.h
-mdc2test.o: ../include/openssl/opensslv.h ../include/openssl/ossl_typ.h
-mdc2test.o: ../include/openssl/safestack.h ../include/openssl/stack.h
-mdc2test.o: ../include/openssl/symhacks.h mdc2test.c
+mdc2test.o: ../e_os.h ../include/openssl/e_os2.h
+mdc2test.o: ../include/openssl/opensslconf.h mdc2test.c
 randtest.o: ../e_os.h ../include/openssl/e_os2.h
 randtest.o: ../include/openssl/opensslconf.h ../include/openssl/ossl_typ.h
 randtest.o: ../include/openssl/rand.h randtest.c
@@ -574,11 +571,8 @@
 rc4test.o: ../e_os.h ../include/openssl/e_os2.h
 rc4test.o: ../include/openssl/opensslconf.h ../include/openssl/rc4.h
 rc4test.o: ../include/openssl/sha.h rc4test.c
-rc5test.o: ../include/openssl/buffer.h ../include/openssl/crypto.h
-rc5test.o: ../include/openssl/e_os2.h ../include/openssl/opensslconf.h
-rc5test.o: ../include/openssl/opensslv.h ../include/openssl/ossl_typ.h
-rc5test.o: ../include/openssl/safestack.h ../include/openssl/stack.h
-rc5test.o: ../include/openssl/symhacks.h rc5test.c
+rc5test.o: ../e_os.h ../include/openssl/e_os2.h
+rc5test.o: ../include/openssl/opensslconf.h rc5test.c
 rmdtest.o: ../e_os.h ../include/openssl/asn1.h ../include/openssl/bio.h
 rmdtest.o: ../include/openssl/crypto.h ../include/openssl/e_os2.h
 rmdtest.o: ../include/openssl/evp.h ../include/openssl/obj_mac.h
diff --git a/util/libeay.num b/util/libeay.num
index 6b36fc4..6d067e0 100755
--- a/util/libeay.num
+++ b/util/libeay.num
@@ -3380,348 +3380,384 @@
 X509_VERIFY_PARAM_get_flags             3781	EXIST::FUNCTION:
 EVP_CIPHER_CTX_new                      3782	EXIST::FUNCTION:
 EVP_CIPHER_CTX_free                     3783	EXIST::FUNCTION:
-ASN1_item_print                         3784	EXIST::FUNCTION:
-ASN1_PCTX_get_cert_flags                3785	EXIST::FUNCTION:
-b2i_PublicKey_bio                       3786	EXIST::FUNCTION:
-d2i_NETSCAPE_X509                       3787	EXIST::FUNCTION:
-ASN1_PCTX_get_flags                     3788	EXIST::FUNCTION:
-i2d_ISSUING_DIST_POINT                  3789	EXIST::FUNCTION:
-ASN1_PCTX_get_nm_flags                  3790	EXIST::FUNCTION:
-NETSCAPE_X509_free                      3791	EXIST::FUNCTION:
-i2b_PVK_bio                             3792	EXIST::FUNCTION:
-b2i_PVK_bio                             3793	EXIST::FUNCTION:
-ISSUING_DIST_POINT_new                  3794	EXIST::FUNCTION:
-ASN1_PCTX_get_oid_flags                 3795	EXIST::FUNCTION:
-d2i_ISSUING_DIST_POINT                  3796	EXIST::FUNCTION:
-i2b_PrivateKey_bio                      3797	EXIST::FUNCTION:
-b2i_PublicKey                           3798	EXIST::FUNCTION:
-ASN1_PCTX_set_nm_flags                  3799	EXIST::FUNCTION:
-i2b_PublicKey_bio                       3800	EXIST::FUNCTION:
-b2i_PrivateKey                          3801	EXIST::FUNCTION:
-b2i_PrivateKey_bio                      3802	EXIST::FUNCTION:
-PKCS7_print_ctx                         3803	EXIST::FUNCTION:
-EVP_whirlpool                           3804	EXIST::FUNCTION:WHIRLPOOL
-ASN1_PCTX_set_flags                     3805	EXIST::FUNCTION:
-NETSCAPE_X509_it                        3806	EXIST:!EXPORT_VAR_AS_FUNCTION:VARIABLE:
-NETSCAPE_X509_it                        3806	EXIST:EXPORT_VAR_AS_FUNCTION:FUNCTION:
-ASN1_PCTX_set_str_flags                 3807	EXIST::FUNCTION:
-ISSUING_DIST_POINT_free                 3808	EXIST::FUNCTION:
-i2d_NETSCAPE_X509                       3809	EXIST::FUNCTION:
-ISSUING_DIST_POINT_it                   3810	EXIST:!EXPORT_VAR_AS_FUNCTION:VARIABLE:
-ISSUING_DIST_POINT_it                   3810	EXIST:EXPORT_VAR_AS_FUNCTION:FUNCTION:
-ASN1_PCTX_set_oid_flags                 3811	EXIST::FUNCTION:
-ASN1_PCTX_new                           3812	EXIST::FUNCTION:
-NETSCAPE_X509_new                       3813	EXIST::FUNCTION:
-ASN1_PCTX_get_str_flags                 3814	EXIST::FUNCTION:
-ASN1_PCTX_free                          3815	EXIST::FUNCTION:
-DSO_pathbyaddr                          3816	EXIST::FUNCTION:
-ASN1_PCTX_set_cert_flags                3817	EXIST::FUNCTION:
-WHIRLPOOL_Init                          3818	EXIST::FUNCTION:WHIRLPOOL
-WHIRLPOOL                               3819	EXIST::FUNCTION:WHIRLPOOL
-WHIRLPOOL_BitUpdate                     3820	EXIST::FUNCTION:WHIRLPOOL
-WHIRLPOOL_Final                         3821	EXIST::FUNCTION:WHIRLPOOL
-WHIRLPOOL_Update                        3822	EXIST::FUNCTION:WHIRLPOOL
-DSO_global_lookup                       3823	EXIST::FUNCTION:
-TS_RESP_CTX_free                        3824	EXIST::FUNCTION:
-i2d_TS_ACCURACY                         3825	EXIST::FUNCTION:
-i2d_TS_MSG_IMPRINT_fp                   3826	EXIST::FUNCTION:
-i2d_TS_MSG_IMPRINT                      3827	EXIST::FUNCTION:
-i2d_TS_TST_INFO                         3828	EXIST::FUNCTION:
-TS_CONF_load_cert                       3829	EXIST::FUNCTION:
-TS_REQ_get_ext                          3830	EXIST::FUNCTION:
-TS_TST_INFO_set_nonce                   3831	EXIST::FUNCTION:
-TS_RESP_dup                             3832	EXIST::FUNCTION:
-i2d_TS_TST_INFO_fp                      3833	EXIST::FUNCTION:
-TS_TST_INFO_set_time                    3834	EXIST::FUNCTION:
-TS_REQ_set_policy_id                    3835	EXIST::FUNCTION:
-d2i_TS_RESP_fp                          3836	EXIST::FUNCTION:
-TS_RESP_set_status_info                 3837	EXIST::FUNCTION:
-TS_ACCURACY_set_millis                  3838	EXIST::FUNCTION:
-TS_REQ_dup                              3839	EXIST::FUNCTION:
-GENERAL_NAME_dup                        3840	EXIST::FUNCTION:
-TS_MSG_IMPRINT_set_algo                 3841	EXIST::FUNCTION:
-i2d_TS_TST_INFO_bio                     3842	EXIST::FUNCTION:
-TS_TST_INFO_set_ordering                3843	EXIST::FUNCTION:
-TS_TST_INFO_get_ext_by_OBJ              3844	EXIST::FUNCTION:
-TS_CONF_get_tsa_section                 3845	EXIST::FUNCTION:
-TS_RESP_CTX_set_signer_key              3846	EXIST::FUNCTION:
-i2d_ESS_SIGNING_CERT                    3847	EXIST::FUNCTION:
-TS_CONF_load_key                        3848	EXIST::FUNCTION:
-d2i_TS_MSG_IMPRINT_bio                  3849	EXIST::FUNCTION:
-TS_REQ_ext_free                         3850	EXIST::FUNCTION:
-TS_RESP_CTX_set_status_info             3851	EXIST::FUNCTION:
-TS_MSG_IMPRINT_get_algo                 3852	EXIST::FUNCTION:
-TS_REQ_print_bio                        3853	EXIST::FUNCTION:
-TS_MSG_IMPRINT_print_bio                3854	EXIST::FUNCTION:
-TS_REQ_get_policy_id                    3855	EXIST::FUNCTION:
-d2i_TS_ACCURACY                         3856	EXIST::FUNCTION:
-TS_CONF_set_tsa_name                    3857	EXIST::FUNCTION:
-TS_TST_INFO_get_ext_by_NID              3858	EXIST::FUNCTION:
-TS_RESP_new                             3859	EXIST::FUNCTION:
-ESS_CERT_ID_dup                         3860	EXIST::FUNCTION:
-TS_STATUS_INFO_dup                      3861	EXIST::FUNCTION:
-TS_REQ_delete_ext                       3862	EXIST::FUNCTION:
-TS_REQ_get_msg_imprint                  3863	EXIST::FUNCTION:
-TS_TST_INFO_get_serial                  3864	EXIST::FUNCTION:
-TS_REQ_get_nonce                        3865	EXIST::FUNCTION:
-TS_STATUS_INFO_print_bio                3866	EXIST::FUNCTION:
-d2i_TS_TST_INFO                         3867	EXIST::FUNCTION:
-d2i_TS_RESP_bio                         3868	EXIST::FUNCTION:
-OTHERNAME_cmp                           3869	EXIST::FUNCTION:
-TS_RESP_CTX_new                         3870	EXIST::FUNCTION:
-TS_RESP_set_tst_info                    3871	EXIST::FUNCTION:
-TS_RESP_CTX_set_signer_cert             3872	EXIST::FUNCTION:
-TS_REQ_set_msg_imprint                  3873	EXIST::FUNCTION:
-TS_CONF_set_digests                     3874	EXIST::FUNCTION:
-d2i_TS_MSG_IMPRINT                      3875	EXIST::FUNCTION:
-TS_REQ_get_ext_by_NID                   3876	EXIST::FUNCTION:
-TS_ACCURACY_new                         3877	EXIST::FUNCTION:
-TS_TST_INFO_new                         3878	EXIST::FUNCTION:
-TS_CONF_set_default_engine              3879	EXIST::FUNCTION:
-TS_ACCURACY_set_seconds                 3880	EXIST::FUNCTION:
-TS_TST_INFO_get_time                    3881	EXIST::FUNCTION:
-d2i_ESS_ISSUER_SERIAL                   3882	EXIST::FUNCTION:
-TS_OBJ_print_bio                        3883	EXIST::FUNCTION:
-TS_RESP_get_status_info                 3884	EXIST::FUNCTION:
-PKCS7_to_TS_TST_INFO                    3885	EXIST::FUNCTION:
-TS_TST_INFO_add_ext                     3886	EXIST::FUNCTION:
-i2d_TS_RESP_fp                          3887	EXIST::FUNCTION:
-i2d_TS_MSG_IMPRINT_bio                  3888	EXIST::FUNCTION:
-TS_RESP_CTX_set_accuracy                3889	EXIST::FUNCTION:
-TS_REQ_set_nonce                        3890	EXIST::FUNCTION:
-ESS_CERT_ID_new                         3891	EXIST::FUNCTION:
-TS_REQ_get_ext_count                    3892	EXIST::FUNCTION:
-TS_TST_INFO_print_bio                   3893	EXIST::FUNCTION:
-i2d_TS_RESP                             3894	EXIST::FUNCTION:
-TS_VERIFY_CTX_cleanup                   3895	EXIST::FUNCTION:
-TS_STATUS_INFO_free                     3896	EXIST::FUNCTION:
-TS_RESP_verify_token                    3897	EXIST::FUNCTION:
-TS_TST_INFO_get_policy_id               3898	EXIST::FUNCTION:
-TS_REQ_get_cert_req                     3899	EXIST::FUNCTION:
-d2i_TS_TST_INFO_fp                      3900	EXIST::FUNCTION:
-TS_TST_INFO_get_ext_d2i                 3901	EXIST::FUNCTION:
-TS_RESP_CTX_add_policy                  3902	EXIST::FUNCTION:
-d2i_TS_RESP                             3903	EXIST::FUNCTION:
-TS_CONF_load_certs                      3904	EXIST::FUNCTION:
-TS_TST_INFO_get_msg_imprint             3905	EXIST::FUNCTION:
-ERR_load_TS_strings                     3906	EXIST::FUNCTION:
-TS_TST_INFO_get_version                 3907	EXIST::FUNCTION:
-TS_CONF_set_certs                       3908	EXIST::FUNCTION:
-TS_VERIFY_CTX_free                      3909	EXIST::FUNCTION:
-TS_REQ_get_ext_by_critical              3910	EXIST::FUNCTION:
-TS_RESP_CTX_set_serial_cb               3911	EXIST::FUNCTION:
-TS_RESP_CTX_set_time_cb                 3912	EXIST::FUNCTION:
-TS_MSG_IMPRINT_get_msg                  3913	EXIST::FUNCTION:
-TS_TST_INFO_ext_free                    3914	EXIST::FUNCTION:
-TS_REQ_get_version                      3915	EXIST::FUNCTION:
-TS_REQ_add_ext                          3916	EXIST::FUNCTION:
-d2i_TS_TST_INFO_bio                     3917	EXIST::FUNCTION:
-TS_TST_INFO_get_ordering                3918	EXIST::FUNCTION:
-TS_RESP_print_bio                       3919	EXIST::FUNCTION:
-TS_TST_INFO_get_exts                    3920	EXIST::FUNCTION:
-TS_REQ_set_cert_req                     3921	EXIST::FUNCTION:
-TS_CONF_set_serial                      3922	EXIST::FUNCTION:
-TS_TST_INFO_free                        3923	EXIST::FUNCTION:
-d2i_TS_REQ_fp                           3924	EXIST::FUNCTION:
-TS_RESP_verify_response                 3925	EXIST::FUNCTION:
-i2d_ESS_ISSUER_SERIAL                   3926	EXIST::FUNCTION:
-TS_ACCURACY_get_seconds                 3927	EXIST::FUNCTION:
-TS_MSG_IMPRINT_dup                      3928	EXIST::FUNCTION:
-i2d_TS_REQ_bio                          3929	EXIST::FUNCTION:
-i2d_ESS_CERT_ID                         3930	EXIST::FUNCTION:
-TS_VERIFY_CTX_new                       3931	EXIST::FUNCTION:
-TS_RESP_CTX_set_extension_cb            3932	EXIST::FUNCTION:
-TS_RESP_CTX_set_status_info_cond        3933	EXIST:!VMS:FUNCTION:
-TS_RESP_CTX_set_stat_info_cond          3933	EXIST:VMS:FUNCTION:
-TS_RESP_CTX_set_def_policy              3934	EXIST::FUNCTION:
-TS_RESP_create_response                 3935	EXIST::FUNCTION:
-TS_TST_INFO_get_nonce                   3936	EXIST::FUNCTION:
-TS_TST_INFO_set_policy_id               3937	EXIST::FUNCTION:
-TS_CONF_set_ess_cert_id_chain           3938	EXIST::FUNCTION:
-d2i_TS_REQ                              3939	EXIST::FUNCTION:
-ESS_SIGNING_CERT_new                    3940	EXIST::FUNCTION:
-i2d_TS_REQ                              3941	EXIST::FUNCTION:
-TS_TST_INFO_delete_ext                  3942	EXIST::FUNCTION:
-ESS_ISSUER_SERIAL_free                  3943	EXIST::FUNCTION:
-TS_CONF_set_signer_key                  3944	EXIST::FUNCTION:
-TS_ACCURACY_get_millis                  3945	EXIST::FUNCTION:
-TS_RESP_get_token                       3946	EXIST::FUNCTION:
-TS_ACCURACY_dup                         3947	EXIST::FUNCTION:
-TS_RESP_free                            3948	EXIST::FUNCTION:
-ESS_ISSUER_SERIAL_new                   3949	EXIST::FUNCTION:
-TS_RESP_CTX_add_md                      3950	EXIST::FUNCTION:
-TS_TST_INFO_dup                         3951	EXIST::FUNCTION:
-TS_TST_INFO_get_accuracy                3952	EXIST::FUNCTION:
-TS_TST_INFO_set_version                 3953	EXIST::FUNCTION:
-TS_RESP_CTX_get_tst_info                3954	EXIST::FUNCTION:
-TS_RESP_verify_signature                3955	EXIST::FUNCTION:
-TS_TST_INFO_get_tsa                     3956	EXIST::FUNCTION:
-TS_STATUS_INFO_new                      3957	EXIST::FUNCTION:
-TS_REQ_get_ext_d2i                      3958	EXIST::FUNCTION:
-TS_TST_INFO_get_ext_count               3959	EXIST::FUNCTION:
-TS_RESP_CTX_get_request                 3960	EXIST::FUNCTION:
-ASN1_TYPE_cmp                           3961	EXIST::FUNCTION:
-d2i_TS_MSG_IMPRINT_fp                   3962	EXIST::FUNCTION:
-d2i_ESS_SIGNING_CERT                    3963	EXIST::FUNCTION:
-TS_CONF_set_ordering                    3964	EXIST::FUNCTION:
-TS_REQ_set_version                      3965	EXIST::FUNCTION:
-i2d_TS_STATUS_INFO                      3966	EXIST::FUNCTION:
-TS_TST_INFO_set_accuracy                3967	EXIST::FUNCTION:
-TS_TST_INFO_set_tsa                     3968	EXIST::FUNCTION:
-TS_CONF_set_accuracy                    3969	EXIST::FUNCTION:
-ESS_SIGNING_CERT_dup                    3970	EXIST::FUNCTION:
-d2i_TS_REQ_bio                          3971	EXIST::FUNCTION:
-TS_RESP_CTX_add_flags                   3972	EXIST::FUNCTION:
-d2i_TS_STATUS_INFO                      3973	EXIST::FUNCTION:
-TS_MSG_IMPRINT_set_msg                  3974	EXIST::FUNCTION:
-TS_REQ_free                             3975	EXIST::FUNCTION:
-TS_REQ_get_exts                         3976	EXIST::FUNCTION:
-TS_RESP_CTX_set_clock_precision_digits  3977	EXIST:!VMS:FUNCTION:
-TS_RESP_CTX_set_clk_prec_digits         3977	EXIST:VMS:FUNCTION:
-TS_RESP_CTX_add_failure_info            3978	EXIST::FUNCTION:
-i2d_TS_RESP_bio                         3979	EXIST::FUNCTION:
-TS_REQ_new                              3980	EXIST::FUNCTION:
-TS_MSG_IMPRINT_new                      3981	EXIST::FUNCTION:
-TS_TST_INFO_set_serial                  3982	EXIST::FUNCTION:
-TS_CONF_set_crypto_device               3983	EXIST::FUNCTION:
-TS_CONF_set_policies                    3984	EXIST::FUNCTION:
-ESS_CERT_ID_free                        3985	EXIST::FUNCTION:
-TS_MSG_IMPRINT_free                     3986	EXIST::FUNCTION:
-TS_VERIFY_CTX_init                      3987	EXIST::FUNCTION:
-TS_RESP_CTX_set_certs                   3988	EXIST::FUNCTION:
-TS_CONF_set_def_policy                  3989	EXIST::FUNCTION:
-TS_ACCURACY_free                        3990	EXIST::FUNCTION:
-TS_RESP_get_tst_info                    3991	EXIST::FUNCTION:
-TS_CONF_set_clock_precision_digits      3992	EXIST:!VMS:FUNCTION:
-TS_CONF_set_clk_prec_digits             3992	EXIST:VMS:FUNCTION:
-ESS_ISSUER_SERIAL_dup                   3993	EXIST::FUNCTION:
-TS_ACCURACY_get_micros                  3994	EXIST::FUNCTION:
-ASN1_BIT_STRING_check                   3995	EXIST::FUNCTION:
-TS_X509_ALGOR_print_bio                 3996	EXIST::FUNCTION:
-ESS_SIGNING_CERT_free                   3997	EXIST::FUNCTION:
-TS_TST_INFO_set_msg_imprint             3998	EXIST::FUNCTION:
-GENERAL_NAME_cmp                        3999	EXIST::FUNCTION:
-i2d_TS_REQ_fp                           4000	EXIST::FUNCTION:
-d2i_ESS_CERT_ID                         4001	EXIST::FUNCTION:
-TS_ext_print_bio                        4002	EXIST::FUNCTION:
-TS_ASN1_INTEGER_print_bio               4003	EXIST::FUNCTION:
-TS_ACCURACY_set_micros                  4004	EXIST::FUNCTION:
-TS_REQ_to_TS_VERIFY_CTX                 4005	EXIST::FUNCTION:
-TS_TST_INFO_get_ext                     4006	EXIST::FUNCTION:
-TS_TST_INFO_get_ext_by_critical         4007	EXIST::FUNCTION:
-TS_REQ_get_ext_by_OBJ                   4008	EXIST::FUNCTION:
-TS_CONF_set_signer_cert                 4009	EXIST::FUNCTION:
-EVP_PKEY_print_public                   4010	EXIST::FUNCTION:
-EVP_PKEY_CTX_new                        4011	EXIST::FUNCTION:
-EVP_PKEY_asn1_find                      4012	EXIST::FUNCTION:
-DSO_METHOD_beos                         4013	EXIST::FUNCTION:
-EVP_PKEY_sign_init                      4014	EXIST::FUNCTION:
-EVP_PKEY_asn1_add0                      4015	EXIST::FUNCTION:
-EVP_PKEY_meth_set_decrypt               4016	EXIST::FUNCTION:
-EVP_PKEY_CTX_get_keygen_info            4017	EXIST::FUNCTION:
-EVP_PKEY_keygen                         4018	EXIST::FUNCTION:
-EVP_PKEY_asn1_new                       4019	EXIST::FUNCTION:
-EVP_PKEY_encrypt_old                    4020	EXIST::FUNCTION:
-EVP_PKEY_encrypt_init                   4021	EXIST::FUNCTION:
-EVP_PKEY_asn1_set_public                4022	EXIST::FUNCTION:
-EVP_PKEY_asn1_set_free                  4023	EXIST::FUNCTION:
-EVP_PKEY_verify_recover_init            4024	EXIST::FUNCTION:
-EVP_PKEY_CTX_set_data                   4025	EXIST::FUNCTION:
-EVP_PKEY_keygen_init                    4026	EXIST::FUNCTION:
-EVP_PKEY_CTX_ctrl_str                   4027	EXIST::FUNCTION:
-BN_asc2bn                               4028	EXIST::FUNCTION:
-X509_ALGOR_get0                         4029	EXIST::FUNCTION:
-EVP_PKEY_print_params                   4030	EXIST::FUNCTION:
-X509_PUBKEY_set0_param                  4031	EXIST::FUNCTION:
-X509_ALGOR_set0                         4032	EXIST::FUNCTION:
-EVP_PKEY_CTX_get_data                   4033	EXIST::FUNCTION:
-EVP_PKEY_derive_init                    4034	EXIST::FUNCTION:
-EVP_PKEY_asn1_add_alias                 4035	EXIST::FUNCTION:
-EVP_PKEY_CTX_ctrl                       4036	EXIST::FUNCTION:
-EVP_PKEY_meth_set_ctrl                  4037	EXIST::FUNCTION:
-EVP_PKEY_meth_set_sign                  4038	EXIST::FUNCTION:
-EVP_PKEY_decrypt_init                   4039	EXIST::FUNCTION:
-EVP_PKEY_print_private                  4040	EXIST::FUNCTION:
-PKCS8_pkey_get0                         4041	EXIST::FUNCTION:
-EVP_PKEY_asn1_get0                      4042	EXIST::FUNCTION:
-EVP_PKEY_paramgen_init                  4043	EXIST::FUNCTION:
-EVP_PKEY_sign                           4044	EXIST::FUNCTION:
-EVP_PKEY_meth_set_init                  4045	EXIST::FUNCTION:
-EVP_PKEY_meth_set_verify_recover        4046	EXIST:!VMS:FUNCTION:
-EVP_PKEY_meth_set_vrfy_recover          4046	EXIST:VMS:FUNCTION:
-EVP_PKEY_CTX_set_cb                     4047	EXIST::FUNCTION:
-EVP_PKEY_meth_set_derive                4048	EXIST::FUNCTION:
-BUF_reverse                             4049	EXIST::FUNCTION:
-ASN1_bn_print                           4050	EXIST::FUNCTION:BIO
-EVP_PKEY_asn1_get_count                 4051	EXIST::FUNCTION:
-PKCS8_pkey_set0                         4052	EXIST::FUNCTION:
-EVP_PKEY_asn1_set_private               4053	EXIST::FUNCTION:
-EVP_PKEY_meth_set_verify                4054	EXIST::FUNCTION:
-EVP_PKEY_asn1_get0_info                 4055	EXIST::FUNCTION:
-EVP_PKEY_CTX_set_app_data               4056	EXIST::FUNCTION:
-EVP_PKEY_meth_set_verifyctx             4057	EXIST::FUNCTION:
-EVP_PKEY_CTX_get_app_data               4058	EXIST::FUNCTION:
-X509_PUBKEY_get0_param                  4059	EXIST::FUNCTION:
-EVP_PKEY_asn1_set_param                 4060	EXIST::FUNCTION:
-EVP_PKEY_meth_set_encrypt               4061	EXIST::FUNCTION:
-EVP_PKEY_verify                         4062	EXIST::FUNCTION:
-EVP_PKEY_decrypt_old                    4063	EXIST::FUNCTION:
-EVP_PKEY_asn1_find_str                  4064	EXIST::FUNCTION:
-EVP_PKEY_derive                         4065	EXIST::FUNCTION:
-PEM_write_bio_Parameters                4066	EXIST::FUNCTION:
-EVP_PKEY_meth_set_signctx               4067	EXIST::FUNCTION:
-EVP_PKEY_CTX_free                       4068	EXIST::FUNCTION:
-EVP_PKEY_get0                           4069	EXIST::FUNCTION:
-EVP_PKEY_meth_find                      4070	EXIST::FUNCTION:
-EVP_PKEY_verify_init                    4071	EXIST::FUNCTION:
-EVP_PKEY_derive_set_peer                4072	EXIST::FUNCTION:
-PEM_read_bio_Parameters                 4073	EXIST::FUNCTION:
-EVP_PKEY_meth_set_cleanup               4074	EXIST::FUNCTION:
-EVP_PKEY_asn1_free                      4075	EXIST::FUNCTION:
-EVP_PKEY_meth_set_keygen                4076	EXIST::FUNCTION:
-EVP_PKEY_paramgen                       4077	EXIST::FUNCTION:
-EVP_PKEY_meth_set_paramgen              4078	EXIST::FUNCTION:
-EVP_PKEY_verify_recover                 4079	EXIST::FUNCTION:
-EVP_PKEY_asn1_set_ctrl                  4080	EXIST::FUNCTION:
-EVP_PKEY_CTX_new_id                     4081	EXIST::FUNCTION:
-EVP_PKEY_get_default_digest_nid         4082	EXIST::FUNCTION:
-OBJ_find_sigid_by_algs                  4083	EXIST::FUNCTION:
-PKCS7_RECIP_INFO_get0_alg               4084	EXIST::FUNCTION:
-EVP_PKEY_base_id                        4085	EXIST::FUNCTION:
-PKCS7_SIGNER_INFO_get0_algs             4086	EXIST::FUNCTION:
-EVP_PKEY_CTX_get0_pkey                  4087	EXIST::FUNCTION:
-EVP_PKEY_meth_add0                      4088	EXIST::FUNCTION:
-EVP_PKEY_meth_new                       4089	EXIST::FUNCTION:
-ASN1_STRING_set0                        4090	EXIST::FUNCTION:
-EVP_PKEY_id                             4091	EXIST::FUNCTION:
-OBJ_find_sigid_algs                     4092	EXIST::FUNCTION:
-PKCS7_add0_attrib_signing_time          4093	EXIST::FUNCTION:
-PKCS7_final                             4094	EXIST::FUNCTION:
-PKCS7_SIGNER_INFO_sign                  4095	EXIST::FUNCTION:
-PKCS7_sign_add_signer                   4096	EXIST::FUNCTION:
-PKCS5_pbe2_set_iv                       4097	EXIST::FUNCTION:
-EVP_PBE_find                            4098	EXIST::FUNCTION:
-PKCS7_add1_attrib_digest                4099	EXIST::FUNCTION:
-EVP_PBE_alg_add_type                    4100	EXIST::FUNCTION:
-PKCS7_add_attrib_content_type           4101	EXIST::FUNCTION:
-EVP_DigestSignInit                      4102	EXIST::FUNCTION:
-EVP_DigestVerifyFinal                   4103	EXIST::FUNCTION:
-EVP_DigestVerifyInit                    4104	EXIST::FUNCTION:
-EVP_DigestSignFinal                     4105	EXIST::FUNCTION:
-EVP_PKEY_CTX_dup                        4106	EXIST::FUNCTION:
-EVP_PKEY_meth_free                      4107	EXIST::FUNCTION:
-EVP_PKEY_meth_set_copy                  4108	EXIST::FUNCTION:
-ENGINE_register_pkey_meths              4109	EXIST::FUNCTION:ENGINE
-ENGINE_get_pkey_meth                    4110	EXIST::FUNCTION:ENGINE
-EVP_PKEY_CTX_set0_keygen_info           4111	EXIST::FUNCTION:
-ENGINE_get_pkey_meths                   4112	EXIST::FUNCTION:ENGINE
-ENGINE_register_all_pkey_meths          4113	EXIST::FUNCTION:ENGINE
-EVP_PKEY_CTX_get_cb                     4114	EXIST::FUNCTION:
-EVP_PKEY_CTX_get_operation              4115	EXIST::FUNCTION:
-ENGINE_unregister_pkey_meths            4116	EXIST::FUNCTION:ENGINE
-ENGINE_set_pkey_meths                   4117	EXIST::FUNCTION:ENGINE
-ENGINE_get_pkey_asn1_meth               4118	EXIST::FUNCTION:ENGINE
-ENGINE_set_default_pkey_meths           4119	EXIST::FUNCTION:ENGINE
-ENGINE_get_pkey_asn1_meths              4120	EXIST::FUNCTION:ENGINE
-ENGINE_set_pkey_asn1_meths              4121	EXIST::FUNCTION:ENGINE
-ENGINE_get_pkey_meth_engine             4122	EXIST::FUNCTION:ENGINE
+Camellia_cbc_encrypt                    3784	EXIST::FUNCTION:CAMELLIA
+Camellia_cfb128_encrypt                 3785	EXIST::FUNCTION:CAMELLIA
+Camellia_cfb1_encrypt                   3786	EXIST::FUNCTION:CAMELLIA
+Camellia_cfb8_encrypt                   3787	EXIST::FUNCTION:CAMELLIA
+Camellia_ctr128_encrypt                 3788	EXIST::FUNCTION:CAMELLIA
+Camellia_cfbr_encrypt_block             3789	EXIST::FUNCTION:CAMELLIA
+Camellia_decrypt                        3790	EXIST::FUNCTION:CAMELLIA
+Camellia_ecb_encrypt                    3791	EXIST::FUNCTION:CAMELLIA
+Camellia_encrypt                        3792	EXIST::FUNCTION:CAMELLIA
+Camellia_ofb128_encrypt                 3793	EXIST::FUNCTION:CAMELLIA
+Camellia_set_key                        3794	EXIST::FUNCTION:CAMELLIA
+EVP_camellia_128_cbc                    3795	EXIST::FUNCTION:CAMELLIA
+EVP_camellia_128_cfb128                 3796	EXIST::FUNCTION:CAMELLIA
+EVP_camellia_128_cfb1                   3797	EXIST::FUNCTION:CAMELLIA
+EVP_camellia_128_cfb8                   3798	EXIST::FUNCTION:CAMELLIA
+EVP_camellia_128_ecb                    3799	EXIST::FUNCTION:CAMELLIA
+EVP_camellia_128_ofb                    3800	EXIST::FUNCTION:CAMELLIA
+EVP_camellia_192_cbc                    3801	EXIST::FUNCTION:CAMELLIA
+EVP_camellia_192_cfb128                 3802	EXIST::FUNCTION:CAMELLIA
+EVP_camellia_192_cfb1                   3803	EXIST::FUNCTION:CAMELLIA
+EVP_camellia_192_cfb8                   3804	EXIST::FUNCTION:CAMELLIA
+EVP_camellia_192_ecb                    3805	EXIST::FUNCTION:CAMELLIA
+EVP_camellia_192_ofb                    3806	EXIST::FUNCTION:CAMELLIA
+EVP_camellia_256_cbc                    3807	EXIST::FUNCTION:CAMELLIA
+EVP_camellia_256_cfb128                 3808	EXIST::FUNCTION:CAMELLIA
+EVP_camellia_256_cfb1                   3809	EXIST::FUNCTION:CAMELLIA
+EVP_camellia_256_cfb8                   3810	EXIST::FUNCTION:CAMELLIA
+EVP_camellia_256_ecb                    3811	EXIST::FUNCTION:CAMELLIA
+EVP_camellia_256_ofb                    3812	EXIST::FUNCTION:CAMELLIA
+TS_RESP_CTX_free                        3813	EXIST::FUNCTION:
+i2d_TS_ACCURACY                         3814	EXIST::FUNCTION:
+i2d_TS_MSG_IMPRINT_fp                   3815	EXIST::FUNCTION:
+i2d_TS_MSG_IMPRINT                      3816	EXIST::FUNCTION:
+EVP_PKEY_print_public                   3817	EXIST::FUNCTION:
+EVP_PKEY_CTX_new                        3818	EXIST::FUNCTION:
+i2d_TS_TST_INFO                         3819	EXIST::FUNCTION:
+EVP_PKEY_asn1_find                      3820	EXIST::FUNCTION:
+DSO_METHOD_beos                         3821	EXIST::FUNCTION:
+TS_CONF_load_cert                       3822	EXIST::FUNCTION:
+TS_REQ_get_ext                          3823	EXIST::FUNCTION:
+EVP_PKEY_sign_init                      3824	EXIST::FUNCTION:
+ASN1_item_print                         3825	EXIST::FUNCTION:
+TS_TST_INFO_set_nonce                   3826	EXIST::FUNCTION:
+TS_RESP_dup                             3827	EXIST::FUNCTION:
+ENGINE_register_pkey_meths              3828	EXIST::FUNCTION:ENGINE
+EVP_PKEY_asn1_add0                      3829	EXIST::FUNCTION:
+PKCS7_add0_attrib_signing_time          3830	EXIST::FUNCTION:
+i2d_TS_TST_INFO_fp                      3831	EXIST::FUNCTION:
+TS_TST_INFO_set_time                    3832	EXIST::FUNCTION:
+EVP_PKEY_meth_set_decrypt               3833	EXIST::FUNCTION:
+EVP_PKEY_set_type_str                   3834	EXIST::FUNCTION:
+EVP_PKEY_CTX_get_keygen_info            3835	EXIST::FUNCTION:
+TS_REQ_set_policy_id                    3836	EXIST::FUNCTION:
+d2i_TS_RESP_fp                          3837	EXIST::FUNCTION:
+ENGINE_get_pkey_asn1_meth_engine        3838	EXIST:!VMS:FUNCTION:ENGINE
+ENGINE_get_pkey_asn1_meth_eng           3838	EXIST:VMS:FUNCTION:ENGINE
+WHIRLPOOL_Init                          3839	EXIST::FUNCTION:WHIRLPOOL
+TS_RESP_set_status_info                 3840	EXIST::FUNCTION:
+EVP_PKEY_keygen                         3841	EXIST::FUNCTION:
+EVP_DigestSignInit                      3842	EXIST::FUNCTION:
+TS_ACCURACY_set_millis                  3843	EXIST::FUNCTION:
+TS_REQ_dup                              3844	EXIST::FUNCTION:
+GENERAL_NAME_dup                        3845	EXIST::FUNCTION:
+WHIRLPOOL                               3846	EXIST::FUNCTION:WHIRLPOOL
+ENGINE_get_pkey_asn1_meth               3847	EXIST::FUNCTION:ENGINE
+EVP_PKEY_asn1_new                       3848	EXIST::FUNCTION:
+ENGINE_get_pkey_meth                    3849	EXIST::FUNCTION:ENGINE
+TS_MSG_IMPRINT_set_algo                 3850	EXIST::FUNCTION:
+i2d_TS_TST_INFO_bio                     3851	EXIST::FUNCTION:
+TS_TST_INFO_set_ordering                3852	EXIST::FUNCTION:
+TS_TST_INFO_get_ext_by_OBJ              3853	EXIST::FUNCTION:
+TS_CONF_get_tsa_section                 3854	EXIST::FUNCTION:
+TS_RESP_CTX_set_signer_key              3855	EXIST::FUNCTION:
+EVP_PKEY_encrypt_old                    3856	EXIST::FUNCTION:
+EVP_PKEY_encrypt_init                   3857	EXIST::FUNCTION:
+ASN1_PCTX_get_cert_flags                3858	EXIST::FUNCTION:
+i2d_ESS_SIGNING_CERT                    3859	EXIST::FUNCTION:
+TS_CONF_load_key                        3860	EXIST::FUNCTION:
+d2i_TS_MSG_IMPRINT_bio                  3861	EXIST::FUNCTION:
+EVP_PKEY_asn1_set_public                3862	EXIST::FUNCTION:
+b2i_PublicKey_bio                       3863	EXIST::FUNCTION:
+TS_REQ_ext_free                         3864	EXIST::FUNCTION:
+EVP_PKEY_asn1_set_free                  3865	EXIST::FUNCTION:
+d2i_NETSCAPE_X509                       3866	EXIST::FUNCTION:
+EVP_PKEY_verify_recover_init            3867	EXIST::FUNCTION:
+EVP_PKEY_CTX_set_data                   3868	EXIST::FUNCTION:
+EVP_PKEY_keygen_init                    3869	EXIST::FUNCTION:
+TS_RESP_CTX_set_status_info             3870	EXIST::FUNCTION:
+TS_MSG_IMPRINT_get_algo                 3871	EXIST::FUNCTION:
+TS_REQ_print_bio                        3872	EXIST::FUNCTION:
+EVP_PKEY_CTX_ctrl_str                   3873	EXIST::FUNCTION:
+EVP_PKEY_get_default_digest_nid         3874	EXIST::FUNCTION:
+TS_MSG_IMPRINT_print_bio                3875	EXIST::FUNCTION:
+BN_asc2bn                               3876	EXIST::FUNCTION:
+TS_REQ_get_policy_id                    3877	EXIST::FUNCTION:
+ENGINE_set_default_pkey_asn1_meths      3878	EXIST:!VMS:FUNCTION:ENGINE
+ENGINE_set_def_pkey_asn1_meths          3878	EXIST:VMS:FUNCTION:ENGINE
+d2i_TS_ACCURACY                         3879	EXIST::FUNCTION:
+X509_ALGOR_get0                         3880	EXIST::FUNCTION:
+DSO_global_lookup                       3881	EXIST::FUNCTION:
+TS_CONF_set_tsa_name                    3882	EXIST::FUNCTION:
+WHIRLPOOL_BitUpdate                     3883	EXIST::FUNCTION:WHIRLPOOL
+ASN1_PCTX_get_flags                     3884	EXIST::FUNCTION:
+TS_TST_INFO_get_ext_by_NID              3885	EXIST::FUNCTION:
+TS_RESP_new                             3886	EXIST::FUNCTION:
+ESS_CERT_ID_dup                         3887	EXIST::FUNCTION:
+TS_STATUS_INFO_dup                      3888	EXIST::FUNCTION:
+TS_REQ_delete_ext                       3889	EXIST::FUNCTION:
+EVP_DigestVerifyFinal                   3890	EXIST::FUNCTION:
+EVP_PKEY_print_params                   3891	EXIST::FUNCTION:
+TS_REQ_get_msg_imprint                  3892	EXIST::FUNCTION:
+OBJ_find_sigid_by_algs                  3893	EXIST::FUNCTION:
+TS_TST_INFO_get_serial                  3894	EXIST::FUNCTION:
+TS_REQ_get_nonce                        3895	EXIST::FUNCTION:
+X509_PUBKEY_set0_param                  3896	EXIST::FUNCTION:
+EVP_PKEY_CTX_set0_keygen_info           3897	EXIST::FUNCTION:
+i2d_ISSUING_DIST_POINT                  3898	EXIST::FUNCTION:
+X509_ALGOR_set0                         3899	EXIST::FUNCTION:
+EVP_PKEY_CTX_get_data                   3900	EXIST::FUNCTION:
+TS_STATUS_INFO_print_bio                3901	EXIST::FUNCTION:
+EVP_PKEY_derive_init                    3902	EXIST::FUNCTION:
+d2i_TS_TST_INFO                         3903	EXIST::FUNCTION:
+EVP_PKEY_asn1_add_alias                 3904	EXIST::FUNCTION:
+d2i_TS_RESP_bio                         3905	EXIST::FUNCTION:
+OTHERNAME_cmp                           3906	EXIST::FUNCTION:
+PKCS7_RECIP_INFO_get0_alg               3907	EXIST::FUNCTION:
+TS_RESP_CTX_new                         3908	EXIST::FUNCTION:
+TS_RESP_set_tst_info                    3909	EXIST::FUNCTION:
+PKCS7_final                             3910	EXIST::FUNCTION:
+EVP_PKEY_base_id                        3911	EXIST::FUNCTION:
+TS_RESP_CTX_set_signer_cert             3912	EXIST::FUNCTION:
+TS_REQ_set_msg_imprint                  3913	EXIST::FUNCTION:
+EVP_PKEY_CTX_ctrl                       3914	EXIST::FUNCTION:
+TS_CONF_set_digests                     3915	EXIST::FUNCTION:
+d2i_TS_MSG_IMPRINT                      3916	EXIST::FUNCTION:
+EVP_PKEY_meth_set_ctrl                  3917	EXIST::FUNCTION:
+TS_REQ_get_ext_by_NID                   3918	EXIST::FUNCTION:
+TS_ACCURACY_new                         3919	EXIST::FUNCTION:
+ASN1_PCTX_get_nm_flags                  3920	EXIST::FUNCTION:
+EVP_PKEY_meth_set_sign                  3921	EXIST::FUNCTION:
+EVP_PKEY_decrypt_init                   3922	EXIST::FUNCTION:
+NETSCAPE_X509_free                      3923	EXIST::FUNCTION:
+i2b_PVK_bio                             3924	EXIST::FUNCTION:
+EVP_PKEY_print_private                  3925	EXIST::FUNCTION:
+b2i_PVK_bio                             3926	EXIST::FUNCTION:
+TS_TST_INFO_new                         3927	EXIST::FUNCTION:
+TS_CONF_set_default_engine              3928	EXIST::FUNCTION:
+TS_ACCURACY_set_seconds                 3929	EXIST::FUNCTION:
+TS_TST_INFO_get_time                    3930	EXIST::FUNCTION:
+PKCS8_pkey_get0                         3931	EXIST::FUNCTION:
+EVP_PKEY_asn1_get0                      3932	EXIST::FUNCTION:
+PKCS7_SIGNER_INFO_sign                  3933	EXIST::FUNCTION:
+EVP_PKEY_paramgen_init                  3934	EXIST::FUNCTION:
+EVP_PKEY_sign                           3935	EXIST::FUNCTION:
+EVP_PKEY_meth_set_init                  3936	EXIST::FUNCTION:
+d2i_ESS_ISSUER_SERIAL                   3937	EXIST::FUNCTION:
+ISSUING_DIST_POINT_new                  3938	EXIST::FUNCTION:
+TS_OBJ_print_bio                        3939	EXIST::FUNCTION:
+EVP_PKEY_meth_set_verify_recover        3940	EXIST:!VMS:FUNCTION:
+EVP_PKEY_meth_set_vrfy_recover          3940	EXIST:VMS:FUNCTION:
+TS_RESP_get_status_info                 3941	EXIST::FUNCTION:
+EVP_PKEY_CTX_set_cb                     3942	EXIST::FUNCTION:
+PKCS7_to_TS_TST_INFO                    3943	EXIST::FUNCTION:
+ASN1_PCTX_get_oid_flags                 3944	EXIST::FUNCTION:
+TS_TST_INFO_add_ext                     3945	EXIST::FUNCTION:
+EVP_PKEY_meth_set_derive                3946	EXIST::FUNCTION:
+i2d_TS_RESP_fp                          3947	EXIST::FUNCTION:
+i2d_TS_MSG_IMPRINT_bio                  3948	EXIST::FUNCTION:
+TS_RESP_CTX_set_accuracy                3949	EXIST::FUNCTION:
+TS_REQ_set_nonce                        3950	EXIST::FUNCTION:
+ESS_CERT_ID_new                         3951	EXIST::FUNCTION:
+TS_REQ_get_ext_count                    3952	EXIST::FUNCTION:
+BUF_reverse                             3953	EXIST::FUNCTION:
+TS_TST_INFO_print_bio                   3954	EXIST::FUNCTION:
+d2i_ISSUING_DIST_POINT                  3955	EXIST::FUNCTION:
+ENGINE_get_pkey_meths                   3956	EXIST::FUNCTION:ENGINE
+i2b_PrivateKey_bio                      3957	EXIST::FUNCTION:
+i2d_TS_RESP                             3958	EXIST::FUNCTION:
+b2i_PublicKey                           3959	EXIST::FUNCTION:
+TS_VERIFY_CTX_cleanup                   3960	EXIST::FUNCTION:
+TS_STATUS_INFO_free                     3961	EXIST::FUNCTION:
+TS_RESP_verify_token                    3962	EXIST::FUNCTION:
+ASN1_bn_print                           3963	EXIST::FUNCTION:BIO
+EVP_PKEY_asn1_get_count                 3964	EXIST::FUNCTION:
+ASN1_PCTX_set_nm_flags                  3965	EXIST::FUNCTION:
+EVP_DigestVerifyInit                    3966	EXIST::FUNCTION:
+ENGINE_set_default_pkey_meths           3967	EXIST::FUNCTION:ENGINE
+TS_TST_INFO_get_policy_id               3968	EXIST::FUNCTION:
+TS_REQ_get_cert_req                     3969	EXIST::FUNCTION:
+PKCS8_pkey_set0                         3970	EXIST::FUNCTION:
+d2i_TS_TST_INFO_fp                      3971	EXIST::FUNCTION:
+EVP_PKEY_asn1_set_private               3972	EXIST::FUNCTION:
+TS_TST_INFO_get_ext_d2i                 3973	EXIST::FUNCTION:
+TS_RESP_CTX_add_policy                  3974	EXIST::FUNCTION:
+d2i_TS_RESP                             3975	EXIST::FUNCTION:
+TS_CONF_load_certs                      3976	EXIST::FUNCTION:
+TS_TST_INFO_get_msg_imprint             3977	EXIST::FUNCTION:
+ERR_load_TS_strings                     3978	EXIST::FUNCTION:
+TS_TST_INFO_get_version                 3979	EXIST::FUNCTION:
+EVP_PKEY_CTX_dup                        3980	EXIST::FUNCTION:
+EVP_PKEY_meth_set_verify                3981	EXIST::FUNCTION:
+i2b_PublicKey_bio                       3982	EXIST::FUNCTION:
+TS_CONF_set_certs                       3983	EXIST::FUNCTION:
+EVP_PKEY_asn1_get0_info                 3984	EXIST::FUNCTION:
+TS_VERIFY_CTX_free                      3985	EXIST::FUNCTION:
+TS_REQ_get_ext_by_critical              3986	EXIST::FUNCTION:
+TS_RESP_CTX_set_serial_cb               3987	EXIST::FUNCTION:
+TS_RESP_CTX_set_time_cb                 3988	EXIST::FUNCTION:
+TS_MSG_IMPRINT_get_msg                  3989	EXIST::FUNCTION:
+TS_TST_INFO_ext_free                    3990	EXIST::FUNCTION:
+TS_REQ_get_version                      3991	EXIST::FUNCTION:
+TS_REQ_add_ext                          3992	EXIST::FUNCTION:
+EVP_PKEY_CTX_set_app_data               3993	EXIST::FUNCTION:
+EVP_PKEY_meth_set_verifyctx             3994	EXIST::FUNCTION:
+PKCS7_sign_add_signer                   3995	EXIST::FUNCTION:
+d2i_TS_TST_INFO_bio                     3996	EXIST::FUNCTION:
+TS_TST_INFO_get_ordering                3997	EXIST::FUNCTION:
+TS_RESP_print_bio                       3998	EXIST::FUNCTION:
+TS_TST_INFO_get_exts                    3999	EXIST::FUNCTION:
+PKCS5_pbe2_set_iv                       4000	EXIST::FUNCTION:
+ENGINE_get_pkey_asn1_meths              4001	EXIST::FUNCTION:ENGINE
+b2i_PrivateKey                          4002	EXIST::FUNCTION:
+EVP_PKEY_CTX_get_app_data               4003	EXIST::FUNCTION:
+TS_REQ_set_cert_req                     4004	EXIST::FUNCTION:
+TS_CONF_set_serial                      4005	EXIST::FUNCTION:
+TS_TST_INFO_free                        4006	EXIST::FUNCTION:
+d2i_TS_REQ_fp                           4007	EXIST::FUNCTION:
+TS_RESP_verify_response                 4008	EXIST::FUNCTION:
+i2d_ESS_ISSUER_SERIAL                   4009	EXIST::FUNCTION:
+TS_ACCURACY_get_seconds                 4010	EXIST::FUNCTION:
+b2i_PrivateKey_bio                      4011	EXIST::FUNCTION:
+X509_PUBKEY_get0_param                  4012	EXIST::FUNCTION:
+TS_MSG_IMPRINT_dup                      4013	EXIST::FUNCTION:
+PKCS7_print_ctx                         4014	EXIST::FUNCTION:
+i2d_TS_REQ_bio                          4015	EXIST::FUNCTION:
+EVP_whirlpool                           4016	EXIST::FUNCTION:WHIRLPOOL
+EVP_PKEY_asn1_set_param                 4017	EXIST::FUNCTION:
+EVP_PKEY_meth_set_encrypt               4018	EXIST::FUNCTION:
+ASN1_PCTX_set_flags                     4019	EXIST::FUNCTION:
+i2d_ESS_CERT_ID                         4020	EXIST::FUNCTION:
+TS_VERIFY_CTX_new                       4021	EXIST::FUNCTION:
+TS_RESP_CTX_set_extension_cb            4022	EXIST::FUNCTION:
+ENGINE_register_all_pkey_meths          4023	EXIST::FUNCTION:ENGINE
+TS_RESP_CTX_set_status_info_cond        4024	EXIST:!VMS:FUNCTION:
+TS_RESP_CTX_set_stat_info_cond          4024	EXIST:VMS:FUNCTION:
+EVP_PKEY_verify                         4025	EXIST::FUNCTION:
+WHIRLPOOL_Final                         4026	EXIST::FUNCTION:WHIRLPOOL
+EVP_DigestSignFinal                     4027	EXIST::FUNCTION:
+TS_RESP_CTX_set_def_policy              4028	EXIST::FUNCTION:
+NETSCAPE_X509_it                        4029	EXIST:!EXPORT_VAR_AS_FUNCTION:VARIABLE:
+NETSCAPE_X509_it                        4029	EXIST:EXPORT_VAR_AS_FUNCTION:FUNCTION:
+TS_RESP_create_response                 4030	EXIST::FUNCTION:
+PKCS7_SIGNER_INFO_get0_algs             4031	EXIST::FUNCTION:
+TS_TST_INFO_get_nonce                   4032	EXIST::FUNCTION:
+EVP_PKEY_decrypt_old                    4033	EXIST::FUNCTION:
+TS_TST_INFO_set_policy_id               4034	EXIST::FUNCTION:
+TS_CONF_set_ess_cert_id_chain           4035	EXIST::FUNCTION:
+EVP_PKEY_CTX_get0_pkey                  4036	EXIST::FUNCTION:
+d2i_TS_REQ                              4037	EXIST::FUNCTION:
+EVP_PKEY_asn1_find_str                  4038	EXIST::FUNCTION:
+ESS_SIGNING_CERT_new                    4039	EXIST::FUNCTION:
+EVP_PBE_find                            4040	EXIST::FUNCTION:
+EVP_PKEY_derive                         4041	EXIST::FUNCTION:
+i2d_TS_REQ                              4042	EXIST::FUNCTION:
+TS_TST_INFO_delete_ext                  4043	EXIST::FUNCTION:
+ESS_ISSUER_SERIAL_free                  4044	EXIST::FUNCTION:
+ASN1_PCTX_set_str_flags                 4045	EXIST::FUNCTION:
+ENGINE_get_pkey_asn1_meth_str           4046	EXIST::FUNCTION:ENGINE
+TS_CONF_set_signer_key                  4047	EXIST::FUNCTION:
+TS_ACCURACY_get_millis                  4048	EXIST::FUNCTION:
+TS_RESP_get_token                       4049	EXIST::FUNCTION:
+TS_ACCURACY_dup                         4050	EXIST::FUNCTION:
+TS_RESP_free                            4051	EXIST::FUNCTION:
+ISSUING_DIST_POINT_free                 4052	EXIST::FUNCTION:
+ESS_ISSUER_SERIAL_new                   4053	EXIST::FUNCTION:
+PKCS7_add1_attrib_digest                4054	EXIST::FUNCTION:
+TS_RESP_CTX_add_md                      4055	EXIST::FUNCTION:
+TS_TST_INFO_dup                         4056	EXIST::FUNCTION:
+ENGINE_set_pkey_asn1_meths              4057	EXIST::FUNCTION:ENGINE
+PEM_write_bio_Parameters                4058	EXIST::FUNCTION:
+TS_TST_INFO_get_accuracy                4059	EXIST::FUNCTION:
+TS_TST_INFO_set_version                 4060	EXIST::FUNCTION:
+TS_RESP_CTX_get_tst_info                4061	EXIST::FUNCTION:
+TS_RESP_verify_signature                4062	EXIST::FUNCTION:
+TS_TST_INFO_get_tsa                     4063	EXIST::FUNCTION:
+TS_STATUS_INFO_new                      4064	EXIST::FUNCTION:
+EVP_PKEY_CTX_get_cb                     4065	EXIST::FUNCTION:
+TS_REQ_get_ext_d2i                      4066	EXIST::FUNCTION:
+TS_TST_INFO_get_ext_count               4067	EXIST::FUNCTION:
+TS_RESP_CTX_get_request                 4068	EXIST::FUNCTION:
+i2d_NETSCAPE_X509                       4069	EXIST::FUNCTION:
+ENGINE_get_pkey_meth_engine             4070	EXIST::FUNCTION:ENGINE
+EVP_PKEY_meth_set_signctx               4071	EXIST::FUNCTION:
+ASN1_TYPE_cmp                           4072	EXIST::FUNCTION:
+EVP_PKEY_CTX_free                       4073	EXIST::FUNCTION:
+ISSUING_DIST_POINT_it                   4074	EXIST:!EXPORT_VAR_AS_FUNCTION:VARIABLE:
+ISSUING_DIST_POINT_it                   4074	EXIST:EXPORT_VAR_AS_FUNCTION:FUNCTION:
+d2i_TS_MSG_IMPRINT_fp                   4075	EXIST::FUNCTION:
+EVP_PKEY_CTX_get_operation              4076	EXIST::FUNCTION:
+d2i_ESS_SIGNING_CERT                    4077	EXIST::FUNCTION:
+TS_CONF_set_ordering                    4078	EXIST::FUNCTION:
+EVP_PBE_alg_add_type                    4079	EXIST::FUNCTION:
+TS_REQ_set_version                      4080	EXIST::FUNCTION:
+EVP_PKEY_get0                           4081	EXIST::FUNCTION:
+i2d_TS_STATUS_INFO                      4082	EXIST::FUNCTION:
+TS_TST_INFO_set_accuracy                4083	EXIST::FUNCTION:
+PKCS7_add_attrib_content_type           4084	EXIST::FUNCTION:
+EVP_PKEY_meth_add0                      4085	EXIST::FUNCTION:
+TS_TST_INFO_set_tsa                     4086	EXIST::FUNCTION:
+EVP_PKEY_meth_new                       4087	EXIST::FUNCTION:
+WHIRLPOOL_Update                        4088	EXIST::FUNCTION:WHIRLPOOL
+TS_CONF_set_accuracy                    4089	EXIST::FUNCTION:
+ASN1_PCTX_set_oid_flags                 4090	EXIST::FUNCTION:
+ESS_SIGNING_CERT_dup                    4091	EXIST::FUNCTION:
+d2i_TS_REQ_bio                          4092	EXIST::FUNCTION:
+TS_RESP_CTX_add_flags                   4093	EXIST::FUNCTION:
+d2i_TS_STATUS_INFO                      4094	EXIST::FUNCTION:
+TS_MSG_IMPRINT_set_msg                  4095	EXIST::FUNCTION:
+TS_REQ_free                             4096	EXIST::FUNCTION:
+EVP_PKEY_meth_free                      4097	EXIST::FUNCTION:
+TS_REQ_get_exts                         4098	EXIST::FUNCTION:
+TS_RESP_CTX_set_clock_precision_digits  4099	EXIST:!VMS:FUNCTION:
+TS_RESP_CTX_set_clk_prec_digits         4099	EXIST:VMS:FUNCTION:
+TS_RESP_CTX_add_failure_info            4100	EXIST::FUNCTION:
+i2d_TS_RESP_bio                         4101	EXIST::FUNCTION:
+ASN1_STRING_set0                        4102	EXIST::FUNCTION:
+TS_REQ_new                              4103	EXIST::FUNCTION:
+TS_MSG_IMPRINT_new                      4104	EXIST::FUNCTION:
+EVP_PKEY_meth_find                      4105	EXIST::FUNCTION:
+EVP_PKEY_id                             4106	EXIST::FUNCTION:
+TS_TST_INFO_set_serial                  4107	EXIST::FUNCTION:
+TS_CONF_set_crypto_device               4108	EXIST::FUNCTION:
+EVP_PKEY_verify_init                    4109	EXIST::FUNCTION:
+TS_CONF_set_policies                    4110	EXIST::FUNCTION:
+ASN1_PCTX_new                           4111	EXIST::FUNCTION:
+ESS_CERT_ID_free                        4112	EXIST::FUNCTION:
+ENGINE_unregister_pkey_meths            4113	EXIST::FUNCTION:ENGINE
+TS_MSG_IMPRINT_free                     4114	EXIST::FUNCTION:
+TS_VERIFY_CTX_init                      4115	EXIST::FUNCTION:
+TS_RESP_CTX_set_certs                   4116	EXIST::FUNCTION:
+TS_CONF_set_def_policy                  4117	EXIST::FUNCTION:
+NETSCAPE_X509_new                       4118	EXIST::FUNCTION:
+TS_ACCURACY_free                        4119	EXIST::FUNCTION:
+TS_RESP_get_tst_info                    4120	EXIST::FUNCTION:
+EVP_PKEY_derive_set_peer                4121	EXIST::FUNCTION:
+PEM_read_bio_Parameters                 4122	EXIST::FUNCTION:
+TS_CONF_set_clock_precision_digits      4123	EXIST:!VMS:FUNCTION:
+TS_CONF_set_clk_prec_digits             4123	EXIST:VMS:FUNCTION:
+ESS_ISSUER_SERIAL_dup                   4124	EXIST::FUNCTION:
+TS_ACCURACY_get_micros                  4125	EXIST::FUNCTION:
+ASN1_PCTX_get_str_flags                 4126	EXIST::FUNCTION:
+ASN1_BIT_STRING_check                   4127	EXIST::FUNCTION:
+ASN1_PCTX_free                          4128	EXIST::FUNCTION:
+TS_X509_ALGOR_print_bio                 4129	EXIST::FUNCTION:
+EVP_PKEY_meth_set_cleanup               4130	EXIST::FUNCTION:
+EVP_PKEY_asn1_free                      4131	EXIST::FUNCTION:
+ESS_SIGNING_CERT_free                   4132	EXIST::FUNCTION:
+TS_TST_INFO_set_msg_imprint             4133	EXIST::FUNCTION:
+GENERAL_NAME_cmp                        4134	EXIST::FUNCTION:
+ENGINE_set_pkey_meths                   4135	EXIST::FUNCTION:ENGINE
+i2d_TS_REQ_fp                           4136	EXIST::FUNCTION:
+d2i_ESS_CERT_ID                         4137	EXIST::FUNCTION:
+OBJ_find_sigid_algs                     4138	EXIST::FUNCTION:
+EVP_PKEY_meth_set_keygen                4139	EXIST::FUNCTION:
+EVP_PKEY_paramgen                       4140	EXIST::FUNCTION:
+EVP_PKEY_meth_set_paramgen              4141	EXIST::FUNCTION:
+EVP_PKEY_verify_recover                 4142	EXIST::FUNCTION:
+TS_ext_print_bio                        4143	EXIST::FUNCTION:
+TS_ASN1_INTEGER_print_bio               4144	EXIST::FUNCTION:
+DSO_pathbyaddr                          4145	EXIST::FUNCTION:
+EVP_PKEY_set_type                       4146	EXIST::FUNCTION:
+TS_ACCURACY_set_micros                  4147	EXIST::FUNCTION:
+TS_REQ_to_TS_VERIFY_CTX                 4148	EXIST::FUNCTION:
+EVP_PKEY_meth_set_copy                  4149	EXIST::FUNCTION:
+ASN1_PCTX_set_cert_flags                4150	EXIST::FUNCTION:
+TS_TST_INFO_get_ext                     4151	EXIST::FUNCTION:
+EVP_PKEY_asn1_set_ctrl                  4152	EXIST::FUNCTION:
+TS_TST_INFO_get_ext_by_critical         4153	EXIST::FUNCTION:
+EVP_PKEY_CTX_new_id                     4154	EXIST::FUNCTION:
+TS_REQ_get_ext_by_OBJ                   4155	EXIST::FUNCTION:
+TS_CONF_set_signer_cert                 4156	EXIST::FUNCTION:
diff --git a/util/mk1mf.pl b/util/mk1mf.pl
index fe99d49..24a5f25 100755
--- a/util/mk1mf.pl
+++ b/util/mk1mf.pl
@@ -65,7 +65,7 @@
 	no-md2 no-md4 no-md5 no-sha no-mdc2	- Skip this digest
 	no-ripemd
 	no-rc2 no-rc4 no-rc5 no-idea no-des     - Skip this symetric cipher
-	no-bf no-cast no-aes
+	no-bf no-cast no-aes no-camellia
 	no-rsa no-dsa no-dh			- Skip this public key cipher
 	no-ssl2 no-ssl3				- Skip this version of SSL
 	just-ssl				- remove all non-ssl keys/digest
@@ -199,6 +199,7 @@
 
 $cflags.=" -DOPENSSL_NO_IDEA" if $no_idea;
 $cflags.=" -DOPENSSL_NO_AES"  if $no_aes;
+$cflags.=" -DOPENSSL_NO_CAMELLIA"  if $no_camellia;
 $cflags.=" -DOPENSSL_NO_RC2"  if $no_rc2;
 $cflags.=" -DOPENSSL_NO_RC4"  if $no_rc4;
 $cflags.=" -DOPENSSL_NO_RC5"  if $no_rc5;
@@ -741,6 +742,7 @@
 	return("") if $no_hw   && $dir =~ /\/hw/;
 	return("") if $no_idea && $dir =~ /\/idea/;
 	return("") if $no_aes  && $dir =~ /\/aes/;
+	return("") if $no_camellia  && $dir =~ /\/camellia/;
 	return("") if $no_rc2  && $dir =~ /\/rc2/;
 	return("") if $no_rc4  && $dir =~ /\/rc4/;
 	return("") if $no_rc5  && $dir =~ /\/rc5/;
@@ -775,6 +777,7 @@
 	@a=grep(!/^e_.*_bf$/,@a) if $no_bf;
 	@a=grep(!/^e_.*_c$/,@a) if $no_cast;
 	@a=grep(!/^e_rc4$/,@a) if $no_rc4;
+	@a=grep(!/^e_camellia$/,@a) if $no_camellia;
 
 	@a=grep(!/(^s2_)|(^s23_)/,@a) if $no_ssl2;
 	@a=grep(!/(^s3_)|(^s23_)/,@a) if $no_ssl3;
@@ -987,6 +990,7 @@
 		"no-rc5" => \$no_rc5,
 		"no-idea" => \$no_idea,
 		"no-aes" => \$no_aes,
+		"no-camellia" => \$no_camellia,
 		"no-des" => \$no_des,
 		"no-bf" => \$no_bf,
 		"no-cast" => \$no_cast,
@@ -1005,6 +1009,7 @@
 		"no-dh" => \$no_dh,
 		"no-hmac" => \$no_hmac,
 		"no-aes" => \$no_aes,
+		"no-camellia" => \$no_camellia,
 		"no-asm" => \$no_asm,
 		"nasm" => \$nasm,
 		"nw-nasm" => \$nw_nasm,
@@ -1024,7 +1029,7 @@
 			[\$no_rc2, \$no_idea, \$no_des, \$no_bf, \$no_cast,
 			  \$no_md2, \$no_sha, \$no_mdc2, \$no_dsa, \$no_dh,
 			  \$no_ssl2, \$no_err, \$no_ripemd, \$no_rc5,
-			  \$no_aes],
+			  \$no_aes, \$no_camellia],
 		"rsaref" => 0,
 		"gcc" => \$gcc,
 		"debug" => \$debug,
diff --git a/util/mkdef.pl b/util/mkdef.pl
index 1e337ce..b6fc979 100755
--- a/util/mkdef.pl
+++ b/util/mkdef.pl
@@ -85,7 +85,7 @@
 			 "CAST", "MD2", "MD4", "MD5", "SHA", "SHA0", "SHA1",
 			 "SHA256", "SHA512", "RIPEMD",
 			 "MDC2", "RSA", "DSA", "DH", "EC", "ECDH", "ECDSA",
-			 "HMAC", "AES", "WHIRLPOOL",
+			 "HMAC", "AES", "WHIRLPOOL", "CAMELLIA",
 			 # Envelope "algorithms"
 			 "EVP", "X509", "ASN1_TYPEDEFS",
 			 # Helper "algorithms"
@@ -111,7 +111,7 @@
 # defined with ifndef(NO_XXX) are not included in the .def file, and everything
 # in directory xxx is ignored.
 my $no_rc2; my $no_rc4; my $no_rc5; my $no_idea; my $no_des; my $no_bf;
-my $no_cast; my $no_whirlpool;
+my $no_cast; my $no_whirlpool; my $no_camellia;
 my $no_md2; my $no_md4; my $no_md5; my $no_sha; my $no_ripemd; my $no_mdc2;
 my $no_rsa; my $no_dsa; my $no_dh; my $no_hmac=0; my $no_aes; my $no_krb5;
 my $no_ec; my $no_ecdsa; my $no_ecdh; my $no_engine; my $no_hw;
@@ -180,6 +180,7 @@
 	elsif (/^no-ecdh$/) 	{ $no_ecdh=1; }
 	elsif (/^no-hmac$/)	{ $no_hmac=1; }
 	elsif (/^no-aes$/)	{ $no_aes=1; }
+	elsif (/^no-camellia$/)	{ $no_camellia=1; }
 	elsif (/^no-evp$/)	{ $no_evp=1; }
 	elsif (/^no-lhash$/)	{ $no_lhash=1; }
 	elsif (/^no-stack$/)	{ $no_stack=1; }
@@ -247,6 +248,7 @@
 $crypto.=" crypto/sha/sha.h" ; # unless $no_sha;
 $crypto.=" crypto/ripemd/ripemd.h" ; # unless $no_ripemd;
 $crypto.=" crypto/aes/aes.h" ; # unless $no_aes;
+$crypto.=" crypto/camellia/camellia.h" ; # unless $no_camellia;
 
 $crypto.=" crypto/bn/bn.h";
 $crypto.=" crypto/rsa/rsa.h" ; # unless $no_rsa;
@@ -1097,6 +1099,7 @@
 			if ($keyword eq "ECDH" && $no_ecdh) { return 0; }
 			if ($keyword eq "HMAC" && $no_hmac) { return 0; }
 			if ($keyword eq "AES" && $no_aes) { return 0; }
+			if ($keyword eq "CAMELLIA" && $no_camellia) { return 0; }
 			if ($keyword eq "EVP" && $no_evp) { return 0; }
 			if ($keyword eq "LHASH" && $no_lhash) { return 0; }
 			if ($keyword eq "STACK" && $no_stack) { return 0; }
diff --git a/util/mkfiles.pl b/util/mkfiles.pl
index 56bf179..45e9e24 100755
--- a/util/mkfiles.pl
+++ b/util/mkfiles.pl
@@ -24,6 +24,7 @@
 "crypto/bf",
 "crypto/cast",
 "crypto/aes",
+"crypto/camellia",
 "crypto/bn",
 "crypto/rsa",
 "crypto/dsa",