The unified diff between revisions [645f05bb..] and [74da1ebd..] is displayed below. It can also be downloaded as a raw diff.
#
#
# rename ""
# to "Attic"
#
# rename "doc/credits.txt"
# to "credits.txt"
#
# rename "doc/info.txt"
# to "info.txt"
#
# rename "doc/license.txt"
# to "license.txt"
#
# rename "doc/thanks.txt"
# to "thanks.txt"
#
# rename "include/aes.h"
# to "aes.h"
#
# rename "include/alg_id.h"
# to "alg_id.h"
#
# rename "include/allocate.h"
# to "allocate.h"
#
# rename "include/arc4.h"
# to "arc4.h"
#
# rename "include/asn1_int.h"
# to "asn1_int.h"
#
# rename "include/asn1_obj.h"
# to "asn1_obj.h"
#
# rename "include/asn1_oid.h"
# to "asn1_oid.h"
#
# rename "include/base.h"
# to "base.h"
#
# rename "include/base64.h"
# to "base64.h"
#
# rename "include/basefilt.h"
# to "basefilt.h"
#
# rename "include/ber_dec.h"
# to "ber_dec.h"
#
# rename "include/bigint.h"
# to "bigint.h"
#
# rename "include/bit_ops.h"
# to "bit_ops.h"
#
# rename "include/blinding.h"
# to "blinding.h"
#
# rename "include/botan.h"
# to "botan.h"
#
# rename "include/buf_es.h"
# to "buf_es.h"
#
# rename "include/buf_filt.h"
# to "buf_filt.h"
#
# rename "include/cbc.h"
# to "cbc.h"
#
# rename "include/certstor.h"
# to "certstor.h"
#
# rename "include/cfb.h"
# to "cfb.h"
#
# rename "include/charset.h"
# to "charset.h"
#
# rename "include/config.h"
# to "config.h"
#
# rename "include/crc32.h"
# to "crc32.h"
#
# rename "include/crl_ent.h"
# to "crl_ent.h"
#
# rename "include/ctr.h"
# to "ctr.h"
#
# rename "include/cts.h"
# to "cts.h"
#
# rename "include/data_snk.h"
# to "data_snk.h"
#
# rename "include/data_src.h"
# to "data_src.h"
#
# rename "include/datastor.h"
# to "datastor.h"
#
# rename "include/def_char.h"
# to "def_char.h"
#
# rename "include/def_powm.h"
# to "def_powm.h"
#
# rename "include/defalloc.h"
# to "defalloc.h"
#
# rename "include/der_enc.h"
# to "der_enc.h"
#
# rename "include/des.h"
# to "des.h"
#
# rename "include/dh.h"
# to "dh.h"
#
# rename "include/dl_algo.h"
# to "dl_algo.h"
#
# rename "include/dl_group.h"
# to "dl_group.h"
#
# rename "include/dlies.h"
# to "dlies.h"
#
# rename "include/eax.h"
# to "eax.h"
#
# rename "include/ecb.h"
# to "ecb.h"
#
# rename "include/eme.h"
# to "eme.h"
#
# rename "include/emsa.h"
# to "emsa.h"
#
# rename "include/eng_def.h"
# to "eng_def.h"
#
# rename "include/engine.h"
# to "engine.h"
#
# rename "include/enums.h"
# to "enums.h"
#
# rename "include/es_file.h"
# to "es_file.h"
#
# rename "include/exceptn.h"
# to "exceptn.h"
#
# rename "include/filter.h"
# to "filter.h"
#
# rename "include/filters.h"
# to "filters.h"
#
# rename "include/fips140.h"
# to "fips140.h"
#
# rename "include/hash_id.h"
# to "hash_id.h"
#
# rename "include/hex.h"
# to "hex.h"
#
# rename "include/hmac.h"
# to "hmac.h"
#
# rename "include/if_algo.h"
# to "if_algo.h"
#
# rename "include/init.h"
# to "init.h"
#
# rename "include/kdf.h"
# to "kdf.h"
#
# rename "include/keypair.h"
# to "keypair.h"
#
# rename "include/libstate.h"
# to "libstate.h"
#
# rename "include/look_add.h"
# to "look_add.h"
#
# rename "include/look_pk.h"
# to "look_pk.h"
#
# rename "include/lookup.h"
# to "lookup.h"
#
# rename "include/mdx_hash.h"
# to "mdx_hash.h"
#
# rename "include/mem_ops.h"
# to "mem_ops.h"
#
# rename "include/mem_pool.h"
# to "mem_pool.h"
#
# rename "include/mgf1.h"
# to "mgf1.h"
#
# rename "include/mode_pad.h"
# to "mode_pad.h"
#
# rename "include/modebase.h"
# to "modebase.h"
#
# rename "include/modules.h"
# to "modules.h"
#
# rename "include/mp_asm.h"
# to "mp_asm.h"
#
# rename "include/mp_asmi.h"
# to "mp_asmi.h"
#
# rename "include/mp_core.h"
# to "mp_core.h"
#
# rename "include/mp_types.h"
# to "mp_types.h"
#
# rename "include/mutex.h"
# to "mutex.h"
#
# rename "include/numthry.h"
# to "numthry.h"
#
# rename "include/ofb.h"
# to "ofb.h"
#
# rename "include/oids.h"
# to "oids.h"
#
# rename "include/out_buf.h"
# to "out_buf.h"
#
# rename "include/parsing.h"
# to "parsing.h"
#
# rename "include/pbe.h"
# to "pbe.h"
#
# rename "include/pbe_pkcs.h"
# to "pbe_pkcs.h"
#
# rename "include/pem.h"
# to "pem.h"
#
# rename "include/pipe.h"
# to "pipe.h"
#
# rename "include/pk_algs.h"
# to "pk_algs.h"
#
# rename "include/pk_core.h"
# to "pk_core.h"
#
# rename "include/pk_filts.h"
# to "pk_filts.h"
#
# rename "include/pk_keys.h"
# to "pk_keys.h"
#
# rename "include/pk_ops.h"
# to "pk_ops.h"
#
# rename "include/pk_util.h"
# to "pk_util.h"
#
# rename "include/pkcs10.h"
# to "pkcs10.h"
#
# rename "include/pkcs5.h"
# to "pkcs5.h"
#
# rename "include/pkcs8.h"
# to "pkcs8.h"
#
# rename "include/pow_mod.h"
# to "pow_mod.h"
#
# rename "include/pubkey.h"
# to "pubkey.h"
#
# rename "include/randpool.h"
# to "randpool.h"
#
# rename "include/reducer.h"
# to "reducer.h"
#
# rename "include/rng.h"
# to "rng.h"
#
# rename "include/rsa.h"
# to "rsa.h"
#
# rename "include/s2k.h"
# to "s2k.h"
#
# rename "include/secmem.h"
# to "secmem.h"
#
# rename "include/secqueue.h"
# to "secqueue.h"
#
# rename "include/sha160.h"
# to "sha160.h"
#
# rename "include/sha256.h"
# to "sha256.h"
#
# rename "include/stl_util.h"
# to "stl_util.h"
#
# rename "include/symkey.h"
# to "symkey.h"
#
# rename "include/timers.h"
# to "timers.h"
#
# rename "include/types.h"
# to "types.h"
#
# rename "include/ui.h"
# to "ui.h"
#
# rename "include/util.h"
# to "util.h"
#
# rename "include/version.h"
# to "version.h"
#
# rename "include/x509_ca.h"
# to "x509_ca.h"
#
# rename "include/x509_crl.h"
# to "x509_crl.h"
#
# rename "include/x509_ext.h"
# to "x509_ext.h"
#
# rename "include/x509_key.h"
# to "x509_key.h"
#
# rename "include/x509_obj.h"
# to "x509_obj.h"
#
# rename "include/x509cert.h"
# to "x509cert.h"
#
# rename "include/x509find.h"
# to "x509find.h"
#
# rename "include/x509self.h"
# to "x509self.h"
#
# rename "include/x509stat.h"
# to "x509stat.h"
#
# rename "include/x509stor.h"
# to "x509stor.h"
#
# rename "include/x931_rng.h"
# to "x931_rng.h"
#
# rename "modules/es_capi/es_capi.cpp"
# to "es_capi.cpp"
#
# rename "modules/es_capi/es_capi.h"
# to "es_capi.h"
#
# rename "modules/es_egd/es_egd.cpp"
# to "es_egd.cpp"
#
# rename "modules/es_egd/es_egd.h"
# to "es_egd.h"
#
# rename "modules/es_win32/es_win32.cpp"
# to "es_win32.cpp"
#
# rename "modules/es_win32/es_win32.h"
# to "es_win32.h"
#
# rename "src/aes.cpp"
# to "aes.cpp"
#
# rename "src/aes_tab.cpp"
# to "aes_tab.cpp"
#
# rename "src/alg_id.cpp"
# to "alg_id.cpp"
#
# rename "src/arc4.cpp"
# to "arc4.cpp"
#
# rename "src/asn1_alt.cpp"
# to "asn1_alt.cpp"
#
# rename "src/asn1_att.cpp"
# to "asn1_att.cpp"
#
# rename "src/asn1_dn.cpp"
# to "asn1_dn.cpp"
#
# rename "src/asn1_int.cpp"
# to "asn1_int.cpp"
#
# rename "src/asn1_ku.cpp"
# to "asn1_ku.cpp"
#
# rename "src/asn1_oid.cpp"
# to "asn1_oid.cpp"
#
# rename "src/asn1_str.cpp"
# to "asn1_str.cpp"
#
# rename "src/asn1_tm.cpp"
# to "asn1_tm.cpp"
#
# rename "src/base.cpp"
# to "base.cpp"
#
# rename "src/base64.cpp"
# to "base64.cpp"
#
# rename "src/basefilt.cpp"
# to "basefilt.cpp"
#
# rename "src/ber_dec.cpp"
# to "ber_dec.cpp"
#
# rename "src/big_base.cpp"
# to "big_base.cpp"
#
# rename "src/big_code.cpp"
# to "big_code.cpp"
#
# rename "src/big_io.cpp"
# to "big_io.cpp"
#
# rename "src/big_ops2.cpp"
# to "big_ops2.cpp"
#
# rename "src/big_ops3.cpp"
# to "big_ops3.cpp"
#
# rename "src/big_rand.cpp"
# to "big_rand.cpp"
#
# rename "src/bit_ops.cpp"
# to "bit_ops.cpp"
#
# rename "src/blinding.cpp"
# to "blinding.cpp"
#
# rename "src/buf_es.cpp"
# to "buf_es.cpp"
#
# rename "src/buf_filt.cpp"
# to "buf_filt.cpp"
#
# rename "src/cbc.cpp"
# to "cbc.cpp"
#
# rename "src/cfb.cpp"
# to "cfb.cpp"
#
# rename "src/charset.cpp"
# to "charset.cpp"
#
# rename "src/config.cpp"
# to "config.cpp"
#
# rename "src/crc32.cpp"
# to "crc32.cpp"
#
# rename "src/crl_ent.cpp"
# to "crl_ent.cpp"
#
# rename "src/ctr.cpp"
# to "ctr.cpp"
#
# rename "src/cts.cpp"
# to "cts.cpp"
#
# rename "src/data_snk.cpp"
# to "data_snk.cpp"
#
# rename "src/data_src.cpp"
# to "data_src.cpp"
#
# rename "src/datastor.cpp"
# to "datastor.cpp"
#
# rename "src/def_alg.cpp"
# to "def_alg.cpp"
#
# rename "src/def_char.cpp"
# to "def_char.cpp"
#
# rename "src/def_mode.cpp"
# to "def_mode.cpp"
#
# rename "src/def_ops.cpp"
# to "def_ops.cpp"
#
# rename "src/def_powm.cpp"
# to "def_powm.cpp"
#
# rename "src/defalloc.cpp"
# to "defalloc.cpp"
#
# rename "src/der_enc.cpp"
# to "der_enc.cpp"
#
# rename "src/des.cpp"
# to "des.cpp"
#
# rename "src/des_tab.cpp"
# to "des_tab.cpp"
#
# rename "src/dh.cpp"
# to "dh.cpp"
#
# rename "src/divide.cpp"
# to "divide.cpp"
#
# rename "src/dl_algo.cpp"
# to "dl_algo.cpp"
#
# rename "src/dl_group.cpp"
# to "dl_group.cpp"
#
# rename "src/dlies.cpp"
# to "dlies.cpp"
#
# rename "src/eax.cpp"
# to "eax.cpp"
#
# rename "src/ecb.cpp"
# to "ecb.cpp"
#
# rename "src/eme1.cpp"
# to "eme1.cpp"
#
# rename "src/eme_pkcs.cpp"
# to "eme_pkcs.cpp"
#
# rename "src/emsa1.cpp"
# to "emsa1.cpp"
#
# rename "src/emsa2.cpp"
# to "emsa2.cpp"
#
# rename "src/emsa3.cpp"
# to "emsa3.cpp"
#
# rename "src/emsa4.cpp"
# to "emsa4.cpp"
#
# rename "src/emsa_raw.cpp"
# to "emsa_raw.cpp"
#
# rename "src/eng_base.cpp"
# to "eng_base.cpp"
#
# rename "src/engine.cpp"
# to "engine.cpp"
#
# rename "src/es_file.cpp"
# to "es_file.cpp"
#
# rename "src/exceptn.cpp"
# to "exceptn.cpp"
#
# rename "src/filter.cpp"
# to "filter.cpp"
#
# rename "src/filters.cpp"
# to "filters.cpp"
#
# rename "src/fips140.cpp"
# to "fips140.cpp"
#
# rename "src/get_algo.cpp"
# to "get_algo.cpp"
#
# rename "src/get_enc.cpp"
# to "get_enc.cpp"
#
# rename "src/get_pbe.cpp"
# to "get_pbe.cpp"
#
# rename "src/hash_id.cpp"
# to "hash_id.cpp"
#
# rename "src/hex.cpp"
# to "hex.cpp"
#
# rename "src/hmac.cpp"
# to "hmac.cpp"
#
# rename "src/if_algo.cpp"
# to "if_algo.cpp"
#
# rename "src/inifile.cpp"
# to "inifile.cpp"
#
# rename "src/init_def.cpp"
# to "init_def.cpp"
#
# rename "src/init_opt.cpp"
# to "init_opt.cpp"
#
# rename "src/jacobi.cpp"
# to "jacobi.cpp"
#
# rename "src/kdf.cpp"
# to "kdf.cpp"
#
# rename "src/keypair.cpp"
# to "keypair.cpp"
#
# rename "src/libstate.cpp"
# to "libstate.cpp"
#
# rename "src/look_pk.cpp"
# to "look_pk.cpp"
#
# rename "src/make_prm.cpp"
# to "make_prm.cpp"
#
# rename "src/mdx_hash.cpp"
# to "mdx_hash.cpp"
#
# rename "src/mem_pool.cpp"
# to "mem_pool.cpp"
#
# rename "src/mgf1.cpp"
# to "mgf1.cpp"
#
# rename "src/mlock.cpp"
# to "mlock.cpp"
#
# rename "src/mode_pad.cpp"
# to "mode_pad.cpp"
#
# rename "src/modebase.cpp"
# to "modebase.cpp"
#
# rename "src/modules.cpp"
# to "modules.cpp"
#
# rename "src/mp_asm.cpp"
# to "mp_asm.cpp"
#
# rename "src/mp_comba.cpp"
# to "mp_comba.cpp"
#
# rename "src/mp_misc.cpp"
# to "mp_misc.cpp"
#
# rename "src/mp_mul.cpp"
# to "mp_mul.cpp"
#
# rename "src/mp_numth.cpp"
# to "mp_numth.cpp"
#
# rename "src/mp_shift.cpp"
# to "mp_shift.cpp"
#
# rename "src/mp_sqr.cpp"
# to "mp_sqr.cpp"
#
# rename "src/mutex.cpp"
# to "mutex.cpp"
#
# rename "src/numthry.cpp"
# to "numthry.cpp"
#
# rename "src/ofb.cpp"
# to "ofb.cpp"
#
# rename "src/oids.cpp"
# to "oids.cpp"
#
# rename "src/out_buf.cpp"
# to "out_buf.cpp"
#
# rename "src/parsing.cpp"
# to "parsing.cpp"
#
# rename "src/pbes1.cpp"
# to "pbes1.cpp"
#
# rename "src/pbes2.cpp"
# to "pbes2.cpp"
#
# rename "src/pem.cpp"
# to "pem.cpp"
#
# rename "src/pipe.cpp"
# to "pipe.cpp"
#
# rename "src/pipe_io.cpp"
# to "pipe_io.cpp"
#
# rename "src/pipe_rw.cpp"
# to "pipe_rw.cpp"
#
# rename "src/pk_algs.cpp"
# to "pk_algs.cpp"
#
# rename "src/pk_core.cpp"
# to "pk_core.cpp"
#
# rename "src/pk_filts.cpp"
# to "pk_filts.cpp"
#
# rename "src/pk_keys.cpp"
# to "pk_keys.cpp"
#
# rename "src/pk_util.cpp"
# to "pk_util.cpp"
#
# rename "src/pkcs10.cpp"
# to "pkcs10.cpp"
#
# rename "src/pkcs5.cpp"
# to "pkcs5.cpp"
#
# rename "src/pkcs8.cpp"
# to "pkcs8.cpp"
#
# rename "src/policy.cpp"
# to "policy.cpp"
#
# rename "src/pow_mod.cpp"
# to "pow_mod.cpp"
#
# rename "src/powm_fw.cpp"
# to "powm_fw.cpp"
#
# rename "src/powm_mnt.cpp"
# to "powm_mnt.cpp"
#
# rename "src/prf_x942.cpp"
# to "prf_x942.cpp"
#
# rename "src/primes.cpp"
# to "primes.cpp"
#
# rename "src/pubkey.cpp"
# to "pubkey.cpp"
#
# rename "src/randpool.cpp"
# to "randpool.cpp"
#
# rename "src/reducer.cpp"
# to "reducer.cpp"
#
# rename "src/rng.cpp"
# to "rng.cpp"
#
# rename "src/rsa.cpp"
# to "rsa.cpp"
#
# rename "src/s2k.cpp"
# to "s2k.cpp"
#
# rename "src/secqueue.cpp"
# to "secqueue.cpp"
#
# rename "src/sha160.cpp"
# to "sha160.cpp"
#
# rename "src/sha256.cpp"
# to "sha256.cpp"
#
# rename "src/symkey.cpp"
# to "symkey.cpp"
#
# rename "src/timers.cpp"
# to "timers.cpp"
#
# rename "src/ui.cpp"
# to "ui.cpp"
#
# rename "src/util.cpp"
# to "util.cpp"
#
# rename "src/x509_ca.cpp"
# to "x509_ca.cpp"
#
# rename "src/x509_crl.cpp"
# to "x509_crl.cpp"
#
# rename "src/x509_ext.cpp"
# to "x509_ext.cpp"
#
# rename "src/x509_key.cpp"
# to "x509_key.cpp"
#
# rename "src/x509_obj.cpp"
# to "x509_obj.cpp"
#
# rename "src/x509cert.cpp"
# to "x509cert.cpp"
#
# rename "src/x509find.cpp"
# to "x509find.cpp"
#
# rename "src/x509opt.cpp"
# to "x509opt.cpp"
#
# rename "src/x509self.cpp"
# to "x509self.cpp"
#
# rename "src/x509stat.cpp"
# to "x509stat.cpp"
#
# rename "src/x509stor.cpp"
# to "x509stor.cpp"
#
# rename "src/x931_rng.cpp"
# to "x931_rng.cpp"
#
# add_dir ""
#
# add_file "build.h"
# content [b99017e7e9e956e54c179f50d26fd45646a52ff4]
#
# add_file "gzip.cpp"
# content [c563ec78bac13eead84737e3047cb4f7027a77f0]
#
# add_file "gzip.h"
# content [0b391725625531a7f5c73d372355fb71e00c2b27]
#
# patch "arc4.cpp"
# from [b6add086b0c81276ac9d32b3858a2a450a299ab3]
# to [6b24fa12af23cdd3ec85de63a2f28ff3f89c317d]
#
# patch "base64.cpp"
# from [0159b238b256a688445b3912c33bb0207baa8105]
# to [a7780f8f856946ca1fcaf5a1fa5ee91aaf2504ce]
#
# patch "base64.h"
# from [51a1c25fc5096793a6d27356bc974a27264f0856]
# to [3f09eb989fc4b2b391f9cefa31455c9fbd2794cb]
#
# patch "def_alg.cpp"
# from [a8ebcb2f7ba526363417c2cebe88eee6db32b0e0]
# to [20b41dbd1ebe04bc807d3bfce084934ee98149d4]
#
# patch "des_tab.cpp"
# from [122183d9b33d7a48c834a185667be2783115b098]
# to [a45c36b824fabc92baa7a6d2e4b2d1a99f5218b7]
#
# patch "pk_algs.cpp"
# from [df698f44c744b7d08e4609f006b434ccd8ddb906]
# to [4eaf5dca76443211e7486ca651ae5521d7cb7181]
#
# patch "primes.cpp"
# from [6c516774fc02486d4bfff271cb1755efad9b4686]
# to [b6bc7dbb320ff24cdf16689cb57361551d6bc693]
#
============================================================
--- build.h b99017e7e9e956e54c179f50d26fd45646a52ff4
+++ build.h b99017e7e9e956e54c179f50d26fd45646a52ff4
@@ -0,0 +1,30 @@
+/*************************************************
+* Build Config Header File *
+* (C) 1999-2006 The Botan Project *
+*************************************************/
+
+#ifndef BOTAN_BUILD_CONFIG_H__
+#define BOTAN_BUILD_CONFIG_H__
+
+#define BOTAN_VERSION_MAJOR 1
+#define BOTAN_VERSION_MINOR 5
+#define BOTAN_VERSION_PATCH 10
+
+#define BOTAN_MP_WORD_BITS 32
+#define BOTAN_DEFAULT_BUFFER_SIZE 4096
+
+#define BOTAN_KARAT_MUL_THRESHOLD 12
+#define BOTAN_KARAT_SQR_THRESHOLD 12
+
+#define BOTAN_GZIP_OS_CODE 255
+
+#if defined(_MSC_VER)
+ #pragma warning(disable: 4250 4290)
+#define BOTAN_EXT_ENTROPY_SRC_WIN32
+#define BOTAN_EXT_ENTROPY_SRC_CAPI
+#endif
+
+#define BOTAN_EXT_COMPRESSOR_GZIP
+#define BOTAN_EXT_COMPRESSOR_ZLIB
+
+#endif
============================================================
--- gzip.cpp c563ec78bac13eead84737e3047cb4f7027a77f0
+++ gzip.cpp c563ec78bac13eead84737e3047cb4f7027a77f0
@@ -0,0 +1,412 @@
+/*************************************************
+* Gzip Compressor Source File *
+* (C) 1999-2004 The Botan Project *
+* *
+* Based on the comp_zlib module, modified *
+* by Matt Johnston. This is not a complete *
+* gzip implementation (it only handles basic *
+* headers). *
+*************************************************/
+
+/* This could be implemented a lot more cleanly if we rely on zlib >= 1.2
+ * being available. the Gzip Compressor would just be a subclass of
+ * Zlib Compressor, with window_bits+=16 for deflateInit2(), etc */
+
+#include <botan/gzip.h>
+#include <botan/filters.h>
+#include <botan/bit_ops.h>
+#include <cstring>
+#include <map>
+#include <zlib.h>
+
+namespace Botan {
+
+namespace {
+
+/*************************************************
+* Allocation Information for Zlib *
+*************************************************/
+class Zlib_Alloc_Info
+ {
+ public:
+ std::map<void*, u32bit> current_allocs;
+ Allocator* alloc;
+
+ Zlib_Alloc_Info() { alloc = Allocator::get(false); }
+ };
+
+/*************************************************
+* Allocation Function for Zlib *
+*************************************************/
+void* zlib_malloc(void* info_ptr, unsigned int n, unsigned int size)
+ {
+ Zlib_Alloc_Info* info = static_cast<Zlib_Alloc_Info*>(info_ptr);
+ void* ptr = info->alloc->allocate(n * size);
+ info->current_allocs[ptr] = n * size;
+ return ptr;
+ }
+
+/*************************************************
+* Allocation Function for Zlib *
+*************************************************/
+void zlib_free(void* info_ptr, void* ptr)
+ {
+ Zlib_Alloc_Info* info = static_cast<Zlib_Alloc_Info*>(info_ptr);
+ std::map<void*, u32bit>::const_iterator i = info->current_allocs.find(ptr);
+ if(i == info->current_allocs.end())
+ throw Invalid_Argument("zlib_free: Got pointer not allocated by us");
+ info->alloc->deallocate(ptr, i->second);
+ }
+}
+
+/*************************************************
+* Wrapper Type for Zlib z_stream *
+*************************************************/
+class Zlib_Stream
+ {
+ public:
+ z_stream stream;
+
+ Zlib_Stream()
+ {
+ std::memset(&stream, 0, sizeof(z_stream));
+ stream.zalloc = zlib_malloc;
+ stream.zfree = zlib_free;
+ stream.opaque = new Zlib_Alloc_Info;
+ }
+ ~Zlib_Stream()
+ {
+ Zlib_Alloc_Info* info = static_cast<Zlib_Alloc_Info*>(stream.opaque);
+ delete info;
+ std::memset(&stream, 0, sizeof(z_stream));
+ }
+ };
+
+/*************************************************
+* Gzip_Compression Constructor *
+*************************************************/
+Gzip_Compression::Gzip_Compression(u32bit l) :
+ level((l >= 9) ? 9 : l), buffer(DEFAULT_BUFFERSIZE),
+ pipe(new Hash_Filter("CRC32")), count( 0 )
+ {
+
+ zlib = new Zlib_Stream;
+ // window_bits == -15 relies on an undocumented feature of zlib, which
+ // supresses the zlib header on the message. We need that since gzip doesn't
+ // use this header. The feature been confirmed to exist in 1.1.4, which
+ // everyone should be using due to security fixes. In later versions this
+ // feature is documented, along with the ability to do proper gzip output
+ // (that would be a nicer way to do things, but will have to wait until 1.2
+ // becomes more widespread).
+ // The other settings are the defaults that deflateInit() gives
+ if(deflateInit2(&(zlib->stream), level, Z_DEFLATED, -15, 8, Z_DEFAULT_STRATEGY) != Z_OK)
+ {
+ delete zlib; zlib = 0;
+ throw Exception("Gzip_Compression: Memory allocation error");
+ }
+ }
+
+/*************************************************
+* Gzip_Compression Destructor *
+*************************************************/
+Gzip_Compression::~Gzip_Compression()
+ {
+ deflateEnd(&(zlib->stream));
+ delete zlib; zlib = 0;
+ }
+
+/*************************************************
+* Start Compressing with Gzip *
+*************************************************/
+void Gzip_Compression::start_msg()
+ {
+ clear();
+ put_header();
+ pipe.start_msg();
+ count = 0;
+ }
+
+/*************************************************
+* Compress Input with Gzip *
+*************************************************/
+void Gzip_Compression::write(const byte input[], u32bit length)
+ {
+
+ count += length;
+ pipe.write(input, length);
+
+ zlib->stream.next_in = (Bytef*)input;
+ zlib->stream.avail_in = length;
+
+ while(zlib->stream.avail_in != 0)
+ {
+ zlib->stream.next_out = (Bytef*)buffer.begin();
+ zlib->stream.avail_out = buffer.size();
+ int rc = deflate(&(zlib->stream), Z_NO_FLUSH);
+ if (rc != Z_OK && rc != Z_STREAM_END)
+ throw Exception("Internal error in Gzip_Compression deflate.");
+ send(buffer.begin(), buffer.size() - zlib->stream.avail_out);
+ }
+ }
+
+/*************************************************
+* Finish Compressing with Gzip *
+*************************************************/
+void Gzip_Compression::end_msg()
+ {
+ zlib->stream.next_in = 0;
+ zlib->stream.avail_in = 0;
+
+ int rc = Z_OK;
+ while(rc != Z_STREAM_END)
+ {
+ zlib->stream.next_out = (Bytef*)buffer.begin();
+ zlib->stream.avail_out = buffer.size();
+ rc = deflate(&(zlib->stream), Z_FINISH);
+ if (rc != Z_OK && rc != Z_STREAM_END)
+ throw Exception("Internal error in Gzip_Compression finishing deflate.");
+ send(buffer.begin(), buffer.size() - zlib->stream.avail_out);
+ }
+
+ pipe.end_msg();
+ put_footer();
+ clear();
+ }
+
+/*************************************************
+* Clean up Compression Context *
+*************************************************/
+void Gzip_Compression::clear()
+ {
+ deflateReset(&(zlib->stream));
+ }
+
+/*************************************************
+* Put a basic gzip header at the beginning *
+*************************************************/
+void Gzip_Compression::put_header()
+ {
+ send(GZIP::GZIP_HEADER, sizeof(GZIP::GZIP_HEADER));
+ }
+
+/*************************************************
+* Put a gzip footer at the end *
+*************************************************/
+void Gzip_Compression::put_footer()
+ {
+ // 4 byte CRC32, and 4 byte length field
+ SecureVector<byte> buf(4);
+ SecureVector<byte> tmpbuf(4);
+
+ pipe.read(tmpbuf.begin(), tmpbuf.size());
+
+ // CRC32 is the reverse order to what gzip expects.
+ for (int i = 0; i < 4; i++)
+ buf[3-i] = tmpbuf[i];
+
+ send(buf.begin(), buf.size());
+
+ // Length - LSB first
+ for (int i = 0; i < 4; i++)
+ buf[3-i] = get_byte(i, count);
+
+ send(buf.begin(), buf.size());
+ }
+
+/*************************************************
+* Gzip_Decompression Constructor *
+*************************************************/
+Gzip_Decompression::Gzip_Decompression() : buffer(DEFAULT_BUFFERSIZE),
+ no_writes(true), pipe(new Hash_Filter("CRC32")), footer(0)
+ {
+ if (DEFAULT_BUFFERSIZE < sizeof(GZIP::GZIP_HEADER))
+ throw Exception("DEFAULT_BUFFERSIZE is too small");
+
+ zlib = new Zlib_Stream;
+
+ // window_bits == -15 is raw zlib (no header) - see comment
+ // above about deflateInit2
+ if(inflateInit2(&(zlib->stream), -15) != Z_OK)
+ {
+ delete zlib; zlib = 0;
+ throw Exception("Gzip_Decompression: Memory allocation error");
+ }
+ }
+
+/*************************************************
+* Gzip_Decompression Destructor *
+*************************************************/
+Gzip_Decompression::~Gzip_Decompression()
+ {
+ inflateEnd(&(zlib->stream));
+ delete zlib; zlib = 0;
+ }
+
+/*************************************************
+* Start Decompressing with Gzip *
+*************************************************/
+void Gzip_Decompression::start_msg()
+ {
+ if (!no_writes)
+ throw Exception("Gzip_Decompression: start_msg after already writing");
+
+ pipe.start_msg();
+ datacount = 0;
+ pos = 0;
+ in_footer = false;
+ }
+
+/*************************************************
+* Decompress Input with Gzip *
+*************************************************/
+void Gzip_Decompression::write(const byte input[], u32bit length)
+ {
+ if(length) no_writes = false;
+
+ // If we're in the footer, take what we need, then go to the next block
+ if (in_footer)
+ {
+ u32bit eat_len = eat_footer(input, length);
+ input += eat_len;
+ length -= eat_len;
+ if (length == 0)
+ return;
+ }
+
+ // Check the gzip header
+ if (pos < sizeof(GZIP::GZIP_HEADER))
+ {
+ u32bit len = std::min((u32bit)sizeof(GZIP::GZIP_HEADER)-pos, length);
+ u32bit cmplen = len;
+ // The last byte is the OS flag - we don't care about that
+ if (pos + len - 1 >= GZIP::HEADER_POS_OS)
+ cmplen--;
+
+ if (std::memcmp(input, &GZIP::GZIP_HEADER[pos], cmplen) != 0)
+ {
+ throw Decoding_Error("Gzip_Decompression: Data integrity error in header");
+ }
+ input += len;
+ length -= len;
+ pos += len;
+ }
+
+ pos += length;
+
+ zlib->stream.next_in = (Bytef*)input;
+ zlib->stream.avail_in = length;
+
+ while(zlib->stream.avail_in != 0)
+ {
+ zlib->stream.next_out = (Bytef*)buffer.begin();
+ zlib->stream.avail_out = buffer.size();
+
+ int rc = inflate(&(zlib->stream), Z_SYNC_FLUSH);
+ if(rc != Z_OK && rc != Z_STREAM_END)
+ {
+ if(rc == Z_DATA_ERROR)
+ throw Decoding_Error("Gzip_Decompression: Data integrity error");
+ if(rc == Z_NEED_DICT)
+ throw Decoding_Error("Gzip_Decompression: Need preset dictionary");
+ if(rc == Z_MEM_ERROR)
+ throw Exception("Gzip_Decompression: Memory allocation error");
+ throw Exception("Gzip_Decompression: Unknown decompress error");
+ }
+ send(buffer.begin(), buffer.size() - zlib->stream.avail_out);
+ pipe.write(buffer.begin(), buffer.size() - zlib->stream.avail_out);
+ datacount += buffer.size() - zlib->stream.avail_out;
+
+ // Reached the end - we now need to check the footer
+ if(rc == Z_STREAM_END)
+ {
+ u32bit read_from_block = length - zlib->stream.avail_in;
+ u32bit eat_len = eat_footer((Bytef*)input + read_from_block, zlib->stream.avail_in);
+ read_from_block += eat_len;
+ input += read_from_block;
+ length -= read_from_block;
+ zlib->stream.next_in = (Bytef*)input;
+ zlib->stream.avail_in = length;
+ }
+ }
+ }
+
+/*************************************************
+* Store the footer bytes *
+*************************************************/
+u32bit Gzip_Decompression::eat_footer(const byte input[], u32bit length)
+ {
+ if (footer.size() >= GZIP::FOOTER_LENGTH)
+ throw Decoding_Error("Gzip_Decompression: Data integrity error in footer");
+
+ u32bit eat_len = std::min(GZIP::FOOTER_LENGTH-footer.size(), length);
+ footer.append(input, eat_len);
+
+ if (footer.size() == GZIP::FOOTER_LENGTH)
+ {
+ check_footer();
+ clear();
+ }
+
+ return eat_len;
+ }
+
+/*************************************************
+* Check the gzip footer *
+*************************************************/
+void Gzip_Decompression::check_footer()
+ {
+ if (footer.size() != GZIP::FOOTER_LENGTH)
+ throw Exception("Gzip_Decompression: Error finalizing decompression");
+
+ pipe.end_msg();
+
+ // 4 byte CRC32, and 4 byte length field
+ SecureVector<byte> buf(4);
+ SecureVector<byte> tmpbuf(4);
+ pipe.read(tmpbuf.begin(), tmpbuf.size());
+
+ // CRC32 is the reverse order to what gzip expects.
+ for (int i = 0; i < 4; i++)
+ buf[3-i] = tmpbuf[i];
+
+ tmpbuf.set(footer.begin(), 4);
+ if (buf != tmpbuf)
+ throw Exception("Gzip_Decompression: Data integrity error - CRC32 error");
+
+ // Check the length matches - it is encoded LSB-first
+ for (int i = 0; i < 4; i++)
+ {
+ if (footer.begin()[GZIP::FOOTER_LENGTH-1-i] != get_byte(i, datacount))
+ throw Exception("Gzip_Decompression: Data integrity error - incorrect length");
+ }
+
+ }
+
+/*************************************************
+* Finish Decompressing with Gzip *
+*************************************************/
+void Gzip_Decompression::end_msg()
+ {
+
+ // All messages should end with a footer, and when a footer is successfully
+ // read, clear() will reset no_writes
+ if(no_writes) return;
+
+ throw Exception("Gzip_Decompression: didn't find footer");
+
+ }
+
+/*************************************************
+* Clean up Decompression Context *
+*************************************************/
+void Gzip_Decompression::clear()
+ {
+ no_writes = true;
+ inflateReset(&(zlib->stream));
+
+ footer.clear();
+ pos = 0;
+ datacount = 0;
+ }
+
+}
============================================================
--- gzip.h 0b391725625531a7f5c73d372355fb71e00c2b27
+++ gzip.h 0b391725625531a7f5c73d372355fb71e00c2b27
@@ -0,0 +1,83 @@
+/*************************************************
+* Gzip Compressor Header File *
+* (C) 1999-2004 The Botan Project *
+*************************************************/
+
+#ifndef BOTAN_EXT_GZIP_H__
+#define BOTAN_EXT_GZIP_H__
+
+#include <botan/filter.h>
+#include <botan/pipe.h>
+
+namespace Botan {
+
+namespace GZIP {
+
+ /* A basic header - we only need to set the IDs and compression method */
+ const byte GZIP_HEADER[] = {
+ 0x1f, 0x8b, /* Magic ID bytes */
+ 0x08, /* Compression method of 'deflate' */
+ 0x00, /* Flags all empty */
+ 0x00, 0x00, 0x00, 0x00, /* MTIME */
+ 0x00, /* Extra flags */
+ 0xff, /* Operating system (unknown) */
+ };
+
+ const unsigned int HEADER_POS_OS = 9;
+
+ const unsigned int FOOTER_LENGTH = 8;
+
+}
+
+/*************************************************
+* Gzip Compression Filter *
+*************************************************/
+class Gzip_Compression : public Filter
+ {
+ public:
+ void write(const byte input[], u32bit length);
+ void start_msg();
+ void end_msg();
+
+ Gzip_Compression(u32bit = 1);
+ ~Gzip_Compression();
+ private:
+ void clear();
+ void put_header();
+ void put_footer();
+ const u32bit level;
+ SecureVector<byte> buffer;
+ class Zlib_Stream* zlib;
+ Pipe pipe; /* A pipe for the crc32 processing */
+ u32bit count;
+ };
+
+/*************************************************
+* Gzip Decompression Filter *
+*************************************************/
+class Gzip_Decompression : public Filter
+ {
+ public:
+ void write(const byte input[], u32bit length);
+ void start_msg();
+ void end_msg();
+
+ Gzip_Decompression();
+ ~Gzip_Decompression();
+ private:
+ u32bit eat_footer(const byte input[], u32bit length);
+ void check_footer();
+ void clear();
+ SecureVector<byte> buffer;
+ class Zlib_Stream* zlib;
+ bool no_writes;
+ u32bit pos; /* Current position in the message */
+ Pipe pipe; /* A pipe for the crc32 processing */
+ u32bit datacount; /* Amount of uncompressed output */
+ SecureVector<byte> footer;
+ bool in_footer;
+ };
+
+}
+
+#endif
============================================================
--- src/arc4.cpp b6add086b0c81276ac9d32b3858a2a450a299ab3
+++ arc4.cpp 6b24fa12af23cdd3ec85de63a2f28ff3f89c317d
@@ -95,7 +95,7 @@ void ARC4::clear() throw()
/*************************************************
* ARC4 Constructor *
*************************************************/
-ARC4::ARC4(u32bit s) : StreamCipher(1, 32), SKIP(s)
+ARC4::ARC4(u32bit s) : StreamCipher(1, 256), SKIP(s)
{
clear();
}
============================================================
--- src/base64.cpp 0159b238b256a688445b3912c33bb0207baa8105
+++ base64.cpp a7780f8f856946ca1fcaf5a1fa5ee91aaf2504ce
@@ -118,8 +118,11 @@ void Base64_Encoder::end_msg()
do_output(out, 4);
}
- if(counter && line_length)
- send('\n');
+ // Monotone requires a trailing in newline in
+ // all cases, for crypto++ compatibility.
+ // if(counter && line_length)
+ // send('\n');
+ send('\n');
counter = position = 0;
}
============================================================
--- include/base64.h 51a1c25fc5096793a6d27356bc974a27264f0856
+++ base64.h 3f09eb989fc4b2b391f9cefa31455c9fbd2794cb
@@ -21,7 +21,8 @@ class Base64_Encoder : public Filter
void write(const byte[], u32bit);
void end_msg();
- Base64_Encoder(bool = false, u32bit = 72);
+ // monotone wants breaks by default
+ Base64_Encoder(bool breaks = true, u32bit = 72);
private:
void encode_and_send(const byte[], u32bit);
void do_output(const byte[], u32bit);
============================================================
--- src/def_alg.cpp a8ebcb2f7ba526363417c2cebe88eee6db32b0e0
+++ def_alg.cpp 20b41dbd1ebe04bc807d3bfce084934ee98149d4
@@ -8,56 +8,17 @@
#include <botan/parsing.h>
#include <botan/aes.h>
-#include <botan/blowfish.h>
-#include <botan/cast128.h>
-#include <botan/cast256.h>
#include <botan/des.h>
-#include <botan/gost.h>
-#include <botan/idea.h>
-#include <botan/kasumi.h>
-#include <botan/lion.h>
-#include <botan/lubyrack.h>
-#include <botan/mars.h>
-#include <botan/misty1.h>
-#include <botan/rc2.h>
-#include <botan/rc5.h>
-#include <botan/rc6.h>
-#include <botan/safer_sk.h>
-#include <botan/seed.h>
-#include <botan/serpent.h>
-#include <botan/skipjack.h>
-#include <botan/square.h>
-#include <botan/tea.h>
-#include <botan/twofish.h>
-#include <botan/xtea.h>
#include <botan/arc4.h>
-#include <botan/turing.h>
-#include <botan/wid_wake.h>
-#include <botan/adler32.h>
-#include <botan/crc24.h>
#include <botan/crc32.h>
-#include <botan/fork256.h>
-#include <botan/has160.h>
-#include <botan/md2.h>
-#include <botan/md4.h>
-#include <botan/md5.h>
-#include <botan/rmd128.h>
-#include <botan/rmd160.h>
#include <botan/sha160.h>
#include <botan/sha256.h>
-#include <botan/sha_64.h>
-#include <botan/tiger.h>
-#include <botan/whrlpool.h>
-#include <botan/par_hash.h>
-#include <botan/cmac.h>
#include <botan/hmac.h>
-#include <botan/x919_mac.h>
#include <botan/mode_pad.h>
-#include <botan/pgp_s2k.h>
#include <botan/pkcs5.h>
namespace Botan {
@@ -118,36 +79,10 @@ Default_Engine::find_block_cipher(const
HANDLE_TYPE_NO_ARGS("AES-128", AES_128);
HANDLE_TYPE_NO_ARGS("AES-192", AES_192);
HANDLE_TYPE_NO_ARGS("AES-256", AES_256);
- HANDLE_TYPE_NO_ARGS("Blowfish", Blowfish);
- HANDLE_TYPE_NO_ARGS("CAST-128", CAST_128);
- HANDLE_TYPE_NO_ARGS("CAST-256", CAST_256);
HANDLE_TYPE_NO_ARGS("DES", DES);
HANDLE_TYPE_NO_ARGS("DESX", DESX);
HANDLE_TYPE_NO_ARGS("TripleDES", TripleDES);
- HANDLE_TYPE_NO_ARGS("GOST", GOST);
- HANDLE_TYPE_NO_ARGS("IDEA", IDEA);
- HANDLE_TYPE_NO_ARGS("KASUMI", KASUMI);
- HANDLE_TYPE_ONE_STRING("Luby-Rackoff", LubyRackoff);
- HANDLE_TYPE_NO_ARGS("MARS", MARS);
- HANDLE_TYPE_ONE_U32BIT("MISTY1", MISTY1, 8);
- HANDLE_TYPE_NO_ARGS("RC2", RC2);
- HANDLE_TYPE_ONE_U32BIT("RC5", RC5, 12);
- HANDLE_TYPE_NO_ARGS("RC6", RC6);
- HANDLE_TYPE_ONE_U32BIT("SAFER-SK", SAFER_SK, 10);
- HANDLE_TYPE_NO_ARGS("SEED", SEED);
- HANDLE_TYPE_NO_ARGS("Serpent", Serpent);
- HANDLE_TYPE_NO_ARGS("Skipjack", Skipjack);
- HANDLE_TYPE_NO_ARGS("Square", Square);
- HANDLE_TYPE_NO_ARGS("TEA", TEA);
- HANDLE_TYPE_NO_ARGS("Twofish", Twofish);
- HANDLE_TYPE_NO_ARGS("XTEA", XTEA);
- if(algo_name == "Lion")
- {
- if(name.size() != 4)
- throw Invalid_Algorithm_Name(algo_spec);
- return new Lion(name[1], name[2], to_u32bit(name[3]));
- }
return 0;
}
@@ -164,8 +99,6 @@ Default_Engine::find_stream_cipher(const
HANDLE_TYPE_ONE_U32BIT("ARC4", ARC4, 0);
HANDLE_TYPE_ONE_U32BIT("RC4_drop", ARC4, 768);
- HANDLE_TYPE_NO_ARGS("Turing", Turing);
- HANDLE_TYPE_NO_ARGS("WiderWake4+1-BE", WiderWake_41_BE);
return 0;
}
@@ -181,30 +114,9 @@ Default_Engine::find_hash(const std::str
return 0;
const std::string algo_name = deref_alias(name[0]);
- HANDLE_TYPE_NO_ARGS("Adler32", Adler32);
- HANDLE_TYPE_NO_ARGS("CRC24", CRC24);
HANDLE_TYPE_NO_ARGS("CRC32", CRC32);
- HANDLE_TYPE_NO_ARGS("FORK-256", FORK_256);
- HANDLE_TYPE_NO_ARGS("HAS-160", HAS_160);
- HANDLE_TYPE_NO_ARGS("MD2", MD2);
- HANDLE_TYPE_NO_ARGS("MD4", MD4);
- HANDLE_TYPE_NO_ARGS("MD5", MD5);
- HANDLE_TYPE_NO_ARGS("RIPEMD-128", RIPEMD_128);
- HANDLE_TYPE_NO_ARGS("RIPEMD-160", RIPEMD_160);
HANDLE_TYPE_NO_ARGS("SHA-160", SHA_160);
HANDLE_TYPE_NO_ARGS("SHA-256", SHA_256);
- HANDLE_TYPE_NO_ARGS("SHA-384", SHA_384);
- HANDLE_TYPE_NO_ARGS("SHA-512", SHA_512);
- HANDLE_TYPE_TWO_U32BIT("Tiger", Tiger, 24);
- HANDLE_TYPE_NO_ARGS("Whirlpool", Whirlpool);
-
- if(algo_name == "Parallel")
- {
- if(name.size() < 2)
- throw Invalid_Algorithm_Name(algo_spec);
- name.erase(name.begin());
- return new Parallel(name);
- }
return 0;
}
@@ -219,9 +131,7 @@ Default_Engine::find_mac(const std::stri
return 0;
const std::string algo_name = deref_alias(name[0]);
- HANDLE_TYPE_ONE_STRING("CMAC", CMAC);
HANDLE_TYPE_ONE_STRING("HMAC", HMAC);
- HANDLE_TYPE_NO_ARGS("X9.19-MAC", ANSI_X919_MAC);
return 0;
}
@@ -239,7 +149,6 @@ S2K* Default_Engine::find_s2k(const std:
HANDLE_TYPE_ONE_STRING("PBKDF1", PKCS5_PBKDF1);
HANDLE_TYPE_ONE_STRING("PBKDF2", PKCS5_PBKDF2);
- HANDLE_TYPE_ONE_STRING("OpenPGP-S2K", OpenPGP_S2K);
return 0;
}
============================================================
--- src/des_tab.cpp 122183d9b33d7a48c834a185667be2783115b098
+++ des_tab.cpp a45c36b824fabc92baa7a6d2e4b2d1a99f5218b7
@@ -368,267 +368,267 @@ const u64bit DES::IPTAB1[256] = {
0x00001040, 0x00040040, 0x10000000, 0x10041000 };
const u64bit DES::IPTAB1[256] = {
-0x0000000000000000, 0x0000000200000000, 0x0000000000000002, 0x0000000200000002,
-0x0000020000000000, 0x0000020200000000, 0x0000020000000002, 0x0000020200000002,
-0x0000000000000200, 0x0000000200000200, 0x0000000000000202, 0x0000000200000202,
-0x0000020000000200, 0x0000020200000200, 0x0000020000000202, 0x0000020200000202,
-0x0002000000000000, 0x0002000200000000, 0x0002000000000002, 0x0002000200000002,
-0x0002020000000000, 0x0002020200000000, 0x0002020000000002, 0x0002020200000002,
-0x0002000000000200, 0x0002000200000200, 0x0002000000000202, 0x0002000200000202,
-0x0002020000000200, 0x0002020200000200, 0x0002020000000202, 0x0002020200000202,
-0x0000000000020000, 0x0000000200020000, 0x0000000000020002, 0x0000000200020002,
-0x0000020000020000, 0x0000020200020000, 0x0000020000020002, 0x0000020200020002,
-0x0000000000020200, 0x0000000200020200, 0x0000000000020202, 0x0000000200020202,
-0x0000020000020200, 0x0000020200020200, 0x0000020000020202, 0x0000020200020202,
-0x0002000000020000, 0x0002000200020000, 0x0002000000020002, 0x0002000200020002,
-0x0002020000020000, 0x0002020200020000, 0x0002020000020002, 0x0002020200020002,
-0x0002000000020200, 0x0002000200020200, 0x0002000000020202, 0x0002000200020202,
-0x0002020000020200, 0x0002020200020200, 0x0002020000020202, 0x0002020200020202,
-0x0200000000000000, 0x0200000200000000, 0x0200000000000002, 0x0200000200000002,
-0x0200020000000000, 0x0200020200000000, 0x0200020000000002, 0x0200020200000002,
-0x0200000000000200, 0x0200000200000200, 0x0200000000000202, 0x0200000200000202,
-0x0200020000000200, 0x0200020200000200, 0x0200020000000202, 0x0200020200000202,
-0x0202000000000000, 0x0202000200000000, 0x0202000000000002, 0x0202000200000002,
-0x0202020000000000, 0x0202020200000000, 0x0202020000000002, 0x0202020200000002,
-0x0202000000000200, 0x0202000200000200, 0x0202000000000202, 0x0202000200000202,
-0x0202020000000200, 0x0202020200000200, 0x0202020000000202, 0x0202020200000202,
-0x0200000000020000, 0x0200000200020000, 0x0200000000020002, 0x0200000200020002,
-0x0200020000020000, 0x0200020200020000, 0x0200020000020002, 0x0200020200020002,
-0x0200000000020200, 0x0200000200020200, 0x0200000000020202, 0x0200000200020202,
-0x0200020000020200, 0x0200020200020200, 0x0200020000020202, 0x0200020200020202,
-0x0202000000020000, 0x0202000200020000, 0x0202000000020002, 0x0202000200020002,
-0x0202020000020000, 0x0202020200020000, 0x0202020000020002, 0x0202020200020002,
-0x0202000000020200, 0x0202000200020200, 0x0202000000020202, 0x0202000200020202,
-0x0202020000020200, 0x0202020200020200, 0x0202020000020202, 0x0202020200020202,
-0x0000000002000000, 0x0000000202000000, 0x0000000002000002, 0x0000000202000002,
-0x0000020002000000, 0x0000020202000000, 0x0000020002000002, 0x0000020202000002,
-0x0000000002000200, 0x0000000202000200, 0x0000000002000202, 0x0000000202000202,
-0x0000020002000200, 0x0000020202000200, 0x0000020002000202, 0x0000020202000202,
-0x0002000002000000, 0x0002000202000000, 0x0002000002000002, 0x0002000202000002,
-0x0002020002000000, 0x0002020202000000, 0x0002020002000002, 0x0002020202000002,
-0x0002000002000200, 0x0002000202000200, 0x0002000002000202, 0x0002000202000202,
-0x0002020002000200, 0x0002020202000200, 0x0002020002000202, 0x0002020202000202,
-0x0000000002020000, 0x0000000202020000, 0x0000000002020002, 0x0000000202020002,
-0x0000020002020000, 0x0000020202020000, 0x0000020002020002, 0x0000020202020002,
-0x0000000002020200, 0x0000000202020200, 0x0000000002020202, 0x0000000202020202,
-0x0000020002020200, 0x0000020202020200, 0x0000020002020202, 0x0000020202020202,
-0x0002000002020000, 0x0002000202020000, 0x0002000002020002, 0x0002000202020002,
-0x0002020002020000, 0x0002020202020000, 0x0002020002020002, 0x0002020202020002,
-0x0002000002020200, 0x0002000202020200, 0x0002000002020202, 0x0002000202020202,
-0x0002020002020200, 0x0002020202020200, 0x0002020002020202, 0x0002020202020202,
-0x0200000002000000, 0x0200000202000000, 0x0200000002000002, 0x0200000202000002,
-0x0200020002000000, 0x0200020202000000, 0x0200020002000002, 0x0200020202000002,
-0x0200000002000200, 0x0200000202000200, 0x0200000002000202, 0x0200000202000202,
-0x0200020002000200, 0x0200020202000200, 0x0200020002000202, 0x0200020202000202,
-0x0202000002000000, 0x0202000202000000, 0x0202000002000002, 0x0202000202000002,
-0x0202020002000000, 0x0202020202000000, 0x0202020002000002, 0x0202020202000002,
-0x0202000002000200, 0x0202000202000200, 0x0202000002000202, 0x0202000202000202,
-0x0202020002000200, 0x0202020202000200, 0x0202020002000202, 0x0202020202000202,
-0x0200000002020000, 0x0200000202020000, 0x0200000002020002, 0x0200000202020002,
-0x0200020002020000, 0x0200020202020000, 0x0200020002020002, 0x0200020202020002,
-0x0200000002020200, 0x0200000202020200, 0x0200000002020202, 0x0200000202020202,
-0x0200020002020200, 0x0200020202020200, 0x0200020002020202, 0x0200020202020202,
-0x0202000002020000, 0x0202000202020000, 0x0202000002020002, 0x0202000202020002,
-0x0202020002020000, 0x0202020202020000, 0x0202020002020002, 0x0202020202020002,
-0x0202000002020200, 0x0202000202020200, 0x0202000002020202, 0x0202000202020202,
-0x0202020002020200, 0x0202020202020200, 0x0202020002020202, 0x0202020202020202 };
+0x0000000000000000ULL, 0x0000000200000000ULL, 0x0000000000000002ULL, 0x0000000200000002ULL,
+0x0000020000000000ULL, 0x0000020200000000ULL, 0x0000020000000002ULL, 0x0000020200000002ULL,
+0x0000000000000200ULL, 0x0000000200000200ULL, 0x0000000000000202ULL, 0x0000000200000202ULL,
+0x0000020000000200ULL, 0x0000020200000200ULL, 0x0000020000000202ULL, 0x0000020200000202ULL,
+0x0002000000000000ULL, 0x0002000200000000ULL, 0x0002000000000002ULL, 0x0002000200000002ULL,
+0x0002020000000000ULL, 0x0002020200000000ULL, 0x0002020000000002ULL, 0x0002020200000002ULL,
+0x0002000000000200ULL, 0x0002000200000200ULL, 0x0002000000000202ULL, 0x0002000200000202ULL,
+0x0002020000000200ULL, 0x0002020200000200ULL, 0x0002020000000202ULL, 0x0002020200000202ULL,
+0x0000000000020000ULL, 0x0000000200020000ULL, 0x0000000000020002ULL, 0x0000000200020002ULL,
+0x0000020000020000ULL, 0x0000020200020000ULL, 0x0000020000020002ULL, 0x0000020200020002ULL,
+0x0000000000020200ULL, 0x0000000200020200ULL, 0x0000000000020202ULL, 0x0000000200020202ULL,
+0x0000020000020200ULL, 0x0000020200020200ULL, 0x0000020000020202ULL, 0x0000020200020202ULL,
+0x0002000000020000ULL, 0x0002000200020000ULL, 0x0002000000020002ULL, 0x0002000200020002ULL,
+0x0002020000020000ULL, 0x0002020200020000ULL, 0x0002020000020002ULL, 0x0002020200020002ULL,
+0x0002000000020200ULL, 0x0002000200020200ULL, 0x0002000000020202ULL, 0x0002000200020202ULL,
+0x0002020000020200ULL, 0x0002020200020200ULL, 0x0002020000020202ULL, 0x0002020200020202ULL,
+0x0200000000000000ULL, 0x0200000200000000ULL, 0x0200000000000002ULL, 0x0200000200000002ULL,
+0x0200020000000000ULL, 0x0200020200000000ULL, 0x0200020000000002ULL, 0x0200020200000002ULL,
+0x0200000000000200ULL, 0x0200000200000200ULL, 0x0200000000000202ULL, 0x0200000200000202ULL,
+0x0200020000000200ULL, 0x0200020200000200ULL, 0x0200020000000202ULL, 0x0200020200000202ULL,
+0x0202000000000000ULL, 0x0202000200000000ULL, 0x0202000000000002ULL, 0x0202000200000002ULL,
+0x0202020000000000ULL, 0x0202020200000000ULL, 0x0202020000000002ULL, 0x0202020200000002ULL,
+0x0202000000000200ULL, 0x0202000200000200ULL, 0x0202000000000202ULL, 0x0202000200000202ULL,
+0x0202020000000200ULL, 0x0202020200000200ULL, 0x0202020000000202ULL, 0x0202020200000202ULL,
+0x0200000000020000ULL, 0x0200000200020000ULL, 0x0200000000020002ULL, 0x0200000200020002ULL,
+0x0200020000020000ULL, 0x0200020200020000ULL, 0x0200020000020002ULL, 0x0200020200020002ULL,
+0x0200000000020200ULL, 0x0200000200020200ULL, 0x0200000000020202ULL, 0x0200000200020202ULL,
+0x0200020000020200ULL, 0x0200020200020200ULL, 0x0200020000020202ULL, 0x0200020200020202ULL,
+0x0202000000020000ULL, 0x0202000200020000ULL, 0x0202000000020002ULL, 0x0202000200020002ULL,
+0x0202020000020000ULL, 0x0202020200020000ULL, 0x0202020000020002ULL, 0x0202020200020002ULL,
+0x0202000000020200ULL, 0x0202000200020200ULL, 0x0202000000020202ULL, 0x0202000200020202ULL,
+0x0202020000020200ULL, 0x0202020200020200ULL, 0x0202020000020202ULL, 0x0202020200020202ULL,
+0x0000000002000000ULL, 0x0000000202000000ULL, 0x0000000002000002ULL, 0x0000000202000002ULL,
+0x0000020002000000ULL, 0x0000020202000000ULL, 0x0000020002000002ULL, 0x0000020202000002ULL,
+0x0000000002000200ULL, 0x0000000202000200ULL, 0x0000000002000202ULL, 0x0000000202000202ULL,
+0x0000020002000200ULL, 0x0000020202000200ULL, 0x0000020002000202ULL, 0x0000020202000202ULL,
+0x0002000002000000ULL, 0x0002000202000000ULL, 0x0002000002000002ULL, 0x0002000202000002ULL,
+0x0002020002000000ULL, 0x0002020202000000ULL, 0x0002020002000002ULL, 0x0002020202000002ULL,
+0x0002000002000200ULL, 0x0002000202000200ULL, 0x0002000002000202ULL, 0x0002000202000202ULL,
+0x0002020002000200ULL, 0x0002020202000200ULL, 0x0002020002000202ULL, 0x0002020202000202ULL,
+0x0000000002020000ULL, 0x0000000202020000ULL, 0x0000000002020002ULL, 0x0000000202020002ULL,
+0x0000020002020000ULL, 0x0000020202020000ULL, 0x0000020002020002ULL, 0x0000020202020002ULL,
+0x0000000002020200ULL, 0x0000000202020200ULL, 0x0000000002020202ULL, 0x0000000202020202ULL,
+0x0000020002020200ULL, 0x0000020202020200ULL, 0x0000020002020202ULL, 0x0000020202020202ULL,
+0x0002000002020000ULL, 0x0002000202020000ULL, 0x0002000002020002ULL, 0x0002000202020002ULL,
+0x0002020002020000ULL, 0x0002020202020000ULL, 0x0002020002020002ULL, 0x0002020202020002ULL,
+0x0002000002020200ULL, 0x0002000202020200ULL, 0x0002000002020202ULL, 0x0002000202020202ULL,
+0x0002020002020200ULL, 0x0002020202020200ULL, 0x0002020002020202ULL, 0x0002020202020202ULL,
+0x0200000002000000ULL, 0x0200000202000000ULL, 0x0200000002000002ULL, 0x0200000202000002ULL,
+0x0200020002000000ULL, 0x0200020202000000ULL, 0x0200020002000002ULL, 0x0200020202000002ULL,
+0x0200000002000200ULL, 0x0200000202000200ULL, 0x0200000002000202ULL, 0x0200000202000202ULL,
+0x0200020002000200ULL, 0x0200020202000200ULL, 0x0200020002000202ULL, 0x0200020202000202ULL,
+0x0202000002000000ULL, 0x0202000202000000ULL, 0x0202000002000002ULL, 0x0202000202000002ULL,
+0x0202020002000000ULL, 0x0202020202000000ULL, 0x0202020002000002ULL, 0x0202020202000002ULL,
+0x0202000002000200ULL, 0x0202000202000200ULL, 0x0202000002000202ULL, 0x0202000202000202ULL,
+0x0202020002000200ULL, 0x0202020202000200ULL, 0x0202020002000202ULL, 0x0202020202000202ULL,
+0x0200000002020000ULL, 0x0200000202020000ULL, 0x0200000002020002ULL, 0x0200000202020002ULL,
+0x0200020002020000ULL, 0x0200020202020000ULL, 0x0200020002020002ULL, 0x0200020202020002ULL,
+0x0200000002020200ULL, 0x0200000202020200ULL, 0x0200000002020202ULL, 0x0200000202020202ULL,
+0x0200020002020200ULL, 0x0200020202020200ULL, 0x0200020002020202ULL, 0x0200020202020202ULL,
+0x0202000002020000ULL, 0x0202000202020000ULL, 0x0202000002020002ULL, 0x0202000202020002ULL,
+0x0202020002020000ULL, 0x0202020202020000ULL, 0x0202020002020002ULL, 0x0202020202020002ULL,
+0x0202000002020200ULL, 0x0202000202020200ULL, 0x0202000002020202ULL, 0x0202000202020202ULL,
+0x0202020002020200ULL, 0x0202020202020200ULL, 0x0202020002020202ULL, 0x0202020202020202ULL };
const u64bit DES::IPTAB2[256] = {
-0x0000000000000000, 0x0000010000000000, 0x0000000000000100, 0x0000010000000100,
-0x0001000000000000, 0x0001010000000000, 0x0001000000000100, 0x0001010000000100,
-0x0000000000010000, 0x0000010000010000, 0x0000000000010100, 0x0000010000010100,
-0x0001000000010000, 0x0001010000010000, 0x0001000000010100, 0x0001010000010100,
-0x0100000000000000, 0x0100010000000000, 0x0100000000000100, 0x0100010000000100,
-0x0101000000000000, 0x0101010000000000, 0x0101000000000100, 0x0101010000000100,
-0x0100000000010000, 0x0100010000010000, 0x0100000000010100, 0x0100010000010100,
-0x0101000000010000, 0x0101010000010000, 0x0101000000010100, 0x0101010000010100,
-0x0000000001000000, 0x0000010001000000, 0x0000000001000100, 0x0000010001000100,
-0x0001000001000000, 0x0001010001000000, 0x0001000001000100, 0x0001010001000100,
-0x0000000001010000, 0x0000010001010000, 0x0000000001010100, 0x0000010001010100,
-0x0001000001010000, 0x0001010001010000, 0x0001000001010100, 0x0001010001010100,
-0x0100000001000000, 0x0100010001000000, 0x0100000001000100, 0x0100010001000100,
-0x0101000001000000, 0x0101010001000000, 0x0101000001000100, 0x0101010001000100,
-0x0100000001010000, 0x0100010001010000, 0x0100000001010100, 0x0100010001010100,
-0x0101000001010000, 0x0101010001010000, 0x0101000001010100, 0x0101010001010100,
-0x0000000100000000, 0x0000010100000000, 0x0000000100000100, 0x0000010100000100,
-0x0001000100000000, 0x0001010100000000, 0x0001000100000100, 0x0001010100000100,
-0x0000000100010000, 0x0000010100010000, 0x0000000100010100, 0x0000010100010100,
-0x0001000100010000, 0x0001010100010000, 0x0001000100010100, 0x0001010100010100,
-0x0100000100000000, 0x0100010100000000, 0x0100000100000100, 0x0100010100000100,
-0x0101000100000000, 0x0101010100000000, 0x0101000100000100, 0x0101010100000100,
-0x0100000100010000, 0x0100010100010000, 0x0100000100010100, 0x0100010100010100,
-0x0101000100010000, 0x0101010100010000, 0x0101000100010100, 0x0101010100010100,
-0x0000000101000000, 0x0000010101000000, 0x0000000101000100, 0x0000010101000100,
-0x0001000101000000, 0x0001010101000000, 0x0001000101000100, 0x0001010101000100,
-0x0000000101010000, 0x0000010101010000, 0x0000000101010100, 0x0000010101010100,
-0x0001000101010000, 0x0001010101010000, 0x0001000101010100, 0x0001010101010100,
-0x0100000101000000, 0x0100010101000000, 0x0100000101000100, 0x0100010101000100,
-0x0101000101000000, 0x0101010101000000, 0x0101000101000100, 0x0101010101000100,
-0x0100000101010000, 0x0100010101010000, 0x0100000101010100, 0x0100010101010100,
-0x0101000101010000, 0x0101010101010000, 0x0101000101010100, 0x0101010101010100,
-0x0000000000000001, 0x0000010000000001, 0x0000000000000101, 0x0000010000000101,
-0x0001000000000001, 0x0001010000000001, 0x0001000000000101, 0x0001010000000101,
-0x0000000000010001, 0x0000010000010001, 0x0000000000010101, 0x0000010000010101,
-0x0001000000010001, 0x0001010000010001, 0x0001000000010101, 0x0001010000010101,
-0x0100000000000001, 0x0100010000000001, 0x0100000000000101, 0x0100010000000101,
-0x0101000000000001, 0x0101010000000001, 0x0101000000000101, 0x0101010000000101,
-0x0100000000010001, 0x0100010000010001, 0x0100000000010101, 0x0100010000010101,
-0x0101000000010001, 0x0101010000010001, 0x0101000000010101, 0x0101010000010101,
-0x0000000001000001, 0x0000010001000001, 0x0000000001000101, 0x0000010001000101,
-0x0001000001000001, 0x0001010001000001, 0x0001000001000101, 0x0001010001000101,
-0x0000000001010001, 0x0000010001010001, 0x0000000001010101, 0x0000010001010101,
-0x0001000001010001, 0x0001010001010001, 0x0001000001010101, 0x0001010001010101,
-0x0100000001000001, 0x0100010001000001, 0x0100000001000101, 0x0100010001000101,
-0x0101000001000001, 0x0101010001000001, 0x0101000001000101, 0x0101010001000101,
-0x0100000001010001, 0x0100010001010001, 0x0100000001010101, 0x0100010001010101,
-0x0101000001010001, 0x0101010001010001, 0x0101000001010101, 0x0101010001010101,
-0x0000000100000001, 0x0000010100000001, 0x0000000100000101, 0x0000010100000101,
-0x0001000100000001, 0x0001010100000001, 0x0001000100000101, 0x0001010100000101,
-0x0000000100010001, 0x0000010100010001, 0x0000000100010101, 0x0000010100010101,
-0x0001000100010001, 0x0001010100010001, 0x0001000100010101, 0x0001010100010101,
-0x0100000100000001, 0x0100010100000001, 0x0100000100000101, 0x0100010100000101,
-0x0101000100000001, 0x0101010100000001, 0x0101000100000101, 0x0101010100000101,
-0x0100000100010001, 0x0100010100010001, 0x0100000100010101, 0x0100010100010101,
-0x0101000100010001, 0x0101010100010001, 0x0101000100010101, 0x0101010100010101,
-0x0000000101000001, 0x0000010101000001, 0x0000000101000101, 0x0000010101000101,
-0x0001000101000001, 0x0001010101000001, 0x0001000101000101, 0x0001010101000101,
-0x0000000101010001, 0x0000010101010001, 0x0000000101010101, 0x0000010101010101,
-0x0001000101010001, 0x0001010101010001, 0x0001000101010101, 0x0001010101010101,
-0x0100000101000001, 0x0100010101000001, 0x0100000101000101, 0x0100010101000101,
-0x0101000101000001, 0x0101010101000001, 0x0101000101000101, 0x0101010101000101,
-0x0100000101010001, 0x0100010101010001, 0x0100000101010101, 0x0100010101010101,
-0x0101000101010001, 0x0101010101010001, 0x0101000101010101, 0x0101010101010101 };
+0x0000000000000000ULL, 0x0000010000000000ULL, 0x0000000000000100ULL, 0x0000010000000100ULL,
+0x0001000000000000ULL, 0x0001010000000000ULL, 0x0001000000000100ULL, 0x0001010000000100ULL,
+0x0000000000010000ULL, 0x0000010000010000ULL, 0x0000000000010100ULL, 0x0000010000010100ULL,
+0x0001000000010000ULL, 0x0001010000010000ULL, 0x0001000000010100ULL, 0x0001010000010100ULL,
+0x0100000000000000ULL, 0x0100010000000000ULL, 0x0100000000000100ULL, 0x0100010000000100ULL,
+0x0101000000000000ULL, 0x0101010000000000ULL, 0x0101000000000100ULL, 0x0101010000000100ULL,
+0x0100000000010000ULL, 0x0100010000010000ULL, 0x0100000000010100ULL, 0x0100010000010100ULL,
+0x0101000000010000ULL, 0x0101010000010000ULL, 0x0101000000010100ULL, 0x0101010000010100ULL,
+0x0000000001000000ULL, 0x0000010001000000ULL, 0x0000000001000100ULL, 0x0000010001000100ULL,
+0x0001000001000000ULL, 0x0001010001000000ULL, 0x0001000001000100ULL, 0x0001010001000100ULL,
+0x0000000001010000ULL, 0x0000010001010000ULL, 0x0000000001010100ULL, 0x0000010001010100ULL,
+0x0001000001010000ULL, 0x0001010001010000ULL, 0x0001000001010100ULL, 0x0001010001010100ULL,
+0x0100000001000000ULL, 0x0100010001000000ULL, 0x0100000001000100ULL, 0x0100010001000100ULL,
+0x0101000001000000ULL, 0x0101010001000000ULL, 0x0101000001000100ULL, 0x0101010001000100ULL,
+0x0100000001010000ULL, 0x0100010001010000ULL, 0x0100000001010100ULL, 0x0100010001010100ULL,
+0x0101000001010000ULL, 0x0101010001010000ULL, 0x0101000001010100ULL, 0x0101010001010100ULL,
+0x0000000100000000ULL, 0x0000010100000000ULL, 0x0000000100000100ULL, 0x0000010100000100ULL,
+0x0001000100000000ULL, 0x0001010100000000ULL, 0x0001000100000100ULL, 0x0001010100000100ULL,
+0x0000000100010000ULL, 0x0000010100010000ULL, 0x0000000100010100ULL, 0x0000010100010100ULL,
+0x0001000100010000ULL, 0x0001010100010000ULL, 0x0001000100010100ULL, 0x0001010100010100ULL,
+0x0100000100000000ULL, 0x0100010100000000ULL, 0x0100000100000100ULL, 0x0100010100000100ULL,
+0x0101000100000000ULL, 0x0101010100000000ULL, 0x0101000100000100ULL, 0x0101010100000100ULL,
+0x0100000100010000ULL, 0x0100010100010000ULL, 0x0100000100010100ULL, 0x0100010100010100ULL,
+0x0101000100010000ULL, 0x0101010100010000ULL, 0x0101000100010100ULL, 0x0101010100010100ULL,
+0x0000000101000000ULL, 0x0000010101000000ULL, 0x0000000101000100ULL, 0x0000010101000100ULL,
+0x0001000101000000ULL, 0x0001010101000000ULL, 0x0001000101000100ULL, 0x0001010101000100ULL,
+0x0000000101010000ULL, 0x0000010101010000ULL, 0x0000000101010100ULL, 0x0000010101010100ULL,
+0x0001000101010000ULL, 0x0001010101010000ULL, 0x0001000101010100ULL, 0x0001010101010100ULL,
+0x0100000101000000ULL, 0x0100010101000000ULL, 0x0100000101000100ULL, 0x0100010101000100ULL,
+0x0101000101000000ULL, 0x0101010101000000ULL, 0x0101000101000100ULL, 0x0101010101000100ULL,
+0x0100000101010000ULL, 0x0100010101010000ULL, 0x0100000101010100ULL, 0x0100010101010100ULL,
+0x0101000101010000ULL, 0x0101010101010000ULL, 0x0101000101010100ULL, 0x0101010101010100ULL,
+0x0000000000000001ULL, 0x0000010000000001ULL, 0x0000000000000101ULL, 0x0000010000000101ULL,
+0x0001000000000001ULL, 0x0001010000000001ULL, 0x0001000000000101ULL, 0x0001010000000101ULL,
+0x0000000000010001ULL, 0x0000010000010001ULL, 0x0000000000010101ULL, 0x0000010000010101ULL,
+0x0001000000010001ULL, 0x0001010000010001ULL, 0x0001000000010101ULL, 0x0001010000010101ULL,
+0x0100000000000001ULL, 0x0100010000000001ULL, 0x0100000000000101ULL, 0x0100010000000101ULL,
+0x0101000000000001ULL, 0x0101010000000001ULL, 0x0101000000000101ULL, 0x0101010000000101ULL,
+0x0100000000010001ULL, 0x0100010000010001ULL, 0x0100000000010101ULL, 0x0100010000010101ULL,
+0x0101000000010001ULL, 0x0101010000010001ULL, 0x0101000000010101ULL, 0x0101010000010101ULL,
+0x0000000001000001ULL, 0x0000010001000001ULL, 0x0000000001000101ULL, 0x0000010001000101ULL,
+0x0001000001000001ULL, 0x0001010001000001ULL, 0x0001000001000101ULL, 0x0001010001000101ULL,
+0x0000000001010001ULL, 0x0000010001010001ULL, 0x0000000001010101ULL, 0x0000010001010101ULL,
+0x0001000001010001ULL, 0x0001010001010001ULL, 0x0001000001010101ULL, 0x0001010001010101ULL,
+0x0100000001000001ULL, 0x0100010001000001ULL, 0x0100000001000101ULL, 0x0100010001000101ULL,
+0x0101000001000001ULL, 0x0101010001000001ULL, 0x0101000001000101ULL, 0x0101010001000101ULL,
+0x0100000001010001ULL, 0x0100010001010001ULL, 0x0100000001010101ULL, 0x0100010001010101ULL,
+0x0101000001010001ULL, 0x0101010001010001ULL, 0x0101000001010101ULL, 0x0101010001010101ULL,
+0x0000000100000001ULL, 0x0000010100000001ULL, 0x0000000100000101ULL, 0x0000010100000101ULL,
+0x0001000100000001ULL, 0x0001010100000001ULL, 0x0001000100000101ULL, 0x0001010100000101ULL,
+0x0000000100010001ULL, 0x0000010100010001ULL, 0x0000000100010101ULL, 0x0000010100010101ULL,
+0x0001000100010001ULL, 0x0001010100010001ULL, 0x0001000100010101ULL, 0x0001010100010101ULL,
+0x0100000100000001ULL, 0x0100010100000001ULL, 0x0100000100000101ULL, 0x0100010100000101ULL,
+0x0101000100000001ULL, 0x0101010100000001ULL, 0x0101000100000101ULL, 0x0101010100000101ULL,
+0x0100000100010001ULL, 0x0100010100010001ULL, 0x0100000100010101ULL, 0x0100010100010101ULL,
+0x0101000100010001ULL, 0x0101010100010001ULL, 0x0101000100010101ULL, 0x0101010100010101ULL,
+0x0000000101000001ULL, 0x0000010101000001ULL, 0x0000000101000101ULL, 0x0000010101000101ULL,
+0x0001000101000001ULL, 0x0001010101000001ULL, 0x0001000101000101ULL, 0x0001010101000101ULL,
+0x0000000101010001ULL, 0x0000010101010001ULL, 0x0000000101010101ULL, 0x0000010101010101ULL,
+0x0001000101010001ULL, 0x0001010101010001ULL, 0x0001000101010101ULL, 0x0001010101010101ULL,
+0x0100000101000001ULL, 0x0100010101000001ULL, 0x0100000101000101ULL, 0x0100010101000101ULL,
+0x0101000101000001ULL, 0x0101010101000001ULL, 0x0101000101000101ULL, 0x0101010101000101ULL,
+0x0100000101010001ULL, 0x0100010101010001ULL, 0x0100000101010101ULL, 0x0100010101010101ULL,
+0x0101000101010001ULL, 0x0101010101010001ULL, 0x0101000101010101ULL, 0x0101010101010101ULL };
const u64bit DES::FPTAB1[256] = {
-0x0000000000000000, 0x0000000100000000, 0x0000000004000000, 0x0000000104000000,
-0x0000000000040000, 0x0000000100040000, 0x0000000004040000, 0x0000000104040000,
-0x0000000000000400, 0x0000000100000400, 0x0000000004000400, 0x0000000104000400,
-0x0000000000040400, 0x0000000100040400, 0x0000000004040400, 0x0000000104040400,
-0x0000000000000004, 0x0000000100000004, 0x0000000004000004, 0x0000000104000004,
-0x0000000000040004, 0x0000000100040004, 0x0000000004040004, 0x0000000104040004,
-0x0000000000000404, 0x0000000100000404, 0x0000000004000404, 0x0000000104000404,
-0x0000000000040404, 0x0000000100040404, 0x0000000004040404, 0x0000000104040404,
-0x0400000000000000, 0x0400000100000000, 0x0400000004000000, 0x0400000104000000,
-0x0400000000040000, 0x0400000100040000, 0x0400000004040000, 0x0400000104040000,
-0x0400000000000400, 0x0400000100000400, 0x0400000004000400, 0x0400000104000400,
-0x0400000000040400, 0x0400000100040400, 0x0400000004040400, 0x0400000104040400,
-0x0400000000000004, 0x0400000100000004, 0x0400000004000004, 0x0400000104000004,
-0x0400000000040004, 0x0400000100040004, 0x0400000004040004, 0x0400000104040004,
-0x0400000000000404, 0x0400000100000404, 0x0400000004000404, 0x0400000104000404,
-0x0400000000040404, 0x0400000100040404, 0x0400000004040404, 0x0400000104040404,
-0x0004000000000000, 0x0004000100000000, 0x0004000004000000, 0x0004000104000000,
-0x0004000000040000, 0x0004000100040000, 0x0004000004040000, 0x0004000104040000,
-0x0004000000000400, 0x0004000100000400, 0x0004000004000400, 0x0004000104000400,
-0x0004000000040400, 0x0004000100040400, 0x0004000004040400, 0x0004000104040400,
-0x0004000000000004, 0x0004000100000004, 0x0004000004000004, 0x0004000104000004,
-0x0004000000040004, 0x0004000100040004, 0x0004000004040004, 0x0004000104040004,
-0x0004000000000404, 0x0004000100000404, 0x0004000004000404, 0x0004000104000404,
-0x0004000000040404, 0x0004000100040404, 0x0004000004040404, 0x0004000104040404,
-0x0404000000000000, 0x0404000100000000, 0x0404000004000000, 0x0404000104000000,
-0x0404000000040000, 0x0404000100040000, 0x0404000004040000, 0x0404000104040000,
-0x0404000000000400, 0x0404000100000400, 0x0404000004000400, 0x0404000104000400,
-0x0404000000040400, 0x0404000100040400, 0x0404000004040400, 0x0404000104040400,
-0x0404000000000004, 0x0404000100000004, 0x0404000004000004, 0x0404000104000004,
-0x0404000000040004, 0x0404000100040004, 0x0404000004040004, 0x0404000104040004,
-0x0404000000000404, 0x0404000100000404, 0x0404000004000404, 0x0404000104000404,
-0x0404000000040404, 0x0404000100040404, 0x0404000004040404, 0x0404000104040404,
-0x0000040000000000, 0x0000040100000000, 0x0000040004000000, 0x0000040104000000,
-0x0000040000040000, 0x0000040100040000, 0x0000040004040000, 0x0000040104040000,
-0x0000040000000400, 0x0000040100000400, 0x0000040004000400, 0x0000040104000400,
-0x0000040000040400, 0x0000040100040400, 0x0000040004040400, 0x0000040104040400,
-0x0000040000000004, 0x0000040100000004, 0x0000040004000004, 0x0000040104000004,
-0x0000040000040004, 0x0000040100040004, 0x0000040004040004, 0x0000040104040004,
-0x0000040000000404, 0x0000040100000404, 0x0000040004000404, 0x0000040104000404,
-0x0000040000040404, 0x0000040100040404, 0x0000040004040404, 0x0000040104040404,
-0x0400040000000000, 0x0400040100000000, 0x0400040004000000, 0x0400040104000000,
-0x0400040000040000, 0x0400040100040000, 0x0400040004040000, 0x0400040104040000,
-0x0400040000000400, 0x0400040100000400, 0x0400040004000400, 0x0400040104000400,
-0x0400040000040400, 0x0400040100040400, 0x0400040004040400, 0x0400040104040400,
-0x0400040000000004, 0x0400040100000004, 0x0400040004000004, 0x0400040104000004,
-0x0400040000040004, 0x0400040100040004, 0x0400040004040004, 0x0400040104040004,
-0x0400040000000404, 0x0400040100000404, 0x0400040004000404, 0x0400040104000404,
-0x0400040000040404, 0x0400040100040404, 0x0400040004040404, 0x0400040104040404,
-0x0004040000000000, 0x0004040100000000, 0x0004040004000000, 0x0004040104000000,
-0x0004040000040000, 0x0004040100040000, 0x0004040004040000, 0x0004040104040000,
-0x0004040000000400, 0x0004040100000400, 0x0004040004000400, 0x0004040104000400,
-0x0004040000040400, 0x0004040100040400, 0x0004040004040400, 0x0004040104040400,
-0x0004040000000004, 0x0004040100000004, 0x0004040004000004, 0x0004040104000004,
-0x0004040000040004, 0x0004040100040004, 0x0004040004040004, 0x0004040104040004,
-0x0004040000000404, 0x0004040100000404, 0x0004040004000404, 0x0004040104000404,
-0x0004040000040404, 0x0004040100040404, 0x0004040004040404, 0x0004040104040404,
-0x0404040000000000, 0x0404040100000000, 0x0404040004000000, 0x0404040104000000,
-0x0404040000040000, 0x0404040100040000, 0x0404040004040000, 0x0404040104040000,
-0x0404040000000400, 0x0404040100000400, 0x0404040004000400, 0x0404040104000400,
-0x0404040000040400, 0x0404040100040400, 0x0404040004040400, 0x0404040104040400,
-0x0404040000000004, 0x0404040100000004, 0x0404040004000004, 0x0404040104000004,
-0x0404040000040004, 0x0404040100040004, 0x0404040004040004, 0x0404040104040004,
-0x0404040000000404, 0x0404040100000404, 0x0404040004000404, 0x0404040104000404,
-0x0404040000040404, 0x0404040100040404, 0x0404040004040404, 0x0404040104040404 };
+0x0000000000000000ULL, 0x0000000100000000ULL, 0x0000000004000000ULL, 0x0000000104000000ULL,
+0x0000000000040000ULL, 0x0000000100040000ULL, 0x0000000004040000ULL, 0x0000000104040000ULL,
+0x0000000000000400ULL, 0x0000000100000400ULL, 0x0000000004000400ULL, 0x0000000104000400ULL,
+0x0000000000040400ULL, 0x0000000100040400ULL, 0x0000000004040400ULL, 0x0000000104040400ULL,
+0x0000000000000004ULL, 0x0000000100000004ULL, 0x0000000004000004ULL, 0x0000000104000004ULL,
+0x0000000000040004ULL, 0x0000000100040004ULL, 0x0000000004040004ULL, 0x0000000104040004ULL,
+0x0000000000000404ULL, 0x0000000100000404ULL, 0x0000000004000404ULL, 0x0000000104000404ULL,
+0x0000000000040404ULL, 0x0000000100040404ULL, 0x0000000004040404ULL, 0x0000000104040404ULL,
+0x0400000000000000ULL, 0x0400000100000000ULL, 0x0400000004000000ULL, 0x0400000104000000ULL,
+0x0400000000040000ULL, 0x0400000100040000ULL, 0x0400000004040000ULL, 0x0400000104040000ULL,
+0x0400000000000400ULL, 0x0400000100000400ULL, 0x0400000004000400ULL, 0x0400000104000400ULL,
+0x0400000000040400ULL, 0x0400000100040400ULL, 0x0400000004040400ULL, 0x0400000104040400ULL,
+0x0400000000000004ULL, 0x0400000100000004ULL, 0x0400000004000004ULL, 0x0400000104000004ULL,
+0x0400000000040004ULL, 0x0400000100040004ULL, 0x0400000004040004ULL, 0x0400000104040004ULL,
+0x0400000000000404ULL, 0x0400000100000404ULL, 0x0400000004000404ULL, 0x0400000104000404ULL,
+0x0400000000040404ULL, 0x0400000100040404ULL, 0x0400000004040404ULL, 0x0400000104040404ULL,
+0x0004000000000000ULL, 0x0004000100000000ULL, 0x0004000004000000ULL, 0x0004000104000000ULL,
+0x0004000000040000ULL, 0x0004000100040000ULL, 0x0004000004040000ULL, 0x0004000104040000ULL,
+0x0004000000000400ULL, 0x0004000100000400ULL, 0x0004000004000400ULL, 0x0004000104000400ULL,
+0x0004000000040400ULL, 0x0004000100040400ULL, 0x0004000004040400ULL, 0x0004000104040400ULL,
+0x0004000000000004ULL, 0x0004000100000004ULL, 0x0004000004000004ULL, 0x0004000104000004ULL,
+0x0004000000040004ULL, 0x0004000100040004ULL, 0x0004000004040004ULL, 0x0004000104040004ULL,
+0x0004000000000404ULL, 0x0004000100000404ULL, 0x0004000004000404ULL, 0x0004000104000404ULL,
+0x0004000000040404ULL, 0x0004000100040404ULL, 0x0004000004040404ULL, 0x0004000104040404ULL,
+0x0404000000000000ULL, 0x0404000100000000ULL, 0x0404000004000000ULL, 0x0404000104000000ULL,
+0x0404000000040000ULL, 0x0404000100040000ULL, 0x0404000004040000ULL, 0x0404000104040000ULL,
+0x0404000000000400ULL, 0x0404000100000400ULL, 0x0404000004000400ULL, 0x0404000104000400ULL,
+0x0404000000040400ULL, 0x0404000100040400ULL, 0x0404000004040400ULL, 0x0404000104040400ULL,
+0x0404000000000004ULL, 0x0404000100000004ULL, 0x0404000004000004ULL, 0x0404000104000004ULL,
+0x0404000000040004ULL, 0x0404000100040004ULL, 0x0404000004040004ULL, 0x0404000104040004ULL,
+0x0404000000000404ULL, 0x0404000100000404ULL, 0x0404000004000404ULL, 0x0404000104000404ULL,
+0x0404000000040404ULL, 0x0404000100040404ULL, 0x0404000004040404ULL, 0x0404000104040404ULL,
+0x0000040000000000ULL, 0x0000040100000000ULL, 0x0000040004000000ULL, 0x0000040104000000ULL,
+0x0000040000040000ULL, 0x0000040100040000ULL, 0x0000040004040000ULL, 0x0000040104040000ULL,
+0x0000040000000400ULL, 0x0000040100000400ULL, 0x0000040004000400ULL, 0x0000040104000400ULL,
+0x0000040000040400ULL, 0x0000040100040400ULL, 0x0000040004040400ULL, 0x0000040104040400ULL,
+0x0000040000000004ULL, 0x0000040100000004ULL, 0x0000040004000004ULL, 0x0000040104000004ULL,
+0x0000040000040004ULL, 0x0000040100040004ULL, 0x0000040004040004ULL, 0x0000040104040004ULL,
+0x0000040000000404ULL, 0x0000040100000404ULL, 0x0000040004000404ULL, 0x0000040104000404ULL,
+0x0000040000040404ULL, 0x0000040100040404ULL, 0x0000040004040404ULL, 0x0000040104040404ULL,
+0x0400040000000000ULL, 0x0400040100000000ULL, 0x0400040004000000ULL, 0x0400040104000000ULL,
+0x0400040000040000ULL, 0x0400040100040000ULL, 0x0400040004040000ULL, 0x0400040104040000ULL,
+0x0400040000000400ULL, 0x0400040100000400ULL, 0x0400040004000400ULL, 0x0400040104000400ULL,
+0x0400040000040400ULL, 0x0400040100040400ULL, 0x0400040004040400ULL, 0x0400040104040400ULL,
+0x0400040000000004ULL, 0x0400040100000004ULL, 0x0400040004000004ULL, 0x0400040104000004ULL,
+0x0400040000040004ULL, 0x0400040100040004ULL, 0x0400040004040004ULL, 0x0400040104040004ULL,
+0x0400040000000404ULL, 0x0400040100000404ULL, 0x0400040004000404ULL, 0x0400040104000404ULL,
+0x0400040000040404ULL, 0x0400040100040404ULL, 0x0400040004040404ULL, 0x0400040104040404ULL,
+0x0004040000000000ULL, 0x0004040100000000ULL, 0x0004040004000000ULL, 0x0004040104000000ULL,
+0x0004040000040000ULL, 0x0004040100040000ULL, 0x0004040004040000ULL, 0x0004040104040000ULL,
+0x0004040000000400ULL, 0x0004040100000400ULL, 0x0004040004000400ULL, 0x0004040104000400ULL,
+0x0004040000040400ULL, 0x0004040100040400ULL, 0x0004040004040400ULL, 0x0004040104040400ULL,
+0x0004040000000004ULL, 0x0004040100000004ULL, 0x0004040004000004ULL, 0x0004040104000004ULL,
+0x0004040000040004ULL, 0x0004040100040004ULL, 0x0004040004040004ULL, 0x0004040104040004ULL,
+0x0004040000000404ULL, 0x0004040100000404ULL, 0x0004040004000404ULL, 0x0004040104000404ULL,
+0x0004040000040404ULL, 0x0004040100040404ULL, 0x0004040004040404ULL, 0x0004040104040404ULL,
+0x0404040000000000ULL, 0x0404040100000000ULL, 0x0404040004000000ULL, 0x0404040104000000ULL,
+0x0404040000040000ULL, 0x0404040100040000ULL, 0x0404040004040000ULL, 0x0404040104040000ULL,
+0x0404040000000400ULL, 0x0404040100000400ULL, 0x0404040004000400ULL, 0x0404040104000400ULL,
+0x0404040000040400ULL, 0x0404040100040400ULL, 0x0404040004040400ULL, 0x0404040104040400ULL,
+0x0404040000000004ULL, 0x0404040100000004ULL, 0x0404040004000004ULL, 0x0404040104000004ULL,
+0x0404040000040004ULL, 0x0404040100040004ULL, 0x0404040004040004ULL, 0x0404040104040004ULL,
+0x0404040000000404ULL, 0x0404040100000404ULL, 0x0404040004000404ULL, 0x0404040104000404ULL,
+0x0404040000040404ULL, 0x0404040100040404ULL, 0x0404040004040404ULL, 0x0404040104040404ULL };
const u64bit DES::FPTAB2[256] = {
-0x0000000000000000, 0x0000004000000000, 0x0000000001000000, 0x0000004001000000,
-0x0000000000010000, 0x0000004000010000, 0x0000000001010000, 0x0000004001010000,
-0x0000000000000100, 0x0000004000000100, 0x0000000001000100, 0x0000004001000100,
-0x0000000000010100, 0x0000004000010100, 0x0000000001010100, 0x0000004001010100,
-0x0000000000000001, 0x0000004000000001, 0x0000000001000001, 0x0000004001000001,
-0x0000000000010001, 0x0000004000010001, 0x0000000001010001, 0x0000004001010001,
-0x0000000000000101, 0x0000004000000101, 0x0000000001000101, 0x0000004001000101,
-0x0000000000010101, 0x0000004000010101, 0x0000000001010101, 0x0000004001010101,
-0x0100000000000000, 0x0100004000000000, 0x0100000001000000, 0x0100004001000000,
-0x0100000000010000, 0x0100004000010000, 0x0100000001010000, 0x0100004001010000,
-0x0100000000000100, 0x0100004000000100, 0x0100000001000100, 0x0100004001000100,
-0x0100000000010100, 0x0100004000010100, 0x0100000001010100, 0x0100004001010100,
-0x0100000000000001, 0x0100004000000001, 0x0100000001000001, 0x0100004001000001,
-0x0100000000010001, 0x0100004000010001, 0x0100000001010001, 0x0100004001010001,
-0x0100000000000101, 0x0100004000000101, 0x0100000001000101, 0x0100004001000101,
-0x0100000000010101, 0x0100004000010101, 0x0100000001010101, 0x0100004001010101,
-0x0001000000000000, 0x0001004000000000, 0x0001000001000000, 0x0001004001000000,
-0x0001000000010000, 0x0001004000010000, 0x0001000001010000, 0x0001004001010000,
-0x0001000000000100, 0x0001004000000100, 0x0001000001000100, 0x0001004001000100,
-0x0001000000010100, 0x0001004000010100, 0x0001000001010100, 0x0001004001010100,
-0x0001000000000001, 0x0001004000000001, 0x0001000001000001, 0x0001004001000001,
-0x0001000000010001, 0x0001004000010001, 0x0001000001010001, 0x0001004001010001,
-0x0001000000000101, 0x0001004000000101, 0x0001000001000101, 0x0001004001000101,
-0x0001000000010101, 0x0001004000010101, 0x0001000001010101, 0x0001004001010101,
-0x0101000000000000, 0x0101004000000000, 0x0101000001000000, 0x0101004001000000,
-0x0101000000010000, 0x0101004000010000, 0x0101000001010000, 0x0101004001010000,
-0x0101000000000100, 0x0101004000000100, 0x0101000001000100, 0x0101004001000100,
-0x0101000000010100, 0x0101004000010100, 0x0101000001010100, 0x0101004001010100,
-0x0101000000000001, 0x0101004000000001, 0x0101000001000001, 0x0101004001000001,
-0x0101000000010001, 0x0101004000010001, 0x0101000001010001, 0x0101004001010001,
-0x0101000000000101, 0x0101004000000101, 0x0101000001000101, 0x0101004001000101,
-0x0101000000010101, 0x0101004000010101, 0x0101000001010101, 0x0101004001010101,
-0x0000010000000000, 0x0000014000000000, 0x0000010001000000, 0x0000014001000000,
-0x0000010000010000, 0x0000014000010000, 0x0000010001010000, 0x0000014001010000,
-0x0000010000000100, 0x0000014000000100, 0x0000010001000100, 0x0000014001000100,
-0x0000010000010100, 0x0000014000010100, 0x0000010001010100, 0x0000014001010100,
-0x0000010000000001, 0x0000014000000001, 0x0000010001000001, 0x0000014001000001,
-0x0000010000010001, 0x0000014000010001, 0x0000010001010001, 0x0000014001010001,
-0x0000010000000101, 0x0000014000000101, 0x0000010001000101, 0x0000014001000101,
-0x0000010000010101, 0x0000014000010101, 0x0000010001010101, 0x0000014001010101,
-0x0100010000000000, 0x0100014000000000, 0x0100010001000000, 0x0100014001000000,
-0x0100010000010000, 0x0100014000010000, 0x0100010001010000, 0x0100014001010000,
-0x0100010000000100, 0x0100014000000100, 0x0100010001000100, 0x0100014001000100,
-0x0100010000010100, 0x0100014000010100, 0x0100010001010100, 0x0100014001010100,
-0x0100010000000001, 0x0100014000000001, 0x0100010001000001, 0x0100014001000001,
-0x0100010000010001, 0x0100014000010001, 0x0100010001010001, 0x0100014001010001,
-0x0100010000000101, 0x0100014000000101, 0x0100010001000101, 0x0100014001000101,
-0x0100010000010101, 0x0100014000010101, 0x0100010001010101, 0x0100014001010101,
-0x0001010000000000, 0x0001014000000000, 0x0001010001000000, 0x0001014001000000,
-0x0001010000010000, 0x0001014000010000, 0x0001010001010000, 0x0001014001010000,
-0x0001010000000100, 0x0001014000000100, 0x0001010001000100, 0x0001014001000100,
-0x0001010000010100, 0x0001014000010100, 0x0001010001010100, 0x0001014001010100,
-0x0001010000000001, 0x0001014000000001, 0x0001010001000001, 0x0001014001000001,
-0x0001010000010001, 0x0001014000010001, 0x0001010001010001, 0x0001014001010001,
-0x0001010000000101, 0x0001014000000101, 0x0001010001000101, 0x0001014001000101,
-0x0001010000010101, 0x0001014000010101, 0x0001010001010101, 0x0001014001010101,
-0x0101010000000000, 0x0101014000000000, 0x0101010001000000, 0x0101014001000000,
-0x0101010000010000, 0x0101014000010000, 0x0101010001010000, 0x0101014001010000,
-0x0101010000000100, 0x0101014000000100, 0x0101010001000100, 0x0101014001000100,
-0x0101010000010100, 0x0101014000010100, 0x0101010001010100, 0x0101014001010100,
-0x0101010000000001, 0x0101014000000001, 0x0101010001000001, 0x0101014001000001,
-0x0101010000010001, 0x0101014000010001, 0x0101010001010001, 0x0101014001010001,
-0x0101010000000101, 0x0101014000000101, 0x0101010001000101, 0x0101014001000101,
-0x0101010000010101, 0x0101014000010101, 0x0101010001010101, 0x0101014001010101 };
+0x0000000000000000ULL, 0x0000004000000000ULL, 0x0000000001000000ULL, 0x0000004001000000ULL,
+0x0000000000010000ULL, 0x0000004000010000ULL, 0x0000000001010000ULL, 0x0000004001010000ULL,
+0x0000000000000100ULL, 0x0000004000000100ULL, 0x0000000001000100ULL, 0x0000004001000100ULL,
+0x0000000000010100ULL, 0x0000004000010100ULL, 0x0000000001010100ULL, 0x0000004001010100ULL,
+0x0000000000000001ULL, 0x0000004000000001ULL, 0x0000000001000001ULL, 0x0000004001000001ULL,
+0x0000000000010001ULL, 0x0000004000010001ULL, 0x0000000001010001ULL, 0x0000004001010001ULL,
+0x0000000000000101ULL, 0x0000004000000101ULL, 0x0000000001000101ULL, 0x0000004001000101ULL,
+0x0000000000010101ULL, 0x0000004000010101ULL, 0x0000000001010101ULL, 0x0000004001010101ULL,
+0x0100000000000000ULL, 0x0100004000000000ULL, 0x0100000001000000ULL, 0x0100004001000000ULL,
+0x0100000000010000ULL, 0x0100004000010000ULL, 0x0100000001010000ULL, 0x0100004001010000ULL,
+0x0100000000000100ULL, 0x0100004000000100ULL, 0x0100000001000100ULL, 0x0100004001000100ULL,
+0x0100000000010100ULL, 0x0100004000010100ULL, 0x0100000001010100ULL, 0x0100004001010100ULL,
+0x0100000000000001ULL, 0x0100004000000001ULL, 0x0100000001000001ULL, 0x0100004001000001ULL,
+0x0100000000010001ULL, 0x0100004000010001ULL, 0x0100000001010001ULL, 0x0100004001010001ULL,
+0x0100000000000101ULL, 0x0100004000000101ULL, 0x0100000001000101ULL, 0x0100004001000101ULL,
+0x0100000000010101ULL, 0x0100004000010101ULL, 0x0100000001010101ULL, 0x0100004001010101ULL,
+0x0001000000000000ULL, 0x0001004000000000ULL, 0x0001000001000000ULL, 0x0001004001000000ULL,
+0x0001000000010000ULL, 0x0001004000010000ULL, 0x0001000001010000ULL, 0x0001004001010000ULL,
+0x0001000000000100ULL, 0x0001004000000100ULL, 0x0001000001000100ULL, 0x0001004001000100ULL,
+0x0001000000010100ULL, 0x0001004000010100ULL, 0x0001000001010100ULL, 0x0001004001010100ULL,
+0x0001000000000001ULL, 0x0001004000000001ULL, 0x0001000001000001ULL, 0x0001004001000001ULL,
+0x0001000000010001ULL, 0x0001004000010001ULL, 0x0001000001010001ULL, 0x0001004001010001ULL,
+0x0001000000000101ULL, 0x0001004000000101ULL, 0x0001000001000101ULL, 0x0001004001000101ULL,
+0x0001000000010101ULL, 0x0001004000010101ULL, 0x0001000001010101ULL, 0x0001004001010101ULL,
+0x0101000000000000ULL, 0x0101004000000000ULL, 0x0101000001000000ULL, 0x0101004001000000ULL,
+0x0101000000010000ULL, 0x0101004000010000ULL, 0x0101000001010000ULL, 0x0101004001010000ULL,
+0x0101000000000100ULL, 0x0101004000000100ULL, 0x0101000001000100ULL, 0x0101004001000100ULL,
+0x0101000000010100ULL, 0x0101004000010100ULL, 0x0101000001010100ULL, 0x0101004001010100ULL,
+0x0101000000000001ULL, 0x0101004000000001ULL, 0x0101000001000001ULL, 0x0101004001000001ULL,
+0x0101000000010001ULL, 0x0101004000010001ULL, 0x0101000001010001ULL, 0x0101004001010001ULL,
+0x0101000000000101ULL, 0x0101004000000101ULL, 0x0101000001000101ULL, 0x0101004001000101ULL,
+0x0101000000010101ULL, 0x0101004000010101ULL, 0x0101000001010101ULL, 0x0101004001010101ULL,
+0x0000010000000000ULL, 0x0000014000000000ULL, 0x0000010001000000ULL, 0x0000014001000000ULL,
+0x0000010000010000ULL, 0x0000014000010000ULL, 0x0000010001010000ULL, 0x0000014001010000ULL,
+0x0000010000000100ULL, 0x0000014000000100ULL, 0x0000010001000100ULL, 0x0000014001000100ULL,
+0x0000010000010100ULL, 0x0000014000010100ULL, 0x0000010001010100ULL, 0x0000014001010100ULL,
+0x0000010000000001ULL, 0x0000014000000001ULL, 0x0000010001000001ULL, 0x0000014001000001ULL,
+0x0000010000010001ULL, 0x0000014000010001ULL, 0x0000010001010001ULL, 0x0000014001010001ULL,
+0x0000010000000101ULL, 0x0000014000000101ULL, 0x0000010001000101ULL, 0x0000014001000101ULL,
+0x0000010000010101ULL, 0x0000014000010101ULL, 0x0000010001010101ULL, 0x0000014001010101ULL,
+0x0100010000000000ULL, 0x0100014000000000ULL, 0x0100010001000000ULL, 0x0100014001000000ULL,
+0x0100010000010000ULL, 0x0100014000010000ULL, 0x0100010001010000ULL, 0x0100014001010000ULL,
+0x0100010000000100ULL, 0x0100014000000100ULL, 0x0100010001000100ULL, 0x0100014001000100ULL,
+0x0100010000010100ULL, 0x0100014000010100ULL, 0x0100010001010100ULL, 0x0100014001010100ULL,
+0x0100010000000001ULL, 0x0100014000000001ULL, 0x0100010001000001ULL, 0x0100014001000001ULL,
+0x0100010000010001ULL, 0x0100014000010001ULL, 0x0100010001010001ULL, 0x0100014001010001ULL,
+0x0100010000000101ULL, 0x0100014000000101ULL, 0x0100010001000101ULL, 0x0100014001000101ULL,
+0x0100010000010101ULL, 0x0100014000010101ULL, 0x0100010001010101ULL, 0x0100014001010101ULL,
+0x0001010000000000ULL, 0x0001014000000000ULL, 0x0001010001000000ULL, 0x0001014001000000ULL,
+0x0001010000010000ULL, 0x0001014000010000ULL, 0x0001010001010000ULL, 0x0001014001010000ULL,
+0x0001010000000100ULL, 0x0001014000000100ULL, 0x0001010001000100ULL, 0x0001014001000100ULL,
+0x0001010000010100ULL, 0x0001014000010100ULL, 0x0001010001010100ULL, 0x0001014001010100ULL,
+0x0001010000000001ULL, 0x0001014000000001ULL, 0x0001010001000001ULL, 0x0001014001000001ULL,
+0x0001010000010001ULL, 0x0001014000010001ULL, 0x0001010001010001ULL, 0x0001014001010001ULL,
+0x0001010000000101ULL, 0x0001014000000101ULL, 0x0001010001000101ULL, 0x0001014001000101ULL,
+0x0001010000010101ULL, 0x0001014000010101ULL, 0x0001010001010101ULL, 0x0001014001010101ULL,
+0x0101010000000000ULL, 0x0101014000000000ULL, 0x0101010001000000ULL, 0x0101014001000000ULL,
+0x0101010000010000ULL, 0x0101014000010000ULL, 0x0101010001010000ULL, 0x0101014001010000ULL,
+0x0101010000000100ULL, 0x0101014000000100ULL, 0x0101010001000100ULL, 0x0101014001000100ULL,
+0x0101010000010100ULL, 0x0101014000010100ULL, 0x0101010001010100ULL, 0x0101014001010100ULL,
+0x0101010000000001ULL, 0x0101014000000001ULL, 0x0101010001000001ULL, 0x0101014001000001ULL,
+0x0101010000010001ULL, 0x0101014000010001ULL, 0x0101010001010001ULL, 0x0101014001010001ULL,
+0x0101010000000101ULL, 0x0101014000000101ULL, 0x0101010001000101ULL, 0x0101014001000101ULL,
+0x0101010000010101ULL, 0x0101014000010101ULL, 0x0101010001010101ULL, 0x0101014001010101ULL };
}
============================================================
--- src/pk_algs.cpp df698f44c744b7d08e4609f006b434ccd8ddb906
+++ pk_algs.cpp 4eaf5dca76443211e7486ca651ae5521d7cb7181
@@ -5,25 +5,15 @@
#include <botan/pk_algs.h>
#include <botan/rsa.h>
-#include <botan/dsa.h>
-#include <botan/dh.h>
-#include <botan/nr.h>
-#include <botan/rw.h>
-#include <botan/elgamal.h>
namespace Botan {
/*************************************************
* Get an PK public key object *
*************************************************/
-Public_Key* get_public_key(const std::string& alg_name)
+X509_PublicKey* get_public_key(const std::string& alg_name)
{
if(alg_name == "RSA") return new RSA_PublicKey;
- else if(alg_name == "DSA") return new DSA_PublicKey;
- else if(alg_name == "DH") return new DH_PublicKey;
- else if(alg_name == "NR") return new NR_PublicKey;
- else if(alg_name == "RW") return new RW_PublicKey;
- else if(alg_name == "ELG") return new ElGamal_PublicKey;
else
return 0;
}
@@ -31,14 +21,9 @@ Public_Key* get_public_key(const std::st
/*************************************************
* Get an PK private key object *
*************************************************/
-Private_Key* get_private_key(const std::string& alg_name)
+PKCS8_PrivateKey* get_private_key(const std::string& alg_name)
{
if(alg_name == "RSA") return new RSA_PrivateKey;
- else if(alg_name == "DSA") return new DSA_PrivateKey;
- else if(alg_name == "DH") return new DH_PrivateKey;
- else if(alg_name == "NR") return new NR_PrivateKey;
- else if(alg_name == "RW") return new RW_PrivateKey;
- else if(alg_name == "ELG") return new ElGamal_PrivateKey;
else
return 0;
}
============================================================
--- src/primes.cpp 6c516774fc02486d4bfff271cb1755efad9b4686
+++ primes.cpp b6bc7dbb320ff24cdf16689cb57361551d6bc693
@@ -605,69 +605,69 @@ const u64bit PRIME_PRODUCTS[PRIME_PRODUC
65437, 65447, 65449, 65479, 65497, 65519, 65521, 0 };
const u64bit PRIME_PRODUCTS[PRIME_PRODUCTS_TABLE_SIZE] = {
-0xE221F97C30E94E1D, 0xE5B65ED6608B952D, 0xF4521CE5D3CA44EF, 0xF3EF021E44A7EEC3,
-0xF330D66E4349E591, 0x6F6B8463BEE90825, 0xD41D1350609EC855, 0x28681D7AA3190143,
-0x2FA51D379842A4AF, 0x84AE694AFD8B0547, 0xC7AC609EF16A407B, 0xCA376556426DE0FD,
-0x466324A8372A45D5, 0xAD7D2FB14BF7DC0B, 0x7BCD9BF6C6C26323, 0x74709A2A2637FA55,
-0x1D640B8FE0CA4311, 0xC93804EEC683CB2D, 0xB10594307EA0B7AD, 0xDE0244E8F6D2DC17,
-0x61DE0343443ED4C5, 0xCF8D577CE72384BB, 0x217168EC6F4A928B, 0xF5446BCD87F96E6B,
-0xF7E12D023D06E73D, 0x457CBC7E43B62C3F, 0x5AE2F68DB28800BF, 0x7500EDA80A9C8EA7,
-0x8DBC07E86DC4A37F, 0x9E40BF0300CA232D, 0xC0A9D8342259FCD1, 0xDFE8B5D19367A1C5,
-0xFBC11439E02B209D, 0xDA0AC1EC9E251F43, 0xAB4E5F28D129622F, 0xEBF5FBCBF5587CBD,
-0xE26B31744B05DC9D, 0xE1580FBB4592700B, 0x6539F95C9D74F439, 0xB185EF6E9070A559,
-0x699ECA919029B14B, 0xEBBFC2CC1B0DEE0F, 0x8E19279CEAF709FB, 0xFA3F354C954330EF,
-0xAE9362C721216DEF, 0xF44253878D02F03D, 0xC2D98B01DFE4F3A9, 0xE4A3E0F9407ED71F,
-0xAE2E9D8F67A52865, 0xF7DEE3EE2D340885, 0xCC1D2DEA66C3C841, 0xA827E8CE4BF5EB07,
-0xDF26E6009081BE79, 0x1969811A2B7A6A93, 0x88D31B077DEEB8A3, 0xA15E37A8F401B5C1,
-0xB27BF45E6508617B, 0xE23D5CA287D9A531, 0xD33CEF8D08A70D3F, 0xF26E164CB7B477D5,
-0xF070DAE24D8CEDA9, 0x4F580C6048999F4D, 0xFBC528EEE00D6CFB, 0xE47E34CA3E3EAC63,
-0xE2421086C3D09FE5, 0xC35091E86806D213, 0x1F29F3BD0BE9FAB3, 0xFA21995FB84F5A83,
-0xBBF6D8395F7047C7, 0xBC28039A69726205, 0xF0324199A11B5D45, 0x969FA74E537EBE09,
-0xA474F6C127403A9D, 0xEBB6153629ECDEA7, 0xC96E2D7B65D2277B, 0xD2B89C851CD9291F,
-0xEABE76C706F0C3E5, 0xB997188EA5B710D3, 0xB5B20274A0DABB6F, 0x89D99F7F39AB2B9B,
-0x138C3AC887043CCD, 0xC6D3E2761D16233F, 0x507C4D00D6B6027F, 0xBF363571906180F3,
-0x89FEA18355BD571D, 0xF55905D2F8949905, 0x65F170475F041C6F, 0x94C6E638460936A1,
-0x809F449762D125EF, 0xAC4BC4C3547A71E1, 0xF9315948183BDBC5, 0xC383E883DEA0349B,
-0xBC33CFE86CA38435, 0xC413C74E3F6F847B, 0xE25488813C3CE121, 0xFD33CDA8A0333BEF,
-0xEDCCA470B26DA57F, 0x383533808BD74477, 0x3AC02A15FC89C54D, 0x3E12CC83606624F3,
-0xAB899B62C0938D01, 0x429DC254C5490571, 0xF5554C6D540DB6A9, 0xFE3F5CCCBAFFDC95,
-0xF20E8ABC0340C14F, 0xBD633919AA5AB02F, 0x532A1FA4D0775045, 0x9F3F943B5D1E6679,
-0xA14E33555E99605D, 0xC48A6E1EC3CF4793, 0xD00AC683F6B64DB9, 0xB7316C602F3F2DDB,
-0xABF8EF8B5CABB03D, 0xFFCAA72EE6539255, 0xC1CB903C8D764FB7, 0x80300B3B06A6F3F3,
-0xC7471C73A380A4AF, 0x892E6D86008F82E3, 0x8D040C52D7C6AB79, 0xD35DE032B89A6907,
-0xD1CD5A93959C1185, 0xB87C36644FB9B3B7, 0xA827E6B6DE68593F, 0xAC16DC9E966EA68F,
-0xB3E87100AC54DE6D, 0xB98014BDAE7021B1, 0xBE350E0F484524D1, 0xC6172BCEA3A11C9B,
-0xCC01BFD8F5EE2EC3, 0xD1B284C91EED248B, 0xFDFF2DE1B95F5687, 0xE21A13779E0CCDC7,
-0xE68E732A2ABED62F, 0xEC8F38C8B28E0493, 0xF52BDF080F7ABA6F, 0xFF40ECA3CCA22CE5,
-0x215D0693AD933EB1, 0xBE2B9B2F8ECD578D, 0x843F6BF5D2BBF979, 0xCACD47144DAADA59,
-0xF19D26474F170045, 0x7A6BA19CE2FBBCD9, 0x525620BB14320123, 0xEBABCCACEACE2A81,
-0xDAD688DAC863D2F3, 0x70CF888F6F02D4BB, 0xD3EBE9A16C01996F, 0xED449526CBEBE513,
-0x991DD50C7F17A1B7, 0xD1F37E54FC6589EF, 0xB1B72FDE0EA34AFF, 0xBF1D75BDDED44FD1,
-0xD101DC5EAA25201B, 0xDF60F18616AD8EFB, 0xED74888F36648FBB, 0xFD5051BD895D6539,
-0xCCEBE44FA3E6B1BD, 0xD52A16F9E33265CB, 0xEDD3384401AD1267, 0xF3CC98549791076F,
-0x6EF7899720A0A93B, 0x7DB9EF3F5256F38F, 0x9273910ABDE6E503, 0xA3B446CA98554091,
-0xB13C2BDE8958E05D, 0xBEFA82CB25F97AF1, 0xCDC1FE0211DF150F, 0xE32387464B225385,
-0xF154C4C2CA8EABF9, 0xCF4E11D8E56F6957, 0xF7BBB96118B42F15, 0x535138221347C85D,
-0x4FFC85B96C562A71, 0x6C6FD444704EE9A9, 0x81319E967E1AABB3, 0x948BE6486434303B,
-0xAADD17A4C60E2449, 0xD619D14A9A0B5FBD, 0xE2FB3F507D8C64B5, 0xFCFCE80D5BB997DF,
-0xB08106E9D93A99AD, 0x238E12AE75BF1861, 0xE0F83D2ED5DC8AC3, 0x681FF3CFE90D481B,
-0x805517DDD3E296E7, 0x9BDBC365E2E9E57F, 0xBAE52C39C9082107, 0xF09928EC4A4C1503,
-0xF26340D17F990C75, 0x97299F4F32B7DB6B, 0xC6E38417C7E30011, 0xF582B6E0E6B7830F,
-0xD0D046F74D1ED633, 0xBEE06A041F778E5D, 0xDBE53BF49C3CF227, 0xF9F4E4C91D1537F1,
-0xA838BFF645C41F0F, 0x458809A605C2264B, 0x62C07D00B5C7B939, 0x8F303208051AF4EF,
-0xCE366281B21E7AFD, 0xE750611EA0BE8B55, 0xAACF9921F54349DD, 0xB9499C919BEDEB2D,
-0x8B5E2D6A7C0FED8D, 0xB31C12531D85C86B, 0xE2F81DD567C198ED, 0xFCBF50872C7A85B7,
-0xA7C97479B562C749, 0xDBBB14BBF9B4AC85, 0xC69D26F25DEA581D, 0xFA3CC64F8D79398D,
-0x8703AEE0630C7FEF, 0xB272C207BD08D637, 0xC50A96A2C6C59C23, 0xFB6694D346303AB1,
-0x93F2BA15512C7BE9, 0x7ED5EB28F50A553F, 0xB9BB9C7AA9343BD3, 0xE711EA83362E3FEB,
-0xC417BB9B3F863C89, 0x96A88B47EE3AAB49, 0xDF3ED601F5DCCE23, 0xB211874BB8720877,
-0x6F3E9B69CB1BDCDB, 0x9B295CC8FEBC20D5, 0xE56F23F76A71387F, 0xEA78F5BB0CD1565F,
-0xA4A428E418FD2B17, 0xDEEF3C10065A26E1, 0x2D1E8F5735933B8D, 0xF362A62EB7E3B551,
-0xF62327AE7D4E70A5, 0x28B86F69D6FCA5B5, 0x87C63FAA3E25406B, 0xD659246185DA101D,
-0xC10B2CF6559274B7, 0x727BF31FFF9B208B, 0xEA55235C4B98064D, 0xFBCD0B3F56EABA75,
-0xFB0D12857E554175, 0xECC6FD2C8F45CC2F, 0xFAE200BB2687381B, 0x7C0001DFD91FDB5B,
-0xDEE61AC82000895B, 0x9536C4399D4F3FB7, 0xA8F1E698E4A3297F, 0xFA61F6759A6CEE8F,
-0xCBAE83BF32730B03, 0xDC7C6D1FB9E1633B, 0xF12CAF2A95AA8807, 0xDF9CC7A9C8FFEF4D,
-0xD0744F8438C2E907, 0xB0DA65AB5BB20619, 0x1C0C79A379CFBF8D, 0x93AC2BC1F9EC0E29 };
+0xE221F97C30E94E1DULL, 0xE5B65ED6608B952DULL, 0xF4521CE5D3CA44EFULL, 0xF3EF021E44A7EEC3ULL,
+0xF330D66E4349E591ULL, 0x6F6B8463BEE90825ULL, 0xD41D1350609EC855ULL, 0x28681D7AA3190143ULL,
+0x2FA51D379842A4AFULL, 0x84AE694AFD8B0547ULL, 0xC7AC609EF16A407BULL, 0xCA376556426DE0FDULL,
+0x466324A8372A45D5ULL, 0xAD7D2FB14BF7DC0BULL, 0x7BCD9BF6C6C26323ULL, 0x74709A2A2637FA55ULL,
+0x1D640B8FE0CA4311ULL, 0xC93804EEC683CB2DULL, 0xB10594307EA0B7ADULL, 0xDE0244E8F6D2DC17ULL,
+0x61DE0343443ED4C5ULL, 0xCF8D577CE72384BBULL, 0x217168EC6F4A928BULL, 0xF5446BCD87F96E6BULL,
+0xF7E12D023D06E73DULL, 0x457CBC7E43B62C3FULL, 0x5AE2F68DB28800BFULL, 0x7500EDA80A9C8EA7ULL,
+0x8DBC07E86DC4A37FULL, 0x9E40BF0300CA232DULL, 0xC0A9D8342259FCD1ULL, 0xDFE8B5D19367A1C5ULL,
+0xFBC11439E02B209DULL, 0xDA0AC1EC9E251F43ULL, 0xAB4E5F28D129622FULL, 0xEBF5FBCBF5587CBDULL,
+0xE26B31744B05DC9DULL, 0xE1580FBB4592700BULL, 0x6539F95C9D74F439ULL, 0xB185EF6E9070A559ULL,
+0x699ECA919029B14BULL, 0xEBBFC2CC1B0DEE0FULL, 0x8E19279CEAF709FBULL, 0xFA3F354C954330EFULL,
+0xAE9362C721216DEFULL, 0xF44253878D02F03DULL, 0xC2D98B01DFE4F3A9ULL, 0xE4A3E0F9407ED71FULL,
+0xAE2E9D8F67A52865ULL, 0xF7DEE3EE2D340885ULL, 0xCC1D2DEA66C3C841ULL, 0xA827E8CE4BF5EB07ULL,
+0xDF26E6009081BE79ULL, 0x1969811A2B7A6A93ULL, 0x88D31B077DEEB8A3ULL, 0xA15E37A8F401B5C1ULL,
+0xB27BF45E6508617BULL, 0xE23D5CA287D9A531ULL, 0xD33CEF8D08A70D3FULL, 0xF26E164CB7B477D5ULL,
+0xF070DAE24D8CEDA9ULL, 0x4F580C6048999F4DULL, 0xFBC528EEE00D6CFBULL, 0xE47E34CA3E3EAC63ULL,
+0xE2421086C3D09FE5ULL, 0xC35091E86806D213ULL, 0x1F29F3BD0BE9FAB3ULL, 0xFA21995FB84F5A83ULL,
+0xBBF6D8395F7047C7ULL, 0xBC28039A69726205ULL, 0xF0324199A11B5D45ULL, 0x969FA74E537EBE09ULL,
+0xA474F6C127403A9DULL, 0xEBB6153629ECDEA7ULL, 0xC96E2D7B65D2277BULL, 0xD2B89C851CD9291FULL,
+0xEABE76C706F0C3E5ULL, 0xB997188EA5B710D3ULL, 0xB5B20274A0DABB6FULL, 0x89D99F7F39AB2B9BULL,
+0x138C3AC887043CCDULL, 0xC6D3E2761D16233FULL, 0x507C4D00D6B6027FULL, 0xBF363571906180F3ULL,
+0x89FEA18355BD571DULL, 0xF55905D2F8949905ULL, 0x65F170475F041C6FULL, 0x94C6E638460936A1ULL,
+0x809F449762D125EFULL, 0xAC4BC4C3547A71E1ULL, 0xF9315948183BDBC5ULL, 0xC383E883DEA0349BULL,
+0xBC33CFE86CA38435ULL, 0xC413C74E3F6F847BULL, 0xE25488813C3CE121ULL, 0xFD33CDA8A0333BEFULL,
+0xEDCCA470B26DA57FULL, 0x383533808BD74477ULL, 0x3AC02A15FC89C54DULL, 0x3E12CC83606624F3ULL,
+0xAB899B62C0938D01ULL, 0x429DC254C5490571ULL, 0xF5554C6D540DB6A9ULL, 0xFE3F5CCCBAFFDC95ULL,
+0xF20E8ABC0340C14FULL, 0xBD633919AA5AB02FULL, 0x532A1FA4D0775045ULL, 0x9F3F943B5D1E6679ULL,
+0xA14E33555E99605DULL, 0xC48A6E1EC3CF4793ULL, 0xD00AC683F6B64DB9ULL, 0xB7316C602F3F2DDBULL,
+0xABF8EF8B5CABB03DULL, 0xFFCAA72EE6539255ULL, 0xC1CB903C8D764FB7ULL, 0x80300B3B06A6F3F3ULL,
+0xC7471C73A380A4AFULL, 0x892E6D86008F82E3ULL, 0x8D040C52D7C6AB79ULL, 0xD35DE032B89A6907ULL,
+0xD1CD5A93959C1185ULL, 0xB87C36644FB9B3B7ULL, 0xA827E6B6DE68593FULL, 0xAC16DC9E966EA68FULL,
+0xB3E87100AC54DE6DULL, 0xB98014BDAE7021B1ULL, 0xBE350E0F484524D1ULL, 0xC6172BCEA3A11C9BULL,
+0xCC01BFD8F5EE2EC3ULL, 0xD1B284C91EED248BULL, 0xFDFF2DE1B95F5687ULL, 0xE21A13779E0CCDC7ULL,
+0xE68E732A2ABED62FULL, 0xEC8F38C8B28E0493ULL, 0xF52BDF080F7ABA6FULL, 0xFF40ECA3CCA22CE5ULL,
+0x215D0693AD933EB1ULL, 0xBE2B9B2F8ECD578DULL, 0x843F6BF5D2BBF979ULL, 0xCACD47144DAADA59ULL,
+0xF19D26474F170045ULL, 0x7A6BA19CE2FBBCD9ULL, 0x525620BB14320123ULL, 0xEBABCCACEACE2A81ULL,
+0xDAD688DAC863D2F3ULL, 0x70CF888F6F02D4BBULL, 0xD3EBE9A16C01996FULL, 0xED449526CBEBE513ULL,
+0x991DD50C7F17A1B7ULL, 0xD1F37E54FC6589EFULL, 0xB1B72FDE0EA34AFFULL, 0xBF1D75BDDED44FD1ULL,
+0xD101DC5EAA25201BULL, 0xDF60F18616AD8EFBULL, 0xED74888F36648FBBULL, 0xFD5051BD895D6539ULL,
+0xCCEBE44FA3E6B1BDULL, 0xD52A16F9E33265CBULL, 0xEDD3384401AD1267ULL, 0xF3CC98549791076FULL,
+0x6EF7899720A0A93BULL, 0x7DB9EF3F5256F38FULL, 0x9273910ABDE6E503ULL, 0xA3B446CA98554091ULL,
+0xB13C2BDE8958E05DULL, 0xBEFA82CB25F97AF1ULL, 0xCDC1FE0211DF150FULL, 0xE32387464B225385ULL,
+0xF154C4C2CA8EABF9ULL, 0xCF4E11D8E56F6957ULL, 0xF7BBB96118B42F15ULL, 0x535138221347C85DULL,
+0x4FFC85B96C562A71ULL, 0x6C6FD444704EE9A9ULL, 0x81319E967E1AABB3ULL, 0x948BE6486434303BULL,
+0xAADD17A4C60E2449ULL, 0xD619D14A9A0B5FBDULL, 0xE2FB3F507D8C64B5ULL, 0xFCFCE80D5BB997DFULL,
+0xB08106E9D93A99ADULL, 0x238E12AE75BF1861ULL, 0xE0F83D2ED5DC8AC3ULL, 0x681FF3CFE90D481BULL,
+0x805517DDD3E296E7ULL, 0x9BDBC365E2E9E57FULL, 0xBAE52C39C9082107ULL, 0xF09928EC4A4C1503ULL,
+0xF26340D17F990C75ULL, 0x97299F4F32B7DB6BULL, 0xC6E38417C7E30011ULL, 0xF582B6E0E6B7830FULL,
+0xD0D046F74D1ED633ULL, 0xBEE06A041F778E5DULL, 0xDBE53BF49C3CF227ULL, 0xF9F4E4C91D1537F1ULL,
+0xA838BFF645C41F0FULL, 0x458809A605C2264BULL, 0x62C07D00B5C7B939ULL, 0x8F303208051AF4EFULL,
+0xCE366281B21E7AFDULL, 0xE750611EA0BE8B55ULL, 0xAACF9921F54349DDULL, 0xB9499C919BEDEB2DULL,
+0x8B5E2D6A7C0FED8DULL, 0xB31C12531D85C86BULL, 0xE2F81DD567C198EDULL, 0xFCBF50872C7A85B7ULL,
+0xA7C97479B562C749ULL, 0xDBBB14BBF9B4AC85ULL, 0xC69D26F25DEA581DULL, 0xFA3CC64F8D79398DULL,
+0x8703AEE0630C7FEFULL, 0xB272C207BD08D637ULL, 0xC50A96A2C6C59C23ULL, 0xFB6694D346303AB1ULL,
+0x93F2BA15512C7BE9ULL, 0x7ED5EB28F50A553FULL, 0xB9BB9C7AA9343BD3ULL, 0xE711EA83362E3FEBULL,
+0xC417BB9B3F863C89ULL, 0x96A88B47EE3AAB49ULL, 0xDF3ED601F5DCCE23ULL, 0xB211874BB8720877ULL,
+0x6F3E9B69CB1BDCDBULL, 0x9B295CC8FEBC20D5ULL, 0xE56F23F76A71387FULL, 0xEA78F5BB0CD1565FULL,
+0xA4A428E418FD2B17ULL, 0xDEEF3C10065A26E1ULL, 0x2D1E8F5735933B8DULL, 0xF362A62EB7E3B551ULL,
+0xF62327AE7D4E70A5ULL, 0x28B86F69D6FCA5B5ULL, 0x87C63FAA3E25406BULL, 0xD659246185DA101DULL,
+0xC10B2CF6559274B7ULL, 0x727BF31FFF9B208BULL, 0xEA55235C4B98064DULL, 0xFBCD0B3F56EABA75ULL,
+0xFB0D12857E554175ULL, 0xECC6FD2C8F45CC2FULL, 0xFAE200BB2687381BULL, 0x7C0001DFD91FDB5BULL,
+0xDEE61AC82000895BULL, 0x9536C4399D4F3FB7ULL, 0xA8F1E698E4A3297FULL, 0xFA61F6759A6CEE8FULL,
+0xCBAE83BF32730B03ULL, 0xDC7C6D1FB9E1633BULL, 0xF12CAF2A95AA8807ULL, 0xDF9CC7A9C8FFEF4DULL,
+0xD0744F8438C2E907ULL, 0xB0DA65AB5BB20619ULL, 0x1C0C79A379CFBF8DULL, 0x93AC2BC1F9EC0E29ULL };
}