initial commit
This commit is contained in:
commit
c25b202386
|
@ -0,0 +1,11 @@
|
||||||
|
mysqlexamples
|
||||||
|
old/
|
||||||
|
|
||||||
|
.idea/
|
||||||
|
app/3rdparty
|
||||||
|
composer.lock
|
||||||
|
.*~
|
||||||
|
*~
|
||||||
|
composer.phar
|
||||||
|
|
||||||
|
mp3/
|
|
@ -0,0 +1,18 @@
|
||||||
|
[submodule "3rdparty/json"]
|
||||||
|
path = 3rdparty/json
|
||||||
|
url = https://github.com/nlohmann/json
|
||||||
|
[submodule "3rdparty/openwall-bcrypt"]
|
||||||
|
path = 3rdparty/openwall-bcrypt
|
||||||
|
url = https://github.com/gigamonkey/openwall-bcrypt
|
||||||
|
[submodule "3rdparty/bcrypt"]
|
||||||
|
path = 3rdparty/bcrypt
|
||||||
|
url = https://github.com/rg3/bcrypt
|
||||||
|
[submodule "3rdparty/appserver"]
|
||||||
|
path = 3rdparty/appserver
|
||||||
|
url = https://github.com/appserver-io/appserver
|
||||||
|
[submodule "3rdparty/runtime"]
|
||||||
|
path = 3rdparty/runtime
|
||||||
|
url = https://github.com/appserver-io-php/runtime.git
|
||||||
|
[submodule "3rdparty/freebsd"]
|
||||||
|
path = 3rdparty/freebsd
|
||||||
|
url = https://github.com/lattera/freebsd
|
|
@ -0,0 +1,914 @@
|
||||||
|
/* $Id$ */
|
||||||
|
/*
|
||||||
|
* The crypt_blowfish homepage is:
|
||||||
|
*
|
||||||
|
* http://www.openwall.com/crypt/
|
||||||
|
*
|
||||||
|
* This code comes from John the Ripper password cracker, with reentrant
|
||||||
|
* and crypt(3) interfaces added, but optimizations specific to password
|
||||||
|
* cracking removed.
|
||||||
|
*
|
||||||
|
* Written by Solar Designer <solar at openwall.com> in 1998-2011.
|
||||||
|
* No copyright is claimed, and the software is hereby placed in the public
|
||||||
|
* domain. In case this attempt to disclaim copyright and place the software
|
||||||
|
* in the public domain is deemed null and void, then the software is
|
||||||
|
* Copyright (c) 1998-2011 Solar Designer and it is hereby released to the
|
||||||
|
* general public under the following terms:
|
||||||
|
*
|
||||||
|
* Redistribution and use in source and binary forms, with or without
|
||||||
|
* modification, are permitted.
|
||||||
|
*
|
||||||
|
* There's ABSOLUTELY NO WARRANTY, express or implied.
|
||||||
|
*
|
||||||
|
* It is my intent that you should be able to use this on your system,
|
||||||
|
* as part of a software package, or anywhere else to improve security,
|
||||||
|
* ensure compatibility, or for any other purpose. I would appreciate
|
||||||
|
* it if you give credit where it is due and keep your modifications in
|
||||||
|
* the public domain as well, but I don't require that in order to let
|
||||||
|
* you place this code and any modifications you make under a license
|
||||||
|
* of your choice.
|
||||||
|
*
|
||||||
|
* This implementation is mostly compatible with OpenBSD's bcrypt.c (prefix
|
||||||
|
* "$2a$") by Niels Provos <provos at citi.umich.edu>, and uses some of his
|
||||||
|
* ideas. The password hashing algorithm was designed by David Mazieres
|
||||||
|
* <dm at lcs.mit.edu>. For more information on the level of compatibility,
|
||||||
|
* please refer to the comments in BF_set_key() below and to the crypt(3)
|
||||||
|
* man page included in the crypt_blowfish tarball.
|
||||||
|
*
|
||||||
|
* There's a paper on the algorithm that explains its design decisions:
|
||||||
|
*
|
||||||
|
* http://www.usenix.org/events/usenix99/provos.html
|
||||||
|
*
|
||||||
|
* Some of the tricks in BF_ROUND might be inspired by Eric Young's
|
||||||
|
* Blowfish library (I can't be sure if I would think of something if I
|
||||||
|
* hadn't seen his code).
|
||||||
|
*/
|
||||||
|
#ifdef __cplusplus
|
||||||
|
extern "C" {
|
||||||
|
#endif
|
||||||
|
#include <string.h>
|
||||||
|
|
||||||
|
#include <errno.h>
|
||||||
|
#ifndef __set_errno
|
||||||
|
#define __set_errno(val) errno = (val)
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/* Just to make sure the prototypes match the actual definitions */
|
||||||
|
#include "crypt_blowfish.h"
|
||||||
|
|
||||||
|
#ifdef __i386__
|
||||||
|
#define BF_ASM 0
|
||||||
|
#define BF_SCALE 1
|
||||||
|
#elif defined(__x86_64__) || defined(__alpha__) || defined(__hppa__)
|
||||||
|
#define BF_ASM 0
|
||||||
|
#define BF_SCALE 1
|
||||||
|
#else
|
||||||
|
#define BF_ASM 0
|
||||||
|
#define BF_SCALE 0
|
||||||
|
#endif
|
||||||
|
|
||||||
|
typedef unsigned int BF_word;
|
||||||
|
typedef signed int BF_word_signed;
|
||||||
|
|
||||||
|
/* Number of Blowfish rounds, this is also hardcoded into a few places */
|
||||||
|
#define BF_N 16
|
||||||
|
|
||||||
|
typedef BF_word BF_key[BF_N + 2];
|
||||||
|
|
||||||
|
typedef struct {
|
||||||
|
BF_word S[4][0x100];
|
||||||
|
BF_key P;
|
||||||
|
} BF_ctx;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Magic IV for 64 Blowfish encryptions that we do at the end.
|
||||||
|
* The string is "OrpheanBeholderScryDoubt" on big-endian.
|
||||||
|
*/
|
||||||
|
static BF_word BF_magic_w[6] = {
|
||||||
|
0x4F727068, 0x65616E42, 0x65686F6C,
|
||||||
|
0x64657253, 0x63727944, 0x6F756274
|
||||||
|
};
|
||||||
|
|
||||||
|
/*
|
||||||
|
* P-box and S-box tables initialized with digits of Pi.
|
||||||
|
*/
|
||||||
|
static BF_ctx BF_init_state = {
|
||||||
|
{
|
||||||
|
{
|
||||||
|
0xd1310ba6, 0x98dfb5ac, 0x2ffd72db, 0xd01adfb7,
|
||||||
|
0xb8e1afed, 0x6a267e96, 0xba7c9045, 0xf12c7f99,
|
||||||
|
0x24a19947, 0xb3916cf7, 0x0801f2e2, 0x858efc16,
|
||||||
|
0x636920d8, 0x71574e69, 0xa458fea3, 0xf4933d7e,
|
||||||
|
0x0d95748f, 0x728eb658, 0x718bcd58, 0x82154aee,
|
||||||
|
0x7b54a41d, 0xc25a59b5, 0x9c30d539, 0x2af26013,
|
||||||
|
0xc5d1b023, 0x286085f0, 0xca417918, 0xb8db38ef,
|
||||||
|
0x8e79dcb0, 0x603a180e, 0x6c9e0e8b, 0xb01e8a3e,
|
||||||
|
0xd71577c1, 0xbd314b27, 0x78af2fda, 0x55605c60,
|
||||||
|
0xe65525f3, 0xaa55ab94, 0x57489862, 0x63e81440,
|
||||||
|
0x55ca396a, 0x2aab10b6, 0xb4cc5c34, 0x1141e8ce,
|
||||||
|
0xa15486af, 0x7c72e993, 0xb3ee1411, 0x636fbc2a,
|
||||||
|
0x2ba9c55d, 0x741831f6, 0xce5c3e16, 0x9b87931e,
|
||||||
|
0xafd6ba33, 0x6c24cf5c, 0x7a325381, 0x28958677,
|
||||||
|
0x3b8f4898, 0x6b4bb9af, 0xc4bfe81b, 0x66282193,
|
||||||
|
0x61d809cc, 0xfb21a991, 0x487cac60, 0x5dec8032,
|
||||||
|
0xef845d5d, 0xe98575b1, 0xdc262302, 0xeb651b88,
|
||||||
|
0x23893e81, 0xd396acc5, 0x0f6d6ff3, 0x83f44239,
|
||||||
|
0x2e0b4482, 0xa4842004, 0x69c8f04a, 0x9e1f9b5e,
|
||||||
|
0x21c66842, 0xf6e96c9a, 0x670c9c61, 0xabd388f0,
|
||||||
|
0x6a51a0d2, 0xd8542f68, 0x960fa728, 0xab5133a3,
|
||||||
|
0x6eef0b6c, 0x137a3be4, 0xba3bf050, 0x7efb2a98,
|
||||||
|
0xa1f1651d, 0x39af0176, 0x66ca593e, 0x82430e88,
|
||||||
|
0x8cee8619, 0x456f9fb4, 0x7d84a5c3, 0x3b8b5ebe,
|
||||||
|
0xe06f75d8, 0x85c12073, 0x401a449f, 0x56c16aa6,
|
||||||
|
0x4ed3aa62, 0x363f7706, 0x1bfedf72, 0x429b023d,
|
||||||
|
0x37d0d724, 0xd00a1248, 0xdb0fead3, 0x49f1c09b,
|
||||||
|
0x075372c9, 0x80991b7b, 0x25d479d8, 0xf6e8def7,
|
||||||
|
0xe3fe501a, 0xb6794c3b, 0x976ce0bd, 0x04c006ba,
|
||||||
|
0xc1a94fb6, 0x409f60c4, 0x5e5c9ec2, 0x196a2463,
|
||||||
|
0x68fb6faf, 0x3e6c53b5, 0x1339b2eb, 0x3b52ec6f,
|
||||||
|
0x6dfc511f, 0x9b30952c, 0xcc814544, 0xaf5ebd09,
|
||||||
|
0xbee3d004, 0xde334afd, 0x660f2807, 0x192e4bb3,
|
||||||
|
0xc0cba857, 0x45c8740f, 0xd20b5f39, 0xb9d3fbdb,
|
||||||
|
0x5579c0bd, 0x1a60320a, 0xd6a100c6, 0x402c7279,
|
||||||
|
0x679f25fe, 0xfb1fa3cc, 0x8ea5e9f8, 0xdb3222f8,
|
||||||
|
0x3c7516df, 0xfd616b15, 0x2f501ec8, 0xad0552ab,
|
||||||
|
0x323db5fa, 0xfd238760, 0x53317b48, 0x3e00df82,
|
||||||
|
0x9e5c57bb, 0xca6f8ca0, 0x1a87562e, 0xdf1769db,
|
||||||
|
0xd542a8f6, 0x287effc3, 0xac6732c6, 0x8c4f5573,
|
||||||
|
0x695b27b0, 0xbbca58c8, 0xe1ffa35d, 0xb8f011a0,
|
||||||
|
0x10fa3d98, 0xfd2183b8, 0x4afcb56c, 0x2dd1d35b,
|
||||||
|
0x9a53e479, 0xb6f84565, 0xd28e49bc, 0x4bfb9790,
|
||||||
|
0xe1ddf2da, 0xa4cb7e33, 0x62fb1341, 0xcee4c6e8,
|
||||||
|
0xef20cada, 0x36774c01, 0xd07e9efe, 0x2bf11fb4,
|
||||||
|
0x95dbda4d, 0xae909198, 0xeaad8e71, 0x6b93d5a0,
|
||||||
|
0xd08ed1d0, 0xafc725e0, 0x8e3c5b2f, 0x8e7594b7,
|
||||||
|
0x8ff6e2fb, 0xf2122b64, 0x8888b812, 0x900df01c,
|
||||||
|
0x4fad5ea0, 0x688fc31c, 0xd1cff191, 0xb3a8c1ad,
|
||||||
|
0x2f2f2218, 0xbe0e1777, 0xea752dfe, 0x8b021fa1,
|
||||||
|
0xe5a0cc0f, 0xb56f74e8, 0x18acf3d6, 0xce89e299,
|
||||||
|
0xb4a84fe0, 0xfd13e0b7, 0x7cc43b81, 0xd2ada8d9,
|
||||||
|
0x165fa266, 0x80957705, 0x93cc7314, 0x211a1477,
|
||||||
|
0xe6ad2065, 0x77b5fa86, 0xc75442f5, 0xfb9d35cf,
|
||||||
|
0xebcdaf0c, 0x7b3e89a0, 0xd6411bd3, 0xae1e7e49,
|
||||||
|
0x00250e2d, 0x2071b35e, 0x226800bb, 0x57b8e0af,
|
||||||
|
0x2464369b, 0xf009b91e, 0x5563911d, 0x59dfa6aa,
|
||||||
|
0x78c14389, 0xd95a537f, 0x207d5ba2, 0x02e5b9c5,
|
||||||
|
0x83260376, 0x6295cfa9, 0x11c81968, 0x4e734a41,
|
||||||
|
0xb3472dca, 0x7b14a94a, 0x1b510052, 0x9a532915,
|
||||||
|
0xd60f573f, 0xbc9bc6e4, 0x2b60a476, 0x81e67400,
|
||||||
|
0x08ba6fb5, 0x571be91f, 0xf296ec6b, 0x2a0dd915,
|
||||||
|
0xb6636521, 0xe7b9f9b6, 0xff34052e, 0xc5855664,
|
||||||
|
0x53b02d5d, 0xa99f8fa1, 0x08ba4799, 0x6e85076a
|
||||||
|
}, {
|
||||||
|
0x4b7a70e9, 0xb5b32944, 0xdb75092e, 0xc4192623,
|
||||||
|
0xad6ea6b0, 0x49a7df7d, 0x9cee60b8, 0x8fedb266,
|
||||||
|
0xecaa8c71, 0x699a17ff, 0x5664526c, 0xc2b19ee1,
|
||||||
|
0x193602a5, 0x75094c29, 0xa0591340, 0xe4183a3e,
|
||||||
|
0x3f54989a, 0x5b429d65, 0x6b8fe4d6, 0x99f73fd6,
|
||||||
|
0xa1d29c07, 0xefe830f5, 0x4d2d38e6, 0xf0255dc1,
|
||||||
|
0x4cdd2086, 0x8470eb26, 0x6382e9c6, 0x021ecc5e,
|
||||||
|
0x09686b3f, 0x3ebaefc9, 0x3c971814, 0x6b6a70a1,
|
||||||
|
0x687f3584, 0x52a0e286, 0xb79c5305, 0xaa500737,
|
||||||
|
0x3e07841c, 0x7fdeae5c, 0x8e7d44ec, 0x5716f2b8,
|
||||||
|
0xb03ada37, 0xf0500c0d, 0xf01c1f04, 0x0200b3ff,
|
||||||
|
0xae0cf51a, 0x3cb574b2, 0x25837a58, 0xdc0921bd,
|
||||||
|
0xd19113f9, 0x7ca92ff6, 0x94324773, 0x22f54701,
|
||||||
|
0x3ae5e581, 0x37c2dadc, 0xc8b57634, 0x9af3dda7,
|
||||||
|
0xa9446146, 0x0fd0030e, 0xecc8c73e, 0xa4751e41,
|
||||||
|
0xe238cd99, 0x3bea0e2f, 0x3280bba1, 0x183eb331,
|
||||||
|
0x4e548b38, 0x4f6db908, 0x6f420d03, 0xf60a04bf,
|
||||||
|
0x2cb81290, 0x24977c79, 0x5679b072, 0xbcaf89af,
|
||||||
|
0xde9a771f, 0xd9930810, 0xb38bae12, 0xdccf3f2e,
|
||||||
|
0x5512721f, 0x2e6b7124, 0x501adde6, 0x9f84cd87,
|
||||||
|
0x7a584718, 0x7408da17, 0xbc9f9abc, 0xe94b7d8c,
|
||||||
|
0xec7aec3a, 0xdb851dfa, 0x63094366, 0xc464c3d2,
|
||||||
|
0xef1c1847, 0x3215d908, 0xdd433b37, 0x24c2ba16,
|
||||||
|
0x12a14d43, 0x2a65c451, 0x50940002, 0x133ae4dd,
|
||||||
|
0x71dff89e, 0x10314e55, 0x81ac77d6, 0x5f11199b,
|
||||||
|
0x043556f1, 0xd7a3c76b, 0x3c11183b, 0x5924a509,
|
||||||
|
0xf28fe6ed, 0x97f1fbfa, 0x9ebabf2c, 0x1e153c6e,
|
||||||
|
0x86e34570, 0xeae96fb1, 0x860e5e0a, 0x5a3e2ab3,
|
||||||
|
0x771fe71c, 0x4e3d06fa, 0x2965dcb9, 0x99e71d0f,
|
||||||
|
0x803e89d6, 0x5266c825, 0x2e4cc978, 0x9c10b36a,
|
||||||
|
0xc6150eba, 0x94e2ea78, 0xa5fc3c53, 0x1e0a2df4,
|
||||||
|
0xf2f74ea7, 0x361d2b3d, 0x1939260f, 0x19c27960,
|
||||||
|
0x5223a708, 0xf71312b6, 0xebadfe6e, 0xeac31f66,
|
||||||
|
0xe3bc4595, 0xa67bc883, 0xb17f37d1, 0x018cff28,
|
||||||
|
0xc332ddef, 0xbe6c5aa5, 0x65582185, 0x68ab9802,
|
||||||
|
0xeecea50f, 0xdb2f953b, 0x2aef7dad, 0x5b6e2f84,
|
||||||
|
0x1521b628, 0x29076170, 0xecdd4775, 0x619f1510,
|
||||||
|
0x13cca830, 0xeb61bd96, 0x0334fe1e, 0xaa0363cf,
|
||||||
|
0xb5735c90, 0x4c70a239, 0xd59e9e0b, 0xcbaade14,
|
||||||
|
0xeecc86bc, 0x60622ca7, 0x9cab5cab, 0xb2f3846e,
|
||||||
|
0x648b1eaf, 0x19bdf0ca, 0xa02369b9, 0x655abb50,
|
||||||
|
0x40685a32, 0x3c2ab4b3, 0x319ee9d5, 0xc021b8f7,
|
||||||
|
0x9b540b19, 0x875fa099, 0x95f7997e, 0x623d7da8,
|
||||||
|
0xf837889a, 0x97e32d77, 0x11ed935f, 0x16681281,
|
||||||
|
0x0e358829, 0xc7e61fd6, 0x96dedfa1, 0x7858ba99,
|
||||||
|
0x57f584a5, 0x1b227263, 0x9b83c3ff, 0x1ac24696,
|
||||||
|
0xcdb30aeb, 0x532e3054, 0x8fd948e4, 0x6dbc3128,
|
||||||
|
0x58ebf2ef, 0x34c6ffea, 0xfe28ed61, 0xee7c3c73,
|
||||||
|
0x5d4a14d9, 0xe864b7e3, 0x42105d14, 0x203e13e0,
|
||||||
|
0x45eee2b6, 0xa3aaabea, 0xdb6c4f15, 0xfacb4fd0,
|
||||||
|
0xc742f442, 0xef6abbb5, 0x654f3b1d, 0x41cd2105,
|
||||||
|
0xd81e799e, 0x86854dc7, 0xe44b476a, 0x3d816250,
|
||||||
|
0xcf62a1f2, 0x5b8d2646, 0xfc8883a0, 0xc1c7b6a3,
|
||||||
|
0x7f1524c3, 0x69cb7492, 0x47848a0b, 0x5692b285,
|
||||||
|
0x095bbf00, 0xad19489d, 0x1462b174, 0x23820e00,
|
||||||
|
0x58428d2a, 0x0c55f5ea, 0x1dadf43e, 0x233f7061,
|
||||||
|
0x3372f092, 0x8d937e41, 0xd65fecf1, 0x6c223bdb,
|
||||||
|
0x7cde3759, 0xcbee7460, 0x4085f2a7, 0xce77326e,
|
||||||
|
0xa6078084, 0x19f8509e, 0xe8efd855, 0x61d99735,
|
||||||
|
0xa969a7aa, 0xc50c06c2, 0x5a04abfc, 0x800bcadc,
|
||||||
|
0x9e447a2e, 0xc3453484, 0xfdd56705, 0x0e1e9ec9,
|
||||||
|
0xdb73dbd3, 0x105588cd, 0x675fda79, 0xe3674340,
|
||||||
|
0xc5c43465, 0x713e38d8, 0x3d28f89e, 0xf16dff20,
|
||||||
|
0x153e21e7, 0x8fb03d4a, 0xe6e39f2b, 0xdb83adf7
|
||||||
|
}, {
|
||||||
|
0xe93d5a68, 0x948140f7, 0xf64c261c, 0x94692934,
|
||||||
|
0x411520f7, 0x7602d4f7, 0xbcf46b2e, 0xd4a20068,
|
||||||
|
0xd4082471, 0x3320f46a, 0x43b7d4b7, 0x500061af,
|
||||||
|
0x1e39f62e, 0x97244546, 0x14214f74, 0xbf8b8840,
|
||||||
|
0x4d95fc1d, 0x96b591af, 0x70f4ddd3, 0x66a02f45,
|
||||||
|
0xbfbc09ec, 0x03bd9785, 0x7fac6dd0, 0x31cb8504,
|
||||||
|
0x96eb27b3, 0x55fd3941, 0xda2547e6, 0xabca0a9a,
|
||||||
|
0x28507825, 0x530429f4, 0x0a2c86da, 0xe9b66dfb,
|
||||||
|
0x68dc1462, 0xd7486900, 0x680ec0a4, 0x27a18dee,
|
||||||
|
0x4f3ffea2, 0xe887ad8c, 0xb58ce006, 0x7af4d6b6,
|
||||||
|
0xaace1e7c, 0xd3375fec, 0xce78a399, 0x406b2a42,
|
||||||
|
0x20fe9e35, 0xd9f385b9, 0xee39d7ab, 0x3b124e8b,
|
||||||
|
0x1dc9faf7, 0x4b6d1856, 0x26a36631, 0xeae397b2,
|
||||||
|
0x3a6efa74, 0xdd5b4332, 0x6841e7f7, 0xca7820fb,
|
||||||
|
0xfb0af54e, 0xd8feb397, 0x454056ac, 0xba489527,
|
||||||
|
0x55533a3a, 0x20838d87, 0xfe6ba9b7, 0xd096954b,
|
||||||
|
0x55a867bc, 0xa1159a58, 0xcca92963, 0x99e1db33,
|
||||||
|
0xa62a4a56, 0x3f3125f9, 0x5ef47e1c, 0x9029317c,
|
||||||
|
0xfdf8e802, 0x04272f70, 0x80bb155c, 0x05282ce3,
|
||||||
|
0x95c11548, 0xe4c66d22, 0x48c1133f, 0xc70f86dc,
|
||||||
|
0x07f9c9ee, 0x41041f0f, 0x404779a4, 0x5d886e17,
|
||||||
|
0x325f51eb, 0xd59bc0d1, 0xf2bcc18f, 0x41113564,
|
||||||
|
0x257b7834, 0x602a9c60, 0xdff8e8a3, 0x1f636c1b,
|
||||||
|
0x0e12b4c2, 0x02e1329e, 0xaf664fd1, 0xcad18115,
|
||||||
|
0x6b2395e0, 0x333e92e1, 0x3b240b62, 0xeebeb922,
|
||||||
|
0x85b2a20e, 0xe6ba0d99, 0xde720c8c, 0x2da2f728,
|
||||||
|
0xd0127845, 0x95b794fd, 0x647d0862, 0xe7ccf5f0,
|
||||||
|
0x5449a36f, 0x877d48fa, 0xc39dfd27, 0xf33e8d1e,
|
||||||
|
0x0a476341, 0x992eff74, 0x3a6f6eab, 0xf4f8fd37,
|
||||||
|
0xa812dc60, 0xa1ebddf8, 0x991be14c, 0xdb6e6b0d,
|
||||||
|
0xc67b5510, 0x6d672c37, 0x2765d43b, 0xdcd0e804,
|
||||||
|
0xf1290dc7, 0xcc00ffa3, 0xb5390f92, 0x690fed0b,
|
||||||
|
0x667b9ffb, 0xcedb7d9c, 0xa091cf0b, 0xd9155ea3,
|
||||||
|
0xbb132f88, 0x515bad24, 0x7b9479bf, 0x763bd6eb,
|
||||||
|
0x37392eb3, 0xcc115979, 0x8026e297, 0xf42e312d,
|
||||||
|
0x6842ada7, 0xc66a2b3b, 0x12754ccc, 0x782ef11c,
|
||||||
|
0x6a124237, 0xb79251e7, 0x06a1bbe6, 0x4bfb6350,
|
||||||
|
0x1a6b1018, 0x11caedfa, 0x3d25bdd8, 0xe2e1c3c9,
|
||||||
|
0x44421659, 0x0a121386, 0xd90cec6e, 0xd5abea2a,
|
||||||
|
0x64af674e, 0xda86a85f, 0xbebfe988, 0x64e4c3fe,
|
||||||
|
0x9dbc8057, 0xf0f7c086, 0x60787bf8, 0x6003604d,
|
||||||
|
0xd1fd8346, 0xf6381fb0, 0x7745ae04, 0xd736fccc,
|
||||||
|
0x83426b33, 0xf01eab71, 0xb0804187, 0x3c005e5f,
|
||||||
|
0x77a057be, 0xbde8ae24, 0x55464299, 0xbf582e61,
|
||||||
|
0x4e58f48f, 0xf2ddfda2, 0xf474ef38, 0x8789bdc2,
|
||||||
|
0x5366f9c3, 0xc8b38e74, 0xb475f255, 0x46fcd9b9,
|
||||||
|
0x7aeb2661, 0x8b1ddf84, 0x846a0e79, 0x915f95e2,
|
||||||
|
0x466e598e, 0x20b45770, 0x8cd55591, 0xc902de4c,
|
||||||
|
0xb90bace1, 0xbb8205d0, 0x11a86248, 0x7574a99e,
|
||||||
|
0xb77f19b6, 0xe0a9dc09, 0x662d09a1, 0xc4324633,
|
||||||
|
0xe85a1f02, 0x09f0be8c, 0x4a99a025, 0x1d6efe10,
|
||||||
|
0x1ab93d1d, 0x0ba5a4df, 0xa186f20f, 0x2868f169,
|
||||||
|
0xdcb7da83, 0x573906fe, 0xa1e2ce9b, 0x4fcd7f52,
|
||||||
|
0x50115e01, 0xa70683fa, 0xa002b5c4, 0x0de6d027,
|
||||||
|
0x9af88c27, 0x773f8641, 0xc3604c06, 0x61a806b5,
|
||||||
|
0xf0177a28, 0xc0f586e0, 0x006058aa, 0x30dc7d62,
|
||||||
|
0x11e69ed7, 0x2338ea63, 0x53c2dd94, 0xc2c21634,
|
||||||
|
0xbbcbee56, 0x90bcb6de, 0xebfc7da1, 0xce591d76,
|
||||||
|
0x6f05e409, 0x4b7c0188, 0x39720a3d, 0x7c927c24,
|
||||||
|
0x86e3725f, 0x724d9db9, 0x1ac15bb4, 0xd39eb8fc,
|
||||||
|
0xed545578, 0x08fca5b5, 0xd83d7cd3, 0x4dad0fc4,
|
||||||
|
0x1e50ef5e, 0xb161e6f8, 0xa28514d9, 0x6c51133c,
|
||||||
|
0x6fd5c7e7, 0x56e14ec4, 0x362abfce, 0xddc6c837,
|
||||||
|
0xd79a3234, 0x92638212, 0x670efa8e, 0x406000e0
|
||||||
|
}, {
|
||||||
|
0x3a39ce37, 0xd3faf5cf, 0xabc27737, 0x5ac52d1b,
|
||||||
|
0x5cb0679e, 0x4fa33742, 0xd3822740, 0x99bc9bbe,
|
||||||
|
0xd5118e9d, 0xbf0f7315, 0xd62d1c7e, 0xc700c47b,
|
||||||
|
0xb78c1b6b, 0x21a19045, 0xb26eb1be, 0x6a366eb4,
|
||||||
|
0x5748ab2f, 0xbc946e79, 0xc6a376d2, 0x6549c2c8,
|
||||||
|
0x530ff8ee, 0x468dde7d, 0xd5730a1d, 0x4cd04dc6,
|
||||||
|
0x2939bbdb, 0xa9ba4650, 0xac9526e8, 0xbe5ee304,
|
||||||
|
0xa1fad5f0, 0x6a2d519a, 0x63ef8ce2, 0x9a86ee22,
|
||||||
|
0xc089c2b8, 0x43242ef6, 0xa51e03aa, 0x9cf2d0a4,
|
||||||
|
0x83c061ba, 0x9be96a4d, 0x8fe51550, 0xba645bd6,
|
||||||
|
0x2826a2f9, 0xa73a3ae1, 0x4ba99586, 0xef5562e9,
|
||||||
|
0xc72fefd3, 0xf752f7da, 0x3f046f69, 0x77fa0a59,
|
||||||
|
0x80e4a915, 0x87b08601, 0x9b09e6ad, 0x3b3ee593,
|
||||||
|
0xe990fd5a, 0x9e34d797, 0x2cf0b7d9, 0x022b8b51,
|
||||||
|
0x96d5ac3a, 0x017da67d, 0xd1cf3ed6, 0x7c7d2d28,
|
||||||
|
0x1f9f25cf, 0xadf2b89b, 0x5ad6b472, 0x5a88f54c,
|
||||||
|
0xe029ac71, 0xe019a5e6, 0x47b0acfd, 0xed93fa9b,
|
||||||
|
0xe8d3c48d, 0x283b57cc, 0xf8d56629, 0x79132e28,
|
||||||
|
0x785f0191, 0xed756055, 0xf7960e44, 0xe3d35e8c,
|
||||||
|
0x15056dd4, 0x88f46dba, 0x03a16125, 0x0564f0bd,
|
||||||
|
0xc3eb9e15, 0x3c9057a2, 0x97271aec, 0xa93a072a,
|
||||||
|
0x1b3f6d9b, 0x1e6321f5, 0xf59c66fb, 0x26dcf319,
|
||||||
|
0x7533d928, 0xb155fdf5, 0x03563482, 0x8aba3cbb,
|
||||||
|
0x28517711, 0xc20ad9f8, 0xabcc5167, 0xccad925f,
|
||||||
|
0x4de81751, 0x3830dc8e, 0x379d5862, 0x9320f991,
|
||||||
|
0xea7a90c2, 0xfb3e7bce, 0x5121ce64, 0x774fbe32,
|
||||||
|
0xa8b6e37e, 0xc3293d46, 0x48de5369, 0x6413e680,
|
||||||
|
0xa2ae0810, 0xdd6db224, 0x69852dfd, 0x09072166,
|
||||||
|
0xb39a460a, 0x6445c0dd, 0x586cdecf, 0x1c20c8ae,
|
||||||
|
0x5bbef7dd, 0x1b588d40, 0xccd2017f, 0x6bb4e3bb,
|
||||||
|
0xdda26a7e, 0x3a59ff45, 0x3e350a44, 0xbcb4cdd5,
|
||||||
|
0x72eacea8, 0xfa6484bb, 0x8d6612ae, 0xbf3c6f47,
|
||||||
|
0xd29be463, 0x542f5d9e, 0xaec2771b, 0xf64e6370,
|
||||||
|
0x740e0d8d, 0xe75b1357, 0xf8721671, 0xaf537d5d,
|
||||||
|
0x4040cb08, 0x4eb4e2cc, 0x34d2466a, 0x0115af84,
|
||||||
|
0xe1b00428, 0x95983a1d, 0x06b89fb4, 0xce6ea048,
|
||||||
|
0x6f3f3b82, 0x3520ab82, 0x011a1d4b, 0x277227f8,
|
||||||
|
0x611560b1, 0xe7933fdc, 0xbb3a792b, 0x344525bd,
|
||||||
|
0xa08839e1, 0x51ce794b, 0x2f32c9b7, 0xa01fbac9,
|
||||||
|
0xe01cc87e, 0xbcc7d1f6, 0xcf0111c3, 0xa1e8aac7,
|
||||||
|
0x1a908749, 0xd44fbd9a, 0xd0dadecb, 0xd50ada38,
|
||||||
|
0x0339c32a, 0xc6913667, 0x8df9317c, 0xe0b12b4f,
|
||||||
|
0xf79e59b7, 0x43f5bb3a, 0xf2d519ff, 0x27d9459c,
|
||||||
|
0xbf97222c, 0x15e6fc2a, 0x0f91fc71, 0x9b941525,
|
||||||
|
0xfae59361, 0xceb69ceb, 0xc2a86459, 0x12baa8d1,
|
||||||
|
0xb6c1075e, 0xe3056a0c, 0x10d25065, 0xcb03a442,
|
||||||
|
0xe0ec6e0e, 0x1698db3b, 0x4c98a0be, 0x3278e964,
|
||||||
|
0x9f1f9532, 0xe0d392df, 0xd3a0342b, 0x8971f21e,
|
||||||
|
0x1b0a7441, 0x4ba3348c, 0xc5be7120, 0xc37632d8,
|
||||||
|
0xdf359f8d, 0x9b992f2e, 0xe60b6f47, 0x0fe3f11d,
|
||||||
|
0xe54cda54, 0x1edad891, 0xce6279cf, 0xcd3e7e6f,
|
||||||
|
0x1618b166, 0xfd2c1d05, 0x848fd2c5, 0xf6fb2299,
|
||||||
|
0xf523f357, 0xa6327623, 0x93a83531, 0x56cccd02,
|
||||||
|
0xacf08162, 0x5a75ebb5, 0x6e163697, 0x88d273cc,
|
||||||
|
0xde966292, 0x81b949d0, 0x4c50901b, 0x71c65614,
|
||||||
|
0xe6c6c7bd, 0x327a140a, 0x45e1d006, 0xc3f27b9a,
|
||||||
|
0xc9aa53fd, 0x62a80f00, 0xbb25bfe2, 0x35bdd2f6,
|
||||||
|
0x71126905, 0xb2040222, 0xb6cbcf7c, 0xcd769c2b,
|
||||||
|
0x53113ec0, 0x1640e3d3, 0x38abbd60, 0x2547adf0,
|
||||||
|
0xba38209c, 0xf746ce76, 0x77afa1c5, 0x20756060,
|
||||||
|
0x85cbfe4e, 0x8ae88dd8, 0x7aaaf9b0, 0x4cf9aa7e,
|
||||||
|
0x1948c25c, 0x02fb8a8c, 0x01c36ae4, 0xd6ebe1f9,
|
||||||
|
0x90d4f869, 0xa65cdea0, 0x3f09252d, 0xc208e69f,
|
||||||
|
0xb74e6132, 0xce77e25b, 0x578fdfe3, 0x3ac372e6
|
||||||
|
}
|
||||||
|
}, {
|
||||||
|
0x243f6a88, 0x85a308d3, 0x13198a2e, 0x03707344,
|
||||||
|
0xa4093822, 0x299f31d0, 0x082efa98, 0xec4e6c89,
|
||||||
|
0x452821e6, 0x38d01377, 0xbe5466cf, 0x34e90c6c,
|
||||||
|
0xc0ac29b7, 0xc97c50dd, 0x3f84d5b5, 0xb5470917,
|
||||||
|
0x9216d5d9, 0x8979fb1b
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
static unsigned char BF_itoa64[64 + 1] =
|
||||||
|
"./ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789";
|
||||||
|
|
||||||
|
static unsigned char BF_atoi64[0x60] = {
|
||||||
|
64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 0, 1,
|
||||||
|
54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 64, 64, 64, 64, 64,
|
||||||
|
64, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16,
|
||||||
|
17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 64, 64, 64, 64, 64,
|
||||||
|
64, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42,
|
||||||
|
43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 64, 64, 64, 64, 64
|
||||||
|
};
|
||||||
|
|
||||||
|
#define BF_safe_atoi64(dst, src) \
|
||||||
|
{ \
|
||||||
|
tmp = (unsigned char)(src); \
|
||||||
|
if (tmp == '$') break; /* PHP hack */ \
|
||||||
|
if ((unsigned int)(tmp -= 0x20) >= 0x60) return -1; \
|
||||||
|
tmp = BF_atoi64[tmp]; \
|
||||||
|
if (tmp > 63) return -1; \
|
||||||
|
(dst) = tmp; \
|
||||||
|
}
|
||||||
|
|
||||||
|
static int BF_decode(BF_word *dst, const char *src, int size)
|
||||||
|
{
|
||||||
|
unsigned char *dptr = (unsigned char *)dst;
|
||||||
|
unsigned char *end = dptr + size;
|
||||||
|
const unsigned char *sptr = (const unsigned char *)src;
|
||||||
|
unsigned int tmp, c1, c2, c3, c4;
|
||||||
|
|
||||||
|
do {
|
||||||
|
BF_safe_atoi64(c1, *sptr++);
|
||||||
|
BF_safe_atoi64(c2, *sptr++);
|
||||||
|
*dptr++ = (c1 << 2) | ((c2 & 0x30) >> 4);
|
||||||
|
if (dptr >= end) break;
|
||||||
|
|
||||||
|
BF_safe_atoi64(c3, *sptr++);
|
||||||
|
*dptr++ = ((c2 & 0x0F) << 4) | ((c3 & 0x3C) >> 2);
|
||||||
|
if (dptr >= end) break;
|
||||||
|
|
||||||
|
BF_safe_atoi64(c4, *sptr++);
|
||||||
|
*dptr++ = ((c3 & 0x03) << 6) | c4;
|
||||||
|
} while (dptr < end);
|
||||||
|
|
||||||
|
while (dptr < end) /* PHP hack */
|
||||||
|
*dptr++ = 0;
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
static void BF_encode(char *dst, const BF_word *src, int size)
|
||||||
|
{
|
||||||
|
const unsigned char *sptr = (const unsigned char *)src;
|
||||||
|
const unsigned char *end = sptr + size;
|
||||||
|
unsigned char *dptr = (unsigned char *)dst;
|
||||||
|
unsigned int c1, c2;
|
||||||
|
|
||||||
|
do {
|
||||||
|
c1 = *sptr++;
|
||||||
|
*dptr++ = BF_itoa64[c1 >> 2];
|
||||||
|
c1 = (c1 & 0x03) << 4;
|
||||||
|
if (sptr >= end) {
|
||||||
|
*dptr++ = BF_itoa64[c1];
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
c2 = *sptr++;
|
||||||
|
c1 |= c2 >> 4;
|
||||||
|
*dptr++ = BF_itoa64[c1];
|
||||||
|
c1 = (c2 & 0x0f) << 2;
|
||||||
|
if (sptr >= end) {
|
||||||
|
*dptr++ = BF_itoa64[c1];
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
c2 = *sptr++;
|
||||||
|
c1 |= c2 >> 6;
|
||||||
|
*dptr++ = BF_itoa64[c1];
|
||||||
|
*dptr++ = BF_itoa64[c2 & 0x3f];
|
||||||
|
} while (sptr < end);
|
||||||
|
}
|
||||||
|
|
||||||
|
static void BF_swap(BF_word *x, int count)
|
||||||
|
{
|
||||||
|
static int endianness_check = 1;
|
||||||
|
char *is_little_endian = (char *)&endianness_check;
|
||||||
|
BF_word tmp;
|
||||||
|
|
||||||
|
if (*is_little_endian)
|
||||||
|
do {
|
||||||
|
tmp = *x;
|
||||||
|
tmp = (tmp << 16) | (tmp >> 16);
|
||||||
|
*x++ = ((tmp & 0x00FF00FF) << 8) | ((tmp >> 8) & 0x00FF00FF);
|
||||||
|
} while (--count);
|
||||||
|
}
|
||||||
|
|
||||||
|
#if BF_SCALE
|
||||||
|
/* Architectures which can shift addresses left by 2 bits with no extra cost */
|
||||||
|
#define BF_ROUND(L, R, N) \
|
||||||
|
tmp1 = L & 0xFF; \
|
||||||
|
tmp2 = L >> 8; \
|
||||||
|
tmp2 &= 0xFF; \
|
||||||
|
tmp3 = L >> 16; \
|
||||||
|
tmp3 &= 0xFF; \
|
||||||
|
tmp4 = L >> 24; \
|
||||||
|
tmp1 = data.ctx.S[3][tmp1]; \
|
||||||
|
tmp2 = data.ctx.S[2][tmp2]; \
|
||||||
|
tmp3 = data.ctx.S[1][tmp3]; \
|
||||||
|
tmp3 += data.ctx.S[0][tmp4]; \
|
||||||
|
tmp3 ^= tmp2; \
|
||||||
|
R ^= data.ctx.P[N + 1]; \
|
||||||
|
tmp3 += tmp1; \
|
||||||
|
R ^= tmp3;
|
||||||
|
#else
|
||||||
|
/* Architectures with no complicated addressing modes supported */
|
||||||
|
#define BF_INDEX(S, i) \
|
||||||
|
(*((BF_word *)(((unsigned char *)S) + (i))))
|
||||||
|
#define BF_ROUND(L, R, N) \
|
||||||
|
tmp1 = L & 0xFF; \
|
||||||
|
tmp1 <<= 2; \
|
||||||
|
tmp2 = L >> 6; \
|
||||||
|
tmp2 &= 0x3FC; \
|
||||||
|
tmp3 = L >> 14; \
|
||||||
|
tmp3 &= 0x3FC; \
|
||||||
|
tmp4 = L >> 22; \
|
||||||
|
tmp4 &= 0x3FC; \
|
||||||
|
tmp1 = BF_INDEX(data.ctx.S[3], tmp1); \
|
||||||
|
tmp2 = BF_INDEX(data.ctx.S[2], tmp2); \
|
||||||
|
tmp3 = BF_INDEX(data.ctx.S[1], tmp3); \
|
||||||
|
tmp3 += BF_INDEX(data.ctx.S[0], tmp4); \
|
||||||
|
tmp3 ^= tmp2; \
|
||||||
|
R ^= data.ctx.P[N + 1]; \
|
||||||
|
tmp3 += tmp1; \
|
||||||
|
R ^= tmp3;
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Encrypt one block, BF_N is hardcoded here.
|
||||||
|
*/
|
||||||
|
#define BF_ENCRYPT \
|
||||||
|
L ^= data.ctx.P[0]; \
|
||||||
|
BF_ROUND(L, R, 0); \
|
||||||
|
BF_ROUND(R, L, 1); \
|
||||||
|
BF_ROUND(L, R, 2); \
|
||||||
|
BF_ROUND(R, L, 3); \
|
||||||
|
BF_ROUND(L, R, 4); \
|
||||||
|
BF_ROUND(R, L, 5); \
|
||||||
|
BF_ROUND(L, R, 6); \
|
||||||
|
BF_ROUND(R, L, 7); \
|
||||||
|
BF_ROUND(L, R, 8); \
|
||||||
|
BF_ROUND(R, L, 9); \
|
||||||
|
BF_ROUND(L, R, 10); \
|
||||||
|
BF_ROUND(R, L, 11); \
|
||||||
|
BF_ROUND(L, R, 12); \
|
||||||
|
BF_ROUND(R, L, 13); \
|
||||||
|
BF_ROUND(L, R, 14); \
|
||||||
|
BF_ROUND(R, L, 15); \
|
||||||
|
tmp4 = R; \
|
||||||
|
R = L; \
|
||||||
|
L = tmp4 ^ data.ctx.P[BF_N + 1];
|
||||||
|
|
||||||
|
#if BF_ASM
|
||||||
|
#define BF_body() \
|
||||||
|
_BF_body_r(&data.ctx);
|
||||||
|
#else
|
||||||
|
#define BF_body() \
|
||||||
|
L = R = 0; \
|
||||||
|
ptr = data.ctx.P; \
|
||||||
|
do { \
|
||||||
|
ptr += 2; \
|
||||||
|
BF_ENCRYPT; \
|
||||||
|
*(ptr - 2) = L; \
|
||||||
|
*(ptr - 1) = R; \
|
||||||
|
} while (ptr < &data.ctx.P[BF_N + 2]); \
|
||||||
|
\
|
||||||
|
ptr = data.ctx.S[0]; \
|
||||||
|
do { \
|
||||||
|
ptr += 2; \
|
||||||
|
BF_ENCRYPT; \
|
||||||
|
*(ptr - 2) = L; \
|
||||||
|
*(ptr - 1) = R; \
|
||||||
|
} while (ptr < &data.ctx.S[3][0xFF]);
|
||||||
|
#endif
|
||||||
|
|
||||||
|
static void BF_set_key(const char *key, BF_key expanded, BF_key initial,
|
||||||
|
unsigned char flags)
|
||||||
|
{
|
||||||
|
const char *ptr = key;
|
||||||
|
unsigned int bug, i, j;
|
||||||
|
BF_word safety, sign, diff, tmp[2];
|
||||||
|
|
||||||
|
/*
|
||||||
|
* There was a sign extension bug in older revisions of this function. While
|
||||||
|
* we would have liked to simply fix the bug and move on, we have to provide
|
||||||
|
* a backwards compatibility feature (essentially the bug) for some systems and
|
||||||
|
* a safety measure for some others. The latter is needed because for certain
|
||||||
|
* multiple inputs to the buggy algorithm there exist easily found inputs to
|
||||||
|
* the correct algorithm that produce the same hash. Thus, we optionally
|
||||||
|
* deviate from the correct algorithm just enough to avoid such collisions.
|
||||||
|
* While the bug itself affected the majority of passwords containing
|
||||||
|
* characters with the 8th bit set (although only a percentage of those in a
|
||||||
|
* collision-producing way), the anti-collision safety measure affects
|
||||||
|
* only a subset of passwords containing the '\xff' character (not even all of
|
||||||
|
* those passwords, just some of them). This character is not found in valid
|
||||||
|
* UTF-8 sequences and is rarely used in popular 8-bit character encodings.
|
||||||
|
* Thus, the safety measure is unlikely to cause much annoyance, and is a
|
||||||
|
* reasonable tradeoff to use when authenticating against existing hashes that
|
||||||
|
* are not reliably known to have been computed with the correct algorithm.
|
||||||
|
*
|
||||||
|
* We use an approach that tries to minimize side-channel leaks of password
|
||||||
|
* information - that is, we mostly use fixed-cost bitwise operations instead
|
||||||
|
* of branches or table lookups. (One conditional branch based on password
|
||||||
|
* length remains. It is not part of the bug aftermath, though, and is
|
||||||
|
* difficult and possibly unreasonable to avoid given the use of C strings by
|
||||||
|
* the caller, which results in similar timing leaks anyway.)
|
||||||
|
*
|
||||||
|
* For actual implementation, we set an array index in the variable "bug"
|
||||||
|
* (0 means no bug, 1 means sign extension bug emulation) and a flag in the
|
||||||
|
* variable "safety" (bit 16 is set when the safety measure is requested).
|
||||||
|
* Valid combinations of settings are:
|
||||||
|
*
|
||||||
|
* Prefix "$2a$": bug = 0, safety = 0x10000
|
||||||
|
* Prefix "$2x$": bug = 1, safety = 0
|
||||||
|
* Prefix "$2y$": bug = 0, safety = 0
|
||||||
|
*/
|
||||||
|
bug = (unsigned int)flags & 1;
|
||||||
|
safety = ((BF_word)flags & 2) << 15;
|
||||||
|
|
||||||
|
sign = diff = 0;
|
||||||
|
|
||||||
|
for (i = 0; i < BF_N + 2; i++) {
|
||||||
|
tmp[0] = tmp[1] = 0;
|
||||||
|
for (j = 0; j < 4; j++) {
|
||||||
|
tmp[0] <<= 8;
|
||||||
|
tmp[0] |= (unsigned char)*ptr; /* correct */
|
||||||
|
tmp[1] <<= 8;
|
||||||
|
tmp[1] |= (BF_word_signed)(signed char)*ptr; /* bug */
|
||||||
|
/*
|
||||||
|
* Sign extension in the first char has no effect - nothing to overwrite yet,
|
||||||
|
* and those extra 24 bits will be fully shifted out of the 32-bit word. For
|
||||||
|
* chars 2, 3, 4 in each four-char block, we set bit 7 of "sign" if sign
|
||||||
|
* extension in tmp[1] occurs. Once this flag is set, it remains set.
|
||||||
|
*/
|
||||||
|
if (j)
|
||||||
|
sign |= tmp[1] & 0x80;
|
||||||
|
if (!*ptr)
|
||||||
|
ptr = key;
|
||||||
|
else
|
||||||
|
ptr++;
|
||||||
|
}
|
||||||
|
diff |= tmp[0] ^ tmp[1]; /* Non-zero on any differences */
|
||||||
|
|
||||||
|
expanded[i] = tmp[bug];
|
||||||
|
initial[i] = BF_init_state.P[i] ^ tmp[bug];
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* At this point, "diff" is zero iff the correct and buggy algorithms produced
|
||||||
|
* exactly the same result. If so and if "sign" is non-zero, which indicates
|
||||||
|
* that there was a non-benign sign extension, this means that we have a
|
||||||
|
* collision between the correctly computed hash for this password and a set of
|
||||||
|
* passwords that could be supplied to the buggy algorithm. Our safety measure
|
||||||
|
* is meant to protect from such many-buggy to one-correct collisions, by
|
||||||
|
* deviating from the correct algorithm in such cases. Let's check for this.
|
||||||
|
*/
|
||||||
|
diff |= diff >> 16; /* still zero iff exact match */
|
||||||
|
diff &= 0xffff; /* ditto */
|
||||||
|
diff += 0xffff; /* bit 16 set iff "diff" was non-zero (on non-match) */
|
||||||
|
sign <<= 9; /* move the non-benign sign extension flag to bit 16 */
|
||||||
|
sign &= ~diff & safety; /* action needed? */
|
||||||
|
|
||||||
|
/*
|
||||||
|
* If we have determined that we need to deviate from the correct algorithm,
|
||||||
|
* flip bit 16 in initial expanded key. (The choice of 16 is arbitrary, but
|
||||||
|
* let's stick to it now. It came out of the approach we used above, and it's
|
||||||
|
* not any worse than any other choice we could make.)
|
||||||
|
*
|
||||||
|
* It is crucial that we don't do the same to the expanded key used in the main
|
||||||
|
* Eksblowfish loop. By doing it to only one of these two, we deviate from a
|
||||||
|
* state that could be directly specified by a password to the buggy algorithm
|
||||||
|
* (and to the fully correct one as well, but that's a side-effect).
|
||||||
|
*/
|
||||||
|
initial[0] ^= sign;
|
||||||
|
}
|
||||||
|
|
||||||
|
static char *BF_crypt(const char *key, const char *setting,
|
||||||
|
char *output, int size,
|
||||||
|
BF_word min)
|
||||||
|
{
|
||||||
|
#if BF_ASM
|
||||||
|
extern void _BF_body_r(BF_ctx *ctx);
|
||||||
|
#endif
|
||||||
|
static const unsigned char flags_by_subtype[26] =
|
||||||
|
{2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 4, 0};
|
||||||
|
struct {
|
||||||
|
BF_ctx ctx;
|
||||||
|
BF_key expanded_key;
|
||||||
|
union {
|
||||||
|
BF_word salt[4];
|
||||||
|
BF_word output[6];
|
||||||
|
} binary;
|
||||||
|
} data;
|
||||||
|
BF_word L, R;
|
||||||
|
BF_word tmp1, tmp2, tmp3, tmp4;
|
||||||
|
BF_word *ptr;
|
||||||
|
BF_word count;
|
||||||
|
int i;
|
||||||
|
|
||||||
|
if (size < 7 + 22 + 31 + 1) {
|
||||||
|
__set_errno(ERANGE);
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (setting[0] != '$' ||
|
||||||
|
setting[1] != '2' ||
|
||||||
|
setting[2] < 'a' || setting[2] > 'z' ||
|
||||||
|
!flags_by_subtype[(unsigned int)(unsigned char)setting[2] - 'a'] ||
|
||||||
|
setting[3] != '$' ||
|
||||||
|
setting[4] < '0' || setting[4] > '3' ||
|
||||||
|
setting[5] < '0' || setting[5] > '9' ||
|
||||||
|
(setting[4] == '3' && setting[5] > '1') ||
|
||||||
|
setting[6] != '$') {
|
||||||
|
__set_errno(EINVAL);
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
count = (BF_word)1 << ((setting[4] - '0') * 10 + (setting[5] - '0'));
|
||||||
|
if (count < min || BF_decode(data.binary.salt, &setting[7], 16)) {
|
||||||
|
__set_errno(EINVAL);
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
BF_swap(data.binary.salt, 4);
|
||||||
|
|
||||||
|
BF_set_key(key, data.expanded_key, data.ctx.P,
|
||||||
|
flags_by_subtype[(unsigned int)(unsigned char)setting[2] - 'a']);
|
||||||
|
|
||||||
|
memcpy(data.ctx.S, BF_init_state.S, sizeof(data.ctx.S));
|
||||||
|
|
||||||
|
L = R = 0;
|
||||||
|
for (i = 0; i < BF_N + 2; i += 2) {
|
||||||
|
L ^= data.binary.salt[i & 2];
|
||||||
|
R ^= data.binary.salt[(i & 2) + 1];
|
||||||
|
BF_ENCRYPT;
|
||||||
|
data.ctx.P[i] = L;
|
||||||
|
data.ctx.P[i + 1] = R;
|
||||||
|
}
|
||||||
|
|
||||||
|
ptr = data.ctx.S[0];
|
||||||
|
do {
|
||||||
|
ptr += 4;
|
||||||
|
L ^= data.binary.salt[(BF_N + 2) & 3];
|
||||||
|
R ^= data.binary.salt[(BF_N + 3) & 3];
|
||||||
|
BF_ENCRYPT;
|
||||||
|
*(ptr - 4) = L;
|
||||||
|
*(ptr - 3) = R;
|
||||||
|
|
||||||
|
L ^= data.binary.salt[(BF_N + 4) & 3];
|
||||||
|
R ^= data.binary.salt[(BF_N + 5) & 3];
|
||||||
|
BF_ENCRYPT;
|
||||||
|
*(ptr - 2) = L;
|
||||||
|
*(ptr - 1) = R;
|
||||||
|
} while (ptr < &data.ctx.S[3][0xFF]);
|
||||||
|
|
||||||
|
do {
|
||||||
|
int done;
|
||||||
|
|
||||||
|
for (i = 0; i < BF_N + 2; i += 2) {
|
||||||
|
data.ctx.P[i] ^= data.expanded_key[i];
|
||||||
|
data.ctx.P[i + 1] ^= data.expanded_key[i + 1];
|
||||||
|
}
|
||||||
|
|
||||||
|
done = 0;
|
||||||
|
do {
|
||||||
|
BF_body();
|
||||||
|
if (done)
|
||||||
|
break;
|
||||||
|
done = 1;
|
||||||
|
|
||||||
|
tmp1 = data.binary.salt[0];
|
||||||
|
tmp2 = data.binary.salt[1];
|
||||||
|
tmp3 = data.binary.salt[2];
|
||||||
|
tmp4 = data.binary.salt[3];
|
||||||
|
for (i = 0; i < BF_N; i += 4) {
|
||||||
|
data.ctx.P[i] ^= tmp1;
|
||||||
|
data.ctx.P[i + 1] ^= tmp2;
|
||||||
|
data.ctx.P[i + 2] ^= tmp3;
|
||||||
|
data.ctx.P[i + 3] ^= tmp4;
|
||||||
|
}
|
||||||
|
data.ctx.P[16] ^= tmp1;
|
||||||
|
data.ctx.P[17] ^= tmp2;
|
||||||
|
} while (1);
|
||||||
|
} while (--count);
|
||||||
|
|
||||||
|
for (i = 0; i < 6; i += 2) {
|
||||||
|
L = BF_magic_w[i];
|
||||||
|
R = BF_magic_w[i + 1];
|
||||||
|
|
||||||
|
count = 64;
|
||||||
|
do {
|
||||||
|
BF_ENCRYPT;
|
||||||
|
} while (--count);
|
||||||
|
|
||||||
|
data.binary.output[i] = L;
|
||||||
|
data.binary.output[i + 1] = R;
|
||||||
|
}
|
||||||
|
|
||||||
|
memcpy(output, setting, 7 + 22 - 1);
|
||||||
|
output[7 + 22 - 1] = BF_itoa64[(int)
|
||||||
|
BF_atoi64[(int)setting[7 + 22 - 1] - 0x20] & 0x30];
|
||||||
|
|
||||||
|
/* This has to be bug-compatible with the original implementation, so
|
||||||
|
* only encode 23 of the 24 bytes. :-) */
|
||||||
|
BF_swap(data.binary.output, 6);
|
||||||
|
BF_encode(&output[7 + 22], data.binary.output, 23);
|
||||||
|
output[7 + 22 + 31] = '\0';
|
||||||
|
|
||||||
|
return output;
|
||||||
|
}
|
||||||
|
|
||||||
|
static int _crypt_output_magic(const char *setting, char *output, int size)
|
||||||
|
{
|
||||||
|
if (size < 3)
|
||||||
|
return -1;
|
||||||
|
|
||||||
|
output[0] = '*';
|
||||||
|
output[1] = '0';
|
||||||
|
output[2] = '\0';
|
||||||
|
|
||||||
|
if (setting[0] == '*' && setting[1] == '0')
|
||||||
|
output[1] = '1';
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Please preserve the runtime self-test. It serves two purposes at once:
|
||||||
|
*
|
||||||
|
* 1. We really can't afford the risk of producing incompatible hashes e.g.
|
||||||
|
* when there's something like gcc bug 26587 again, whereas an application or
|
||||||
|
* library integrating this code might not also integrate our external tests or
|
||||||
|
* it might not run them after every build. Even if it does, the miscompile
|
||||||
|
* might only occur on the production build, but not on a testing build (such
|
||||||
|
* as because of different optimization settings). It is painful to recover
|
||||||
|
* from incorrectly-computed hashes - merely fixing whatever broke is not
|
||||||
|
* enough. Thus, a proactive measure like this self-test is needed.
|
||||||
|
*
|
||||||
|
* 2. We don't want to leave sensitive data from our actual password hash
|
||||||
|
* computation on the stack or in registers. Previous revisions of the code
|
||||||
|
* would do explicit cleanups, but simply running the self-test after hash
|
||||||
|
* computation is more reliable.
|
||||||
|
*
|
||||||
|
* The performance cost of this quick self-test is around 0.6% at the "$2a$08"
|
||||||
|
* setting.
|
||||||
|
*/
|
||||||
|
char *php_crypt_blowfish_rn(const char *key, const char *setting,
|
||||||
|
char *output, int size)
|
||||||
|
{
|
||||||
|
const char *test_key = "8b \xd0\xc1\xd2\xcf\xcc\xd8";
|
||||||
|
const char *test_setting = "$2a$00$abcdefghijklmnopqrstuu";
|
||||||
|
static const char * const test_hash[2] =
|
||||||
|
{"VUrPmXD6q/nVSSp7pNDhCR9071IfIRe\0\x55", /* $2x$ */
|
||||||
|
"i1D709vfamulimlGcq0qq3UvuUasvEa\0\x55"}; /* $2a$, $2y$ */
|
||||||
|
char *retval;
|
||||||
|
const char *p;
|
||||||
|
int save_errno, ok;
|
||||||
|
struct {
|
||||||
|
char s[7 + 22 + 1];
|
||||||
|
char o[7 + 22 + 31 + 1 + 1 + 1];
|
||||||
|
} buf;
|
||||||
|
|
||||||
|
/* Hash the supplied password */
|
||||||
|
_crypt_output_magic(setting, output, size);
|
||||||
|
retval = BF_crypt(key, setting, output, size, 16);
|
||||||
|
save_errno = errno;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Do a quick self-test. It is important that we make both calls to BF_crypt()
|
||||||
|
* from the same scope such that they likely use the same stack locations,
|
||||||
|
* which makes the second call overwrite the first call's sensitive data on the
|
||||||
|
* stack and makes it more likely that any alignment related issues would be
|
||||||
|
* detected by the self-test.
|
||||||
|
*/
|
||||||
|
memcpy(buf.s, test_setting, sizeof(buf.s));
|
||||||
|
if (retval)
|
||||||
|
buf.s[2] = setting[2];
|
||||||
|
memset(buf.o, 0x55, sizeof(buf.o));
|
||||||
|
buf.o[sizeof(buf.o) - 1] = 0;
|
||||||
|
p = BF_crypt(test_key, buf.s, buf.o, sizeof(buf.o) - (1 + 1), 1);
|
||||||
|
|
||||||
|
ok = (p == buf.o &&
|
||||||
|
!memcmp(p, buf.s, 7 + 22) &&
|
||||||
|
!memcmp(p + (7 + 22),
|
||||||
|
test_hash[(unsigned int)(unsigned char)buf.s[2] & 1],
|
||||||
|
31 + 1 + 1 + 1));
|
||||||
|
|
||||||
|
{
|
||||||
|
const char *k = "\xff\xa3" "34" "\xff\xff\xff\xa3" "345";
|
||||||
|
BF_key ae, ai, ye, yi;
|
||||||
|
BF_set_key(k, ae, ai, 2); /* $2a$ */
|
||||||
|
BF_set_key(k, ye, yi, 4); /* $2y$ */
|
||||||
|
ai[0] ^= 0x10000; /* undo the safety (for comparison) */
|
||||||
|
ok = ok && ai[0] == 0xdb9c59bc && ye[17] == 0x33343500 &&
|
||||||
|
!memcmp(ae, ye, sizeof(ae)) &&
|
||||||
|
!memcmp(ai, yi, sizeof(ai));
|
||||||
|
}
|
||||||
|
|
||||||
|
__set_errno(save_errno);
|
||||||
|
if (ok)
|
||||||
|
return retval;
|
||||||
|
|
||||||
|
/* Should not happen */
|
||||||
|
_crypt_output_magic(setting, output, size);
|
||||||
|
__set_errno(EINVAL); /* pretend we don't support this hash type */
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
//#if 0
|
||||||
|
char *_crypt_gensalt_blowfish_rn(const char *prefix, unsigned long count,
|
||||||
|
const char *input, int size, char *output, int output_size)
|
||||||
|
{
|
||||||
|
if (size < 16 || output_size < 7 + 22 + 1 ||
|
||||||
|
(count && (count < 4 || count > 31)) ||
|
||||||
|
prefix[0] != '$' || prefix[1] != '2' ||
|
||||||
|
(prefix[2] != 'a' && prefix[2] != 'y')) {
|
||||||
|
if (output_size > 0) output[0] = '\0';
|
||||||
|
__set_errno((output_size < 7 + 22 + 1) ? ERANGE : EINVAL);
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!count) count = 5;
|
||||||
|
|
||||||
|
output[0] = '$';
|
||||||
|
output[1] = '2';
|
||||||
|
output[2] = prefix[2];
|
||||||
|
output[3] = '$';
|
||||||
|
output[4] = '0' + count / 10;
|
||||||
|
output[5] = '0' + count % 10;
|
||||||
|
output[6] = '$';
|
||||||
|
|
||||||
|
BF_encode(&output[7], (const BF_word *)input, 16);
|
||||||
|
output[7 + 22] = '\0';
|
||||||
|
|
||||||
|
return output;
|
||||||
|
}
|
||||||
|
//#endif
|
||||||
|
#ifdef __cplusplus
|
||||||
|
}
|
||||||
|
#endif
|
|
@ -0,0 +1,34 @@
|
||||||
|
/* $Id$ */
|
||||||
|
/*
|
||||||
|
* Written by Solar Designer <solar at openwall.com> in 2000-2011.
|
||||||
|
* No copyright is claimed, and the software is hereby placed in the public
|
||||||
|
* domain. In case this attempt to disclaim copyright and place the software
|
||||||
|
* in the public domain is deemed null and void, then the software is
|
||||||
|
* Copyright (c) 2000-2011 Solar Designer and it is hereby released to the
|
||||||
|
* general public under the following terms:
|
||||||
|
*
|
||||||
|
* Redistribution and use in source and binary forms, with or without
|
||||||
|
* modification, are permitted.
|
||||||
|
*
|
||||||
|
* There's ABSOLUTELY NO WARRANTY, express or implied.
|
||||||
|
*
|
||||||
|
* See crypt_blowfish.c for more information.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef _CRYPT_BLOWFISH_H
|
||||||
|
#define _CRYPT_BLOWFISH_H
|
||||||
|
|
||||||
|
|
||||||
|
#ifdef __cplusplus
|
||||||
|
extern "C" {
|
||||||
|
#endif
|
||||||
|
unsigned char *php_base64_encode(const unsigned char *str, int length, int *ret_length);
|
||||||
|
int password_hash(const char *pass, int cost, char *crpt);
|
||||||
|
extern char *php_crypt_blowfish_rn(const char *key, const char *setting, char *output, int size);
|
||||||
|
char *_crypt_gensalt_blowfish_rn(const char *prefix, unsigned long count,
|
||||||
|
const char *input, int size, char *output, int output_size);
|
||||||
|
#ifdef __cplusplus
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#endif
|
|
@ -0,0 +1,82 @@
|
||||||
|
#include <cstdio>
|
||||||
|
#include <iostream>
|
||||||
|
#include <cstring>
|
||||||
|
#include <cmath>
|
||||||
|
|
||||||
|
#include <openssl/evp.h>
|
||||||
|
#include <openssl/bio.h>
|
||||||
|
|
||||||
|
using namespace std;
|
||||||
|
int calcDecodeLength(const char *b64input, const size_t length) {
|
||||||
|
int padding = 0;
|
||||||
|
|
||||||
|
// Check for trailing '=''s as padding
|
||||||
|
if(b64input[length-1] == '=' && b64input[length-2] == '=')
|
||||||
|
padding = 2;
|
||||||
|
else if (b64input[length-1] == '=')
|
||||||
|
padding = 1;
|
||||||
|
|
||||||
|
return (int)length*0.75 - padding;
|
||||||
|
}
|
||||||
|
|
||||||
|
char* base64_encode(const char *message, const size_t length) {
|
||||||
|
|
||||||
|
BIO *bio;
|
||||||
|
BIO *b64;
|
||||||
|
FILE* stream;
|
||||||
|
|
||||||
|
int encodedSize = 4*ceil((double)length/3);
|
||||||
|
char *buffer = (char*)malloc(encodedSize+1);
|
||||||
|
if(buffer == NULL) {
|
||||||
|
fprintf(stderr, "Failed to allocate memory\n");
|
||||||
|
exit(1);
|
||||||
|
}
|
||||||
|
|
||||||
|
stream = fmemopen(buffer, encodedSize+1, "w");
|
||||||
|
b64 = BIO_new(BIO_f_base64());
|
||||||
|
bio = BIO_new_fp(stream, BIO_NOCLOSE);
|
||||||
|
bio = BIO_push(b64, bio);
|
||||||
|
BIO_set_flags(bio, BIO_FLAGS_BASE64_NO_NL);
|
||||||
|
BIO_write(bio, message, length);
|
||||||
|
(void)BIO_flush(bio);
|
||||||
|
BIO_free_all(bio);
|
||||||
|
fclose(stream);
|
||||||
|
|
||||||
|
return buffer;
|
||||||
|
}
|
||||||
|
int base64_decode(const char *b64message, const size_t length, unsigned char **buffer) {
|
||||||
|
BIO *bio;
|
||||||
|
BIO *b64;
|
||||||
|
int decodedLength = calcDecodeLength(b64message, length);
|
||||||
|
|
||||||
|
*buffer = (unsigned char*)malloc(decodedLength+1);
|
||||||
|
if(*buffer == NULL) {
|
||||||
|
fprintf(stderr, "Failed to allocate memory\n");
|
||||||
|
exit(1);
|
||||||
|
}
|
||||||
|
FILE* stream = fmemopen((char*)b64message, length, "r");
|
||||||
|
|
||||||
|
b64 = BIO_new(BIO_f_base64());
|
||||||
|
bio = BIO_new_fp(stream, BIO_NOCLOSE);
|
||||||
|
bio = BIO_push(b64, bio);
|
||||||
|
BIO_set_flags(bio, BIO_FLAGS_BASE64_NO_NL);
|
||||||
|
decodedLength = BIO_read(bio, *buffer, length);
|
||||||
|
(*buffer)[decodedLength] = '\0';
|
||||||
|
|
||||||
|
BIO_free_all(bio);
|
||||||
|
fclose(stream);
|
||||||
|
|
||||||
|
return decodedLength;
|
||||||
|
}
|
||||||
|
|
||||||
|
int main(int argc, char * argv[]) {
|
||||||
|
|
||||||
|
const char *message;
|
||||||
|
if(argc > 1) {
|
||||||
|
message = argv[1];
|
||||||
|
} else {
|
||||||
|
message = "This isjlakjsdflkjalsfjasdlfjasdldjf a message.";
|
||||||
|
}
|
||||||
|
cout << base64_encode(message, strlen(message)) << endl;
|
||||||
|
return 0;
|
||||||
|
}
|
|
@ -0,0 +1,185 @@
|
||||||
|
#include <cstdio>
|
||||||
|
#include <cstring>
|
||||||
|
#include <iostream>
|
||||||
|
#include <fcntl.h>
|
||||||
|
#include <limits.h>
|
||||||
|
#include <cstdlib>
|
||||||
|
#include <math.h>
|
||||||
|
#include <unistd.h>
|
||||||
|
#include "crypt_blowfish.h"
|
||||||
|
|
||||||
|
#define BF_MAX_SALT_LEN 60
|
||||||
|
#define RANDBYTES 16
|
||||||
|
static const char base64_table[] =
|
||||||
|
{ 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M',
|
||||||
|
'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z',
|
||||||
|
'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm',
|
||||||
|
'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z',
|
||||||
|
'0', '1', '2', '3', '4', '5', '6', '7', '8', '9', '+', '/', '\0'
|
||||||
|
};
|
||||||
|
|
||||||
|
static const char base64_pad = '=';
|
||||||
|
|
||||||
|
unsigned char *php_base64_encode(const unsigned char *str, int length, int *ret_length)
|
||||||
|
{
|
||||||
|
const unsigned char *current = str;
|
||||||
|
unsigned char *p;
|
||||||
|
unsigned char *result;
|
||||||
|
|
||||||
|
if ((length + 2) < 0 || ((length + 2) / 3) >= (1 << (sizeof(int) * 8 - 2))) {
|
||||||
|
if (ret_length != NULL) {
|
||||||
|
*ret_length = 0;
|
||||||
|
}
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
result = (unsigned char *)malloc(((length + 2) / 3) * 4);
|
||||||
|
p = result;
|
||||||
|
|
||||||
|
while (length > 2) { /* keep going until we have less than 24 bits */
|
||||||
|
*p++ = base64_table[current[0] >> 2];
|
||||||
|
*p++ = base64_table[((current[0] & 0x03) << 4) + (current[1] >> 4)];
|
||||||
|
*p++ = base64_table[((current[1] & 0x0f) << 2) + (current[2] >> 6)];
|
||||||
|
*p++ = base64_table[current[2] & 0x3f];
|
||||||
|
|
||||||
|
current += 3;
|
||||||
|
length -= 3; /* we just handle 3 octets of data */
|
||||||
|
}
|
||||||
|
|
||||||
|
/* now deal with the tail end of things */
|
||||||
|
if (length != 0) {
|
||||||
|
*p++ = base64_table[current[0] >> 2];
|
||||||
|
if (length > 1) {
|
||||||
|
*p++ = base64_table[((current[0] & 0x03) << 4) + (current[1] >> 4)];
|
||||||
|
*p++ = base64_table[(current[1] & 0x0f) << 2];
|
||||||
|
*p++ = base64_pad;
|
||||||
|
} else {
|
||||||
|
*p++ = base64_table[(current[0] & 0x03) << 4];
|
||||||
|
*p++ = base64_pad;
|
||||||
|
*p++ = base64_pad;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (ret_length != NULL) {
|
||||||
|
*ret_length = (int)(p - result);
|
||||||
|
}
|
||||||
|
*p = '\0';
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
static int php_password_salt_to64(const char *str, const size_t str_len, const size_t out_len, char *ret)
|
||||||
|
{
|
||||||
|
size_t pos = 0;
|
||||||
|
size_t ret_len = 0;
|
||||||
|
unsigned char *buffer;
|
||||||
|
if ((int) str_len < 0) {
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
buffer = php_base64_encode((unsigned char*) str, (int) str_len, (int*) &ret_len);
|
||||||
|
if (ret_len < out_len) {
|
||||||
|
/* Too short of an encoded string generated */
|
||||||
|
free(buffer);
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
for (pos = 0; pos < out_len; pos++) {
|
||||||
|
if (buffer[pos] == '+') {
|
||||||
|
ret[pos] = '.';
|
||||||
|
} else if (buffer[pos] == '=') {
|
||||||
|
free(buffer);
|
||||||
|
return 1;
|
||||||
|
} else {
|
||||||
|
ret[pos] = buffer[pos];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
free(buffer);
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
static int blowfish_make_salt(size_t length, char *ret)
|
||||||
|
{
|
||||||
|
int buffer_valid = 0;
|
||||||
|
size_t i, raw_length;
|
||||||
|
char *buffer;
|
||||||
|
char *result;
|
||||||
|
|
||||||
|
if (length > (INT_MAX / 3)) {
|
||||||
|
perror("Length is too large to safely generate");
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
raw_length = length * 3 / 4 + 1;
|
||||||
|
|
||||||
|
buffer = (char*)malloc(raw_length);
|
||||||
|
|
||||||
|
{
|
||||||
|
int fd, n;
|
||||||
|
size_t read_bytes = 0;
|
||||||
|
fd = open("/dev/urandom", O_RDONLY);
|
||||||
|
if (fd >= 0) {
|
||||||
|
while (read_bytes < raw_length) {
|
||||||
|
n = read(fd, buffer + read_bytes, raw_length - read_bytes);
|
||||||
|
if (n < 0) {
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
read_bytes += (size_t) n;
|
||||||
|
}
|
||||||
|
close(fd);
|
||||||
|
}
|
||||||
|
if (read_bytes >= raw_length) {
|
||||||
|
buffer_valid = 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (!buffer_valid) {
|
||||||
|
for (i = 0; i < raw_length; i++) {
|
||||||
|
buffer[i] ^= (char) (255.0 * rand() / RAND_MAX);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
result = (char*)malloc(length);
|
||||||
|
|
||||||
|
if (php_password_salt_to64(buffer, raw_length, length, result) == 1) {
|
||||||
|
perror("Generated salt too short");
|
||||||
|
free(buffer);
|
||||||
|
free(result);
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
memcpy(ret, result, length);
|
||||||
|
free(result);
|
||||||
|
free(buffer);
|
||||||
|
ret[length] = 0;
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
int password_hash(const char *pass, int cost, char *crpt)
|
||||||
|
{
|
||||||
|
static long required_salt_len = 22;
|
||||||
|
char *newsalt,*output, *final;
|
||||||
|
char crypted[BF_MAX_SALT_LEN +1];
|
||||||
|
char salt[required_salt_len];
|
||||||
|
|
||||||
|
output = (char*)malloc(32);
|
||||||
|
memset(crypted, 0, BF_MAX_SALT_LEN + 1);
|
||||||
|
blowfish_make_salt(required_salt_len, salt);
|
||||||
|
newsalt = _crypt_gensalt_blowfish_rn("$2y$", cost, salt, required_salt_len, output, 30);
|
||||||
|
|
||||||
|
final = php_crypt_blowfish_rn(pass, newsalt, crypted, sizeof(crypted));
|
||||||
|
|
||||||
|
free(output);
|
||||||
|
strcpy(crpt,final);
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
#ifdef BCRYPT_TEST
|
||||||
|
int main(int argc, char * argv[]) {
|
||||||
|
char * hash;
|
||||||
|
const char * pass = "testpassword";
|
||||||
|
int ret;
|
||||||
|
hash = (char*)malloc(BF_MAX_SALT_LEN +1);
|
||||||
|
if(argc > 1) {
|
||||||
|
ret = password_hash(argv[1], 10, hash);
|
||||||
|
|
||||||
|
} else {
|
||||||
|
ret = password_hash(pass,10, hash);
|
||||||
|
}
|
||||||
|
|
||||||
|
printf("hash : %s\n",hash);
|
||||||
|
free(hash);
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
#endif
|
Binary file not shown.
|
@ -0,0 +1,5 @@
|
||||||
|
../../bin/bcrypt_bcrypt.o: ../../source/src/bcrypt.c \
|
||||||
|
../../source/include/bcrypt.h ../../source/include/includes.h \
|
||||||
|
../../source/include/defines.h ../../source/include/functions.h \
|
||||||
|
../../source/include/includes.h ../../source/include/blowfish.h \
|
||||||
|
../../source/include/config.h
|
Binary file not shown.
|
@ -0,0 +1,3 @@
|
||||||
|
../../bin/bcrypt_blowfish.o: ../../source/src/blowfish.c \
|
||||||
|
../../source/include/includes.h ../../source/include/defines.h \
|
||||||
|
../../source/include/blowfish.h
|
Binary file not shown.
|
@ -0,0 +1,4 @@
|
||||||
|
../../bin/bcrypt_endian.o: ../../source/src/endian.c \
|
||||||
|
../../source/include/includes.h ../../source/include/defines.h \
|
||||||
|
../../source/include/functions.h ../../source/include/includes.h \
|
||||||
|
../../source/include/blowfish.h
|
Binary file not shown.
|
@ -0,0 +1,4 @@
|
||||||
|
../../bin/bcrypt_keys.o: ../../source/src/keys.c \
|
||||||
|
../../source/include/includes.h ../../source/include/defines.h \
|
||||||
|
../../source/include/functions.h ../../source/include/includes.h \
|
||||||
|
../../source/include/blowfish.h
|
Binary file not shown.
|
@ -0,0 +1,4 @@
|
||||||
|
../../bin/bcrypt_rwfile.o: ../../source/src/rwfile.c \
|
||||||
|
../../source/include/includes.h ../../source/include/defines.h \
|
||||||
|
../../source/include/functions.h ../../source/include/includes.h \
|
||||||
|
../../source/include/blowfish.h
|
Binary file not shown.
|
@ -0,0 +1,4 @@
|
||||||
|
../../bin/bcrypt_wrapbf.o: ../../source/src/wrapbf.c \
|
||||||
|
../../source/include/includes.h ../../source/include/defines.h \
|
||||||
|
../../source/include/functions.h ../../source/include/includes.h \
|
||||||
|
../../source/include/blowfish.h
|
Binary file not shown.
|
@ -0,0 +1,4 @@
|
||||||
|
../../bin/bcrypt_wrapzl.o: ../../source/src/wrapzl.c \
|
||||||
|
../../source/include/includes.h ../../source/include/defines.h \
|
||||||
|
../../source/include/functions.h ../../source/include/includes.h \
|
||||||
|
../../source/include/blowfish.h
|
Binary file not shown.
|
@ -0,0 +1,182 @@
|
||||||
|
Basic Installation
|
||||||
|
==================
|
||||||
|
|
||||||
|
These are generic installation instructions.
|
||||||
|
|
||||||
|
The `configure' shell script attempts to guess correct values for
|
||||||
|
various system-dependent variables used during compilation. It uses
|
||||||
|
those values to create a `Makefile' in each directory of the package.
|
||||||
|
It may also create one or more `.h' files containing system-dependent
|
||||||
|
definitions. Finally, it creates a shell script `config.status' that
|
||||||
|
you can run in the future to recreate the current configuration, a file
|
||||||
|
`config.cache' that saves the results of its tests to speed up
|
||||||
|
reconfiguring, and a file `config.log' containing compiler output
|
||||||
|
(useful mainly for debugging `configure').
|
||||||
|
|
||||||
|
If you need to do unusual things to compile the package, please try
|
||||||
|
to figure out how `configure' could check whether to do them, and mail
|
||||||
|
diffs or instructions to the address given in the `README' so they can
|
||||||
|
be considered for the next release. If at some point `config.cache'
|
||||||
|
contains results you don't want to keep, you may remove or edit it.
|
||||||
|
|
||||||
|
The file `configure.in' is used to create `configure' by a program
|
||||||
|
called `autoconf'. You only need `configure.in' if you want to change
|
||||||
|
it or regenerate `configure' using a newer version of `autoconf'.
|
||||||
|
|
||||||
|
The simplest way to compile this package is:
|
||||||
|
|
||||||
|
1. `cd' to the directory containing the package's source code and type
|
||||||
|
`./configure' to configure the package for your system. If you're
|
||||||
|
using `csh' on an old version of System V, you might need to type
|
||||||
|
`sh ./configure' instead to prevent `csh' from trying to execute
|
||||||
|
`configure' itself.
|
||||||
|
|
||||||
|
Running `configure' takes awhile. While running, it prints some
|
||||||
|
messages telling which features it is checking for.
|
||||||
|
|
||||||
|
2. Type `make' to compile the package.
|
||||||
|
|
||||||
|
3. Optionally, type `make check' to run any self-tests that come with
|
||||||
|
the package.
|
||||||
|
|
||||||
|
4. Type `make install' to install the programs and any data files and
|
||||||
|
documentation.
|
||||||
|
|
||||||
|
5. You can remove the program binaries and object files from the
|
||||||
|
source code directory by typing `make clean'. To also remove the
|
||||||
|
files that `configure' created (so you can compile the package for
|
||||||
|
a different kind of computer), type `make distclean'. There is
|
||||||
|
also a `make maintainer-clean' target, but that is intended mainly
|
||||||
|
for the package's developers. If you use it, you may have to get
|
||||||
|
all sorts of other programs in order to regenerate files that came
|
||||||
|
with the distribution.
|
||||||
|
|
||||||
|
Compilers and Options
|
||||||
|
=====================
|
||||||
|
|
||||||
|
Some systems require unusual options for compilation or linking that
|
||||||
|
the `configure' script does not know about. You can give `configure'
|
||||||
|
initial values for variables by setting them in the environment. Using
|
||||||
|
a Bourne-compatible shell, you can do that on the command line like
|
||||||
|
this:
|
||||||
|
CC=c89 CFLAGS=-O2 LIBS=-lposix ./configure
|
||||||
|
|
||||||
|
Or on systems that have the `env' program, you can do it like this:
|
||||||
|
env CPPFLAGS=-I/usr/local/include LDFLAGS=-s ./configure
|
||||||
|
|
||||||
|
Compiling For Multiple Architectures
|
||||||
|
====================================
|
||||||
|
|
||||||
|
You can compile the package for more than one kind of computer at the
|
||||||
|
same time, by placing the object files for each architecture in their
|
||||||
|
own directory. To do this, you must use a version of `make' that
|
||||||
|
supports the `VPATH' variable, such as GNU `make'. `cd' to the
|
||||||
|
directory where you want the object files and executables to go and run
|
||||||
|
the `configure' script. `configure' automatically checks for the
|
||||||
|
source code in the directory that `configure' is in and in `..'.
|
||||||
|
|
||||||
|
If you have to use a `make' that does not supports the `VPATH'
|
||||||
|
variable, you have to compile the package for one architecture at a time
|
||||||
|
in the source code directory. After you have installed the package for
|
||||||
|
one architecture, use `make distclean' before reconfiguring for another
|
||||||
|
architecture.
|
||||||
|
|
||||||
|
Installation Names
|
||||||
|
==================
|
||||||
|
|
||||||
|
By default, `make install' will install the package's files in
|
||||||
|
`/usr/local/bin', `/usr/local/man', etc. You can specify an
|
||||||
|
installation prefix other than `/usr/local' by giving `configure' the
|
||||||
|
option `--prefix=PATH'.
|
||||||
|
|
||||||
|
You can specify separate installation prefixes for
|
||||||
|
architecture-specific files and architecture-independent files. If you
|
||||||
|
give `configure' the option `--exec-prefix=PATH', the package will use
|
||||||
|
PATH as the prefix for installing programs and libraries.
|
||||||
|
Documentation and other data files will still use the regular prefix.
|
||||||
|
|
||||||
|
In addition, if you use an unusual directory layout you can give
|
||||||
|
options like `--bindir=PATH' to specify different values for particular
|
||||||
|
kinds of files. Run `configure --help' for a list of the directories
|
||||||
|
you can set and what kinds of files go in them.
|
||||||
|
|
||||||
|
If the package supports it, you can cause programs to be installed
|
||||||
|
with an extra prefix or suffix on their names by giving `configure' the
|
||||||
|
option `--program-prefix=PREFIX' or `--program-suffix=SUFFIX'.
|
||||||
|
|
||||||
|
Optional Features
|
||||||
|
=================
|
||||||
|
|
||||||
|
Some packages pay attention to `--enable-FEATURE' options to
|
||||||
|
`configure', where FEATURE indicates an optional part of the package.
|
||||||
|
They may also pay attention to `--with-PACKAGE' options, where PACKAGE
|
||||||
|
is something like `gnu-as' or `x' (for the X Window System). The
|
||||||
|
`README' should mention any `--enable-' and `--with-' options that the
|
||||||
|
package recognizes.
|
||||||
|
|
||||||
|
For packages that use the X Window System, `configure' can usually
|
||||||
|
find the X include and library files automatically, but if it doesn't,
|
||||||
|
you can use the `configure' options `--x-includes=DIR' and
|
||||||
|
`--x-libraries=DIR' to specify their locations.
|
||||||
|
|
||||||
|
Specifying the System Type
|
||||||
|
==========================
|
||||||
|
|
||||||
|
There may be some features `configure' can not figure out
|
||||||
|
automatically, but needs to determine by the type of host the package
|
||||||
|
will run on. Usually `configure' can figure that out, but if it prints
|
||||||
|
a message saying it can not guess the host type, give it the
|
||||||
|
`--host=TYPE' option. TYPE can either be a short name for the system
|
||||||
|
type, such as `sun4', or a canonical name with three fields:
|
||||||
|
CPU-COMPANY-SYSTEM
|
||||||
|
|
||||||
|
See the file `config.sub' for the possible values of each field. If
|
||||||
|
`config.sub' isn't included in this package, then this package doesn't
|
||||||
|
need to know the host type.
|
||||||
|
|
||||||
|
If you are building compiler tools for cross-compiling, you can also
|
||||||
|
use the `--target=TYPE' option to select the type of system they will
|
||||||
|
produce code for and the `--build=TYPE' option to select the type of
|
||||||
|
system on which you are compiling the package.
|
||||||
|
|
||||||
|
Sharing Defaults
|
||||||
|
================
|
||||||
|
|
||||||
|
If you want to set default values for `configure' scripts to share,
|
||||||
|
you can create a site shell script called `config.site' that gives
|
||||||
|
default values for variables like `CC', `cache_file', and `prefix'.
|
||||||
|
`configure' looks for `PREFIX/share/config.site' if it exists, then
|
||||||
|
`PREFIX/etc/config.site' if it exists. Or, you can set the
|
||||||
|
`CONFIG_SITE' environment variable to the location of the site script.
|
||||||
|
A warning: not all `configure' scripts look for a site script.
|
||||||
|
|
||||||
|
Operation Controls
|
||||||
|
==================
|
||||||
|
|
||||||
|
`configure' recognizes the following options to control how it
|
||||||
|
operates.
|
||||||
|
|
||||||
|
`--cache-file=FILE'
|
||||||
|
Use and save the results of the tests in FILE instead of
|
||||||
|
`./config.cache'. Set FILE to `/dev/null' to disable caching, for
|
||||||
|
debugging `configure'.
|
||||||
|
|
||||||
|
`--help'
|
||||||
|
Print a summary of the options to `configure', and exit.
|
||||||
|
|
||||||
|
`--quiet'
|
||||||
|
`--silent'
|
||||||
|
`-q'
|
||||||
|
Do not print messages saying which checks are being made. To
|
||||||
|
suppress all normal output, redirect it to `/dev/null' (any error
|
||||||
|
messages will still be shown).
|
||||||
|
|
||||||
|
`--srcdir=DIR'
|
||||||
|
Look for the package's source code in directory DIR. Usually
|
||||||
|
`configure' can determine that directory automatically.
|
||||||
|
|
||||||
|
`--version'
|
||||||
|
Print the version of Autoconf used to generate the `configure'
|
||||||
|
script, and exit.
|
||||||
|
|
||||||
|
`configure' also accepts some other, not widely useful, options.
|
|
@ -0,0 +1,99 @@
|
||||||
|
# =========================================================================
|
||||||
|
# This makefile was generated by
|
||||||
|
# Bakefile 0.2.2 (http://bakefile.sourceforge.net)
|
||||||
|
# Do not modify, all changes will be overwritten!
|
||||||
|
# =========================================================================
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
prefix = /usr/local
|
||||||
|
exec_prefix = ${prefix}
|
||||||
|
INSTALL = /usr/bin/install -c
|
||||||
|
SHARED_LD_MODULE_CC = $(CC) -shared -fPIC -o
|
||||||
|
SO_SUFFIX_MODULE = so
|
||||||
|
PIC_FLAG = -fPIC -DPIC
|
||||||
|
STRIP = strip
|
||||||
|
INSTALL_PROGRAM = ${INSTALL}
|
||||||
|
INSTALL_DIR = $(INSTALL) -d
|
||||||
|
BK_DEPS = /home/eric/code/hathor/3rdparty/libbcrypt-1.0/build/unix/bk-deps
|
||||||
|
DLLPREFIX_MODULE =
|
||||||
|
LIBS =
|
||||||
|
CC = gcc
|
||||||
|
CFLAGS = -g -O2
|
||||||
|
CPPFLAGS =
|
||||||
|
LDFLAGS =
|
||||||
|
|
||||||
|
### Variables: ###
|
||||||
|
|
||||||
|
DESTDIR =
|
||||||
|
BCRYPT_CFLAGS = -I../../source/include $(PIC_FLAG) $(CPPFLAGS) $(CFLAGS)
|
||||||
|
BCRYPT_OBJECTS = \
|
||||||
|
../../bin/bcrypt_bcrypt.o \
|
||||||
|
../../bin/bcrypt_blowfish.o \
|
||||||
|
../../bin/bcrypt_endian.o \
|
||||||
|
../../bin/bcrypt_keys.o \
|
||||||
|
../../bin/bcrypt_rwfile.o \
|
||||||
|
../../bin/bcrypt_wrapbf.o \
|
||||||
|
../../bin/bcrypt_wrapzl.o
|
||||||
|
|
||||||
|
### Conditionally set variables: ###
|
||||||
|
|
||||||
|
CCC = $(BK_DEPS) $(CC)
|
||||||
|
#CCC = $(CC)
|
||||||
|
|
||||||
|
### Targets: ###
|
||||||
|
|
||||||
|
all: ../../bin/$(DLLPREFIX_MODULE)bcrypt.$(SO_SUFFIX_MODULE)
|
||||||
|
|
||||||
|
install: all install_bcrypt
|
||||||
|
|
||||||
|
uninstall: uninstall_bcrypt
|
||||||
|
|
||||||
|
install-strip: install
|
||||||
|
$(STRIP) $(DESTDIR)/usr/local/lib/$(DLLPREFIX_MODULE)bcrypt.$(SO_SUFFIX_MODULE)
|
||||||
|
|
||||||
|
clean:
|
||||||
|
rm -rf ../../bin/.deps ../../bin/.pch
|
||||||
|
rm -f ../../bin/*.o
|
||||||
|
rm -f ../../bin/$(DLLPREFIX_MODULE)bcrypt.$(SO_SUFFIX_MODULE)
|
||||||
|
|
||||||
|
distclean: clean
|
||||||
|
rm -f config.cache config.log config.status bk-deps bk-make-pch shared-ld-sh Makefile
|
||||||
|
|
||||||
|
../../bin/$(DLLPREFIX_MODULE)bcrypt.$(SO_SUFFIX_MODULE): $(BCRYPT_OBJECTS)
|
||||||
|
$(SHARED_LD_MODULE_CC) $@ $(BCRYPT_OBJECTS) $(LDFLAGS) $(LIBS)
|
||||||
|
|
||||||
|
install_bcrypt:
|
||||||
|
$(INSTALL_DIR) $(DESTDIR)/usr/local/lib
|
||||||
|
$(INSTALL_PROGRAM) ../../bin/$(DLLPREFIX_MODULE)bcrypt.$(SO_SUFFIX_MODULE) $(DESTDIR)/usr/local/lib
|
||||||
|
|
||||||
|
uninstall_bcrypt:
|
||||||
|
rm -f $(DESTDIR)/usr/local/lib/$(DLLPREFIX_MODULE)bcrypt.$(SO_SUFFIX_MODULE)
|
||||||
|
|
||||||
|
../../bin/bcrypt_bcrypt.o: ../../source/src/bcrypt.c
|
||||||
|
$(CCC) -c -o $@ $(BCRYPT_CFLAGS) ../../source/src/bcrypt.c
|
||||||
|
|
||||||
|
../../bin/bcrypt_blowfish.o: ../../source/src/blowfish.c
|
||||||
|
$(CCC) -c -o $@ $(BCRYPT_CFLAGS) ../../source/src/blowfish.c
|
||||||
|
|
||||||
|
../../bin/bcrypt_endian.o: ../../source/src/endian.c
|
||||||
|
$(CCC) -c -o $@ $(BCRYPT_CFLAGS) ../../source/src/endian.c
|
||||||
|
|
||||||
|
../../bin/bcrypt_keys.o: ../../source/src/keys.c
|
||||||
|
$(CCC) -c -o $@ $(BCRYPT_CFLAGS) ../../source/src/keys.c
|
||||||
|
|
||||||
|
../../bin/bcrypt_rwfile.o: ../../source/src/rwfile.c
|
||||||
|
$(CCC) -c -o $@ $(BCRYPT_CFLAGS) ../../source/src/rwfile.c
|
||||||
|
|
||||||
|
../../bin/bcrypt_wrapbf.o: ../../source/src/wrapbf.c
|
||||||
|
$(CCC) -c -o $@ $(BCRYPT_CFLAGS) ../../source/src/wrapbf.c
|
||||||
|
|
||||||
|
../../bin/bcrypt_wrapzl.o: ../../source/src/wrapzl.c
|
||||||
|
$(CCC) -c -o $@ $(BCRYPT_CFLAGS) ../../source/src/wrapzl.c
|
||||||
|
|
||||||
|
|
||||||
|
# Include dependency info, if present:
|
||||||
|
-include .deps/*.d
|
||||||
|
|
||||||
|
.PHONY: all install uninstall clean distclean install_bcrypt uninstall_bcrypt
|
|
@ -0,0 +1,99 @@
|
||||||
|
# =========================================================================
|
||||||
|
# This makefile was generated by
|
||||||
|
# Bakefile 0.2.2 (http://bakefile.sourceforge.net)
|
||||||
|
# Do not modify, all changes will be overwritten!
|
||||||
|
# =========================================================================
|
||||||
|
|
||||||
|
|
||||||
|
@MAKE_SET@
|
||||||
|
|
||||||
|
prefix = @prefix@
|
||||||
|
exec_prefix = @exec_prefix@
|
||||||
|
INSTALL = @INSTALL@
|
||||||
|
SHARED_LD_MODULE_CC = @SHARED_LD_MODULE_CC@
|
||||||
|
SO_SUFFIX_MODULE = @SO_SUFFIX_MODULE@
|
||||||
|
PIC_FLAG = @PIC_FLAG@
|
||||||
|
STRIP = @STRIP@
|
||||||
|
INSTALL_PROGRAM = @INSTALL_PROGRAM@
|
||||||
|
INSTALL_DIR = @INSTALL_DIR@
|
||||||
|
BK_DEPS = @BK_DEPS@
|
||||||
|
DLLPREFIX_MODULE = @DLLPREFIX_MODULE@
|
||||||
|
LIBS = @LIBS@
|
||||||
|
CC = @CC@
|
||||||
|
CFLAGS = @CFLAGS@
|
||||||
|
CPPFLAGS = @CPPFLAGS@
|
||||||
|
LDFLAGS = @LDFLAGS@
|
||||||
|
|
||||||
|
### Variables: ###
|
||||||
|
|
||||||
|
DESTDIR =
|
||||||
|
BCRYPT_CFLAGS = -I../../source/include $(PIC_FLAG) $(CPPFLAGS) $(CFLAGS)
|
||||||
|
BCRYPT_OBJECTS = \
|
||||||
|
../../bin/bcrypt_bcrypt.o \
|
||||||
|
../../bin/bcrypt_blowfish.o \
|
||||||
|
../../bin/bcrypt_endian.o \
|
||||||
|
../../bin/bcrypt_keys.o \
|
||||||
|
../../bin/bcrypt_rwfile.o \
|
||||||
|
../../bin/bcrypt_wrapbf.o \
|
||||||
|
../../bin/bcrypt_wrapzl.o
|
||||||
|
|
||||||
|
### Conditionally set variables: ###
|
||||||
|
|
||||||
|
@COND_DEPS_TRACKING_1@CCC = $(BK_DEPS) $(CC)
|
||||||
|
@COND_DEPS_TRACKING_0@CCC = $(CC)
|
||||||
|
|
||||||
|
### Targets: ###
|
||||||
|
|
||||||
|
all: ../../bin/$(DLLPREFIX_MODULE)bcrypt.$(SO_SUFFIX_MODULE)
|
||||||
|
|
||||||
|
install: all install_bcrypt
|
||||||
|
|
||||||
|
uninstall: uninstall_bcrypt
|
||||||
|
|
||||||
|
install-strip: install
|
||||||
|
$(STRIP) $(DESTDIR)/usr/local/lib/$(DLLPREFIX_MODULE)bcrypt.$(SO_SUFFIX_MODULE)
|
||||||
|
|
||||||
|
clean:
|
||||||
|
rm -rf ../../bin/.deps ../../bin/.pch
|
||||||
|
rm -f ../../bin/*.o
|
||||||
|
rm -f ../../bin/$(DLLPREFIX_MODULE)bcrypt.$(SO_SUFFIX_MODULE)
|
||||||
|
|
||||||
|
distclean: clean
|
||||||
|
rm -f config.cache config.log config.status bk-deps bk-make-pch shared-ld-sh Makefile
|
||||||
|
|
||||||
|
../../bin/$(DLLPREFIX_MODULE)bcrypt.$(SO_SUFFIX_MODULE): $(BCRYPT_OBJECTS)
|
||||||
|
$(SHARED_LD_MODULE_CC) $@ $(BCRYPT_OBJECTS) $(LDFLAGS) $(LIBS)
|
||||||
|
|
||||||
|
install_bcrypt:
|
||||||
|
$(INSTALL_DIR) $(DESTDIR)/usr/local/lib
|
||||||
|
$(INSTALL_PROGRAM) ../../bin/$(DLLPREFIX_MODULE)bcrypt.$(SO_SUFFIX_MODULE) $(DESTDIR)/usr/local/lib
|
||||||
|
|
||||||
|
uninstall_bcrypt:
|
||||||
|
rm -f $(DESTDIR)/usr/local/lib/$(DLLPREFIX_MODULE)bcrypt.$(SO_SUFFIX_MODULE)
|
||||||
|
|
||||||
|
../../bin/bcrypt_bcrypt.o: ../../source/src/bcrypt.c
|
||||||
|
$(CCC) -c -o $@ $(BCRYPT_CFLAGS) ../../source/src/bcrypt.c
|
||||||
|
|
||||||
|
../../bin/bcrypt_blowfish.o: ../../source/src/blowfish.c
|
||||||
|
$(CCC) -c -o $@ $(BCRYPT_CFLAGS) ../../source/src/blowfish.c
|
||||||
|
|
||||||
|
../../bin/bcrypt_endian.o: ../../source/src/endian.c
|
||||||
|
$(CCC) -c -o $@ $(BCRYPT_CFLAGS) ../../source/src/endian.c
|
||||||
|
|
||||||
|
../../bin/bcrypt_keys.o: ../../source/src/keys.c
|
||||||
|
$(CCC) -c -o $@ $(BCRYPT_CFLAGS) ../../source/src/keys.c
|
||||||
|
|
||||||
|
../../bin/bcrypt_rwfile.o: ../../source/src/rwfile.c
|
||||||
|
$(CCC) -c -o $@ $(BCRYPT_CFLAGS) ../../source/src/rwfile.c
|
||||||
|
|
||||||
|
../../bin/bcrypt_wrapbf.o: ../../source/src/wrapbf.c
|
||||||
|
$(CCC) -c -o $@ $(BCRYPT_CFLAGS) ../../source/src/wrapbf.c
|
||||||
|
|
||||||
|
../../bin/bcrypt_wrapzl.o: ../../source/src/wrapzl.c
|
||||||
|
$(CCC) -c -o $@ $(BCRYPT_CFLAGS) ../../source/src/wrapzl.c
|
||||||
|
|
||||||
|
|
||||||
|
# Include dependency info, if present:
|
||||||
|
@IF_GNU_MAKE@-include .deps/*.d
|
||||||
|
|
||||||
|
.PHONY: all install uninstall clean distclean install_bcrypt uninstall_bcrypt
|
File diff suppressed because it is too large
Load Diff
|
@ -0,0 +1,20 @@
|
||||||
|
dnl ### begin block 00_header[bakefile.bkl] ###
|
||||||
|
dnl
|
||||||
|
dnl This macro was generated by
|
||||||
|
dnl Bakefile 0.2.2 (http://bakefile.sourceforge.net)
|
||||||
|
dnl Do not modify, all changes will be overwritten!
|
||||||
|
|
||||||
|
BAKEFILE_AUTOCONF_INC_M4_VERSION="0.2.2"
|
||||||
|
|
||||||
|
dnl ### begin block 20_COND_DEPS_TRACKING_0[bakefile.bkl] ###
|
||||||
|
COND_DEPS_TRACKING_0="#"
|
||||||
|
if test "x$DEPS_TRACKING" = "x0" ; then
|
||||||
|
COND_DEPS_TRACKING_0=""
|
||||||
|
fi
|
||||||
|
AC_SUBST(COND_DEPS_TRACKING_0)
|
||||||
|
dnl ### begin block 20_COND_DEPS_TRACKING_1[bakefile.bkl] ###
|
||||||
|
COND_DEPS_TRACKING_1="#"
|
||||||
|
if test "x$DEPS_TRACKING" = "x1" ; then
|
||||||
|
COND_DEPS_TRACKING_1=""
|
||||||
|
fi
|
||||||
|
AC_SUBST(COND_DEPS_TRACKING_1)
|
|
@ -0,0 +1,5 @@
|
||||||
|
#!/bin/bash
|
||||||
|
bakefile -f autoconf bakefile.bkl
|
||||||
|
bakefilize --copy
|
||||||
|
aclocal -I /usr/local/share/aclocal
|
||||||
|
autoconf
|
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
|
@ -0,0 +1,106 @@
|
||||||
|
# This file was generated by Autom4te Sun Sep 7 11:40:11 UTC 2014.
|
||||||
|
# It contains the lists of macros which have been traced.
|
||||||
|
# It can be safely removed.
|
||||||
|
|
||||||
|
@request = (
|
||||||
|
bless( [
|
||||||
|
'0',
|
||||||
|
1,
|
||||||
|
[
|
||||||
|
'/usr/share/autoconf'
|
||||||
|
],
|
||||||
|
[
|
||||||
|
'/usr/share/autoconf/autoconf/autoconf.m4f',
|
||||||
|
'-',
|
||||||
|
'/usr/share/aclocal-1.14/internal/ac-config-macro-dirs.m4',
|
||||||
|
'configure.ac'
|
||||||
|
],
|
||||||
|
{
|
||||||
|
'AC_CONFIG_MACRO_DIR' => 1,
|
||||||
|
'include' => 1,
|
||||||
|
'm4_include' => 1,
|
||||||
|
'AC_DEFUN' => 1,
|
||||||
|
'm4_pattern_allow' => 1,
|
||||||
|
'AU_DEFUN' => 1,
|
||||||
|
'_m4_warn' => 1,
|
||||||
|
'_AM_AUTOCONF_VERSION' => 1,
|
||||||
|
'_AM_CONFIG_MACRO_DIRS' => 1,
|
||||||
|
'AC_DEFUN_ONCE' => 1,
|
||||||
|
'AC_CONFIG_MACRO_DIR_TRACE' => 1,
|
||||||
|
'm4_pattern_forbid' => 1
|
||||||
|
}
|
||||||
|
], 'Autom4te::Request' ),
|
||||||
|
bless( [
|
||||||
|
'1',
|
||||||
|
1,
|
||||||
|
[
|
||||||
|
'/usr/share/autoconf'
|
||||||
|
],
|
||||||
|
[
|
||||||
|
'/usr/share/autoconf/autoconf/autoconf.m4f',
|
||||||
|
'aclocal.m4',
|
||||||
|
'configure.ac'
|
||||||
|
],
|
||||||
|
{
|
||||||
|
'_AM_COND_ELSE' => 1,
|
||||||
|
'AC_FC_FREEFORM' => 1,
|
||||||
|
'AC_CONFIG_AUX_DIR' => 1,
|
||||||
|
'AM_NLS' => 1,
|
||||||
|
'm4_pattern_forbid' => 1,
|
||||||
|
'AM_GNU_GETTEXT_INTL_SUBDIR' => 1,
|
||||||
|
'AM_AUTOMAKE_VERSION' => 1,
|
||||||
|
'AC_LIBSOURCE' => 1,
|
||||||
|
'AM_GNU_GETTEXT' => 1,
|
||||||
|
'_LT_AC_TAGCONFIG' => 1,
|
||||||
|
'include' => 1,
|
||||||
|
'_AM_MAKEFILE_INCLUDE' => 1,
|
||||||
|
'AC_PROG_LIBTOOL' => 1,
|
||||||
|
'_AM_SUBST_NOTMAKE' => 1,
|
||||||
|
'AC_CONFIG_FILES' => 1,
|
||||||
|
'AM_PROG_MOC' => 1,
|
||||||
|
'AC_CONFIG_LINKS' => 1,
|
||||||
|
'LT_CONFIG_LTDL_DIR' => 1,
|
||||||
|
'AC_CANONICAL_SYSTEM' => 1,
|
||||||
|
'm4_pattern_allow' => 1,
|
||||||
|
'_AM_COND_ENDIF' => 1,
|
||||||
|
'AC_CANONICAL_HOST' => 1,
|
||||||
|
'AM_PROG_F77_C_O' => 1,
|
||||||
|
'sinclude' => 1,
|
||||||
|
'AC_CONFIG_HEADERS' => 1,
|
||||||
|
'AM_XGETTEXT_OPTION' => 1,
|
||||||
|
'AM_POT_TOOLS' => 1,
|
||||||
|
'AM_PROG_CXX_C_O' => 1,
|
||||||
|
'AM_INIT_AUTOMAKE' => 1,
|
||||||
|
'AM_PROG_LIBTOOL' => 1,
|
||||||
|
'AC_REQUIRE_AUX_FILE' => 1,
|
||||||
|
'm4_sinclude' => 1,
|
||||||
|
'AC_FC_PP_SRCEXT' => 1,
|
||||||
|
'AC_SUBST_TRACE' => 1,
|
||||||
|
'_AM_COND_IF' => 1,
|
||||||
|
'AC_FC_PP_DEFINE' => 1,
|
||||||
|
'_m4_warn' => 1,
|
||||||
|
'AC_CONFIG_SUBDIRS' => 1,
|
||||||
|
'AC_INIT' => 1,
|
||||||
|
'AM_CONDITIONAL' => 1,
|
||||||
|
'AC_SUBST' => 1,
|
||||||
|
'AC_CONFIG_LIBOBJ_DIR' => 1,
|
||||||
|
'AM_PROG_AR' => 1,
|
||||||
|
'm4_include' => 1,
|
||||||
|
'AM_MAKEFILE_INCLUDE' => 1,
|
||||||
|
'AM_MAINTAINER_MODE' => 1,
|
||||||
|
'AM_SILENT_RULES' => 1,
|
||||||
|
'AM_ENABLE_MULTILIB' => 1,
|
||||||
|
'AM_PROG_FC_C_O' => 1,
|
||||||
|
'AM_PATH_GUILE' => 1,
|
||||||
|
'LT_SUPPORTED_TAG' => 1,
|
||||||
|
'AC_CANONICAL_BUILD' => 1,
|
||||||
|
'AC_DEFINE_TRACE_LITERAL' => 1,
|
||||||
|
'AC_CANONICAL_TARGET' => 1,
|
||||||
|
'AH_OUTPUT' => 1,
|
||||||
|
'AC_FC_SRCEXT' => 1,
|
||||||
|
'AM_PROG_CC_C_O' => 1,
|
||||||
|
'LT_INIT' => 1
|
||||||
|
}
|
||||||
|
], 'Autom4te::Request' )
|
||||||
|
);
|
||||||
|
|
|
@ -0,0 +1,70 @@
|
||||||
|
m4trace:configure.ac:2: -1- m4_pattern_forbid([^_?A[CHUM]_])
|
||||||
|
m4trace:configure.ac:2: -1- m4_pattern_forbid([_AC_])
|
||||||
|
m4trace:configure.ac:2: -1- m4_pattern_forbid([^LIBOBJS$], [do not use LIBOBJS directly, use AC_LIBOBJ (see section `AC_LIBOBJ vs LIBOBJS'])
|
||||||
|
m4trace:configure.ac:2: -1- m4_pattern_allow([^AS_FLAGS$])
|
||||||
|
m4trace:configure.ac:2: -1- m4_pattern_forbid([^_?m4_])
|
||||||
|
m4trace:configure.ac:2: -1- m4_pattern_forbid([^dnl$])
|
||||||
|
m4trace:configure.ac:2: -1- m4_pattern_forbid([^_?AS_])
|
||||||
|
m4trace:configure.ac:2: -1- m4_pattern_allow([^SHELL$])
|
||||||
|
m4trace:configure.ac:2: -1- m4_pattern_allow([^PATH_SEPARATOR$])
|
||||||
|
m4trace:configure.ac:2: -1- m4_pattern_allow([^PACKAGE_NAME$])
|
||||||
|
m4trace:configure.ac:2: -1- m4_pattern_allow([^PACKAGE_TARNAME$])
|
||||||
|
m4trace:configure.ac:2: -1- m4_pattern_allow([^PACKAGE_VERSION$])
|
||||||
|
m4trace:configure.ac:2: -1- m4_pattern_allow([^PACKAGE_STRING$])
|
||||||
|
m4trace:configure.ac:2: -1- m4_pattern_allow([^PACKAGE_BUGREPORT$])
|
||||||
|
m4trace:configure.ac:2: -1- m4_pattern_allow([^PACKAGE_URL$])
|
||||||
|
m4trace:configure.ac:2: -1- m4_pattern_allow([^exec_prefix$])
|
||||||
|
m4trace:configure.ac:2: -1- m4_pattern_allow([^prefix$])
|
||||||
|
m4trace:configure.ac:2: -1- m4_pattern_allow([^program_transform_name$])
|
||||||
|
m4trace:configure.ac:2: -1- m4_pattern_allow([^bindir$])
|
||||||
|
m4trace:configure.ac:2: -1- m4_pattern_allow([^sbindir$])
|
||||||
|
m4trace:configure.ac:2: -1- m4_pattern_allow([^libexecdir$])
|
||||||
|
m4trace:configure.ac:2: -1- m4_pattern_allow([^datarootdir$])
|
||||||
|
m4trace:configure.ac:2: -1- m4_pattern_allow([^datadir$])
|
||||||
|
m4trace:configure.ac:2: -1- m4_pattern_allow([^sysconfdir$])
|
||||||
|
m4trace:configure.ac:2: -1- m4_pattern_allow([^sharedstatedir$])
|
||||||
|
m4trace:configure.ac:2: -1- m4_pattern_allow([^localstatedir$])
|
||||||
|
m4trace:configure.ac:2: -1- m4_pattern_allow([^includedir$])
|
||||||
|
m4trace:configure.ac:2: -1- m4_pattern_allow([^oldincludedir$])
|
||||||
|
m4trace:configure.ac:2: -1- m4_pattern_allow([^docdir$])
|
||||||
|
m4trace:configure.ac:2: -1- m4_pattern_allow([^infodir$])
|
||||||
|
m4trace:configure.ac:2: -1- m4_pattern_allow([^htmldir$])
|
||||||
|
m4trace:configure.ac:2: -1- m4_pattern_allow([^dvidir$])
|
||||||
|
m4trace:configure.ac:2: -1- m4_pattern_allow([^pdfdir$])
|
||||||
|
m4trace:configure.ac:2: -1- m4_pattern_allow([^psdir$])
|
||||||
|
m4trace:configure.ac:2: -1- m4_pattern_allow([^libdir$])
|
||||||
|
m4trace:configure.ac:2: -1- m4_pattern_allow([^localedir$])
|
||||||
|
m4trace:configure.ac:2: -1- m4_pattern_allow([^mandir$])
|
||||||
|
m4trace:configure.ac:2: -1- m4_pattern_allow([^PACKAGE_NAME$])
|
||||||
|
m4trace:configure.ac:2: -1- m4_pattern_allow([^PACKAGE_TARNAME$])
|
||||||
|
m4trace:configure.ac:2: -1- m4_pattern_allow([^PACKAGE_VERSION$])
|
||||||
|
m4trace:configure.ac:2: -1- m4_pattern_allow([^PACKAGE_STRING$])
|
||||||
|
m4trace:configure.ac:2: -1- m4_pattern_allow([^PACKAGE_BUGREPORT$])
|
||||||
|
m4trace:configure.ac:2: -1- m4_pattern_allow([^PACKAGE_URL$])
|
||||||
|
m4trace:configure.ac:2: -1- m4_pattern_allow([^DEFS$])
|
||||||
|
m4trace:configure.ac:2: -1- m4_pattern_allow([^ECHO_C$])
|
||||||
|
m4trace:configure.ac:2: -1- m4_pattern_allow([^ECHO_N$])
|
||||||
|
m4trace:configure.ac:2: -1- m4_pattern_allow([^ECHO_T$])
|
||||||
|
m4trace:configure.ac:2: -1- m4_pattern_allow([^LIBS$])
|
||||||
|
m4trace:configure.ac:2: -1- m4_pattern_allow([^build_alias$])
|
||||||
|
m4trace:configure.ac:2: -1- m4_pattern_allow([^host_alias$])
|
||||||
|
m4trace:configure.ac:2: -1- m4_pattern_allow([^target_alias$])
|
||||||
|
m4trace:configure.ac:3: -1- _m4_warn([obsolete], [The macro `AC_CANONICAL_SYSTEM' is obsolete.
|
||||||
|
You should run autoupdate.], [../../lib/autoconf/general.m4:1857: AC_CANONICAL_SYSTEM is expanded from...
|
||||||
|
configure.ac:3: the top level])
|
||||||
|
m4trace:configure.ac:3: -1- m4_pattern_allow([^build$])
|
||||||
|
m4trace:configure.ac:3: -1- m4_pattern_allow([^build_cpu$])
|
||||||
|
m4trace:configure.ac:3: -1- m4_pattern_allow([^build_vendor$])
|
||||||
|
m4trace:configure.ac:3: -1- m4_pattern_allow([^build_os$])
|
||||||
|
m4trace:configure.ac:3: -1- m4_pattern_allow([^host$])
|
||||||
|
m4trace:configure.ac:3: -1- m4_pattern_allow([^host_cpu$])
|
||||||
|
m4trace:configure.ac:3: -1- m4_pattern_allow([^host_vendor$])
|
||||||
|
m4trace:configure.ac:3: -1- m4_pattern_allow([^host_os$])
|
||||||
|
m4trace:configure.ac:3: -1- m4_pattern_allow([^target$])
|
||||||
|
m4trace:configure.ac:3: -1- m4_pattern_allow([^target_cpu$])
|
||||||
|
m4trace:configure.ac:3: -1- m4_pattern_allow([^target_vendor$])
|
||||||
|
m4trace:configure.ac:3: -1- m4_pattern_allow([^target_os$])
|
||||||
|
m4trace:configure.ac:6: -1- _m4_warn([obsolete], [AC_OUTPUT should be used without arguments.
|
||||||
|
You should run autoupdate.], [])
|
||||||
|
m4trace:configure.ac:6: -1- m4_pattern_allow([^LIB@&t@OBJS$])
|
||||||
|
m4trace:configure.ac:6: -1- m4_pattern_allow([^LTLIBOBJS$])
|
|
@ -0,0 +1,437 @@
|
||||||
|
m4trace:configure.ac:2: -1- AC_INIT([aclocal.m4])
|
||||||
|
m4trace:configure.ac:2: -1- m4_pattern_forbid([^_?A[CHUM]_])
|
||||||
|
m4trace:configure.ac:2: -1- m4_pattern_forbid([_AC_])
|
||||||
|
m4trace:configure.ac:2: -1- m4_pattern_forbid([^LIBOBJS$], [do not use LIBOBJS directly, use AC_LIBOBJ (see section `AC_LIBOBJ vs LIBOBJS'])
|
||||||
|
m4trace:configure.ac:2: -1- m4_pattern_allow([^AS_FLAGS$])
|
||||||
|
m4trace:configure.ac:2: -1- m4_pattern_forbid([^_?m4_])
|
||||||
|
m4trace:configure.ac:2: -1- m4_pattern_forbid([^dnl$])
|
||||||
|
m4trace:configure.ac:2: -1- m4_pattern_forbid([^_?AS_])
|
||||||
|
m4trace:configure.ac:2: -1- AC_SUBST([SHELL])
|
||||||
|
m4trace:configure.ac:2: -1- AC_SUBST_TRACE([SHELL])
|
||||||
|
m4trace:configure.ac:2: -1- m4_pattern_allow([^SHELL$])
|
||||||
|
m4trace:configure.ac:2: -1- AC_SUBST([PATH_SEPARATOR])
|
||||||
|
m4trace:configure.ac:2: -1- AC_SUBST_TRACE([PATH_SEPARATOR])
|
||||||
|
m4trace:configure.ac:2: -1- m4_pattern_allow([^PATH_SEPARATOR$])
|
||||||
|
m4trace:configure.ac:2: -1- AC_SUBST([PACKAGE_NAME], [m4_ifdef([AC_PACKAGE_NAME], ['AC_PACKAGE_NAME'])])
|
||||||
|
m4trace:configure.ac:2: -1- AC_SUBST_TRACE([PACKAGE_NAME])
|
||||||
|
m4trace:configure.ac:2: -1- m4_pattern_allow([^PACKAGE_NAME$])
|
||||||
|
m4trace:configure.ac:2: -1- AC_SUBST([PACKAGE_TARNAME], [m4_ifdef([AC_PACKAGE_TARNAME], ['AC_PACKAGE_TARNAME'])])
|
||||||
|
m4trace:configure.ac:2: -1- AC_SUBST_TRACE([PACKAGE_TARNAME])
|
||||||
|
m4trace:configure.ac:2: -1- m4_pattern_allow([^PACKAGE_TARNAME$])
|
||||||
|
m4trace:configure.ac:2: -1- AC_SUBST([PACKAGE_VERSION], [m4_ifdef([AC_PACKAGE_VERSION], ['AC_PACKAGE_VERSION'])])
|
||||||
|
m4trace:configure.ac:2: -1- AC_SUBST_TRACE([PACKAGE_VERSION])
|
||||||
|
m4trace:configure.ac:2: -1- m4_pattern_allow([^PACKAGE_VERSION$])
|
||||||
|
m4trace:configure.ac:2: -1- AC_SUBST([PACKAGE_STRING], [m4_ifdef([AC_PACKAGE_STRING], ['AC_PACKAGE_STRING'])])
|
||||||
|
m4trace:configure.ac:2: -1- AC_SUBST_TRACE([PACKAGE_STRING])
|
||||||
|
m4trace:configure.ac:2: -1- m4_pattern_allow([^PACKAGE_STRING$])
|
||||||
|
m4trace:configure.ac:2: -1- AC_SUBST([PACKAGE_BUGREPORT], [m4_ifdef([AC_PACKAGE_BUGREPORT], ['AC_PACKAGE_BUGREPORT'])])
|
||||||
|
m4trace:configure.ac:2: -1- AC_SUBST_TRACE([PACKAGE_BUGREPORT])
|
||||||
|
m4trace:configure.ac:2: -1- m4_pattern_allow([^PACKAGE_BUGREPORT$])
|
||||||
|
m4trace:configure.ac:2: -1- AC_SUBST([PACKAGE_URL], [m4_ifdef([AC_PACKAGE_URL], ['AC_PACKAGE_URL'])])
|
||||||
|
m4trace:configure.ac:2: -1- AC_SUBST_TRACE([PACKAGE_URL])
|
||||||
|
m4trace:configure.ac:2: -1- m4_pattern_allow([^PACKAGE_URL$])
|
||||||
|
m4trace:configure.ac:2: -1- AC_SUBST([exec_prefix], [NONE])
|
||||||
|
m4trace:configure.ac:2: -1- AC_SUBST_TRACE([exec_prefix])
|
||||||
|
m4trace:configure.ac:2: -1- m4_pattern_allow([^exec_prefix$])
|
||||||
|
m4trace:configure.ac:2: -1- AC_SUBST([prefix], [NONE])
|
||||||
|
m4trace:configure.ac:2: -1- AC_SUBST_TRACE([prefix])
|
||||||
|
m4trace:configure.ac:2: -1- m4_pattern_allow([^prefix$])
|
||||||
|
m4trace:configure.ac:2: -1- AC_SUBST([program_transform_name], [s,x,x,])
|
||||||
|
m4trace:configure.ac:2: -1- AC_SUBST_TRACE([program_transform_name])
|
||||||
|
m4trace:configure.ac:2: -1- m4_pattern_allow([^program_transform_name$])
|
||||||
|
m4trace:configure.ac:2: -1- AC_SUBST([bindir], ['${exec_prefix}/bin'])
|
||||||
|
m4trace:configure.ac:2: -1- AC_SUBST_TRACE([bindir])
|
||||||
|
m4trace:configure.ac:2: -1- m4_pattern_allow([^bindir$])
|
||||||
|
m4trace:configure.ac:2: -1- AC_SUBST([sbindir], ['${exec_prefix}/sbin'])
|
||||||
|
m4trace:configure.ac:2: -1- AC_SUBST_TRACE([sbindir])
|
||||||
|
m4trace:configure.ac:2: -1- m4_pattern_allow([^sbindir$])
|
||||||
|
m4trace:configure.ac:2: -1- AC_SUBST([libexecdir], ['${exec_prefix}/libexec'])
|
||||||
|
m4trace:configure.ac:2: -1- AC_SUBST_TRACE([libexecdir])
|
||||||
|
m4trace:configure.ac:2: -1- m4_pattern_allow([^libexecdir$])
|
||||||
|
m4trace:configure.ac:2: -1- AC_SUBST([datarootdir], ['${prefix}/share'])
|
||||||
|
m4trace:configure.ac:2: -1- AC_SUBST_TRACE([datarootdir])
|
||||||
|
m4trace:configure.ac:2: -1- m4_pattern_allow([^datarootdir$])
|
||||||
|
m4trace:configure.ac:2: -1- AC_SUBST([datadir], ['${datarootdir}'])
|
||||||
|
m4trace:configure.ac:2: -1- AC_SUBST_TRACE([datadir])
|
||||||
|
m4trace:configure.ac:2: -1- m4_pattern_allow([^datadir$])
|
||||||
|
m4trace:configure.ac:2: -1- AC_SUBST([sysconfdir], ['${prefix}/etc'])
|
||||||
|
m4trace:configure.ac:2: -1- AC_SUBST_TRACE([sysconfdir])
|
||||||
|
m4trace:configure.ac:2: -1- m4_pattern_allow([^sysconfdir$])
|
||||||
|
m4trace:configure.ac:2: -1- AC_SUBST([sharedstatedir], ['${prefix}/com'])
|
||||||
|
m4trace:configure.ac:2: -1- AC_SUBST_TRACE([sharedstatedir])
|
||||||
|
m4trace:configure.ac:2: -1- m4_pattern_allow([^sharedstatedir$])
|
||||||
|
m4trace:configure.ac:2: -1- AC_SUBST([localstatedir], ['${prefix}/var'])
|
||||||
|
m4trace:configure.ac:2: -1- AC_SUBST_TRACE([localstatedir])
|
||||||
|
m4trace:configure.ac:2: -1- m4_pattern_allow([^localstatedir$])
|
||||||
|
m4trace:configure.ac:2: -1- AC_SUBST([includedir], ['${prefix}/include'])
|
||||||
|
m4trace:configure.ac:2: -1- AC_SUBST_TRACE([includedir])
|
||||||
|
m4trace:configure.ac:2: -1- m4_pattern_allow([^includedir$])
|
||||||
|
m4trace:configure.ac:2: -1- AC_SUBST([oldincludedir], ['/usr/include'])
|
||||||
|
m4trace:configure.ac:2: -1- AC_SUBST_TRACE([oldincludedir])
|
||||||
|
m4trace:configure.ac:2: -1- m4_pattern_allow([^oldincludedir$])
|
||||||
|
m4trace:configure.ac:2: -1- AC_SUBST([docdir], [m4_ifset([AC_PACKAGE_TARNAME],
|
||||||
|
['${datarootdir}/doc/${PACKAGE_TARNAME}'],
|
||||||
|
['${datarootdir}/doc/${PACKAGE}'])])
|
||||||
|
m4trace:configure.ac:2: -1- AC_SUBST_TRACE([docdir])
|
||||||
|
m4trace:configure.ac:2: -1- m4_pattern_allow([^docdir$])
|
||||||
|
m4trace:configure.ac:2: -1- AC_SUBST([infodir], ['${datarootdir}/info'])
|
||||||
|
m4trace:configure.ac:2: -1- AC_SUBST_TRACE([infodir])
|
||||||
|
m4trace:configure.ac:2: -1- m4_pattern_allow([^infodir$])
|
||||||
|
m4trace:configure.ac:2: -1- AC_SUBST([htmldir], ['${docdir}'])
|
||||||
|
m4trace:configure.ac:2: -1- AC_SUBST_TRACE([htmldir])
|
||||||
|
m4trace:configure.ac:2: -1- m4_pattern_allow([^htmldir$])
|
||||||
|
m4trace:configure.ac:2: -1- AC_SUBST([dvidir], ['${docdir}'])
|
||||||
|
m4trace:configure.ac:2: -1- AC_SUBST_TRACE([dvidir])
|
||||||
|
m4trace:configure.ac:2: -1- m4_pattern_allow([^dvidir$])
|
||||||
|
m4trace:configure.ac:2: -1- AC_SUBST([pdfdir], ['${docdir}'])
|
||||||
|
m4trace:configure.ac:2: -1- AC_SUBST_TRACE([pdfdir])
|
||||||
|
m4trace:configure.ac:2: -1- m4_pattern_allow([^pdfdir$])
|
||||||
|
m4trace:configure.ac:2: -1- AC_SUBST([psdir], ['${docdir}'])
|
||||||
|
m4trace:configure.ac:2: -1- AC_SUBST_TRACE([psdir])
|
||||||
|
m4trace:configure.ac:2: -1- m4_pattern_allow([^psdir$])
|
||||||
|
m4trace:configure.ac:2: -1- AC_SUBST([libdir], ['${exec_prefix}/lib'])
|
||||||
|
m4trace:configure.ac:2: -1- AC_SUBST_TRACE([libdir])
|
||||||
|
m4trace:configure.ac:2: -1- m4_pattern_allow([^libdir$])
|
||||||
|
m4trace:configure.ac:2: -1- AC_SUBST([localedir], ['${datarootdir}/locale'])
|
||||||
|
m4trace:configure.ac:2: -1- AC_SUBST_TRACE([localedir])
|
||||||
|
m4trace:configure.ac:2: -1- m4_pattern_allow([^localedir$])
|
||||||
|
m4trace:configure.ac:2: -1- AC_SUBST([mandir], ['${datarootdir}/man'])
|
||||||
|
m4trace:configure.ac:2: -1- AC_SUBST_TRACE([mandir])
|
||||||
|
m4trace:configure.ac:2: -1- m4_pattern_allow([^mandir$])
|
||||||
|
m4trace:configure.ac:2: -1- AC_DEFINE_TRACE_LITERAL([PACKAGE_NAME])
|
||||||
|
m4trace:configure.ac:2: -1- m4_pattern_allow([^PACKAGE_NAME$])
|
||||||
|
m4trace:configure.ac:2: -1- AH_OUTPUT([PACKAGE_NAME], [/* Define to the full name of this package. */
|
||||||
|
@%:@undef PACKAGE_NAME])
|
||||||
|
m4trace:configure.ac:2: -1- AC_DEFINE_TRACE_LITERAL([PACKAGE_TARNAME])
|
||||||
|
m4trace:configure.ac:2: -1- m4_pattern_allow([^PACKAGE_TARNAME$])
|
||||||
|
m4trace:configure.ac:2: -1- AH_OUTPUT([PACKAGE_TARNAME], [/* Define to the one symbol short name of this package. */
|
||||||
|
@%:@undef PACKAGE_TARNAME])
|
||||||
|
m4trace:configure.ac:2: -1- AC_DEFINE_TRACE_LITERAL([PACKAGE_VERSION])
|
||||||
|
m4trace:configure.ac:2: -1- m4_pattern_allow([^PACKAGE_VERSION$])
|
||||||
|
m4trace:configure.ac:2: -1- AH_OUTPUT([PACKAGE_VERSION], [/* Define to the version of this package. */
|
||||||
|
@%:@undef PACKAGE_VERSION])
|
||||||
|
m4trace:configure.ac:2: -1- AC_DEFINE_TRACE_LITERAL([PACKAGE_STRING])
|
||||||
|
m4trace:configure.ac:2: -1- m4_pattern_allow([^PACKAGE_STRING$])
|
||||||
|
m4trace:configure.ac:2: -1- AH_OUTPUT([PACKAGE_STRING], [/* Define to the full name and version of this package. */
|
||||||
|
@%:@undef PACKAGE_STRING])
|
||||||
|
m4trace:configure.ac:2: -1- AC_DEFINE_TRACE_LITERAL([PACKAGE_BUGREPORT])
|
||||||
|
m4trace:configure.ac:2: -1- m4_pattern_allow([^PACKAGE_BUGREPORT$])
|
||||||
|
m4trace:configure.ac:2: -1- AH_OUTPUT([PACKAGE_BUGREPORT], [/* Define to the address where bug reports for this package should be sent. */
|
||||||
|
@%:@undef PACKAGE_BUGREPORT])
|
||||||
|
m4trace:configure.ac:2: -1- AC_DEFINE_TRACE_LITERAL([PACKAGE_URL])
|
||||||
|
m4trace:configure.ac:2: -1- m4_pattern_allow([^PACKAGE_URL$])
|
||||||
|
m4trace:configure.ac:2: -1- AH_OUTPUT([PACKAGE_URL], [/* Define to the home page for this package. */
|
||||||
|
@%:@undef PACKAGE_URL])
|
||||||
|
m4trace:configure.ac:2: -1- AC_SUBST([DEFS])
|
||||||
|
m4trace:configure.ac:2: -1- AC_SUBST_TRACE([DEFS])
|
||||||
|
m4trace:configure.ac:2: -1- m4_pattern_allow([^DEFS$])
|
||||||
|
m4trace:configure.ac:2: -1- AC_SUBST([ECHO_C])
|
||||||
|
m4trace:configure.ac:2: -1- AC_SUBST_TRACE([ECHO_C])
|
||||||
|
m4trace:configure.ac:2: -1- m4_pattern_allow([^ECHO_C$])
|
||||||
|
m4trace:configure.ac:2: -1- AC_SUBST([ECHO_N])
|
||||||
|
m4trace:configure.ac:2: -1- AC_SUBST_TRACE([ECHO_N])
|
||||||
|
m4trace:configure.ac:2: -1- m4_pattern_allow([^ECHO_N$])
|
||||||
|
m4trace:configure.ac:2: -1- AC_SUBST([ECHO_T])
|
||||||
|
m4trace:configure.ac:2: -1- AC_SUBST_TRACE([ECHO_T])
|
||||||
|
m4trace:configure.ac:2: -1- m4_pattern_allow([^ECHO_T$])
|
||||||
|
m4trace:configure.ac:2: -1- AC_SUBST([LIBS])
|
||||||
|
m4trace:configure.ac:2: -1- AC_SUBST_TRACE([LIBS])
|
||||||
|
m4trace:configure.ac:2: -1- m4_pattern_allow([^LIBS$])
|
||||||
|
m4trace:configure.ac:2: -1- AC_SUBST([build_alias])
|
||||||
|
m4trace:configure.ac:2: -1- AC_SUBST_TRACE([build_alias])
|
||||||
|
m4trace:configure.ac:2: -1- m4_pattern_allow([^build_alias$])
|
||||||
|
m4trace:configure.ac:2: -1- AC_SUBST([host_alias])
|
||||||
|
m4trace:configure.ac:2: -1- AC_SUBST_TRACE([host_alias])
|
||||||
|
m4trace:configure.ac:2: -1- m4_pattern_allow([^host_alias$])
|
||||||
|
m4trace:configure.ac:2: -1- AC_SUBST([target_alias])
|
||||||
|
m4trace:configure.ac:2: -1- AC_SUBST_TRACE([target_alias])
|
||||||
|
m4trace:configure.ac:2: -1- m4_pattern_allow([^target_alias$])
|
||||||
|
m4trace:configure.ac:3: -1- AC_CANONICAL_SYSTEM
|
||||||
|
m4trace:configure.ac:3: -1- _m4_warn([obsolete], [The macro `AC_CANONICAL_SYSTEM' is obsolete.
|
||||||
|
You should run autoupdate.], [../../lib/autoconf/general.m4:1857: AC_CANONICAL_SYSTEM is expanded from...
|
||||||
|
configure.ac:3: the top level])
|
||||||
|
m4trace:configure.ac:3: -1- AC_CANONICAL_TARGET
|
||||||
|
m4trace:configure.ac:3: -1- AC_CANONICAL_HOST
|
||||||
|
m4trace:configure.ac:3: -1- AC_CANONICAL_BUILD
|
||||||
|
m4trace:configure.ac:3: -1- AC_REQUIRE_AUX_FILE([config.sub])
|
||||||
|
m4trace:configure.ac:3: -1- AC_REQUIRE_AUX_FILE([config.guess])
|
||||||
|
m4trace:configure.ac:3: -1- AC_SUBST([build], [$ac_cv_build])
|
||||||
|
m4trace:configure.ac:3: -1- AC_SUBST_TRACE([build])
|
||||||
|
m4trace:configure.ac:3: -1- m4_pattern_allow([^build$])
|
||||||
|
m4trace:configure.ac:3: -1- AC_SUBST([build_cpu], [$[1]])
|
||||||
|
m4trace:configure.ac:3: -1- AC_SUBST_TRACE([build_cpu])
|
||||||
|
m4trace:configure.ac:3: -1- m4_pattern_allow([^build_cpu$])
|
||||||
|
m4trace:configure.ac:3: -1- AC_SUBST([build_vendor], [$[2]])
|
||||||
|
m4trace:configure.ac:3: -1- AC_SUBST_TRACE([build_vendor])
|
||||||
|
m4trace:configure.ac:3: -1- m4_pattern_allow([^build_vendor$])
|
||||||
|
m4trace:configure.ac:3: -1- AC_SUBST([build_os])
|
||||||
|
m4trace:configure.ac:3: -1- AC_SUBST_TRACE([build_os])
|
||||||
|
m4trace:configure.ac:3: -1- m4_pattern_allow([^build_os$])
|
||||||
|
m4trace:configure.ac:3: -1- AC_SUBST([host], [$ac_cv_host])
|
||||||
|
m4trace:configure.ac:3: -1- AC_SUBST_TRACE([host])
|
||||||
|
m4trace:configure.ac:3: -1- m4_pattern_allow([^host$])
|
||||||
|
m4trace:configure.ac:3: -1- AC_SUBST([host_cpu], [$[1]])
|
||||||
|
m4trace:configure.ac:3: -1- AC_SUBST_TRACE([host_cpu])
|
||||||
|
m4trace:configure.ac:3: -1- m4_pattern_allow([^host_cpu$])
|
||||||
|
m4trace:configure.ac:3: -1- AC_SUBST([host_vendor], [$[2]])
|
||||||
|
m4trace:configure.ac:3: -1- AC_SUBST_TRACE([host_vendor])
|
||||||
|
m4trace:configure.ac:3: -1- m4_pattern_allow([^host_vendor$])
|
||||||
|
m4trace:configure.ac:3: -1- AC_SUBST([host_os])
|
||||||
|
m4trace:configure.ac:3: -1- AC_SUBST_TRACE([host_os])
|
||||||
|
m4trace:configure.ac:3: -1- m4_pattern_allow([^host_os$])
|
||||||
|
m4trace:configure.ac:3: -1- AC_SUBST([target], [$ac_cv_target])
|
||||||
|
m4trace:configure.ac:3: -1- AC_SUBST_TRACE([target])
|
||||||
|
m4trace:configure.ac:3: -1- m4_pattern_allow([^target$])
|
||||||
|
m4trace:configure.ac:3: -1- AC_SUBST([target_cpu], [$[1]])
|
||||||
|
m4trace:configure.ac:3: -1- AC_SUBST_TRACE([target_cpu])
|
||||||
|
m4trace:configure.ac:3: -1- m4_pattern_allow([^target_cpu$])
|
||||||
|
m4trace:configure.ac:3: -1- AC_SUBST([target_vendor], [$[2]])
|
||||||
|
m4trace:configure.ac:3: -1- AC_SUBST_TRACE([target_vendor])
|
||||||
|
m4trace:configure.ac:3: -1- m4_pattern_allow([^target_vendor$])
|
||||||
|
m4trace:configure.ac:3: -1- AC_SUBST([target_os])
|
||||||
|
m4trace:configure.ac:3: -1- AC_SUBST_TRACE([target_os])
|
||||||
|
m4trace:configure.ac:3: -1- m4_pattern_allow([^target_os$])
|
||||||
|
m4trace:configure.ac:5: -1- AC_SUBST([RANLIB])
|
||||||
|
m4trace:configure.ac:5: -1- AC_SUBST_TRACE([RANLIB])
|
||||||
|
m4trace:configure.ac:5: -1- m4_pattern_allow([^RANLIB$])
|
||||||
|
m4trace:configure.ac:5: -1- AC_REQUIRE_AUX_FILE([install-sh])
|
||||||
|
m4trace:configure.ac:5: -1- AC_SUBST([INSTALL_PROGRAM])
|
||||||
|
m4trace:configure.ac:5: -1- AC_SUBST_TRACE([INSTALL_PROGRAM])
|
||||||
|
m4trace:configure.ac:5: -1- m4_pattern_allow([^INSTALL_PROGRAM$])
|
||||||
|
m4trace:configure.ac:5: -1- AC_SUBST([INSTALL_SCRIPT])
|
||||||
|
m4trace:configure.ac:5: -1- AC_SUBST_TRACE([INSTALL_SCRIPT])
|
||||||
|
m4trace:configure.ac:5: -1- m4_pattern_allow([^INSTALL_SCRIPT$])
|
||||||
|
m4trace:configure.ac:5: -1- AC_SUBST([INSTALL_DATA])
|
||||||
|
m4trace:configure.ac:5: -1- AC_SUBST_TRACE([INSTALL_DATA])
|
||||||
|
m4trace:configure.ac:5: -1- m4_pattern_allow([^INSTALL_DATA$])
|
||||||
|
m4trace:configure.ac:5: -1- AC_SUBST([LN_S], [$as_ln_s])
|
||||||
|
m4trace:configure.ac:5: -1- AC_SUBST_TRACE([LN_S])
|
||||||
|
m4trace:configure.ac:5: -1- m4_pattern_allow([^LN_S$])
|
||||||
|
m4trace:configure.ac:5: -1- AC_SUBST([SET_MAKE])
|
||||||
|
m4trace:configure.ac:5: -1- AC_SUBST_TRACE([SET_MAKE])
|
||||||
|
m4trace:configure.ac:5: -1- m4_pattern_allow([^SET_MAKE$])
|
||||||
|
m4trace:configure.ac:5: -1- AC_SUBST([MAKE_SET])
|
||||||
|
m4trace:configure.ac:5: -1- AC_SUBST_TRACE([MAKE_SET])
|
||||||
|
m4trace:configure.ac:5: -1- m4_pattern_allow([^MAKE_SET$])
|
||||||
|
m4trace:configure.ac:5: -1- AC_SUBST([AR])
|
||||||
|
m4trace:configure.ac:5: -1- AC_SUBST_TRACE([AR])
|
||||||
|
m4trace:configure.ac:5: -1- m4_pattern_allow([^AR$])
|
||||||
|
m4trace:configure.ac:5: -1- AC_SUBST([AR])
|
||||||
|
m4trace:configure.ac:5: -1- AC_SUBST_TRACE([AR])
|
||||||
|
m4trace:configure.ac:5: -1- m4_pattern_allow([^AR$])
|
||||||
|
m4trace:configure.ac:5: -1- AC_SUBST([AR])
|
||||||
|
m4trace:configure.ac:5: -1- AC_SUBST_TRACE([AR])
|
||||||
|
m4trace:configure.ac:5: -1- m4_pattern_allow([^AR$])
|
||||||
|
m4trace:configure.ac:5: -1- AC_SUBST([AROPTIONS])
|
||||||
|
m4trace:configure.ac:5: -1- AC_SUBST_TRACE([AROPTIONS])
|
||||||
|
m4trace:configure.ac:5: -1- m4_pattern_allow([^AROPTIONS$])
|
||||||
|
m4trace:configure.ac:5: -1- AC_SUBST([STRIP])
|
||||||
|
m4trace:configure.ac:5: -1- AC_SUBST_TRACE([STRIP])
|
||||||
|
m4trace:configure.ac:5: -1- m4_pattern_allow([^STRIP$])
|
||||||
|
m4trace:configure.ac:5: -1- AC_SUBST([NM])
|
||||||
|
m4trace:configure.ac:5: -1- AC_SUBST_TRACE([NM])
|
||||||
|
m4trace:configure.ac:5: -1- m4_pattern_allow([^NM$])
|
||||||
|
m4trace:configure.ac:5: -1- AC_SUBST([INSTALL_DIR])
|
||||||
|
m4trace:configure.ac:5: -1- AC_SUBST_TRACE([INSTALL_DIR])
|
||||||
|
m4trace:configure.ac:5: -1- m4_pattern_allow([^INSTALL_DIR$])
|
||||||
|
m4trace:configure.ac:5: -1- AC_SUBST([LDFLAGS_GUI])
|
||||||
|
m4trace:configure.ac:5: -1- AC_SUBST_TRACE([LDFLAGS_GUI])
|
||||||
|
m4trace:configure.ac:5: -1- m4_pattern_allow([^LDFLAGS_GUI$])
|
||||||
|
m4trace:configure.ac:5: -1- AC_SUBST([IF_GNU_MAKE])
|
||||||
|
m4trace:configure.ac:5: -1- AC_SUBST_TRACE([IF_GNU_MAKE])
|
||||||
|
m4trace:configure.ac:5: -1- m4_pattern_allow([^IF_GNU_MAKE$])
|
||||||
|
m4trace:configure.ac:5: -1- AC_SUBST([PLATFORM_UNIX])
|
||||||
|
m4trace:configure.ac:5: -1- AC_SUBST_TRACE([PLATFORM_UNIX])
|
||||||
|
m4trace:configure.ac:5: -1- m4_pattern_allow([^PLATFORM_UNIX$])
|
||||||
|
m4trace:configure.ac:5: -1- AC_SUBST([PLATFORM_WIN32])
|
||||||
|
m4trace:configure.ac:5: -1- AC_SUBST_TRACE([PLATFORM_WIN32])
|
||||||
|
m4trace:configure.ac:5: -1- m4_pattern_allow([^PLATFORM_WIN32$])
|
||||||
|
m4trace:configure.ac:5: -1- AC_SUBST([PLATFORM_MSDOS])
|
||||||
|
m4trace:configure.ac:5: -1- AC_SUBST_TRACE([PLATFORM_MSDOS])
|
||||||
|
m4trace:configure.ac:5: -1- m4_pattern_allow([^PLATFORM_MSDOS$])
|
||||||
|
m4trace:configure.ac:5: -1- AC_SUBST([PLATFORM_MAC])
|
||||||
|
m4trace:configure.ac:5: -1- AC_SUBST_TRACE([PLATFORM_MAC])
|
||||||
|
m4trace:configure.ac:5: -1- m4_pattern_allow([^PLATFORM_MAC$])
|
||||||
|
m4trace:configure.ac:5: -1- AC_SUBST([PLATFORM_MACOS])
|
||||||
|
m4trace:configure.ac:5: -1- AC_SUBST_TRACE([PLATFORM_MACOS])
|
||||||
|
m4trace:configure.ac:5: -1- m4_pattern_allow([^PLATFORM_MACOS$])
|
||||||
|
m4trace:configure.ac:5: -1- AC_SUBST([PLATFORM_MACOSX])
|
||||||
|
m4trace:configure.ac:5: -1- AC_SUBST_TRACE([PLATFORM_MACOSX])
|
||||||
|
m4trace:configure.ac:5: -1- m4_pattern_allow([^PLATFORM_MACOSX$])
|
||||||
|
m4trace:configure.ac:5: -1- AC_SUBST([PLATFORM_OS2])
|
||||||
|
m4trace:configure.ac:5: -1- AC_SUBST_TRACE([PLATFORM_OS2])
|
||||||
|
m4trace:configure.ac:5: -1- m4_pattern_allow([^PLATFORM_OS2$])
|
||||||
|
m4trace:configure.ac:5: -1- AC_SUBST([PLATFORM_BEOS])
|
||||||
|
m4trace:configure.ac:5: -1- AC_SUBST_TRACE([PLATFORM_BEOS])
|
||||||
|
m4trace:configure.ac:5: -1- m4_pattern_allow([^PLATFORM_BEOS$])
|
||||||
|
m4trace:configure.ac:5: -1- AC_SUBST([SO_SUFFIX])
|
||||||
|
m4trace:configure.ac:5: -1- AC_SUBST_TRACE([SO_SUFFIX])
|
||||||
|
m4trace:configure.ac:5: -1- m4_pattern_allow([^SO_SUFFIX$])
|
||||||
|
m4trace:configure.ac:5: -1- AC_SUBST([SO_SUFFIX_MODULE])
|
||||||
|
m4trace:configure.ac:5: -1- AC_SUBST_TRACE([SO_SUFFIX_MODULE])
|
||||||
|
m4trace:configure.ac:5: -1- m4_pattern_allow([^SO_SUFFIX_MODULE$])
|
||||||
|
m4trace:configure.ac:5: -1- AC_SUBST([DLLIMP_SUFFIX])
|
||||||
|
m4trace:configure.ac:5: -1- AC_SUBST_TRACE([DLLIMP_SUFFIX])
|
||||||
|
m4trace:configure.ac:5: -1- m4_pattern_allow([^DLLIMP_SUFFIX$])
|
||||||
|
m4trace:configure.ac:5: -1- AC_SUBST([EXEEXT])
|
||||||
|
m4trace:configure.ac:5: -1- AC_SUBST_TRACE([EXEEXT])
|
||||||
|
m4trace:configure.ac:5: -1- m4_pattern_allow([^EXEEXT$])
|
||||||
|
m4trace:configure.ac:5: -1- AC_SUBST([LIBPREFIX])
|
||||||
|
m4trace:configure.ac:5: -1- AC_SUBST_TRACE([LIBPREFIX])
|
||||||
|
m4trace:configure.ac:5: -1- m4_pattern_allow([^LIBPREFIX$])
|
||||||
|
m4trace:configure.ac:5: -1- AC_SUBST([LIBEXT])
|
||||||
|
m4trace:configure.ac:5: -1- AC_SUBST_TRACE([LIBEXT])
|
||||||
|
m4trace:configure.ac:5: -1- m4_pattern_allow([^LIBEXT$])
|
||||||
|
m4trace:configure.ac:5: -1- AC_SUBST([DLLPREFIX])
|
||||||
|
m4trace:configure.ac:5: -1- AC_SUBST_TRACE([DLLPREFIX])
|
||||||
|
m4trace:configure.ac:5: -1- m4_pattern_allow([^DLLPREFIX$])
|
||||||
|
m4trace:configure.ac:5: -1- AC_SUBST([DLLPREFIX_MODULE])
|
||||||
|
m4trace:configure.ac:5: -1- AC_SUBST_TRACE([DLLPREFIX_MODULE])
|
||||||
|
m4trace:configure.ac:5: -1- m4_pattern_allow([^DLLPREFIX_MODULE$])
|
||||||
|
m4trace:configure.ac:5: -1- AC_SUBST([dlldir])
|
||||||
|
m4trace:configure.ac:5: -1- AC_SUBST_TRACE([dlldir])
|
||||||
|
m4trace:configure.ac:5: -1- m4_pattern_allow([^dlldir$])
|
||||||
|
m4trace:configure.ac:5: -1- _m4_warn([obsolete], [The macro `AC_TRY_COMPILE' is obsolete.
|
||||||
|
You should run autoupdate.], [../../lib/autoconf/general.m4:2614: AC_TRY_COMPILE is expanded from...
|
||||||
|
../../lib/m4sugar/m4sh.m4:639: AS_IF is expanded from...
|
||||||
|
../../lib/autoconf/general.m4:2031: AC_CACHE_VAL is expanded from...
|
||||||
|
../../lib/autoconf/general.m4:2052: AC_CACHE_CHECK is expanded from...
|
||||||
|
aclocal.m4:780: AC_BAKEFILE_SHARED_LD is expanded from...
|
||||||
|
aclocal.m4:1299: AC_BAKEFILE is expanded from...
|
||||||
|
configure.ac:5: the top level])
|
||||||
|
m4trace:configure.ac:5: -1- AC_SUBST([CC])
|
||||||
|
m4trace:configure.ac:5: -1- AC_SUBST_TRACE([CC])
|
||||||
|
m4trace:configure.ac:5: -1- m4_pattern_allow([^CC$])
|
||||||
|
m4trace:configure.ac:5: -1- AC_SUBST([CFLAGS])
|
||||||
|
m4trace:configure.ac:5: -1- AC_SUBST_TRACE([CFLAGS])
|
||||||
|
m4trace:configure.ac:5: -1- m4_pattern_allow([^CFLAGS$])
|
||||||
|
m4trace:configure.ac:5: -1- AC_SUBST([LDFLAGS])
|
||||||
|
m4trace:configure.ac:5: -1- AC_SUBST_TRACE([LDFLAGS])
|
||||||
|
m4trace:configure.ac:5: -1- m4_pattern_allow([^LDFLAGS$])
|
||||||
|
m4trace:configure.ac:5: -1- AC_SUBST([LIBS])
|
||||||
|
m4trace:configure.ac:5: -1- AC_SUBST_TRACE([LIBS])
|
||||||
|
m4trace:configure.ac:5: -1- m4_pattern_allow([^LIBS$])
|
||||||
|
m4trace:configure.ac:5: -1- AC_SUBST([CPPFLAGS])
|
||||||
|
m4trace:configure.ac:5: -1- AC_SUBST_TRACE([CPPFLAGS])
|
||||||
|
m4trace:configure.ac:5: -1- m4_pattern_allow([^CPPFLAGS$])
|
||||||
|
m4trace:configure.ac:5: -1- AC_SUBST([CC])
|
||||||
|
m4trace:configure.ac:5: -1- AC_SUBST_TRACE([CC])
|
||||||
|
m4trace:configure.ac:5: -1- m4_pattern_allow([^CC$])
|
||||||
|
m4trace:configure.ac:5: -1- AC_SUBST([CC])
|
||||||
|
m4trace:configure.ac:5: -1- AC_SUBST_TRACE([CC])
|
||||||
|
m4trace:configure.ac:5: -1- m4_pattern_allow([^CC$])
|
||||||
|
m4trace:configure.ac:5: -1- AC_SUBST([CC])
|
||||||
|
m4trace:configure.ac:5: -1- AC_SUBST_TRACE([CC])
|
||||||
|
m4trace:configure.ac:5: -1- m4_pattern_allow([^CC$])
|
||||||
|
m4trace:configure.ac:5: -1- AC_SUBST([CC])
|
||||||
|
m4trace:configure.ac:5: -1- AC_SUBST_TRACE([CC])
|
||||||
|
m4trace:configure.ac:5: -1- m4_pattern_allow([^CC$])
|
||||||
|
m4trace:configure.ac:5: -1- AC_SUBST([ac_ct_CC])
|
||||||
|
m4trace:configure.ac:5: -1- AC_SUBST_TRACE([ac_ct_CC])
|
||||||
|
m4trace:configure.ac:5: -1- m4_pattern_allow([^ac_ct_CC$])
|
||||||
|
m4trace:configure.ac:5: -1- AC_SUBST([EXEEXT], [$ac_cv_exeext])
|
||||||
|
m4trace:configure.ac:5: -1- AC_SUBST_TRACE([EXEEXT])
|
||||||
|
m4trace:configure.ac:5: -1- m4_pattern_allow([^EXEEXT$])
|
||||||
|
m4trace:configure.ac:5: -1- AC_SUBST([OBJEXT], [$ac_cv_objext])
|
||||||
|
m4trace:configure.ac:5: -1- AC_SUBST_TRACE([OBJEXT])
|
||||||
|
m4trace:configure.ac:5: -1- m4_pattern_allow([^OBJEXT$])
|
||||||
|
m4trace:configure.ac:5: -1- _m4_warn([obsolete], [The macro `AC_TRY_COMPILE' is obsolete.
|
||||||
|
You should run autoupdate.], [../../lib/autoconf/general.m4:2614: AC_TRY_COMPILE is expanded from...
|
||||||
|
../../lib/m4sugar/m4sh.m4:639: AS_IF is expanded from...
|
||||||
|
../../lib/autoconf/general.m4:2031: AC_CACHE_VAL is expanded from...
|
||||||
|
../../lib/autoconf/general.m4:2052: AC_CACHE_CHECK is expanded from...
|
||||||
|
aclocal.m4:780: AC_BAKEFILE_SHARED_LD is expanded from...
|
||||||
|
aclocal.m4:1299: AC_BAKEFILE is expanded from...
|
||||||
|
configure.ac:5: the top level])
|
||||||
|
m4trace:configure.ac:5: -1- AC_SUBST([AIX_CXX_LD])
|
||||||
|
m4trace:configure.ac:5: -1- AC_SUBST_TRACE([AIX_CXX_LD])
|
||||||
|
m4trace:configure.ac:5: -1- m4_pattern_allow([^AIX_CXX_LD$])
|
||||||
|
m4trace:configure.ac:5: -1- AC_SUBST([SHARED_LD_CC])
|
||||||
|
m4trace:configure.ac:5: -1- AC_SUBST_TRACE([SHARED_LD_CC])
|
||||||
|
m4trace:configure.ac:5: -1- m4_pattern_allow([^SHARED_LD_CC$])
|
||||||
|
m4trace:configure.ac:5: -1- AC_SUBST([SHARED_LD_CXX])
|
||||||
|
m4trace:configure.ac:5: -1- AC_SUBST_TRACE([SHARED_LD_CXX])
|
||||||
|
m4trace:configure.ac:5: -1- m4_pattern_allow([^SHARED_LD_CXX$])
|
||||||
|
m4trace:configure.ac:5: -1- AC_SUBST([SHARED_LD_MODULE_CC])
|
||||||
|
m4trace:configure.ac:5: -1- AC_SUBST_TRACE([SHARED_LD_MODULE_CC])
|
||||||
|
m4trace:configure.ac:5: -1- m4_pattern_allow([^SHARED_LD_MODULE_CC$])
|
||||||
|
m4trace:configure.ac:5: -1- AC_SUBST([SHARED_LD_MODULE_CXX])
|
||||||
|
m4trace:configure.ac:5: -1- AC_SUBST_TRACE([SHARED_LD_MODULE_CXX])
|
||||||
|
m4trace:configure.ac:5: -1- m4_pattern_allow([^SHARED_LD_MODULE_CXX$])
|
||||||
|
m4trace:configure.ac:5: -1- AC_SUBST([PIC_FLAG])
|
||||||
|
m4trace:configure.ac:5: -1- AC_SUBST_TRACE([PIC_FLAG])
|
||||||
|
m4trace:configure.ac:5: -1- m4_pattern_allow([^PIC_FLAG$])
|
||||||
|
m4trace:configure.ac:5: -1- AC_SUBST([WINDOWS_IMPLIB])
|
||||||
|
m4trace:configure.ac:5: -1- AC_SUBST_TRACE([WINDOWS_IMPLIB])
|
||||||
|
m4trace:configure.ac:5: -1- m4_pattern_allow([^WINDOWS_IMPLIB$])
|
||||||
|
m4trace:configure.ac:5: -1- AC_SUBST([USE_SOVERSION])
|
||||||
|
m4trace:configure.ac:5: -1- AC_SUBST_TRACE([USE_SOVERSION])
|
||||||
|
m4trace:configure.ac:5: -1- m4_pattern_allow([^USE_SOVERSION$])
|
||||||
|
m4trace:configure.ac:5: -1- AC_SUBST([USE_SOVERLINUX])
|
||||||
|
m4trace:configure.ac:5: -1- AC_SUBST_TRACE([USE_SOVERLINUX])
|
||||||
|
m4trace:configure.ac:5: -1- m4_pattern_allow([^USE_SOVERLINUX$])
|
||||||
|
m4trace:configure.ac:5: -1- AC_SUBST([USE_SOVERSOLARIS])
|
||||||
|
m4trace:configure.ac:5: -1- AC_SUBST_TRACE([USE_SOVERSOLARIS])
|
||||||
|
m4trace:configure.ac:5: -1- m4_pattern_allow([^USE_SOVERSOLARIS$])
|
||||||
|
m4trace:configure.ac:5: -1- AC_SUBST([USE_SOVERCYGWIN])
|
||||||
|
m4trace:configure.ac:5: -1- AC_SUBST_TRACE([USE_SOVERCYGWIN])
|
||||||
|
m4trace:configure.ac:5: -1- m4_pattern_allow([^USE_SOVERCYGWIN$])
|
||||||
|
m4trace:configure.ac:5: -1- AC_SUBST([USE_MACVERSION])
|
||||||
|
m4trace:configure.ac:5: -1- AC_SUBST_TRACE([USE_MACVERSION])
|
||||||
|
m4trace:configure.ac:5: -1- m4_pattern_allow([^USE_MACVERSION$])
|
||||||
|
m4trace:configure.ac:5: -1- AC_SUBST([USE_SOSYMLINKS])
|
||||||
|
m4trace:configure.ac:5: -1- AC_SUBST_TRACE([USE_SOSYMLINKS])
|
||||||
|
m4trace:configure.ac:5: -1- m4_pattern_allow([^USE_SOSYMLINKS$])
|
||||||
|
m4trace:configure.ac:5: -1- AC_SUBST([SONAME_FLAG])
|
||||||
|
m4trace:configure.ac:5: -1- AC_SUBST_TRACE([SONAME_FLAG])
|
||||||
|
m4trace:configure.ac:5: -1- m4_pattern_allow([^SONAME_FLAG$])
|
||||||
|
m4trace:configure.ac:5: -1- AC_SUBST([DEPS_TRACKING])
|
||||||
|
m4trace:configure.ac:5: -1- AC_SUBST_TRACE([DEPS_TRACKING])
|
||||||
|
m4trace:configure.ac:5: -1- m4_pattern_allow([^DEPS_TRACKING$])
|
||||||
|
m4trace:configure.ac:5: -1- AC_SUBST([BK_DEPS])
|
||||||
|
m4trace:configure.ac:5: -1- AC_SUBST_TRACE([BK_DEPS])
|
||||||
|
m4trace:configure.ac:5: -1- m4_pattern_allow([^BK_DEPS$])
|
||||||
|
m4trace:configure.ac:5: -1- AC_SUBST([WINDRES])
|
||||||
|
m4trace:configure.ac:5: -1- AC_SUBST_TRACE([WINDRES])
|
||||||
|
m4trace:configure.ac:5: -1- m4_pattern_allow([^WINDRES$])
|
||||||
|
m4trace:configure.ac:5: -1- AC_SUBST([REZ])
|
||||||
|
m4trace:configure.ac:5: -1- AC_SUBST_TRACE([REZ])
|
||||||
|
m4trace:configure.ac:5: -1- m4_pattern_allow([^REZ$])
|
||||||
|
m4trace:configure.ac:5: -1- AC_SUBST([SETFILE])
|
||||||
|
m4trace:configure.ac:5: -1- AC_SUBST_TRACE([SETFILE])
|
||||||
|
m4trace:configure.ac:5: -1- m4_pattern_allow([^SETFILE$])
|
||||||
|
m4trace:configure.ac:5: -1- AC_SUBST([WINDRES])
|
||||||
|
m4trace:configure.ac:5: -1- AC_SUBST_TRACE([WINDRES])
|
||||||
|
m4trace:configure.ac:5: -1- m4_pattern_allow([^WINDRES$])
|
||||||
|
m4trace:configure.ac:5: -1- AC_SUBST([REZ])
|
||||||
|
m4trace:configure.ac:5: -1- AC_SUBST_TRACE([REZ])
|
||||||
|
m4trace:configure.ac:5: -1- m4_pattern_allow([^REZ$])
|
||||||
|
m4trace:configure.ac:5: -1- AC_SUBST([SETFILE])
|
||||||
|
m4trace:configure.ac:5: -1- AC_SUBST_TRACE([SETFILE])
|
||||||
|
m4trace:configure.ac:5: -1- m4_pattern_allow([^SETFILE$])
|
||||||
|
m4trace:configure.ac:5: -1- m4_include([autoconf_inc.m4])
|
||||||
|
m4trace:autoconf_inc.m4:14: -1- AC_SUBST([COND_DEPS_TRACKING_0])
|
||||||
|
m4trace:autoconf_inc.m4:14: -1- AC_SUBST_TRACE([COND_DEPS_TRACKING_0])
|
||||||
|
m4trace:autoconf_inc.m4:14: -1- m4_pattern_allow([^COND_DEPS_TRACKING_0$])
|
||||||
|
m4trace:autoconf_inc.m4:20: -1- AC_SUBST([COND_DEPS_TRACKING_1])
|
||||||
|
m4trace:autoconf_inc.m4:20: -1- AC_SUBST_TRACE([COND_DEPS_TRACKING_1])
|
||||||
|
m4trace:autoconf_inc.m4:20: -1- m4_pattern_allow([^COND_DEPS_TRACKING_1$])
|
||||||
|
m4trace:configure.ac:6: -1- AC_CONFIG_FILES([Makefile])
|
||||||
|
m4trace:configure.ac:6: -1- _m4_warn([obsolete], [AC_OUTPUT should be used without arguments.
|
||||||
|
You should run autoupdate.], [])
|
||||||
|
m4trace:configure.ac:6: -1- AC_SUBST([LIB@&t@OBJS], [$ac_libobjs])
|
||||||
|
m4trace:configure.ac:6: -1- AC_SUBST_TRACE([LIB@&t@OBJS])
|
||||||
|
m4trace:configure.ac:6: -1- m4_pattern_allow([^LIB@&t@OBJS$])
|
||||||
|
m4trace:configure.ac:6: -1- AC_SUBST([LTLIBOBJS], [$ac_ltlibobjs])
|
||||||
|
m4trace:configure.ac:6: -1- AC_SUBST_TRACE([LTLIBOBJS])
|
||||||
|
m4trace:configure.ac:6: -1- m4_pattern_allow([^LTLIBOBJS$])
|
||||||
|
m4trace:configure.ac:6: -1- AC_SUBST_TRACE([top_builddir])
|
||||||
|
m4trace:configure.ac:6: -1- AC_SUBST_TRACE([top_build_prefix])
|
||||||
|
m4trace:configure.ac:6: -1- AC_SUBST_TRACE([srcdir])
|
||||||
|
m4trace:configure.ac:6: -1- AC_SUBST_TRACE([abs_srcdir])
|
||||||
|
m4trace:configure.ac:6: -1- AC_SUBST_TRACE([top_srcdir])
|
||||||
|
m4trace:configure.ac:6: -1- AC_SUBST_TRACE([abs_top_srcdir])
|
||||||
|
m4trace:configure.ac:6: -1- AC_SUBST_TRACE([builddir])
|
||||||
|
m4trace:configure.ac:6: -1- AC_SUBST_TRACE([abs_builddir])
|
||||||
|
m4trace:configure.ac:6: -1- AC_SUBST_TRACE([abs_top_builddir])
|
||||||
|
m4trace:configure.ac:6: -1- AC_SUBST_TRACE([INSTALL])
|
|
@ -0,0 +1,25 @@
|
||||||
|
<?xml version="1.0"?>
|
||||||
|
<makefile>
|
||||||
|
<set var="SRCDIR">../../source</set>
|
||||||
|
<set var="BUILDDIR">../../bin</set>
|
||||||
|
<set var="CXX">gcc</set>
|
||||||
|
|
||||||
|
<module id="bcrypt">
|
||||||
|
<include>../../source/include</include>
|
||||||
|
<headers>
|
||||||
|
include/bcrypt.h
|
||||||
|
</headers>
|
||||||
|
<sources>
|
||||||
|
src/bcrypt.c
|
||||||
|
src/blowfish.c
|
||||||
|
src/endian.c
|
||||||
|
src/keys.c
|
||||||
|
src/rwfile.c
|
||||||
|
src/wrapbf.c
|
||||||
|
src/wrapzl.c
|
||||||
|
</sources>
|
||||||
|
<install-to>/usr/local/lib</install-to>
|
||||||
|
<install-headers-to>/usr/local/include/bcrypt</install-headers-to>
|
||||||
|
</module>
|
||||||
|
|
||||||
|
</makefile>
|
|
@ -0,0 +1,99 @@
|
||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
# This script is part of Bakefile (http://bakefile.sourceforge.net) autoconf
|
||||||
|
# script. It is used to track C/C++ files dependencies in portable way.
|
||||||
|
#
|
||||||
|
# Permission is given to use this file in any way.
|
||||||
|
|
||||||
|
DEPSMODE=gcc
|
||||||
|
DEPSDIR=.deps
|
||||||
|
DEPSFLAG="-MMD"
|
||||||
|
|
||||||
|
mkdir -p $DEPSDIR
|
||||||
|
|
||||||
|
if test $DEPSMODE = gcc ; then
|
||||||
|
$* ${DEPSFLAG}
|
||||||
|
status=$?
|
||||||
|
if test ${status} != 0 ; then
|
||||||
|
exit ${status}
|
||||||
|
fi
|
||||||
|
# move created file to the location we want it in:
|
||||||
|
while test $# -gt 0; do
|
||||||
|
case "$1" in
|
||||||
|
-o )
|
||||||
|
shift
|
||||||
|
objfile=$1
|
||||||
|
;;
|
||||||
|
-* )
|
||||||
|
;;
|
||||||
|
* )
|
||||||
|
srcfile=$1
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
shift
|
||||||
|
done
|
||||||
|
depfile=`basename $srcfile | sed -e 's/\..*$/.d/g'`
|
||||||
|
depobjname=`echo $depfile |sed -e 's/\.d/.o/g'`
|
||||||
|
if test -f $depfile ; then
|
||||||
|
sed -e "s,$depobjname:,$objfile:,g" $depfile >${DEPSDIR}/${objfile}.d
|
||||||
|
rm -f $depfile
|
||||||
|
else
|
||||||
|
# "g++ -MMD -o fooobj.o foosrc.cpp" produces fooobj.d
|
||||||
|
depfile=`basename $objfile | sed -e 's/\..*$/.d/g'`
|
||||||
|
if test ! -f $depfile ; then
|
||||||
|
# "cxx -MD -o fooobj.o foosrc.cpp" creates fooobj.o.d (Compaq C++)
|
||||||
|
depfile="$objfile.d"
|
||||||
|
fi
|
||||||
|
if test -f $depfile ; then
|
||||||
|
sed -e "/^$objfile/!s,$depobjname:,$objfile:,g" $depfile >${DEPSDIR}/${objfile}.d
|
||||||
|
rm -f $depfile
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
exit 0
|
||||||
|
elif test $DEPSMODE = mwcc ; then
|
||||||
|
$* || exit $?
|
||||||
|
# Run mwcc again with -MM and redirect into the dep file we want
|
||||||
|
# NOTE: We can't use shift here because we need $* to be valid
|
||||||
|
prevarg=
|
||||||
|
for arg in $* ; do
|
||||||
|
if test "$prevarg" = "-o"; then
|
||||||
|
objfile=$arg
|
||||||
|
else
|
||||||
|
case "$arg" in
|
||||||
|
-* )
|
||||||
|
;;
|
||||||
|
* )
|
||||||
|
srcfile=$arg
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
fi
|
||||||
|
prevarg="$arg"
|
||||||
|
done
|
||||||
|
$* $DEPSFLAG >${DEPSDIR}/${objfile}.d
|
||||||
|
exit 0
|
||||||
|
elif test $DEPSMODE = unixcc; then
|
||||||
|
$* || exit $?
|
||||||
|
# Run compiler again with deps flag and redirect into the dep file.
|
||||||
|
# It doesn't work if the '-o FILE' option is used, but without it the
|
||||||
|
# dependency file will contain the wrong name for the object. So it is
|
||||||
|
# removed from the command line, and the dep file is fixed with sed.
|
||||||
|
cmd=""
|
||||||
|
while test $# -gt 0; do
|
||||||
|
case "$1" in
|
||||||
|
-o )
|
||||||
|
shift
|
||||||
|
objfile=$1
|
||||||
|
;;
|
||||||
|
* )
|
||||||
|
eval arg$#=\$1
|
||||||
|
cmd="$cmd \$arg$#"
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
shift
|
||||||
|
done
|
||||||
|
eval "$cmd $DEPSFLAG" | sed "s|.*:|$objfile:|" >${DEPSDIR}/${objfile}.d
|
||||||
|
exit 0
|
||||||
|
else
|
||||||
|
$*
|
||||||
|
exit $?
|
||||||
|
fi
|
File diff suppressed because it is too large
Load Diff
|
@ -0,0 +1,321 @@
|
||||||
|
This file contains any messages produced by compilers while
|
||||||
|
running configure, to aid debugging if configure makes a mistake.
|
||||||
|
|
||||||
|
It was created by configure, which was
|
||||||
|
generated by GNU Autoconf 2.69. Invocation command line was
|
||||||
|
|
||||||
|
$ ./configure
|
||||||
|
|
||||||
|
## --------- ##
|
||||||
|
## Platform. ##
|
||||||
|
## --------- ##
|
||||||
|
|
||||||
|
hostname = agalloch
|
||||||
|
uname -m = x86_64
|
||||||
|
uname -r = 3.19.0-26-generic
|
||||||
|
uname -s = Linux
|
||||||
|
uname -v = #28-Ubuntu SMP Tue Aug 11 14:16:32 UTC 2015
|
||||||
|
|
||||||
|
/usr/bin/uname -p = unknown
|
||||||
|
/bin/uname -X = unknown
|
||||||
|
|
||||||
|
/bin/arch = unknown
|
||||||
|
/usr/bin/arch -k = unknown
|
||||||
|
/usr/convex/getsysinfo = unknown
|
||||||
|
/usr/bin/hostinfo = unknown
|
||||||
|
/bin/machine = unknown
|
||||||
|
/usr/bin/oslevel = unknown
|
||||||
|
/bin/universe = unknown
|
||||||
|
|
||||||
|
PATH: /home/eric/bin
|
||||||
|
PATH: /usr/local/sbin
|
||||||
|
PATH: /usr/local/bin
|
||||||
|
PATH: /usr/sbin
|
||||||
|
PATH: /usr/bin
|
||||||
|
PATH: /sbin
|
||||||
|
PATH: /bin
|
||||||
|
PATH: /usr/games
|
||||||
|
PATH: /usr/local/games
|
||||||
|
PATH: /usr/lib/jvm/java-7-openjdk-amd64/jre//bin
|
||||||
|
PATH: /usr/lib/jvm/java-7-openjdk-amd64/jre//bin
|
||||||
|
PATH: /usr/local/lib
|
||||||
|
PATH: /home/eric/android-studio/bin
|
||||||
|
|
||||||
|
|
||||||
|
## ----------- ##
|
||||||
|
## Core tests. ##
|
||||||
|
## ----------- ##
|
||||||
|
|
||||||
|
configure:1837: checking build system type
|
||||||
|
configure:1851: result: x86_64-unknown-linux-gnu
|
||||||
|
configure:1871: checking host system type
|
||||||
|
configure:1884: result: x86_64-unknown-linux-gnu
|
||||||
|
configure:1904: checking target system type
|
||||||
|
configure:1917: result: x86_64-unknown-linux-gnu
|
||||||
|
configure:1959: checking for a BSD-compatible install
|
||||||
|
configure:2027: result: /usr/bin/install -c
|
||||||
|
configure:2086: checking for gcc
|
||||||
|
configure:2102: found /usr/bin/gcc
|
||||||
|
configure:2113: result: gcc
|
||||||
|
configure:2342: checking for C compiler version
|
||||||
|
configure:2351: gcc --version >&5
|
||||||
|
gcc-4.9.real (Ubuntu 4.9.2-10ubuntu13) 4.9.2
|
||||||
|
Copyright (C) 2014 Free Software Foundation, Inc.
|
||||||
|
This is free software; see the source for copying conditions. There is NO
|
||||||
|
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
|
||||||
|
|
||||||
|
configure:2362: $? = 0
|
||||||
|
configure:2351: gcc -v >&5
|
||||||
|
Using built-in specs.
|
||||||
|
COLLECT_GCC=/usr/bin/gcc-4.9.real
|
||||||
|
COLLECT_LTO_WRAPPER=/usr/lib/gcc/x86_64-linux-gnu/4.9/lto-wrapper
|
||||||
|
Target: x86_64-linux-gnu
|
||||||
|
Configured with: ../src/configure -v --with-pkgversion='Ubuntu 4.9.2-10ubuntu13' --with-bugurl=file:///usr/share/doc/gcc-4.9/README.Bugs --enable-languages=c,c++,java,go,d,fortran,objc,obj-c++ --prefix=/usr --program-suffix=-4.9 --enable-shared --enable-linker-build-id --libexecdir=/usr/lib --without-included-gettext --enable-threads=posix --with-gxx-include-dir=/usr/include/c++/4.9 --libdir=/usr/lib --enable-nls --with-sysroot=/ --enable-clocale=gnu --enable-libstdcxx-debug --enable-libstdcxx-time=yes --enable-gnu-unique-object --disable-vtable-verify --enable-plugin --with-system-zlib --disable-browser-plugin --enable-java-awt=gtk --enable-gtk-cairo --with-java-home=/usr/lib/jvm/java-1.5.0-gcj-4.9-amd64/jre --enable-java-home --with-jvm-root-dir=/usr/lib/jvm/java-1.5.0-gcj-4.9-amd64 --with-jvm-jar-dir=/usr/lib/jvm-exports/java-1.5.0-gcj-4.9-amd64 --with-arch-directory=amd64 --with-ecj-jar=/usr/share/java/eclipse-ecj.jar --enable-objc-gc --enable-multiarch --disable-werror --with-arch-32=i686 --with-abi=m64 --with-multilib-list=m32,m64,mx32 --enable-multilib --with-tune=generic --enable-checking=release --build=x86_64-linux-gnu --host=x86_64-linux-gnu --target=x86_64-linux-gnu
|
||||||
|
Thread model: posix
|
||||||
|
gcc version 4.9.2 (Ubuntu 4.9.2-10ubuntu13)
|
||||||
|
configure:2362: $? = 0
|
||||||
|
configure:2351: gcc -V >&5
|
||||||
|
gcc-4.9.real: error: unrecognized command line option '-V'
|
||||||
|
gcc-4.9.real: fatal error: no input files
|
||||||
|
compilation terminated.
|
||||||
|
configure:2362: $? = 4
|
||||||
|
configure:2351: gcc -qversion >&5
|
||||||
|
gcc-4.9.real: error: unrecognized command line option '-qversion'
|
||||||
|
gcc-4.9.real: fatal error: no input files
|
||||||
|
compilation terminated.
|
||||||
|
configure:2362: $? = 4
|
||||||
|
configure:2382: checking whether the C compiler works
|
||||||
|
configure:2404: gcc conftest.c >&5
|
||||||
|
configure:2408: $? = 0
|
||||||
|
configure:2456: result: yes
|
||||||
|
configure:2459: checking for C compiler default output file name
|
||||||
|
configure:2461: result: a.out
|
||||||
|
configure:2467: checking for suffix of executables
|
||||||
|
configure:2474: gcc -o conftest conftest.c >&5
|
||||||
|
configure:2478: $? = 0
|
||||||
|
configure:2500: result:
|
||||||
|
configure:2522: checking whether we are cross compiling
|
||||||
|
configure:2530: gcc -o conftest conftest.c >&5
|
||||||
|
configure:2534: $? = 0
|
||||||
|
configure:2541: ./conftest
|
||||||
|
configure:2545: $? = 0
|
||||||
|
configure:2560: result: no
|
||||||
|
configure:2565: checking for suffix of object files
|
||||||
|
configure:2587: gcc -c conftest.c >&5
|
||||||
|
configure:2591: $? = 0
|
||||||
|
configure:2612: result: o
|
||||||
|
configure:2616: checking whether we are using the GNU C compiler
|
||||||
|
configure:2635: gcc -c conftest.c >&5
|
||||||
|
configure:2635: $? = 0
|
||||||
|
configure:2644: result: yes
|
||||||
|
configure:2653: checking whether gcc accepts -g
|
||||||
|
configure:2673: gcc -c -g conftest.c >&5
|
||||||
|
configure:2673: $? = 0
|
||||||
|
configure:2714: result: yes
|
||||||
|
configure:2731: checking for gcc option to accept ISO C89
|
||||||
|
configure:2794: gcc -c -g -O2 conftest.c >&5
|
||||||
|
configure:2794: $? = 0
|
||||||
|
configure:2807: result: none needed
|
||||||
|
configure:2884: checking for ranlib
|
||||||
|
configure:2900: found /usr/bin/ranlib
|
||||||
|
configure:2911: result: ranlib
|
||||||
|
configure:2934: checking whether ln -s works
|
||||||
|
configure:2938: result: yes
|
||||||
|
configure:2946: checking whether make sets $(MAKE)
|
||||||
|
configure:2968: result: yes
|
||||||
|
configure:3031: checking for ar
|
||||||
|
configure:3047: found /usr/bin/ar
|
||||||
|
configure:3058: result: ar
|
||||||
|
configure:3127: checking for strip
|
||||||
|
configure:3143: found /usr/bin/strip
|
||||||
|
configure:3154: result: strip
|
||||||
|
configure:3219: checking for nm
|
||||||
|
configure:3235: found /usr/bin/nm
|
||||||
|
configure:3246: result: nm
|
||||||
|
configure:3288: checking if make is GNU make
|
||||||
|
configure:3302: result: yes
|
||||||
|
configure:4358: checking for dependency tracking method
|
||||||
|
configure:4379: result: gcc
|
||||||
|
configure:4884: creating ./config.status
|
||||||
|
|
||||||
|
## ---------------------- ##
|
||||||
|
## Running config.status. ##
|
||||||
|
## ---------------------- ##
|
||||||
|
|
||||||
|
This file was extended by config.status, which was
|
||||||
|
generated by GNU Autoconf 2.69. Invocation command line was
|
||||||
|
|
||||||
|
CONFIG_FILES =
|
||||||
|
CONFIG_HEADERS =
|
||||||
|
CONFIG_LINKS =
|
||||||
|
CONFIG_COMMANDS =
|
||||||
|
$ ./config.status
|
||||||
|
|
||||||
|
on agalloch
|
||||||
|
|
||||||
|
config.status:782: creating Makefile
|
||||||
|
|
||||||
|
## ---------------- ##
|
||||||
|
## Cache variables. ##
|
||||||
|
## ---------------- ##
|
||||||
|
|
||||||
|
ac_cv_build=x86_64-unknown-linux-gnu
|
||||||
|
ac_cv_c_compiler_gnu=yes
|
||||||
|
ac_cv_env_CC_set=
|
||||||
|
ac_cv_env_CC_value=
|
||||||
|
ac_cv_env_CFLAGS_set=
|
||||||
|
ac_cv_env_CFLAGS_value=
|
||||||
|
ac_cv_env_CPPFLAGS_set=
|
||||||
|
ac_cv_env_CPPFLAGS_value=
|
||||||
|
ac_cv_env_LDFLAGS_set=
|
||||||
|
ac_cv_env_LDFLAGS_value=
|
||||||
|
ac_cv_env_LIBS_set=
|
||||||
|
ac_cv_env_LIBS_value=
|
||||||
|
ac_cv_env_build_alias_set=
|
||||||
|
ac_cv_env_build_alias_value=
|
||||||
|
ac_cv_env_host_alias_set=
|
||||||
|
ac_cv_env_host_alias_value=
|
||||||
|
ac_cv_env_target_alias_set=
|
||||||
|
ac_cv_env_target_alias_value=
|
||||||
|
ac_cv_host=x86_64-unknown-linux-gnu
|
||||||
|
ac_cv_objext=o
|
||||||
|
ac_cv_path_install='/usr/bin/install -c'
|
||||||
|
ac_cv_prog_ac_ct_AR=ar
|
||||||
|
ac_cv_prog_ac_ct_CC=gcc
|
||||||
|
ac_cv_prog_ac_ct_NM=nm
|
||||||
|
ac_cv_prog_ac_ct_RANLIB=ranlib
|
||||||
|
ac_cv_prog_ac_ct_STRIP=strip
|
||||||
|
ac_cv_prog_cc_c89=
|
||||||
|
ac_cv_prog_cc_g=yes
|
||||||
|
ac_cv_prog_make_make_set=yes
|
||||||
|
ac_cv_target=x86_64-unknown-linux-gnu
|
||||||
|
bakefile_cv_prog_makeisgnu=yes
|
||||||
|
|
||||||
|
## ----------------- ##
|
||||||
|
## Output variables. ##
|
||||||
|
## ----------------- ##
|
||||||
|
|
||||||
|
AIX_CXX_LD=''
|
||||||
|
AR='ar'
|
||||||
|
AROPTIONS='rcu'
|
||||||
|
BK_DEPS='/home/eric/code/hathor/3rdparty/libbcrypt-1.0/build/unix/bk-deps'
|
||||||
|
CC='gcc'
|
||||||
|
CFLAGS='-g -O2'
|
||||||
|
COND_DEPS_TRACKING_0='#'
|
||||||
|
COND_DEPS_TRACKING_1=''
|
||||||
|
CPPFLAGS=''
|
||||||
|
DEFS='-DPACKAGE_NAME=\"\" -DPACKAGE_TARNAME=\"\" -DPACKAGE_VERSION=\"\" -DPACKAGE_STRING=\"\" -DPACKAGE_BUGREPORT=\"\" -DPACKAGE_URL=\"\"'
|
||||||
|
DEPS_TRACKING='1'
|
||||||
|
DLLIMP_SUFFIX='so'
|
||||||
|
DLLPREFIX='lib'
|
||||||
|
DLLPREFIX_MODULE=''
|
||||||
|
ECHO_C=''
|
||||||
|
ECHO_N='-n'
|
||||||
|
ECHO_T=''
|
||||||
|
EXEEXT=''
|
||||||
|
IF_GNU_MAKE=''
|
||||||
|
INSTALL_DATA='${INSTALL} -m 644'
|
||||||
|
INSTALL_DIR='$(INSTALL) -d'
|
||||||
|
INSTALL_PROGRAM='${INSTALL}'
|
||||||
|
INSTALL_SCRIPT='${INSTALL}'
|
||||||
|
LDFLAGS=''
|
||||||
|
LDFLAGS_GUI=''
|
||||||
|
LIBEXT='.a'
|
||||||
|
LIBOBJS=''
|
||||||
|
LIBPREFIX='lib'
|
||||||
|
LIBS=''
|
||||||
|
LN_S='ln -s'
|
||||||
|
LTLIBOBJS=''
|
||||||
|
MAKE_SET=''
|
||||||
|
NM='nm'
|
||||||
|
OBJEXT='o'
|
||||||
|
PACKAGE_BUGREPORT=''
|
||||||
|
PACKAGE_NAME=''
|
||||||
|
PACKAGE_STRING=''
|
||||||
|
PACKAGE_TARNAME=''
|
||||||
|
PACKAGE_URL=''
|
||||||
|
PACKAGE_VERSION=''
|
||||||
|
PATH_SEPARATOR=':'
|
||||||
|
PIC_FLAG='-fPIC -DPIC'
|
||||||
|
PLATFORM_BEOS='0'
|
||||||
|
PLATFORM_MAC='0'
|
||||||
|
PLATFORM_MACOS='0'
|
||||||
|
PLATFORM_MACOSX='0'
|
||||||
|
PLATFORM_MSDOS='0'
|
||||||
|
PLATFORM_OS2='0'
|
||||||
|
PLATFORM_UNIX='1'
|
||||||
|
PLATFORM_WIN32='0'
|
||||||
|
RANLIB='ranlib'
|
||||||
|
REZ=''
|
||||||
|
SETFILE=''
|
||||||
|
SET_MAKE=''
|
||||||
|
SHARED_LD_CC='$(CC) -shared -fPIC -o'
|
||||||
|
SHARED_LD_CXX='$(CXX) -shared -fPIC -o'
|
||||||
|
SHARED_LD_MODULE_CC='$(CC) -shared -fPIC -o'
|
||||||
|
SHARED_LD_MODULE_CXX='$(CXX) -shared -fPIC -o'
|
||||||
|
SHELL='/bin/bash'
|
||||||
|
SONAME_FLAG='-Wl,-soname,'
|
||||||
|
SO_SUFFIX='so'
|
||||||
|
SO_SUFFIX_MODULE='so'
|
||||||
|
STRIP='strip'
|
||||||
|
USE_MACVERSION='0'
|
||||||
|
USE_SOSYMLINKS='1'
|
||||||
|
USE_SOVERCYGWIN='0'
|
||||||
|
USE_SOVERLINUX='1'
|
||||||
|
USE_SOVERSION='1'
|
||||||
|
USE_SOVERSOLARIS='0'
|
||||||
|
WINDOWS_IMPLIB='0'
|
||||||
|
WINDRES=''
|
||||||
|
ac_ct_CC='gcc'
|
||||||
|
bindir='${exec_prefix}/bin'
|
||||||
|
build='x86_64-unknown-linux-gnu'
|
||||||
|
build_alias=''
|
||||||
|
build_cpu='x86_64'
|
||||||
|
build_os='linux-gnu'
|
||||||
|
build_vendor='unknown'
|
||||||
|
datadir='${datarootdir}'
|
||||||
|
datarootdir='${prefix}/share'
|
||||||
|
dlldir='${exec_prefix}/lib'
|
||||||
|
docdir='${datarootdir}/doc/${PACKAGE}'
|
||||||
|
dvidir='${docdir}'
|
||||||
|
exec_prefix='${prefix}'
|
||||||
|
host='x86_64-unknown-linux-gnu'
|
||||||
|
host_alias=''
|
||||||
|
host_cpu='x86_64'
|
||||||
|
host_os='linux-gnu'
|
||||||
|
host_vendor='unknown'
|
||||||
|
htmldir='${docdir}'
|
||||||
|
includedir='${prefix}/include'
|
||||||
|
infodir='${datarootdir}/info'
|
||||||
|
libdir='${exec_prefix}/lib'
|
||||||
|
libexecdir='${exec_prefix}/libexec'
|
||||||
|
localedir='${datarootdir}/locale'
|
||||||
|
localstatedir='${prefix}/var'
|
||||||
|
mandir='${datarootdir}/man'
|
||||||
|
oldincludedir='/usr/include'
|
||||||
|
pdfdir='${docdir}'
|
||||||
|
prefix='/usr/local'
|
||||||
|
program_transform_name='s,x,x,'
|
||||||
|
psdir='${docdir}'
|
||||||
|
sbindir='${exec_prefix}/sbin'
|
||||||
|
sharedstatedir='${prefix}/com'
|
||||||
|
sysconfdir='${prefix}/etc'
|
||||||
|
target='x86_64-unknown-linux-gnu'
|
||||||
|
target_alias=''
|
||||||
|
target_cpu='x86_64'
|
||||||
|
target_os='linux-gnu'
|
||||||
|
target_vendor='unknown'
|
||||||
|
|
||||||
|
## ----------- ##
|
||||||
|
## confdefs.h. ##
|
||||||
|
## ----------- ##
|
||||||
|
|
||||||
|
/* confdefs.h */
|
||||||
|
#define PACKAGE_NAME ""
|
||||||
|
#define PACKAGE_TARNAME ""
|
||||||
|
#define PACKAGE_VERSION ""
|
||||||
|
#define PACKAGE_STRING ""
|
||||||
|
#define PACKAGE_BUGREPORT ""
|
||||||
|
#define PACKAGE_URL ""
|
||||||
|
|
||||||
|
configure: exit 0
|
|
@ -0,0 +1,954 @@
|
||||||
|
#! /bin/bash
|
||||||
|
# Generated by configure.
|
||||||
|
# Run this file to recreate the current configuration.
|
||||||
|
# Compiler output produced by configure, useful for debugging
|
||||||
|
# configure, is in config.log if it exists.
|
||||||
|
|
||||||
|
debug=false
|
||||||
|
ac_cs_recheck=false
|
||||||
|
ac_cs_silent=false
|
||||||
|
|
||||||
|
SHELL=${CONFIG_SHELL-/bin/bash}
|
||||||
|
export SHELL
|
||||||
|
## -------------------- ##
|
||||||
|
## M4sh Initialization. ##
|
||||||
|
## -------------------- ##
|
||||||
|
|
||||||
|
# Be more Bourne compatible
|
||||||
|
DUALCASE=1; export DUALCASE # for MKS sh
|
||||||
|
if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then :
|
||||||
|
emulate sh
|
||||||
|
NULLCMD=:
|
||||||
|
# Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which
|
||||||
|
# is contrary to our usage. Disable this feature.
|
||||||
|
alias -g '${1+"$@"}'='"$@"'
|
||||||
|
setopt NO_GLOB_SUBST
|
||||||
|
else
|
||||||
|
case `(set -o) 2>/dev/null` in #(
|
||||||
|
*posix*) :
|
||||||
|
set -o posix ;; #(
|
||||||
|
*) :
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
fi
|
||||||
|
|
||||||
|
|
||||||
|
as_nl='
|
||||||
|
'
|
||||||
|
export as_nl
|
||||||
|
# Printing a long string crashes Solaris 7 /usr/bin/printf.
|
||||||
|
as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'
|
||||||
|
as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo
|
||||||
|
as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo
|
||||||
|
# Prefer a ksh shell builtin over an external printf program on Solaris,
|
||||||
|
# but without wasting forks for bash or zsh.
|
||||||
|
if test -z "$BASH_VERSION$ZSH_VERSION" \
|
||||||
|
&& (test "X`print -r -- $as_echo`" = "X$as_echo") 2>/dev/null; then
|
||||||
|
as_echo='print -r --'
|
||||||
|
as_echo_n='print -rn --'
|
||||||
|
elif (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then
|
||||||
|
as_echo='printf %s\n'
|
||||||
|
as_echo_n='printf %s'
|
||||||
|
else
|
||||||
|
if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then
|
||||||
|
as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"'
|
||||||
|
as_echo_n='/usr/ucb/echo -n'
|
||||||
|
else
|
||||||
|
as_echo_body='eval expr "X$1" : "X\\(.*\\)"'
|
||||||
|
as_echo_n_body='eval
|
||||||
|
arg=$1;
|
||||||
|
case $arg in #(
|
||||||
|
*"$as_nl"*)
|
||||||
|
expr "X$arg" : "X\\(.*\\)$as_nl";
|
||||||
|
arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;;
|
||||||
|
esac;
|
||||||
|
expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl"
|
||||||
|
'
|
||||||
|
export as_echo_n_body
|
||||||
|
as_echo_n='sh -c $as_echo_n_body as_echo'
|
||||||
|
fi
|
||||||
|
export as_echo_body
|
||||||
|
as_echo='sh -c $as_echo_body as_echo'
|
||||||
|
fi
|
||||||
|
|
||||||
|
# The user is always right.
|
||||||
|
if test "${PATH_SEPARATOR+set}" != set; then
|
||||||
|
PATH_SEPARATOR=:
|
||||||
|
(PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && {
|
||||||
|
(PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 ||
|
||||||
|
PATH_SEPARATOR=';'
|
||||||
|
}
|
||||||
|
fi
|
||||||
|
|
||||||
|
|
||||||
|
# IFS
|
||||||
|
# We need space, tab and new line, in precisely that order. Quoting is
|
||||||
|
# there to prevent editors from complaining about space-tab.
|
||||||
|
# (If _AS_PATH_WALK were called with IFS unset, it would disable word
|
||||||
|
# splitting by setting IFS to empty value.)
|
||||||
|
IFS=" "" $as_nl"
|
||||||
|
|
||||||
|
# Find who we are. Look in the path if we contain no directory separator.
|
||||||
|
as_myself=
|
||||||
|
case $0 in #((
|
||||||
|
*[\\/]* ) as_myself=$0 ;;
|
||||||
|
*) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
|
||||||
|
for as_dir in $PATH
|
||||||
|
do
|
||||||
|
IFS=$as_save_IFS
|
||||||
|
test -z "$as_dir" && as_dir=.
|
||||||
|
test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break
|
||||||
|
done
|
||||||
|
IFS=$as_save_IFS
|
||||||
|
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
# We did not find ourselves, most probably we were run as `sh COMMAND'
|
||||||
|
# in which case we are not to be found in the path.
|
||||||
|
if test "x$as_myself" = x; then
|
||||||
|
as_myself=$0
|
||||||
|
fi
|
||||||
|
if test ! -f "$as_myself"; then
|
||||||
|
$as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Unset variables that we do not need and which cause bugs (e.g. in
|
||||||
|
# pre-3.0 UWIN ksh). But do not cause bugs in bash 2.01; the "|| exit 1"
|
||||||
|
# suppresses any "Segmentation fault" message there. '((' could
|
||||||
|
# trigger a bug in pdksh 5.2.14.
|
||||||
|
for as_var in BASH_ENV ENV MAIL MAILPATH
|
||||||
|
do eval test x\${$as_var+set} = xset \
|
||||||
|
&& ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || :
|
||||||
|
done
|
||||||
|
PS1='$ '
|
||||||
|
PS2='> '
|
||||||
|
PS4='+ '
|
||||||
|
|
||||||
|
# NLS nuisances.
|
||||||
|
LC_ALL=C
|
||||||
|
export LC_ALL
|
||||||
|
LANGUAGE=C
|
||||||
|
export LANGUAGE
|
||||||
|
|
||||||
|
# CDPATH.
|
||||||
|
(unset CDPATH) >/dev/null 2>&1 && unset CDPATH
|
||||||
|
|
||||||
|
|
||||||
|
# as_fn_error STATUS ERROR [LINENO LOG_FD]
|
||||||
|
# ----------------------------------------
|
||||||
|
# Output "`basename $0`: error: ERROR" to stderr. If LINENO and LOG_FD are
|
||||||
|
# provided, also output the error to LOG_FD, referencing LINENO. Then exit the
|
||||||
|
# script with STATUS, using 1 if that was 0.
|
||||||
|
as_fn_error ()
|
||||||
|
{
|
||||||
|
as_status=$1; test $as_status -eq 0 && as_status=1
|
||||||
|
if test "$4"; then
|
||||||
|
as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
|
||||||
|
$as_echo "$as_me:${as_lineno-$LINENO}: error: $2" >&$4
|
||||||
|
fi
|
||||||
|
$as_echo "$as_me: error: $2" >&2
|
||||||
|
as_fn_exit $as_status
|
||||||
|
} # as_fn_error
|
||||||
|
|
||||||
|
|
||||||
|
# as_fn_set_status STATUS
|
||||||
|
# -----------------------
|
||||||
|
# Set $? to STATUS, without forking.
|
||||||
|
as_fn_set_status ()
|
||||||
|
{
|
||||||
|
return $1
|
||||||
|
} # as_fn_set_status
|
||||||
|
|
||||||
|
# as_fn_exit STATUS
|
||||||
|
# -----------------
|
||||||
|
# Exit the shell with STATUS, even in a "trap 0" or "set -e" context.
|
||||||
|
as_fn_exit ()
|
||||||
|
{
|
||||||
|
set +e
|
||||||
|
as_fn_set_status $1
|
||||||
|
exit $1
|
||||||
|
} # as_fn_exit
|
||||||
|
|
||||||
|
# as_fn_unset VAR
|
||||||
|
# ---------------
|
||||||
|
# Portably unset VAR.
|
||||||
|
as_fn_unset ()
|
||||||
|
{
|
||||||
|
{ eval $1=; unset $1;}
|
||||||
|
}
|
||||||
|
as_unset=as_fn_unset
|
||||||
|
# as_fn_append VAR VALUE
|
||||||
|
# ----------------------
|
||||||
|
# Append the text in VALUE to the end of the definition contained in VAR. Take
|
||||||
|
# advantage of any shell optimizations that allow amortized linear growth over
|
||||||
|
# repeated appends, instead of the typical quadratic growth present in naive
|
||||||
|
# implementations.
|
||||||
|
if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null; then :
|
||||||
|
eval 'as_fn_append ()
|
||||||
|
{
|
||||||
|
eval $1+=\$2
|
||||||
|
}'
|
||||||
|
else
|
||||||
|
as_fn_append ()
|
||||||
|
{
|
||||||
|
eval $1=\$$1\$2
|
||||||
|
}
|
||||||
|
fi # as_fn_append
|
||||||
|
|
||||||
|
# as_fn_arith ARG...
|
||||||
|
# ------------------
|
||||||
|
# Perform arithmetic evaluation on the ARGs, and store the result in the
|
||||||
|
# global $as_val. Take advantage of shells that can avoid forks. The arguments
|
||||||
|
# must be portable across $(()) and expr.
|
||||||
|
if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null; then :
|
||||||
|
eval 'as_fn_arith ()
|
||||||
|
{
|
||||||
|
as_val=$(( $* ))
|
||||||
|
}'
|
||||||
|
else
|
||||||
|
as_fn_arith ()
|
||||||
|
{
|
||||||
|
as_val=`expr "$@" || test $? -eq 1`
|
||||||
|
}
|
||||||
|
fi # as_fn_arith
|
||||||
|
|
||||||
|
|
||||||
|
if expr a : '\(a\)' >/dev/null 2>&1 &&
|
||||||
|
test "X`expr 00001 : '.*\(...\)'`" = X001; then
|
||||||
|
as_expr=expr
|
||||||
|
else
|
||||||
|
as_expr=false
|
||||||
|
fi
|
||||||
|
|
||||||
|
if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then
|
||||||
|
as_basename=basename
|
||||||
|
else
|
||||||
|
as_basename=false
|
||||||
|
fi
|
||||||
|
|
||||||
|
if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then
|
||||||
|
as_dirname=dirname
|
||||||
|
else
|
||||||
|
as_dirname=false
|
||||||
|
fi
|
||||||
|
|
||||||
|
as_me=`$as_basename -- "$0" ||
|
||||||
|
$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \
|
||||||
|
X"$0" : 'X\(//\)$' \| \
|
||||||
|
X"$0" : 'X\(/\)' \| . 2>/dev/null ||
|
||||||
|
$as_echo X/"$0" |
|
||||||
|
sed '/^.*\/\([^/][^/]*\)\/*$/{
|
||||||
|
s//\1/
|
||||||
|
q
|
||||||
|
}
|
||||||
|
/^X\/\(\/\/\)$/{
|
||||||
|
s//\1/
|
||||||
|
q
|
||||||
|
}
|
||||||
|
/^X\/\(\/\).*/{
|
||||||
|
s//\1/
|
||||||
|
q
|
||||||
|
}
|
||||||
|
s/.*/./; q'`
|
||||||
|
|
||||||
|
# Avoid depending upon Character Ranges.
|
||||||
|
as_cr_letters='abcdefghijklmnopqrstuvwxyz'
|
||||||
|
as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ'
|
||||||
|
as_cr_Letters=$as_cr_letters$as_cr_LETTERS
|
||||||
|
as_cr_digits='0123456789'
|
||||||
|
as_cr_alnum=$as_cr_Letters$as_cr_digits
|
||||||
|
|
||||||
|
ECHO_C= ECHO_N= ECHO_T=
|
||||||
|
case `echo -n x` in #(((((
|
||||||
|
-n*)
|
||||||
|
case `echo 'xy\c'` in
|
||||||
|
*c*) ECHO_T=' ';; # ECHO_T is single tab character.
|
||||||
|
xy) ECHO_C='\c';;
|
||||||
|
*) echo `echo ksh88 bug on AIX 6.1` > /dev/null
|
||||||
|
ECHO_T=' ';;
|
||||||
|
esac;;
|
||||||
|
*)
|
||||||
|
ECHO_N='-n';;
|
||||||
|
esac
|
||||||
|
|
||||||
|
rm -f conf$$ conf$$.exe conf$$.file
|
||||||
|
if test -d conf$$.dir; then
|
||||||
|
rm -f conf$$.dir/conf$$.file
|
||||||
|
else
|
||||||
|
rm -f conf$$.dir
|
||||||
|
mkdir conf$$.dir 2>/dev/null
|
||||||
|
fi
|
||||||
|
if (echo >conf$$.file) 2>/dev/null; then
|
||||||
|
if ln -s conf$$.file conf$$ 2>/dev/null; then
|
||||||
|
as_ln_s='ln -s'
|
||||||
|
# ... but there are two gotchas:
|
||||||
|
# 1) On MSYS, both `ln -s file dir' and `ln file dir' fail.
|
||||||
|
# 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable.
|
||||||
|
# In both cases, we have to default to `cp -pR'.
|
||||||
|
ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe ||
|
||||||
|
as_ln_s='cp -pR'
|
||||||
|
elif ln conf$$.file conf$$ 2>/dev/null; then
|
||||||
|
as_ln_s=ln
|
||||||
|
else
|
||||||
|
as_ln_s='cp -pR'
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
as_ln_s='cp -pR'
|
||||||
|
fi
|
||||||
|
rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file
|
||||||
|
rmdir conf$$.dir 2>/dev/null
|
||||||
|
|
||||||
|
|
||||||
|
# as_fn_mkdir_p
|
||||||
|
# -------------
|
||||||
|
# Create "$as_dir" as a directory, including parents if necessary.
|
||||||
|
as_fn_mkdir_p ()
|
||||||
|
{
|
||||||
|
|
||||||
|
case $as_dir in #(
|
||||||
|
-*) as_dir=./$as_dir;;
|
||||||
|
esac
|
||||||
|
test -d "$as_dir" || eval $as_mkdir_p || {
|
||||||
|
as_dirs=
|
||||||
|
while :; do
|
||||||
|
case $as_dir in #(
|
||||||
|
*\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'(
|
||||||
|
*) as_qdir=$as_dir;;
|
||||||
|
esac
|
||||||
|
as_dirs="'$as_qdir' $as_dirs"
|
||||||
|
as_dir=`$as_dirname -- "$as_dir" ||
|
||||||
|
$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
|
||||||
|
X"$as_dir" : 'X\(//\)[^/]' \| \
|
||||||
|
X"$as_dir" : 'X\(//\)$' \| \
|
||||||
|
X"$as_dir" : 'X\(/\)' \| . 2>/dev/null ||
|
||||||
|
$as_echo X"$as_dir" |
|
||||||
|
sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
|
||||||
|
s//\1/
|
||||||
|
q
|
||||||
|
}
|
||||||
|
/^X\(\/\/\)[^/].*/{
|
||||||
|
s//\1/
|
||||||
|
q
|
||||||
|
}
|
||||||
|
/^X\(\/\/\)$/{
|
||||||
|
s//\1/
|
||||||
|
q
|
||||||
|
}
|
||||||
|
/^X\(\/\).*/{
|
||||||
|
s//\1/
|
||||||
|
q
|
||||||
|
}
|
||||||
|
s/.*/./; q'`
|
||||||
|
test -d "$as_dir" && break
|
||||||
|
done
|
||||||
|
test -z "$as_dirs" || eval "mkdir $as_dirs"
|
||||||
|
} || test -d "$as_dir" || as_fn_error $? "cannot create directory $as_dir"
|
||||||
|
|
||||||
|
|
||||||
|
} # as_fn_mkdir_p
|
||||||
|
if mkdir -p . 2>/dev/null; then
|
||||||
|
as_mkdir_p='mkdir -p "$as_dir"'
|
||||||
|
else
|
||||||
|
test -d ./-p && rmdir ./-p
|
||||||
|
as_mkdir_p=false
|
||||||
|
fi
|
||||||
|
|
||||||
|
|
||||||
|
# as_fn_executable_p FILE
|
||||||
|
# -----------------------
|
||||||
|
# Test if FILE is an executable regular file.
|
||||||
|
as_fn_executable_p ()
|
||||||
|
{
|
||||||
|
test -f "$1" && test -x "$1"
|
||||||
|
} # as_fn_executable_p
|
||||||
|
as_test_x='test -x'
|
||||||
|
as_executable_p=as_fn_executable_p
|
||||||
|
|
||||||
|
# Sed expression to map a string onto a valid CPP name.
|
||||||
|
as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'"
|
||||||
|
|
||||||
|
# Sed expression to map a string onto a valid variable name.
|
||||||
|
as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'"
|
||||||
|
|
||||||
|
|
||||||
|
exec 6>&1
|
||||||
|
## ----------------------------------- ##
|
||||||
|
## Main body of $CONFIG_STATUS script. ##
|
||||||
|
## ----------------------------------- ##
|
||||||
|
# Save the log message, to keep $0 and so on meaningful, and to
|
||||||
|
# report actual input values of CONFIG_FILES etc. instead of their
|
||||||
|
# values after options handling.
|
||||||
|
ac_log="
|
||||||
|
This file was extended by $as_me, which was
|
||||||
|
generated by GNU Autoconf 2.69. Invocation command line was
|
||||||
|
|
||||||
|
CONFIG_FILES = $CONFIG_FILES
|
||||||
|
CONFIG_HEADERS = $CONFIG_HEADERS
|
||||||
|
CONFIG_LINKS = $CONFIG_LINKS
|
||||||
|
CONFIG_COMMANDS = $CONFIG_COMMANDS
|
||||||
|
$ $0 $@
|
||||||
|
|
||||||
|
on `(hostname || uname -n) 2>/dev/null | sed 1q`
|
||||||
|
"
|
||||||
|
|
||||||
|
# Files that config.status was made for.
|
||||||
|
config_files=" Makefile"
|
||||||
|
|
||||||
|
ac_cs_usage="\
|
||||||
|
\`$as_me' instantiates files and other configuration actions
|
||||||
|
from templates according to the current configuration. Unless the files
|
||||||
|
and actions are specified as TAGs, all are instantiated by default.
|
||||||
|
|
||||||
|
Usage: $0 [OPTION]... [TAG]...
|
||||||
|
|
||||||
|
-h, --help print this help, then exit
|
||||||
|
-V, --version print version number and configuration settings, then exit
|
||||||
|
--config print configuration, then exit
|
||||||
|
-q, --quiet, --silent
|
||||||
|
do not print progress messages
|
||||||
|
-d, --debug don't remove temporary files
|
||||||
|
--recheck update $as_me by reconfiguring in the same conditions
|
||||||
|
--file=FILE[:TEMPLATE]
|
||||||
|
instantiate the configuration file FILE
|
||||||
|
|
||||||
|
Configuration files:
|
||||||
|
$config_files
|
||||||
|
|
||||||
|
Report bugs to the package provider."
|
||||||
|
|
||||||
|
ac_cs_config=""
|
||||||
|
ac_cs_version="\
|
||||||
|
config.status
|
||||||
|
configured by ./configure, generated by GNU Autoconf 2.69,
|
||||||
|
with options \"$ac_cs_config\"
|
||||||
|
|
||||||
|
Copyright (C) 2012 Free Software Foundation, Inc.
|
||||||
|
This config.status script is free software; the Free Software Foundation
|
||||||
|
gives unlimited permission to copy, distribute and modify it."
|
||||||
|
|
||||||
|
ac_pwd='/home/eric/code/hathor/3rdparty/libbcrypt-1.0/build/unix'
|
||||||
|
srcdir='.'
|
||||||
|
INSTALL='/usr/bin/install -c'
|
||||||
|
test -n "$AWK" || AWK=awk
|
||||||
|
# The default lists apply if the user does not specify any file.
|
||||||
|
ac_need_defaults=:
|
||||||
|
while test $# != 0
|
||||||
|
do
|
||||||
|
case $1 in
|
||||||
|
--*=?*)
|
||||||
|
ac_option=`expr "X$1" : 'X\([^=]*\)='`
|
||||||
|
ac_optarg=`expr "X$1" : 'X[^=]*=\(.*\)'`
|
||||||
|
ac_shift=:
|
||||||
|
;;
|
||||||
|
--*=)
|
||||||
|
ac_option=`expr "X$1" : 'X\([^=]*\)='`
|
||||||
|
ac_optarg=
|
||||||
|
ac_shift=:
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
ac_option=$1
|
||||||
|
ac_optarg=$2
|
||||||
|
ac_shift=shift
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
case $ac_option in
|
||||||
|
# Handling of the options.
|
||||||
|
-recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r)
|
||||||
|
ac_cs_recheck=: ;;
|
||||||
|
--version | --versio | --versi | --vers | --ver | --ve | --v | -V )
|
||||||
|
$as_echo "$ac_cs_version"; exit ;;
|
||||||
|
--config | --confi | --conf | --con | --co | --c )
|
||||||
|
$as_echo "$ac_cs_config"; exit ;;
|
||||||
|
--debug | --debu | --deb | --de | --d | -d )
|
||||||
|
debug=: ;;
|
||||||
|
--file | --fil | --fi | --f )
|
||||||
|
$ac_shift
|
||||||
|
case $ac_optarg in
|
||||||
|
*\'*) ac_optarg=`$as_echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;;
|
||||||
|
'') as_fn_error $? "missing file argument" ;;
|
||||||
|
esac
|
||||||
|
as_fn_append CONFIG_FILES " '$ac_optarg'"
|
||||||
|
ac_need_defaults=false;;
|
||||||
|
--he | --h | --help | --hel | -h )
|
||||||
|
$as_echo "$ac_cs_usage"; exit ;;
|
||||||
|
-q | -quiet | --quiet | --quie | --qui | --qu | --q \
|
||||||
|
| -silent | --silent | --silen | --sile | --sil | --si | --s)
|
||||||
|
ac_cs_silent=: ;;
|
||||||
|
|
||||||
|
# This is an error.
|
||||||
|
-*) as_fn_error $? "unrecognized option: \`$1'
|
||||||
|
Try \`$0 --help' for more information." ;;
|
||||||
|
|
||||||
|
*) as_fn_append ac_config_targets " $1"
|
||||||
|
ac_need_defaults=false ;;
|
||||||
|
|
||||||
|
esac
|
||||||
|
shift
|
||||||
|
done
|
||||||
|
|
||||||
|
ac_configure_extra_args=
|
||||||
|
|
||||||
|
if $ac_cs_silent; then
|
||||||
|
exec 6>/dev/null
|
||||||
|
ac_configure_extra_args="$ac_configure_extra_args --silent"
|
||||||
|
fi
|
||||||
|
|
||||||
|
if $ac_cs_recheck; then
|
||||||
|
set X /bin/bash './configure' $ac_configure_extra_args --no-create --no-recursion
|
||||||
|
shift
|
||||||
|
$as_echo "running CONFIG_SHELL=/bin/bash $*" >&6
|
||||||
|
CONFIG_SHELL='/bin/bash'
|
||||||
|
export CONFIG_SHELL
|
||||||
|
exec "$@"
|
||||||
|
fi
|
||||||
|
|
||||||
|
exec 5>>config.log
|
||||||
|
{
|
||||||
|
echo
|
||||||
|
sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX
|
||||||
|
## Running $as_me. ##
|
||||||
|
_ASBOX
|
||||||
|
$as_echo "$ac_log"
|
||||||
|
} >&5
|
||||||
|
|
||||||
|
|
||||||
|
# Handling of arguments.
|
||||||
|
for ac_config_target in $ac_config_targets
|
||||||
|
do
|
||||||
|
case $ac_config_target in
|
||||||
|
"Makefile") CONFIG_FILES="$CONFIG_FILES Makefile" ;;
|
||||||
|
|
||||||
|
*) as_fn_error $? "invalid argument: \`$ac_config_target'" "$LINENO" 5;;
|
||||||
|
esac
|
||||||
|
done
|
||||||
|
|
||||||
|
|
||||||
|
# If the user did not use the arguments to specify the items to instantiate,
|
||||||
|
# then the envvar interface is used. Set only those that are not.
|
||||||
|
# We use the long form for the default assignment because of an extremely
|
||||||
|
# bizarre bug on SunOS 4.1.3.
|
||||||
|
if $ac_need_defaults; then
|
||||||
|
test "${CONFIG_FILES+set}" = set || CONFIG_FILES=$config_files
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Have a temporary directory for convenience. Make it in the build tree
|
||||||
|
# simply because there is no reason against having it here, and in addition,
|
||||||
|
# creating and moving files from /tmp can sometimes cause problems.
|
||||||
|
# Hook for its removal unless debugging.
|
||||||
|
# Note that there is a small window in which the directory will not be cleaned:
|
||||||
|
# after its creation but before its name has been assigned to `$tmp'.
|
||||||
|
$debug ||
|
||||||
|
{
|
||||||
|
tmp= ac_tmp=
|
||||||
|
trap 'exit_status=$?
|
||||||
|
: "${ac_tmp:=$tmp}"
|
||||||
|
{ test ! -d "$ac_tmp" || rm -fr "$ac_tmp"; } && exit $exit_status
|
||||||
|
' 0
|
||||||
|
trap 'as_fn_exit 1' 1 2 13 15
|
||||||
|
}
|
||||||
|
# Create a (secure) tmp directory for tmp files.
|
||||||
|
|
||||||
|
{
|
||||||
|
tmp=`(umask 077 && mktemp -d "./confXXXXXX") 2>/dev/null` &&
|
||||||
|
test -d "$tmp"
|
||||||
|
} ||
|
||||||
|
{
|
||||||
|
tmp=./conf$$-$RANDOM
|
||||||
|
(umask 077 && mkdir "$tmp")
|
||||||
|
} || as_fn_error $? "cannot create a temporary directory in ." "$LINENO" 5
|
||||||
|
ac_tmp=$tmp
|
||||||
|
|
||||||
|
# Set up the scripts for CONFIG_FILES section.
|
||||||
|
# No need to generate them if there are no CONFIG_FILES.
|
||||||
|
# This happens for instance with `./config.status config.h'.
|
||||||
|
if test -n "$CONFIG_FILES"; then
|
||||||
|
|
||||||
|
|
||||||
|
ac_cr=`echo X | tr X '\015'`
|
||||||
|
# On cygwin, bash can eat \r inside `` if the user requested igncr.
|
||||||
|
# But we know of no other shell where ac_cr would be empty at this
|
||||||
|
# point, so we can use a bashism as a fallback.
|
||||||
|
if test "x$ac_cr" = x; then
|
||||||
|
eval ac_cr=\$\'\\r\'
|
||||||
|
fi
|
||||||
|
ac_cs_awk_cr=`$AWK 'BEGIN { print "a\rb" }' </dev/null 2>/dev/null`
|
||||||
|
if test "$ac_cs_awk_cr" = "a${ac_cr}b"; then
|
||||||
|
ac_cs_awk_cr='\\r'
|
||||||
|
else
|
||||||
|
ac_cs_awk_cr=$ac_cr
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo 'BEGIN {' >"$ac_tmp/subs1.awk" &&
|
||||||
|
cat >>"$ac_tmp/subs1.awk" <<\_ACAWK &&
|
||||||
|
S["LTLIBOBJS"]=""
|
||||||
|
S["LIBOBJS"]=""
|
||||||
|
S["COND_DEPS_TRACKING_1"]=""
|
||||||
|
S["COND_DEPS_TRACKING_0"]="#"
|
||||||
|
S["SETFILE"]=""
|
||||||
|
S["REZ"]=""
|
||||||
|
S["WINDRES"]=""
|
||||||
|
S["BK_DEPS"]="/home/eric/code/hathor/3rdparty/libbcrypt-1.0/build/unix/bk-deps"
|
||||||
|
S["DEPS_TRACKING"]="1"
|
||||||
|
S["SONAME_FLAG"]="-Wl,-soname,"
|
||||||
|
S["USE_SOSYMLINKS"]="1"
|
||||||
|
S["USE_MACVERSION"]="0"
|
||||||
|
S["USE_SOVERCYGWIN"]="0"
|
||||||
|
S["USE_SOVERSOLARIS"]="0"
|
||||||
|
S["USE_SOVERLINUX"]="1"
|
||||||
|
S["USE_SOVERSION"]="1"
|
||||||
|
S["WINDOWS_IMPLIB"]="0"
|
||||||
|
S["PIC_FLAG"]="-fPIC -DPIC"
|
||||||
|
S["SHARED_LD_MODULE_CXX"]="$(CXX) -shared -fPIC -o"
|
||||||
|
S["SHARED_LD_MODULE_CC"]="$(CC) -shared -fPIC -o"
|
||||||
|
S["SHARED_LD_CXX"]="$(CXX) -shared -fPIC -o"
|
||||||
|
S["SHARED_LD_CC"]="$(CC) -shared -fPIC -o"
|
||||||
|
S["AIX_CXX_LD"]=""
|
||||||
|
S["OBJEXT"]="o"
|
||||||
|
S["ac_ct_CC"]="gcc"
|
||||||
|
S["CPPFLAGS"]=""
|
||||||
|
S["LDFLAGS"]=""
|
||||||
|
S["CFLAGS"]="-g -O2"
|
||||||
|
S["CC"]="gcc"
|
||||||
|
S["dlldir"]="${exec_prefix}/lib"
|
||||||
|
S["DLLPREFIX_MODULE"]=""
|
||||||
|
S["DLLPREFIX"]="lib"
|
||||||
|
S["LIBEXT"]=".a"
|
||||||
|
S["LIBPREFIX"]="lib"
|
||||||
|
S["EXEEXT"]=""
|
||||||
|
S["DLLIMP_SUFFIX"]="so"
|
||||||
|
S["SO_SUFFIX_MODULE"]="so"
|
||||||
|
S["SO_SUFFIX"]="so"
|
||||||
|
S["PLATFORM_BEOS"]="0"
|
||||||
|
S["PLATFORM_OS2"]="0"
|
||||||
|
S["PLATFORM_MACOSX"]="0"
|
||||||
|
S["PLATFORM_MACOS"]="0"
|
||||||
|
S["PLATFORM_MAC"]="0"
|
||||||
|
S["PLATFORM_MSDOS"]="0"
|
||||||
|
S["PLATFORM_WIN32"]="0"
|
||||||
|
S["PLATFORM_UNIX"]="1"
|
||||||
|
S["IF_GNU_MAKE"]=""
|
||||||
|
S["LDFLAGS_GUI"]=""
|
||||||
|
S["INSTALL_DIR"]="$(INSTALL) -d"
|
||||||
|
S["NM"]="nm"
|
||||||
|
S["STRIP"]="strip"
|
||||||
|
S["AROPTIONS"]="rcu"
|
||||||
|
S["AR"]="ar"
|
||||||
|
S["MAKE_SET"]=""
|
||||||
|
S["SET_MAKE"]=""
|
||||||
|
S["LN_S"]="ln -s"
|
||||||
|
S["INSTALL_DATA"]="${INSTALL} -m 644"
|
||||||
|
S["INSTALL_SCRIPT"]="${INSTALL}"
|
||||||
|
S["INSTALL_PROGRAM"]="${INSTALL}"
|
||||||
|
S["RANLIB"]="ranlib"
|
||||||
|
S["target_os"]="linux-gnu"
|
||||||
|
S["target_vendor"]="unknown"
|
||||||
|
S["target_cpu"]="x86_64"
|
||||||
|
S["target"]="x86_64-unknown-linux-gnu"
|
||||||
|
S["host_os"]="linux-gnu"
|
||||||
|
S["host_vendor"]="unknown"
|
||||||
|
S["host_cpu"]="x86_64"
|
||||||
|
S["host"]="x86_64-unknown-linux-gnu"
|
||||||
|
S["build_os"]="linux-gnu"
|
||||||
|
S["build_vendor"]="unknown"
|
||||||
|
S["build_cpu"]="x86_64"
|
||||||
|
S["build"]="x86_64-unknown-linux-gnu"
|
||||||
|
S["target_alias"]=""
|
||||||
|
S["host_alias"]=""
|
||||||
|
S["build_alias"]=""
|
||||||
|
S["LIBS"]=""
|
||||||
|
S["ECHO_T"]=""
|
||||||
|
S["ECHO_N"]="-n"
|
||||||
|
S["ECHO_C"]=""
|
||||||
|
S["DEFS"]="-DPACKAGE_NAME=\\\"\\\" -DPACKAGE_TARNAME=\\\"\\\" -DPACKAGE_VERSION=\\\"\\\" -DPACKAGE_STRING=\\\"\\\" -DPACKAGE_BUGREPORT=\\\"\\\" -DPACKAGE_URL=\\\"\\\""
|
||||||
|
S["mandir"]="${datarootdir}/man"
|
||||||
|
S["localedir"]="${datarootdir}/locale"
|
||||||
|
S["libdir"]="${exec_prefix}/lib"
|
||||||
|
S["psdir"]="${docdir}"
|
||||||
|
S["pdfdir"]="${docdir}"
|
||||||
|
S["dvidir"]="${docdir}"
|
||||||
|
S["htmldir"]="${docdir}"
|
||||||
|
S["infodir"]="${datarootdir}/info"
|
||||||
|
S["docdir"]="${datarootdir}/doc/${PACKAGE}"
|
||||||
|
S["oldincludedir"]="/usr/include"
|
||||||
|
S["includedir"]="${prefix}/include"
|
||||||
|
S["localstatedir"]="${prefix}/var"
|
||||||
|
S["sharedstatedir"]="${prefix}/com"
|
||||||
|
S["sysconfdir"]="${prefix}/etc"
|
||||||
|
S["datadir"]="${datarootdir}"
|
||||||
|
S["datarootdir"]="${prefix}/share"
|
||||||
|
S["libexecdir"]="${exec_prefix}/libexec"
|
||||||
|
S["sbindir"]="${exec_prefix}/sbin"
|
||||||
|
S["bindir"]="${exec_prefix}/bin"
|
||||||
|
S["program_transform_name"]="s,x,x,"
|
||||||
|
S["prefix"]="/usr/local"
|
||||||
|
S["exec_prefix"]="${prefix}"
|
||||||
|
S["PACKAGE_URL"]=""
|
||||||
|
S["PACKAGE_BUGREPORT"]=""
|
||||||
|
S["PACKAGE_STRING"]=""
|
||||||
|
S["PACKAGE_VERSION"]=""
|
||||||
|
S["PACKAGE_TARNAME"]=""
|
||||||
|
S["PACKAGE_NAME"]=""
|
||||||
|
S["PATH_SEPARATOR"]=":"
|
||||||
|
S["SHELL"]="/bin/bash"
|
||||||
|
_ACAWK
|
||||||
|
cat >>"$ac_tmp/subs1.awk" <<_ACAWK &&
|
||||||
|
for (key in S) S_is_set[key] = 1
|
||||||
|
FS = ""
|
||||||
|
|
||||||
|
}
|
||||||
|
{
|
||||||
|
line = $ 0
|
||||||
|
nfields = split(line, field, "@")
|
||||||
|
substed = 0
|
||||||
|
len = length(field[1])
|
||||||
|
for (i = 2; i < nfields; i++) {
|
||||||
|
key = field[i]
|
||||||
|
keylen = length(key)
|
||||||
|
if (S_is_set[key]) {
|
||||||
|
value = S[key]
|
||||||
|
line = substr(line, 1, len) "" value "" substr(line, len + keylen + 3)
|
||||||
|
len += length(value) + length(field[++i])
|
||||||
|
substed = 1
|
||||||
|
} else
|
||||||
|
len += 1 + keylen
|
||||||
|
}
|
||||||
|
|
||||||
|
print line
|
||||||
|
}
|
||||||
|
|
||||||
|
_ACAWK
|
||||||
|
if sed "s/$ac_cr//" < /dev/null > /dev/null 2>&1; then
|
||||||
|
sed "s/$ac_cr\$//; s/$ac_cr/$ac_cs_awk_cr/g"
|
||||||
|
else
|
||||||
|
cat
|
||||||
|
fi < "$ac_tmp/subs1.awk" > "$ac_tmp/subs.awk" \
|
||||||
|
|| as_fn_error $? "could not setup config files machinery" "$LINENO" 5
|
||||||
|
fi # test -n "$CONFIG_FILES"
|
||||||
|
|
||||||
|
|
||||||
|
eval set X " :F $CONFIG_FILES "
|
||||||
|
shift
|
||||||
|
for ac_tag
|
||||||
|
do
|
||||||
|
case $ac_tag in
|
||||||
|
:[FHLC]) ac_mode=$ac_tag; continue;;
|
||||||
|
esac
|
||||||
|
case $ac_mode$ac_tag in
|
||||||
|
:[FHL]*:*);;
|
||||||
|
:L* | :C*:*) as_fn_error $? "invalid tag \`$ac_tag'" "$LINENO" 5;;
|
||||||
|
:[FH]-) ac_tag=-:-;;
|
||||||
|
:[FH]*) ac_tag=$ac_tag:$ac_tag.in;;
|
||||||
|
esac
|
||||||
|
ac_save_IFS=$IFS
|
||||||
|
IFS=:
|
||||||
|
set x $ac_tag
|
||||||
|
IFS=$ac_save_IFS
|
||||||
|
shift
|
||||||
|
ac_file=$1
|
||||||
|
shift
|
||||||
|
|
||||||
|
case $ac_mode in
|
||||||
|
:L) ac_source=$1;;
|
||||||
|
:[FH])
|
||||||
|
ac_file_inputs=
|
||||||
|
for ac_f
|
||||||
|
do
|
||||||
|
case $ac_f in
|
||||||
|
-) ac_f="$ac_tmp/stdin";;
|
||||||
|
*) # Look for the file first in the build tree, then in the source tree
|
||||||
|
# (if the path is not absolute). The absolute path cannot be DOS-style,
|
||||||
|
# because $ac_f cannot contain `:'.
|
||||||
|
test -f "$ac_f" ||
|
||||||
|
case $ac_f in
|
||||||
|
[\\/$]*) false;;
|
||||||
|
*) test -f "$srcdir/$ac_f" && ac_f="$srcdir/$ac_f";;
|
||||||
|
esac ||
|
||||||
|
as_fn_error 1 "cannot find input file: \`$ac_f'" "$LINENO" 5;;
|
||||||
|
esac
|
||||||
|
case $ac_f in *\'*) ac_f=`$as_echo "$ac_f" | sed "s/'/'\\\\\\\\''/g"`;; esac
|
||||||
|
as_fn_append ac_file_inputs " '$ac_f'"
|
||||||
|
done
|
||||||
|
|
||||||
|
# Let's still pretend it is `configure' which instantiates (i.e., don't
|
||||||
|
# use $as_me), people would be surprised to read:
|
||||||
|
# /* config.h. Generated by config.status. */
|
||||||
|
configure_input='Generated from '`
|
||||||
|
$as_echo "$*" | sed 's|^[^:]*/||;s|:[^:]*/|, |g'
|
||||||
|
`' by configure.'
|
||||||
|
if test x"$ac_file" != x-; then
|
||||||
|
configure_input="$ac_file. $configure_input"
|
||||||
|
{ $as_echo "$as_me:${as_lineno-$LINENO}: creating $ac_file" >&5
|
||||||
|
$as_echo "$as_me: creating $ac_file" >&6;}
|
||||||
|
fi
|
||||||
|
# Neutralize special characters interpreted by sed in replacement strings.
|
||||||
|
case $configure_input in #(
|
||||||
|
*\&* | *\|* | *\\* )
|
||||||
|
ac_sed_conf_input=`$as_echo "$configure_input" |
|
||||||
|
sed 's/[\\\\&|]/\\\\&/g'`;; #(
|
||||||
|
*) ac_sed_conf_input=$configure_input;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
case $ac_tag in
|
||||||
|
*:-:* | *:-) cat >"$ac_tmp/stdin" \
|
||||||
|
|| as_fn_error $? "could not create $ac_file" "$LINENO" 5 ;;
|
||||||
|
esac
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
ac_dir=`$as_dirname -- "$ac_file" ||
|
||||||
|
$as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
|
||||||
|
X"$ac_file" : 'X\(//\)[^/]' \| \
|
||||||
|
X"$ac_file" : 'X\(//\)$' \| \
|
||||||
|
X"$ac_file" : 'X\(/\)' \| . 2>/dev/null ||
|
||||||
|
$as_echo X"$ac_file" |
|
||||||
|
sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
|
||||||
|
s//\1/
|
||||||
|
q
|
||||||
|
}
|
||||||
|
/^X\(\/\/\)[^/].*/{
|
||||||
|
s//\1/
|
||||||
|
q
|
||||||
|
}
|
||||||
|
/^X\(\/\/\)$/{
|
||||||
|
s//\1/
|
||||||
|
q
|
||||||
|
}
|
||||||
|
/^X\(\/\).*/{
|
||||||
|
s//\1/
|
||||||
|
q
|
||||||
|
}
|
||||||
|
s/.*/./; q'`
|
||||||
|
as_dir="$ac_dir"; as_fn_mkdir_p
|
||||||
|
ac_builddir=.
|
||||||
|
|
||||||
|
case "$ac_dir" in
|
||||||
|
.) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;;
|
||||||
|
*)
|
||||||
|
ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'`
|
||||||
|
# A ".." for each directory in $ac_dir_suffix.
|
||||||
|
ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'`
|
||||||
|
case $ac_top_builddir_sub in
|
||||||
|
"") ac_top_builddir_sub=. ac_top_build_prefix= ;;
|
||||||
|
*) ac_top_build_prefix=$ac_top_builddir_sub/ ;;
|
||||||
|
esac ;;
|
||||||
|
esac
|
||||||
|
ac_abs_top_builddir=$ac_pwd
|
||||||
|
ac_abs_builddir=$ac_pwd$ac_dir_suffix
|
||||||
|
# for backward compatibility:
|
||||||
|
ac_top_builddir=$ac_top_build_prefix
|
||||||
|
|
||||||
|
case $srcdir in
|
||||||
|
.) # We are building in place.
|
||||||
|
ac_srcdir=.
|
||||||
|
ac_top_srcdir=$ac_top_builddir_sub
|
||||||
|
ac_abs_top_srcdir=$ac_pwd ;;
|
||||||
|
[\\/]* | ?:[\\/]* ) # Absolute name.
|
||||||
|
ac_srcdir=$srcdir$ac_dir_suffix;
|
||||||
|
ac_top_srcdir=$srcdir
|
||||||
|
ac_abs_top_srcdir=$srcdir ;;
|
||||||
|
*) # Relative name.
|
||||||
|
ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix
|
||||||
|
ac_top_srcdir=$ac_top_build_prefix$srcdir
|
||||||
|
ac_abs_top_srcdir=$ac_pwd/$srcdir ;;
|
||||||
|
esac
|
||||||
|
ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix
|
||||||
|
|
||||||
|
|
||||||
|
case $ac_mode in
|
||||||
|
:F)
|
||||||
|
#
|
||||||
|
# CONFIG_FILE
|
||||||
|
#
|
||||||
|
|
||||||
|
case $INSTALL in
|
||||||
|
[\\/$]* | ?:[\\/]* ) ac_INSTALL=$INSTALL ;;
|
||||||
|
*) ac_INSTALL=$ac_top_build_prefix$INSTALL ;;
|
||||||
|
esac
|
||||||
|
# If the template does not know about datarootdir, expand it.
|
||||||
|
# FIXME: This hack should be removed a few years after 2.60.
|
||||||
|
ac_datarootdir_hack=; ac_datarootdir_seen=
|
||||||
|
ac_sed_dataroot='
|
||||||
|
/datarootdir/ {
|
||||||
|
p
|
||||||
|
q
|
||||||
|
}
|
||||||
|
/@datadir@/p
|
||||||
|
/@docdir@/p
|
||||||
|
/@infodir@/p
|
||||||
|
/@localedir@/p
|
||||||
|
/@mandir@/p'
|
||||||
|
case `eval "sed -n \"\$ac_sed_dataroot\" $ac_file_inputs"` in
|
||||||
|
*datarootdir*) ac_datarootdir_seen=yes;;
|
||||||
|
*@datadir@*|*@docdir@*|*@infodir@*|*@localedir@*|*@mandir@*)
|
||||||
|
{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&5
|
||||||
|
$as_echo "$as_me: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&2;}
|
||||||
|
ac_datarootdir_hack='
|
||||||
|
s&@datadir@&${datarootdir}&g
|
||||||
|
s&@docdir@&${datarootdir}/doc/${PACKAGE}&g
|
||||||
|
s&@infodir@&${datarootdir}/info&g
|
||||||
|
s&@localedir@&${datarootdir}/locale&g
|
||||||
|
s&@mandir@&${datarootdir}/man&g
|
||||||
|
s&\${datarootdir}&${prefix}/share&g' ;;
|
||||||
|
esac
|
||||||
|
ac_sed_extra="/^[ ]*VPATH[ ]*=[ ]*/{
|
||||||
|
h
|
||||||
|
s///
|
||||||
|
s/^/:/
|
||||||
|
s/[ ]*$/:/
|
||||||
|
s/:\$(srcdir):/:/g
|
||||||
|
s/:\${srcdir}:/:/g
|
||||||
|
s/:@srcdir@:/:/g
|
||||||
|
s/^:*//
|
||||||
|
s/:*$//
|
||||||
|
x
|
||||||
|
s/\(=[ ]*\).*/\1/
|
||||||
|
G
|
||||||
|
s/\n//
|
||||||
|
s/^[^=]*=[ ]*$//
|
||||||
|
}
|
||||||
|
|
||||||
|
:t
|
||||||
|
/@[a-zA-Z_][a-zA-Z_0-9]*@/!b
|
||||||
|
s|@configure_input@|$ac_sed_conf_input|;t t
|
||||||
|
s&@top_builddir@&$ac_top_builddir_sub&;t t
|
||||||
|
s&@top_build_prefix@&$ac_top_build_prefix&;t t
|
||||||
|
s&@srcdir@&$ac_srcdir&;t t
|
||||||
|
s&@abs_srcdir@&$ac_abs_srcdir&;t t
|
||||||
|
s&@top_srcdir@&$ac_top_srcdir&;t t
|
||||||
|
s&@abs_top_srcdir@&$ac_abs_top_srcdir&;t t
|
||||||
|
s&@builddir@&$ac_builddir&;t t
|
||||||
|
s&@abs_builddir@&$ac_abs_builddir&;t t
|
||||||
|
s&@abs_top_builddir@&$ac_abs_top_builddir&;t t
|
||||||
|
s&@INSTALL@&$ac_INSTALL&;t t
|
||||||
|
$ac_datarootdir_hack
|
||||||
|
"
|
||||||
|
eval sed \"\$ac_sed_extra\" "$ac_file_inputs" | $AWK -f "$ac_tmp/subs.awk" \
|
||||||
|
>$ac_tmp/out || as_fn_error $? "could not create $ac_file" "$LINENO" 5
|
||||||
|
|
||||||
|
test -z "$ac_datarootdir_hack$ac_datarootdir_seen" &&
|
||||||
|
{ ac_out=`sed -n '/\${datarootdir}/p' "$ac_tmp/out"`; test -n "$ac_out"; } &&
|
||||||
|
{ ac_out=`sed -n '/^[ ]*datarootdir[ ]*:*=/p' \
|
||||||
|
"$ac_tmp/out"`; test -z "$ac_out"; } &&
|
||||||
|
{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file contains a reference to the variable \`datarootdir'
|
||||||
|
which seems to be undefined. Please make sure it is defined" >&5
|
||||||
|
$as_echo "$as_me: WARNING: $ac_file contains a reference to the variable \`datarootdir'
|
||||||
|
which seems to be undefined. Please make sure it is defined" >&2;}
|
||||||
|
|
||||||
|
rm -f "$ac_tmp/stdin"
|
||||||
|
case $ac_file in
|
||||||
|
-) cat "$ac_tmp/out" && rm -f "$ac_tmp/out";;
|
||||||
|
*) rm -f "$ac_file" && mv "$ac_tmp/out" "$ac_file";;
|
||||||
|
esac \
|
||||||
|
|| as_fn_error $? "could not create $ac_file" "$LINENO" 5
|
||||||
|
;;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
esac
|
||||||
|
|
||||||
|
done # for ac_tag
|
||||||
|
|
||||||
|
|
||||||
|
as_fn_exit 0
|
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
|
@ -0,0 +1,7 @@
|
||||||
|
AC_PREREQ(2.53)
|
||||||
|
AC_INIT(aclocal.m4)
|
||||||
|
AC_CANONICAL_SYSTEM
|
||||||
|
DEBUG=0
|
||||||
|
AC_BAKEFILE([m4_include(autoconf_inc.m4)])
|
||||||
|
AC_OUTPUT([Makefile])
|
||||||
|
|
|
@ -0,0 +1,269 @@
|
||||||
|
#!/bin/sh
|
||||||
|
#
|
||||||
|
# install - install a program, script, or datafile
|
||||||
|
#
|
||||||
|
# This originates from X11R5 (mit/util/scripts/install.sh), which was
|
||||||
|
# later released in X11R6 (xc/config/util/install.sh) with the
|
||||||
|
# following copyright and license.
|
||||||
|
#
|
||||||
|
# Copyright (C) 1994 X Consortium
|
||||||
|
#
|
||||||
|
# Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
|
# of this software and associated documentation files (the "Software"), to
|
||||||
|
# deal in the Software without restriction, including without limitation the
|
||||||
|
# rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
|
||||||
|
# sell copies of the Software, and to permit persons to whom the Software is
|
||||||
|
# furnished to do so, subject to the following conditions:
|
||||||
|
#
|
||||||
|
# The above copyright notice and this permission notice shall be included in
|
||||||
|
# all copies or substantial portions of the Software.
|
||||||
|
#
|
||||||
|
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||||
|
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||||
|
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||||
|
# X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
|
||||||
|
# AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNEC-
|
||||||
|
# TION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||||
|
#
|
||||||
|
# Except as contained in this notice, the name of the X Consortium shall not
|
||||||
|
# be used in advertising or otherwise to promote the sale, use or other deal-
|
||||||
|
# ings in this Software without prior written authorization from the X Consor-
|
||||||
|
# tium.
|
||||||
|
#
|
||||||
|
#
|
||||||
|
# FSF changes to this file are in the public domain.
|
||||||
|
#
|
||||||
|
# Calling this script install-sh is preferred over install.sh, to prevent
|
||||||
|
# `make' implicit rules from creating a file called install from it
|
||||||
|
# when there is no Makefile.
|
||||||
|
#
|
||||||
|
# This script is compatible with the BSD install script, but was written
|
||||||
|
# from scratch. It can only install one file at a time, a restriction
|
||||||
|
# shared with many OS's install programs.
|
||||||
|
|
||||||
|
|
||||||
|
# set DOITPROG to echo to test this script
|
||||||
|
|
||||||
|
# Don't use :- since 4.3BSD and earlier shells don't like it.
|
||||||
|
doit="${DOITPROG-}"
|
||||||
|
|
||||||
|
|
||||||
|
# put in absolute paths if you don't have them in your path; or use env. vars.
|
||||||
|
|
||||||
|
mvprog="${MVPROG-mv}"
|
||||||
|
cpprog="${CPPROG-cp}"
|
||||||
|
chmodprog="${CHMODPROG-chmod}"
|
||||||
|
chownprog="${CHOWNPROG-chown}"
|
||||||
|
chgrpprog="${CHGRPPROG-chgrp}"
|
||||||
|
stripprog="${STRIPPROG-strip}"
|
||||||
|
rmprog="${RMPROG-rm}"
|
||||||
|
mkdirprog="${MKDIRPROG-mkdir}"
|
||||||
|
|
||||||
|
transformbasename=""
|
||||||
|
transform_arg=""
|
||||||
|
instcmd="$mvprog"
|
||||||
|
chmodcmd="$chmodprog 0755"
|
||||||
|
chowncmd=""
|
||||||
|
chgrpcmd=""
|
||||||
|
stripcmd=""
|
||||||
|
rmcmd="$rmprog -f"
|
||||||
|
mvcmd="$mvprog"
|
||||||
|
src=""
|
||||||
|
dst=""
|
||||||
|
dir_arg=""
|
||||||
|
|
||||||
|
while [ x"$1" != x ]; do
|
||||||
|
case $1 in
|
||||||
|
-c) instcmd="$cpprog"
|
||||||
|
shift
|
||||||
|
continue;;
|
||||||
|
|
||||||
|
-d) dir_arg=true
|
||||||
|
shift
|
||||||
|
continue;;
|
||||||
|
|
||||||
|
-m) chmodcmd="$chmodprog $2"
|
||||||
|
shift
|
||||||
|
shift
|
||||||
|
continue;;
|
||||||
|
|
||||||
|
-o) chowncmd="$chownprog $2"
|
||||||
|
shift
|
||||||
|
shift
|
||||||
|
continue;;
|
||||||
|
|
||||||
|
-g) chgrpcmd="$chgrpprog $2"
|
||||||
|
shift
|
||||||
|
shift
|
||||||
|
continue;;
|
||||||
|
|
||||||
|
-s) stripcmd="$stripprog"
|
||||||
|
shift
|
||||||
|
continue;;
|
||||||
|
|
||||||
|
-t=*) transformarg=`echo $1 | sed 's/-t=//'`
|
||||||
|
shift
|
||||||
|
continue;;
|
||||||
|
|
||||||
|
-b=*) transformbasename=`echo $1 | sed 's/-b=//'`
|
||||||
|
shift
|
||||||
|
continue;;
|
||||||
|
|
||||||
|
*) if [ x"$src" = x ]
|
||||||
|
then
|
||||||
|
src=$1
|
||||||
|
else
|
||||||
|
# this colon is to work around a 386BSD /bin/sh bug
|
||||||
|
:
|
||||||
|
dst=$1
|
||||||
|
fi
|
||||||
|
shift
|
||||||
|
continue;;
|
||||||
|
esac
|
||||||
|
done
|
||||||
|
|
||||||
|
if [ x"$src" = x ]
|
||||||
|
then
|
||||||
|
echo "install: no input file specified"
|
||||||
|
exit 1
|
||||||
|
else
|
||||||
|
true
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ x"$dir_arg" != x ]; then
|
||||||
|
dst=$src
|
||||||
|
src=""
|
||||||
|
|
||||||
|
if [ -d $dst ]; then
|
||||||
|
instcmd=:
|
||||||
|
chmodcmd=""
|
||||||
|
else
|
||||||
|
instcmd=mkdir
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
|
||||||
|
# Waiting for this to be detected by the "$instcmd $src $dsttmp" command
|
||||||
|
# might cause directories to be created, which would be especially bad
|
||||||
|
# if $src (and thus $dsttmp) contains '*'.
|
||||||
|
|
||||||
|
if [ -f $src -o -d $src ]
|
||||||
|
then
|
||||||
|
true
|
||||||
|
else
|
||||||
|
echo "install: $src does not exist"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ x"$dst" = x ]
|
||||||
|
then
|
||||||
|
echo "install: no destination specified"
|
||||||
|
exit 1
|
||||||
|
else
|
||||||
|
true
|
||||||
|
fi
|
||||||
|
|
||||||
|
# If destination is a directory, append the input filename; if your system
|
||||||
|
# does not like double slashes in filenames, you may need to add some logic
|
||||||
|
|
||||||
|
if [ -d $dst ]
|
||||||
|
then
|
||||||
|
dst="$dst"/`basename $src`
|
||||||
|
else
|
||||||
|
true
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
## this sed command emulates the dirname command
|
||||||
|
dstdir=`echo $dst | sed -e 's,[^/]*$,,;s,/$,,;s,^$,.,'`
|
||||||
|
|
||||||
|
# Make sure that the destination directory exists.
|
||||||
|
# this part is taken from Noah Friedman's mkinstalldirs script
|
||||||
|
|
||||||
|
# Skip lots of stat calls in the usual case.
|
||||||
|
if [ ! -d "$dstdir" ]; then
|
||||||
|
defaultIFS='
|
||||||
|
'
|
||||||
|
IFS="${IFS-${defaultIFS}}"
|
||||||
|
|
||||||
|
oIFS="${IFS}"
|
||||||
|
# Some sh's can't handle IFS=/ for some reason.
|
||||||
|
IFS='%'
|
||||||
|
set - `echo ${dstdir} | sed -e 's@/@%@g' -e 's@^%@/@'`
|
||||||
|
IFS="${oIFS}"
|
||||||
|
|
||||||
|
pathcomp=''
|
||||||
|
|
||||||
|
while [ $# -ne 0 ] ; do
|
||||||
|
pathcomp="${pathcomp}${1}"
|
||||||
|
shift
|
||||||
|
|
||||||
|
if [ ! -d "${pathcomp}" ] ;
|
||||||
|
then
|
||||||
|
$mkdirprog "${pathcomp}"
|
||||||
|
else
|
||||||
|
true
|
||||||
|
fi
|
||||||
|
|
||||||
|
pathcomp="${pathcomp}/"
|
||||||
|
done
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ x"$dir_arg" != x ]
|
||||||
|
then
|
||||||
|
$doit $instcmd $dst &&
|
||||||
|
|
||||||
|
if [ x"$chowncmd" != x ]; then $doit $chowncmd $dst; else true ; fi &&
|
||||||
|
if [ x"$chgrpcmd" != x ]; then $doit $chgrpcmd $dst; else true ; fi &&
|
||||||
|
if [ x"$stripcmd" != x ]; then $doit $stripcmd $dst; else true ; fi &&
|
||||||
|
if [ x"$chmodcmd" != x ]; then $doit $chmodcmd $dst; else true ; fi
|
||||||
|
else
|
||||||
|
|
||||||
|
# If we're going to rename the final executable, determine the name now.
|
||||||
|
|
||||||
|
if [ x"$transformarg" = x ]
|
||||||
|
then
|
||||||
|
dstfile=`basename $dst`
|
||||||
|
else
|
||||||
|
dstfile=`basename $dst $transformbasename |
|
||||||
|
sed $transformarg`$transformbasename
|
||||||
|
fi
|
||||||
|
|
||||||
|
# don't allow the sed command to completely eliminate the filename
|
||||||
|
|
||||||
|
if [ x"$dstfile" = x ]
|
||||||
|
then
|
||||||
|
dstfile=`basename $dst`
|
||||||
|
else
|
||||||
|
true
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Make a temp file name in the proper directory.
|
||||||
|
|
||||||
|
dsttmp=$dstdir/#inst.$$#
|
||||||
|
|
||||||
|
# Move or copy the file name to the temp name
|
||||||
|
|
||||||
|
$doit $instcmd $src $dsttmp &&
|
||||||
|
|
||||||
|
trap "rm -f ${dsttmp}" 0 &&
|
||||||
|
|
||||||
|
# and set any options; do chmod last to preserve setuid bits
|
||||||
|
|
||||||
|
# If any of these fail, we abort the whole thing. If we want to
|
||||||
|
# ignore errors from any of these, just make sure not to ignore
|
||||||
|
# errors from the above "$doit $instcmd $src $dsttmp" command.
|
||||||
|
|
||||||
|
if [ x"$chowncmd" != x ]; then $doit $chowncmd $dsttmp; else true;fi &&
|
||||||
|
if [ x"$chgrpcmd" != x ]; then $doit $chgrpcmd $dsttmp; else true;fi &&
|
||||||
|
if [ x"$stripcmd" != x ]; then $doit $stripcmd $dsttmp; else true;fi &&
|
||||||
|
if [ x"$chmodcmd" != x ]; then $doit $chmodcmd $dsttmp; else true;fi &&
|
||||||
|
|
||||||
|
# Now rename the file to the real destination.
|
||||||
|
|
||||||
|
$doit $rmcmd -f $dstdir/$dstfile &&
|
||||||
|
$doit $mvcmd $dsttmp $dstdir/$dstfile
|
||||||
|
|
||||||
|
fi &&
|
||||||
|
|
||||||
|
|
||||||
|
exit 0
|
|
@ -0,0 +1 @@
|
||||||
|
test
|
|
@ -0,0 +1,112 @@
|
||||||
|
ABOUT
|
||||||
|
--
|
||||||
|
Bcrypt is a cross platform file encryption utility. Encrypted files are
|
||||||
|
portable across all supported operating systems and processors. Passphrases
|
||||||
|
are between 8 and 56 characters and are hashed internally to a 448 bit
|
||||||
|
key. However, all characters supplied are significant. The stronger your
|
||||||
|
passphrase, the more secure your data.
|
||||||
|
|
||||||
|
Bcrypt uses the blowfish encryption algorithm published by Bruce Schneier
|
||||||
|
in 1993. More information on the algorithm can be found at:
|
||||||
|
http://www.counterpane.com/blowfish.html
|
||||||
|
|
||||||
|
Specifically, bcrypt uses Paul Kocher's implementation of the algorithm.
|
||||||
|
The source distributed with bcrypt has been slightly altered from the
|
||||||
|
original. Original source code can be obtained from:
|
||||||
|
http://www.counterpane.com/bfsh-koc.zip
|
||||||
|
|
||||||
|
SUPPORTED PLATFORMS
|
||||||
|
--
|
||||||
|
Bcrypt has been successfully tested on the following platforms:
|
||||||
|
|
||||||
|
x86
|
||||||
|
FreeBSD, OpenBSD, Linux, Cygwin, Win32
|
||||||
|
Sparc R220
|
||||||
|
Solaris 2.7, 2.8
|
||||||
|
Sparc Ultra60
|
||||||
|
Linux 2.4
|
||||||
|
Alpha
|
||||||
|
Linux 2.4
|
||||||
|
PPC G4
|
||||||
|
MacOS X 10.1 SERVER
|
||||||
|
PPC RS/6000
|
||||||
|
Linux 2.4
|
||||||
|
|
||||||
|
No other operating systems have been tested, but most should work with
|
||||||
|
minimal modifications. If you get bcrypt to compile without errors on any
|
||||||
|
other platform / architecture, I'd like to know about it. If patches are
|
||||||
|
necessary to get bcrypt work on your OS, I will try to incorporate them
|
||||||
|
into the main distribution.
|
||||||
|
|
||||||
|
If you have a machine not listed above that is incapable of compiling
|
||||||
|
bcrypt and are willing to give me access to the machine, I will make an
|
||||||
|
attempt to port it to your OS.
|
||||||
|
|
||||||
|
SYSTEM REQUIREMENTS
|
||||||
|
--
|
||||||
|
zlib - http://www.gzip.org/zlib/
|
||||||
|
|
||||||
|
INSTALLATION
|
||||||
|
--
|
||||||
|
If you're so inclined, edit config.h and change the defaults to whatever
|
||||||
|
you think is appropriate for your needs. If you choose not to have
|
||||||
|
bcrypt remove input files after processing, or set SECUREDELETE to 0,
|
||||||
|
you are likely to have data on your hard drive that can be recovered
|
||||||
|
even after deletion.
|
||||||
|
|
||||||
|
All of these options can be set on the command line as well. When you're
|
||||||
|
satisfied with the default settings, simply type:
|
||||||
|
make
|
||||||
|
then su and type:
|
||||||
|
make install
|
||||||
|
|
||||||
|
It would be wise to test the installation on a few unimportant files
|
||||||
|
before encrypting anything you value and removing the only copy.
|
||||||
|
|
||||||
|
USAGE
|
||||||
|
--
|
||||||
|
bcrypt [-orc][-sN] file ...
|
||||||
|
|
||||||
|
Encrypted files will be saved with an extension of .bfe. Any files ending
|
||||||
|
in .bfe will be assumed to be encrypted with bcrypt and will attempt to
|
||||||
|
decrypt them. Any other input files will be encrypted. If more than one
|
||||||
|
type of file is given, bcrypt will process all files which are the same as
|
||||||
|
the first filetype given.
|
||||||
|
|
||||||
|
By default, bcrypt will compress input files before encryption, remove
|
||||||
|
input files after they are processed (assuming they are processed
|
||||||
|
successfully) and overwrite input files with random data to prevent data
|
||||||
|
recovery.
|
||||||
|
|
||||||
|
Passphrases may be between 8 and 56 characters. Regardless of the
|
||||||
|
passphrase size, the key is hashed internally to 448 bits - the largest
|
||||||
|
keysize supported by the blowfish algorithm. However, it is still wise to
|
||||||
|
use a strong passphrase.
|
||||||
|
|
||||||
|
OPTIONS
|
||||||
|
-o print output to standard out. Implies -r.
|
||||||
|
|
||||||
|
-c DO NOT compress files before encryption.
|
||||||
|
|
||||||
|
-r DO NOT remove input files after processing
|
||||||
|
|
||||||
|
-sN How many times to overwrite input files with random
|
||||||
|
data before processing. The default number of
|
||||||
|
overwrites is 3. Use -s0 to disable this feature.
|
||||||
|
No effect if -r is supplied.
|
||||||
|
|
||||||
|
The options o,c and r each have the opposite effects if the appropriate
|
||||||
|
settings are altered from the default in config.h. To determine what
|
||||||
|
effect each of these have, run bcrypt without any options.
|
||||||
|
|
||||||
|
Encrypted files should be compatible between most systems. Binary
|
||||||
|
compatibility has been tested for all systems listed above.
|
||||||
|
|
||||||
|
/* ====================================================================
|
||||||
|
* Copyright (c) 2002 Johnny Shelley. All rights reserved.
|
||||||
|
*
|
||||||
|
* Bcrypt is licensed under the BSD software license. See the file
|
||||||
|
* called 'LICENSE' that you should have received with this software
|
||||||
|
* for details
|
||||||
|
* ====================================================================
|
||||||
|
*/
|
|
@ -0,0 +1,20 @@
|
||||||
|
/* ====================================================================
|
||||||
|
* Copyleft 2007 John Sennesael, donationcoder.com
|
||||||
|
*
|
||||||
|
* Permission is hereby granted to copy, modify and reproduce this work
|
||||||
|
* in binary or source form, and in commercial and non-commercial form,
|
||||||
|
* given that the following conditions are met:
|
||||||
|
*
|
||||||
|
* - Include the original bcrypt license (not libbcrypt) on which this
|
||||||
|
* library is based
|
||||||
|
*
|
||||||
|
* - Include this license text with your program our source code.
|
||||||
|
*
|
||||||
|
* - Do not claim you wrote this library.
|
||||||
|
*
|
||||||
|
*
|
||||||
|
* Please note that the original bcrypt license terms have priority over
|
||||||
|
* the libbcrypt license terms, therefore you should read that license as
|
||||||
|
* well.
|
||||||
|
*
|
||||||
|
*/
|
|
@ -0,0 +1,25 @@
|
||||||
|
++++++++++++++++++++++++++++++++
|
||||||
|
| libbcrypt version 1.0 readme |
|
||||||
|
++++++++++++++++++++++++++++++++
|
||||||
|
|
||||||
|
Please see bcrypt.h for how to use this library.
|
||||||
|
It only includes 2 functions, one to encrypt and one to decrypt.
|
||||||
|
|
||||||
|
======================================================================
|
||||||
|
= =
|
||||||
|
= *nix build instructions: =
|
||||||
|
= =
|
||||||
|
= cd build/unix =
|
||||||
|
= ./configure =
|
||||||
|
= make =
|
||||||
|
= =
|
||||||
|
= 'make install' is still a bit bugish, don't use it. =
|
||||||
|
= copy bin/bcrypt.so to /usr/lib/libbcrypt.so =
|
||||||
|
= and copy source/include/bcrypt.h to /usr/include/bcrypt/bcrypt.h =
|
||||||
|
= manually for now. =
|
||||||
|
= =
|
||||||
|
= That's all. =
|
||||||
|
= =
|
||||||
|
======================================================================
|
||||||
|
|
||||||
|
Mail comments to gothic@donationcoders.com
|
|
@ -0,0 +1,17 @@
|
||||||
|
/* ====================================================================
|
||||||
|
* Copyright (c) 2002 John Sennesael. All rights reserved.
|
||||||
|
*
|
||||||
|
* This header is part of a C library interface for bcrypt developed by
|
||||||
|
* donationcoder.com
|
||||||
|
* ====================================================================
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef BCRYPT_H_INCLUDE
|
||||||
|
#define BCRYPT_H_INCLUDE
|
||||||
|
|
||||||
|
/// Encrypts a file.
|
||||||
|
int bcrypt(char* filename,char* key,char delOrig);
|
||||||
|
/// Decrypts a file.
|
||||||
|
int bdecrypt(char* filename,char* key,char delOrig);
|
||||||
|
|
||||||
|
#endif
|
|
@ -0,0 +1,21 @@
|
||||||
|
/*
|
||||||
|
* Author : Paul Kocher
|
||||||
|
* E-mail : pck@netcom.com
|
||||||
|
* Date : 1997
|
||||||
|
* Description: C implementation of the Blowfish algorithm.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#define MAXKEYBYTES 56 /* 448 bits */
|
||||||
|
|
||||||
|
typedef struct {
|
||||||
|
uInt32 P[16 + 2];
|
||||||
|
uInt32 S[4][256];
|
||||||
|
} BLOWFISH_CTX;
|
||||||
|
|
||||||
|
void Blowfish_Init(BLOWFISH_CTX *ctx, unsigned char *key, int keyLen);
|
||||||
|
|
||||||
|
void Blowfish_Encrypt(BLOWFISH_CTX *ctx, uInt32 *xl, uInt32
|
||||||
|
*xr);
|
||||||
|
|
||||||
|
void Blowfish_Decrypt(BLOWFISH_CTX *ctx, uInt32 *xl, uInt32
|
||||||
|
*xr);
|
|
@ -0,0 +1,22 @@
|
||||||
|
/* ====================================================================
|
||||||
|
* Copyright (c) 2002 Johnny Shelley. All rights reserved.
|
||||||
|
*
|
||||||
|
* Bcrypt is licensed under the BSD software license. See the file
|
||||||
|
* called 'LICENSE' that you should have received with this software
|
||||||
|
* for details
|
||||||
|
* ====================================================================
|
||||||
|
*/
|
||||||
|
|
||||||
|
|
||||||
|
/* All options are either 1 for true or 0 for false w/ the exception */
|
||||||
|
/* of SECUREDELETE which may be anything from 0 to 127. */
|
||||||
|
/* All options may be overridden on the command line. */
|
||||||
|
|
||||||
|
/* whether or not to compress files */
|
||||||
|
#define COMPRESS 1
|
||||||
|
/* send output to stdout */
|
||||||
|
#define STANDARDOUT 0
|
||||||
|
/* remove input files after processing */
|
||||||
|
#define REMOVE 1
|
||||||
|
/* how many times to overwrite input files before deleting */
|
||||||
|
#define SECUREDELETE 3
|
|
@ -0,0 +1,27 @@
|
||||||
|
typedef struct _BCoptions {
|
||||||
|
unsigned char remove;
|
||||||
|
unsigned char standardout;
|
||||||
|
unsigned char compression;
|
||||||
|
unsigned char type;
|
||||||
|
uLong origsize;
|
||||||
|
unsigned char securedelete;
|
||||||
|
} BCoptions;
|
||||||
|
|
||||||
|
#define ENCRYPT 0
|
||||||
|
#define DECRYPT 1
|
||||||
|
|
||||||
|
#define endianBig ((unsigned char) 0x45)
|
||||||
|
#define endianLittle ((unsigned char) 0x54)
|
||||||
|
|
||||||
|
typedef unsigned int uInt32;
|
||||||
|
|
||||||
|
#ifdef WIN32 /* Win32 doesn't have random() or lstat */
|
||||||
|
#define random() rand()
|
||||||
|
#define initstate(x,y,z) srand(x)
|
||||||
|
#define lstat(x,y) stat(x,y)
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifndef S_ISREG
|
||||||
|
#define S_ISREG(x) ( ((x)&S_IFMT)==S_IFREG )
|
||||||
|
#endif
|
||||||
|
|
|
@ -0,0 +1,51 @@
|
||||||
|
/* ====================================================================
|
||||||
|
* Copyright (c) 2002 Johnny Shelley. All rights reserved.
|
||||||
|
*
|
||||||
|
* Bcrypt is licensed under the BSD software license. See the file
|
||||||
|
* called 'LICENSE' that you should have received with this software
|
||||||
|
* for details
|
||||||
|
* ====================================================================
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include "includes.h"
|
||||||
|
#include "blowfish.h"
|
||||||
|
|
||||||
|
/* from wrapbf.c */
|
||||||
|
uLong BFEncrypt(char **input, char *key, uLong sz,
|
||||||
|
BCoptions *options);
|
||||||
|
uLong BFDecrypt(char **input, char *key, char *key2,
|
||||||
|
uLong sz, BCoptions *options);
|
||||||
|
|
||||||
|
/* from keys.c */
|
||||||
|
char * getkey(int type, char* TheKey);
|
||||||
|
void mutateKey(char **key, char **key2);
|
||||||
|
|
||||||
|
/* from rwfile.c */
|
||||||
|
int getremain(uLong sz, int dv);
|
||||||
|
uLong padInput(char **input, uLong sz);
|
||||||
|
uLong attachKey(char **input, char *key, uLong sz);
|
||||||
|
uLong readfile(char *infile, char **input, int type, char *key,
|
||||||
|
struct stat statbuf);
|
||||||
|
uLong writefile(char *outfile, char *output, uLong sz,
|
||||||
|
BCoptions options, struct stat statbuf);
|
||||||
|
int deletefile(char *file, BCoptions options, char *key, struct stat statbuf);
|
||||||
|
|
||||||
|
/* from wrapzl.c */
|
||||||
|
uLong docompress(char **input, uLong sz);
|
||||||
|
uLong douncompress(char **input, uLong sz, BCoptions options);
|
||||||
|
|
||||||
|
/* from main.c */
|
||||||
|
BCoptions initoptions(BCoptions options);
|
||||||
|
int usage(char *name);
|
||||||
|
int memerror();
|
||||||
|
int parseArgs(char delOrig, BCoptions *options);
|
||||||
|
int assignFiles(char *arg, char **infile, char **outfile, struct stat *statbuf,
|
||||||
|
BCoptions *options, char *key);
|
||||||
|
int main(int argc, char *argv[]);
|
||||||
|
|
||||||
|
/* from endian.c */
|
||||||
|
void getEndian(unsigned char **e);
|
||||||
|
uInt32 swapEndian(uInt32 value);
|
||||||
|
int testEndian(char *input);
|
||||||
|
int swapCompressed(char **input, uLong sz);
|
||||||
|
|
|
@ -0,0 +1,23 @@
|
||||||
|
/* ====================================================================
|
||||||
|
* Copyright (c) 2002 Johnny Shelley. All rights reserved.
|
||||||
|
*
|
||||||
|
* Bcrypt is licensed under the BSD software license. See the file
|
||||||
|
* called 'LICENSE' that you should have received with this software
|
||||||
|
* for details
|
||||||
|
* ====================================================================
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include <stdlib.h>
|
||||||
|
#include <stdio.h>
|
||||||
|
#include <string.h>
|
||||||
|
|
||||||
|
#ifndef WIN32 /* These libraries don't exist on Win32 */
|
||||||
|
#include <unistd.h>
|
||||||
|
#include <termios.h>
|
||||||
|
#include <sys/time.h>
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#include <sys/types.h>
|
||||||
|
#include <sys/stat.h>
|
||||||
|
#include <zlib.h>
|
||||||
|
|
|
@ -0,0 +1,192 @@
|
||||||
|
/* ====================================================================
|
||||||
|
* Copyright (c) 2002 John Sennesael. All rights reserved.
|
||||||
|
*
|
||||||
|
* This header is part of a C library interface for bcrypt developed by
|
||||||
|
* donationcoder.com
|
||||||
|
* ====================================================================
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include "bcrypt.h"
|
||||||
|
/* ====================================================================
|
||||||
|
* Copyright (c) 2002 Johnny Shelley. All rights reserved.
|
||||||
|
*
|
||||||
|
* Bcrypt is licensed under the BSD software license. See the file
|
||||||
|
* called 'LICENSE' that you should have received with this software
|
||||||
|
* for details
|
||||||
|
* ====================================================================
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include "includes.h"
|
||||||
|
#include "defines.h"
|
||||||
|
#include "functions.h"
|
||||||
|
#include "config.h"
|
||||||
|
|
||||||
|
extern char *optarg;
|
||||||
|
extern int optind, optreset, opterr;
|
||||||
|
|
||||||
|
BCoptions initoptions(BCoptions options) {
|
||||||
|
options.remove = REMOVE;
|
||||||
|
options.standardout = STANDARDOUT;
|
||||||
|
options.compression = COMPRESS; /* leave this on by default */
|
||||||
|
options.type = 127;
|
||||||
|
options.origsize = 0;
|
||||||
|
options.securedelete = SECUREDELETE;
|
||||||
|
return options;
|
||||||
|
}
|
||||||
|
|
||||||
|
int usage(char *name) {
|
||||||
|
fprintf(stderr, "Usage is: %s -[orc][-sN] file1 file2..\n", name);
|
||||||
|
if (STANDARDOUT == 0)
|
||||||
|
fprintf(stderr, " -o Write output to standard out\n");
|
||||||
|
else
|
||||||
|
fprintf(stderr, " -o Don't write output to standard out\n");
|
||||||
|
if (REMOVE == 1)
|
||||||
|
fprintf(stderr, " -r Do NOT remove input files after processing\n");
|
||||||
|
else
|
||||||
|
fprintf(stderr, " -r Remove input files after processing\n");
|
||||||
|
if (COMPRESS == 1)
|
||||||
|
fprintf(stderr, " -c Do NOT compress files before encryption\n");
|
||||||
|
else
|
||||||
|
fprintf(stderr, " -c Compress files before encryption\n");
|
||||||
|
|
||||||
|
fprintf(stderr, " -sN How many times to overwrite input files with random\
|
||||||
|
data\n");
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
int memerror() {
|
||||||
|
fprintf(stderr, "Can't allocate enough memory. Bailing out\n");
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
|
int parseArgs(char delOrig, BCoptions *options)
|
||||||
|
{
|
||||||
|
signed char ch;
|
||||||
|
char *progname;
|
||||||
|
|
||||||
|
*options = initoptions(*options);
|
||||||
|
options->remove = delOrig;
|
||||||
|
options->standardout = 0;
|
||||||
|
options->compression = 1;
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
int assignFiles(char *arg, char **infile, char **outfile, struct stat *statbuf, BCoptions *options, char *key)
|
||||||
|
{
|
||||||
|
if (lstat(arg, statbuf) < 0) return(1);
|
||||||
|
if (!S_ISREG(statbuf->st_mode)) return(1);
|
||||||
|
if ((*infile = realloc(*infile, strlen(arg) + 1)) == NULL) memerror();
|
||||||
|
memset(*infile, 0, strlen(arg) + 1);
|
||||||
|
strcpy(*infile, arg);
|
||||||
|
if ((*outfile = realloc(*outfile, strlen(arg) + 5)) == NULL) memerror();
|
||||||
|
memset(*outfile, 0, strlen(arg) + 5);
|
||||||
|
strcpy(*outfile, *infile);
|
||||||
|
if (strlen(*infile) > 4)
|
||||||
|
{
|
||||||
|
if ((memcmp(*infile+(strlen(*infile) - 4), ".bfe", 4) == 0) && ((!key) || (options->type == DECRYPT)))
|
||||||
|
{
|
||||||
|
memset(*outfile+(strlen(*infile) - 4), 0, 4);
|
||||||
|
options->type = DECRYPT;
|
||||||
|
}
|
||||||
|
else if ((!key) || (options->type == ENCRYPT))
|
||||||
|
{
|
||||||
|
if (memcmp(*infile+(strlen(*infile) - 4), ".bfe", 4) == 0) return -1 ;
|
||||||
|
strcat(*outfile, ".bfe");
|
||||||
|
options->type = ENCRYPT;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else if ((!key) || (options->type == ENCRYPT))
|
||||||
|
{
|
||||||
|
strcat(*outfile, ".bfe");
|
||||||
|
options->type = ENCRYPT;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
int docrypt(char encrypt,char* filename, char* TheKey, char delOrig)
|
||||||
|
{
|
||||||
|
uLong sz = 0;
|
||||||
|
char *input = NULL, *key = NULL, *key2 = NULL;
|
||||||
|
char *infile = NULL, *outfile = NULL;
|
||||||
|
struct stat statbuf;
|
||||||
|
BCoptions options;
|
||||||
|
parseArgs(delOrig, &options);
|
||||||
|
if (assignFiles(filename, &infile, &outfile, &statbuf, &options, key) != 0)
|
||||||
|
{
|
||||||
|
return -1; // file open error
|
||||||
|
}
|
||||||
|
if (!key)
|
||||||
|
{
|
||||||
|
key = getkey(options.type,TheKey);
|
||||||
|
mutateKey(&key, &key2);
|
||||||
|
}
|
||||||
|
if (!key)
|
||||||
|
{
|
||||||
|
return -2; // missing key error
|
||||||
|
}
|
||||||
|
sz = readfile(infile, &input, options.type, key, statbuf);
|
||||||
|
if ((options.type == DECRYPT) && (testEndian(input))) swapCompressed(&input, sz);
|
||||||
|
if ((options.compression == 1) && (options.type == ENCRYPT))
|
||||||
|
{
|
||||||
|
options.origsize = sz;
|
||||||
|
sz = docompress(&input, sz);
|
||||||
|
}
|
||||||
|
if (options.type == ENCRYPT)
|
||||||
|
{
|
||||||
|
sz = attachKey(&input, key, sz);
|
||||||
|
sz = padInput(&input, sz);
|
||||||
|
}
|
||||||
|
if (options.type == ENCRYPT)
|
||||||
|
{
|
||||||
|
sz = BFEncrypt(&input, key, sz, &options);
|
||||||
|
}
|
||||||
|
else if (options.type == DECRYPT)
|
||||||
|
{
|
||||||
|
if ((sz = BFDecrypt(&input, key, key2, sz, &options)) == 0)
|
||||||
|
{
|
||||||
|
return -3; // wrong key error
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if ((options.compression == 1) && (options.type == DECRYPT))
|
||||||
|
{
|
||||||
|
sz = douncompress(&input, sz, options);
|
||||||
|
}
|
||||||
|
writefile(outfile, input, sz, options, statbuf);
|
||||||
|
if ((input = realloc(input, sizeof(char *))) == NULL)
|
||||||
|
{
|
||||||
|
return -4; // memory error
|
||||||
|
}
|
||||||
|
if (options.remove == 1) deletefile(infile, options, key, statbuf);
|
||||||
|
if (input != NULL) free(input);
|
||||||
|
if (!sz)
|
||||||
|
{
|
||||||
|
return -5; // no valid files found
|
||||||
|
}
|
||||||
|
return 0; // success.
|
||||||
|
}
|
||||||
|
|
||||||
|
// Encrypts a file.
|
||||||
|
int bcrypt(char* filename,char* key,char delOrig)
|
||||||
|
{
|
||||||
|
int MyReturn = docrypt(1,filename,key,delOrig);
|
||||||
|
return MyReturn;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Decrypts a file.
|
||||||
|
int bdecrypt(char* filename,char* key,char delOrig)
|
||||||
|
{
|
||||||
|
int MyReturn = docrypt(0,filename,key,delOrig);
|
||||||
|
return MyReturn;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,399 @@
|
||||||
|
/*
|
||||||
|
* Author : Paul Kocher
|
||||||
|
* E-mail : pck@netcom.com
|
||||||
|
* Date : 1997
|
||||||
|
* Description: C implementation of the Blowfish algorithm.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include "includes.h"
|
||||||
|
#include "defines.h"
|
||||||
|
#include "blowfish.h"
|
||||||
|
#define N 16
|
||||||
|
|
||||||
|
static uInt32 F(BLOWFISH_CTX *ctx, uInt32 x);
|
||||||
|
static const uInt32 ORIG_P[16 + 2] = {
|
||||||
|
0x243F6A88L, 0x85A308D3L, 0x13198A2EL, 0x03707344L,
|
||||||
|
0xA4093822L, 0x299F31D0L, 0x082EFA98L, 0xEC4E6C89L,
|
||||||
|
0x452821E6L, 0x38D01377L, 0xBE5466CFL, 0x34E90C6CL,
|
||||||
|
0xC0AC29B7L, 0xC97C50DDL, 0x3F84D5B5L, 0xB5470917L,
|
||||||
|
0x9216D5D9L, 0x8979FB1BL
|
||||||
|
};
|
||||||
|
|
||||||
|
static const uInt32 ORIG_S[4][256] = {
|
||||||
|
{ 0xD1310BA6L, 0x98DFB5ACL, 0x2FFD72DBL, 0xD01ADFB7L,
|
||||||
|
0xB8E1AFEDL, 0x6A267E96L, 0xBA7C9045L, 0xF12C7F99L,
|
||||||
|
0x24A19947L, 0xB3916CF7L, 0x0801F2E2L, 0x858EFC16L,
|
||||||
|
0x636920D8L, 0x71574E69L, 0xA458FEA3L, 0xF4933D7EL,
|
||||||
|
0x0D95748FL, 0x728EB658L, 0x718BCD58L, 0x82154AEEL,
|
||||||
|
0x7B54A41DL, 0xC25A59B5L, 0x9C30D539L, 0x2AF26013L,
|
||||||
|
0xC5D1B023L, 0x286085F0L, 0xCA417918L, 0xB8DB38EFL,
|
||||||
|
0x8E79DCB0L, 0x603A180EL, 0x6C9E0E8BL, 0xB01E8A3EL,
|
||||||
|
0xD71577C1L, 0xBD314B27L, 0x78AF2FDAL, 0x55605C60L,
|
||||||
|
0xE65525F3L, 0xAA55AB94L, 0x57489862L, 0x63E81440L,
|
||||||
|
0x55CA396AL, 0x2AAB10B6L, 0xB4CC5C34L, 0x1141E8CEL,
|
||||||
|
0xA15486AFL, 0x7C72E993L, 0xB3EE1411L, 0x636FBC2AL,
|
||||||
|
0x2BA9C55DL, 0x741831F6L, 0xCE5C3E16L, 0x9B87931EL,
|
||||||
|
0xAFD6BA33L, 0x6C24CF5CL, 0x7A325381L, 0x28958677L,
|
||||||
|
0x3B8F4898L, 0x6B4BB9AFL, 0xC4BFE81BL, 0x66282193L,
|
||||||
|
0x61D809CCL, 0xFB21A991L, 0x487CAC60L, 0x5DEC8032L,
|
||||||
|
0xEF845D5DL, 0xE98575B1L, 0xDC262302L, 0xEB651B88L,
|
||||||
|
0x23893E81L, 0xD396ACC5L, 0x0F6D6FF3L, 0x83F44239L,
|
||||||
|
0x2E0B4482L, 0xA4842004L, 0x69C8F04AL, 0x9E1F9B5EL,
|
||||||
|
0x21C66842L, 0xF6E96C9AL, 0x670C9C61L, 0xABD388F0L,
|
||||||
|
0x6A51A0D2L, 0xD8542F68L, 0x960FA728L, 0xAB5133A3L,
|
||||||
|
0x6EEF0B6CL, 0x137A3BE4L, 0xBA3BF050L, 0x7EFB2A98L,
|
||||||
|
0xA1F1651DL, 0x39AF0176L, 0x66CA593EL, 0x82430E88L,
|
||||||
|
0x8CEE8619L, 0x456F9FB4L, 0x7D84A5C3L, 0x3B8B5EBEL,
|
||||||
|
0xE06F75D8L, 0x85C12073L, 0x401A449FL, 0x56C16AA6L,
|
||||||
|
0x4ED3AA62L, 0x363F7706L, 0x1BFEDF72L, 0x429B023DL,
|
||||||
|
0x37D0D724L, 0xD00A1248L, 0xDB0FEAD3L, 0x49F1C09BL,
|
||||||
|
0x075372C9L, 0x80991B7BL, 0x25D479D8L, 0xF6E8DEF7L,
|
||||||
|
0xE3FE501AL, 0xB6794C3BL, 0x976CE0BDL, 0x04C006BAL,
|
||||||
|
0xC1A94FB6L, 0x409F60C4L, 0x5E5C9EC2L, 0x196A2463L,
|
||||||
|
0x68FB6FAFL, 0x3E6C53B5L, 0x1339B2EBL, 0x3B52EC6FL,
|
||||||
|
0x6DFC511FL, 0x9B30952CL, 0xCC814544L, 0xAF5EBD09L,
|
||||||
|
0xBEE3D004L, 0xDE334AFDL, 0x660F2807L, 0x192E4BB3L,
|
||||||
|
0xC0CBA857L, 0x45C8740FL, 0xD20B5F39L, 0xB9D3FBDBL,
|
||||||
|
0x5579C0BDL, 0x1A60320AL, 0xD6A100C6L, 0x402C7279L,
|
||||||
|
0x679F25FEL, 0xFB1FA3CCL, 0x8EA5E9F8L, 0xDB3222F8L,
|
||||||
|
0x3C7516DFL, 0xFD616B15L, 0x2F501EC8L, 0xAD0552ABL,
|
||||||
|
0x323DB5FAL, 0xFD238760L, 0x53317B48L, 0x3E00DF82L,
|
||||||
|
0x9E5C57BBL, 0xCA6F8CA0L, 0x1A87562EL, 0xDF1769DBL,
|
||||||
|
0xD542A8F6L, 0x287EFFC3L, 0xAC6732C6L, 0x8C4F5573L,
|
||||||
|
0x695B27B0L, 0xBBCA58C8L, 0xE1FFA35DL, 0xB8F011A0L,
|
||||||
|
0x10FA3D98L, 0xFD2183B8L, 0x4AFCB56CL, 0x2DD1D35BL,
|
||||||
|
0x9A53E479L, 0xB6F84565L, 0xD28E49BCL, 0x4BFB9790L,
|
||||||
|
0xE1DDF2DAL, 0xA4CB7E33L, 0x62FB1341L, 0xCEE4C6E8L,
|
||||||
|
0xEF20CADAL, 0x36774C01L, 0xD07E9EFEL, 0x2BF11FB4L,
|
||||||
|
0x95DBDA4DL, 0xAE909198L, 0xEAAD8E71L, 0x6B93D5A0L,
|
||||||
|
0xD08ED1D0L, 0xAFC725E0L, 0x8E3C5B2FL, 0x8E7594B7L,
|
||||||
|
0x8FF6E2FBL, 0xF2122B64L, 0x8888B812L, 0x900DF01CL,
|
||||||
|
0x4FAD5EA0L, 0x688FC31CL, 0xD1CFF191L, 0xB3A8C1ADL,
|
||||||
|
0x2F2F2218L, 0xBE0E1777L, 0xEA752DFEL, 0x8B021FA1L,
|
||||||
|
0xE5A0CC0FL, 0xB56F74E8L, 0x18ACF3D6L, 0xCE89E299L,
|
||||||
|
0xB4A84FE0L, 0xFD13E0B7L, 0x7CC43B81L, 0xD2ADA8D9L,
|
||||||
|
0x165FA266L, 0x80957705L, 0x93CC7314L, 0x211A1477L,
|
||||||
|
0xE6AD2065L, 0x77B5FA86L, 0xC75442F5L, 0xFB9D35CFL,
|
||||||
|
0xEBCDAF0CL, 0x7B3E89A0L, 0xD6411BD3L, 0xAE1E7E49L,
|
||||||
|
0x00250E2DL, 0x2071B35EL, 0x226800BBL, 0x57B8E0AFL,
|
||||||
|
0x2464369BL, 0xF009B91EL, 0x5563911DL, 0x59DFA6AAL,
|
||||||
|
0x78C14389L, 0xD95A537FL, 0x207D5BA2L, 0x02E5B9C5L,
|
||||||
|
0x83260376L, 0x6295CFA9L, 0x11C81968L, 0x4E734A41L,
|
||||||
|
0xB3472DCAL, 0x7B14A94AL, 0x1B510052L, 0x9A532915L,
|
||||||
|
0xD60F573FL, 0xBC9BC6E4L, 0x2B60A476L, 0x81E67400L,
|
||||||
|
0x08BA6FB5L, 0x571BE91FL, 0xF296EC6BL, 0x2A0DD915L,
|
||||||
|
0xB6636521L, 0xE7B9F9B6L, 0xFF34052EL, 0xC5855664L,
|
||||||
|
0x53B02D5DL, 0xA99F8FA1L, 0x08BA4799L, 0x6E85076AL },
|
||||||
|
|
||||||
|
{ 0x4B7A70E9L, 0xB5B32944L, 0xDB75092EL, 0xC4192623L,
|
||||||
|
0xAD6EA6B0L, 0x49A7DF7DL, 0x9CEE60B8L, 0x8FEDB266L,
|
||||||
|
0xECAA8C71L, 0x699A17FFL, 0x5664526CL, 0xC2B19EE1L,
|
||||||
|
0x193602A5L, 0x75094C29L, 0xA0591340L, 0xE4183A3EL,
|
||||||
|
0x3F54989AL, 0x5B429D65L, 0x6B8FE4D6L, 0x99F73FD6L,
|
||||||
|
0xA1D29C07L, 0xEFE830F5L, 0x4D2D38E6L, 0xF0255DC1L,
|
||||||
|
0x4CDD2086L, 0x8470EB26L, 0x6382E9C6L, 0x021ECC5EL,
|
||||||
|
0x09686B3FL, 0x3EBAEFC9L, 0x3C971814L, 0x6B6A70A1L,
|
||||||
|
0x687F3584L, 0x52A0E286L, 0xB79C5305L, 0xAA500737L,
|
||||||
|
0x3E07841CL, 0x7FDEAE5CL, 0x8E7D44ECL, 0x5716F2B8L,
|
||||||
|
0xB03ADA37L, 0xF0500C0DL, 0xF01C1F04L, 0x0200B3FFL,
|
||||||
|
0xAE0CF51AL, 0x3CB574B2L, 0x25837A58L, 0xDC0921BDL,
|
||||||
|
0xD19113F9L, 0x7CA92FF6L, 0x94324773L, 0x22F54701L,
|
||||||
|
0x3AE5E581L, 0x37C2DADCL, 0xC8B57634L, 0x9AF3DDA7L,
|
||||||
|
0xA9446146L, 0x0FD0030EL, 0xECC8C73EL, 0xA4751E41L,
|
||||||
|
0xE238CD99L, 0x3BEA0E2FL, 0x3280BBA1L, 0x183EB331L,
|
||||||
|
0x4E548B38L, 0x4F6DB908L, 0x6F420D03L, 0xF60A04BFL,
|
||||||
|
0x2CB81290L, 0x24977C79L, 0x5679B072L, 0xBCAF89AFL,
|
||||||
|
0xDE9A771FL, 0xD9930810L, 0xB38BAE12L, 0xDCCF3F2EL,
|
||||||
|
0x5512721FL, 0x2E6B7124L, 0x501ADDE6L, 0x9F84CD87L,
|
||||||
|
0x7A584718L, 0x7408DA17L, 0xBC9F9ABCL, 0xE94B7D8CL,
|
||||||
|
0xEC7AEC3AL, 0xDB851DFAL, 0x63094366L, 0xC464C3D2L,
|
||||||
|
0xEF1C1847L, 0x3215D908L, 0xDD433B37L, 0x24C2BA16L,
|
||||||
|
0x12A14D43L, 0x2A65C451L, 0x50940002L, 0x133AE4DDL,
|
||||||
|
0x71DFF89EL, 0x10314E55L, 0x81AC77D6L, 0x5F11199BL,
|
||||||
|
0x043556F1L, 0xD7A3C76BL, 0x3C11183BL, 0x5924A509L,
|
||||||
|
0xF28FE6EDL, 0x97F1FBFAL, 0x9EBABF2CL, 0x1E153C6EL,
|
||||||
|
0x86E34570L, 0xEAE96FB1L, 0x860E5E0AL, 0x5A3E2AB3L,
|
||||||
|
0x771FE71CL, 0x4E3D06FAL, 0x2965DCB9L, 0x99E71D0FL,
|
||||||
|
0x803E89D6L, 0x5266C825L, 0x2E4CC978L, 0x9C10B36AL,
|
||||||
|
0xC6150EBAL, 0x94E2EA78L, 0xA5FC3C53L, 0x1E0A2DF4L,
|
||||||
|
0xF2F74EA7L, 0x361D2B3DL, 0x1939260FL, 0x19C27960L,
|
||||||
|
0x5223A708L, 0xF71312B6L, 0xEBADFE6EL, 0xEAC31F66L,
|
||||||
|
0xE3BC4595L, 0xA67BC883L, 0xB17F37D1L, 0x018CFF28L,
|
||||||
|
0xC332DDEFL, 0xBE6C5AA5L, 0x65582185L, 0x68AB9802L,
|
||||||
|
0xEECEA50FL, 0xDB2F953BL, 0x2AEF7DADL, 0x5B6E2F84L,
|
||||||
|
0x1521B628L, 0x29076170L, 0xECDD4775L, 0x619F1510L,
|
||||||
|
0x13CCA830L, 0xEB61BD96L, 0x0334FE1EL, 0xAA0363CFL,
|
||||||
|
0xB5735C90L, 0x4C70A239L, 0xD59E9E0BL, 0xCBAADE14L,
|
||||||
|
0xEECC86BCL, 0x60622CA7L, 0x9CAB5CABL, 0xB2F3846EL,
|
||||||
|
0x648B1EAFL, 0x19BDF0CAL, 0xA02369B9L, 0x655ABB50L,
|
||||||
|
0x40685A32L, 0x3C2AB4B3L, 0x319EE9D5L, 0xC021B8F7L,
|
||||||
|
0x9B540B19L, 0x875FA099L, 0x95F7997EL, 0x623D7DA8L,
|
||||||
|
0xF837889AL, 0x97E32D77L, 0x11ED935FL, 0x16681281L,
|
||||||
|
0x0E358829L, 0xC7E61FD6L, 0x96DEDFA1L, 0x7858BA99L,
|
||||||
|
0x57F584A5L, 0x1B227263L, 0x9B83C3FFL, 0x1AC24696L,
|
||||||
|
0xCDB30AEBL, 0x532E3054L, 0x8FD948E4L, 0x6DBC3128L,
|
||||||
|
0x58EBF2EFL, 0x34C6FFEAL, 0xFE28ED61L, 0xEE7C3C73L,
|
||||||
|
0x5D4A14D9L, 0xE864B7E3L, 0x42105D14L, 0x203E13E0L,
|
||||||
|
0x45EEE2B6L, 0xA3AAABEAL, 0xDB6C4F15L, 0xFACB4FD0L,
|
||||||
|
0xC742F442L, 0xEF6ABBB5L, 0x654F3B1DL, 0x41CD2105L,
|
||||||
|
0xD81E799EL, 0x86854DC7L, 0xE44B476AL, 0x3D816250L,
|
||||||
|
0xCF62A1F2L, 0x5B8D2646L, 0xFC8883A0L, 0xC1C7B6A3L,
|
||||||
|
0x7F1524C3L, 0x69CB7492L, 0x47848A0BL, 0x5692B285L,
|
||||||
|
0x095BBF00L, 0xAD19489DL, 0x1462B174L, 0x23820E00L,
|
||||||
|
0x58428D2AL, 0x0C55F5EAL, 0x1DADF43EL, 0x233F7061L,
|
||||||
|
0x3372F092L, 0x8D937E41L, 0xD65FECF1L, 0x6C223BDBL,
|
||||||
|
0x7CDE3759L, 0xCBEE7460L, 0x4085F2A7L, 0xCE77326EL,
|
||||||
|
0xA6078084L, 0x19F8509EL, 0xE8EFD855L, 0x61D99735L,
|
||||||
|
0xA969A7AAL, 0xC50C06C2L, 0x5A04ABFCL, 0x800BCADCL,
|
||||||
|
0x9E447A2EL, 0xC3453484L, 0xFDD56705L, 0x0E1E9EC9L,
|
||||||
|
0xDB73DBD3L, 0x105588CDL, 0x675FDA79L, 0xE3674340L,
|
||||||
|
0xC5C43465L, 0x713E38D8L, 0x3D28F89EL, 0xF16DFF20L,
|
||||||
|
0x153E21E7L, 0x8FB03D4AL, 0xE6E39F2BL, 0xDB83ADF7L },
|
||||||
|
|
||||||
|
{ 0xE93D5A68L, 0x948140F7L, 0xF64C261CL, 0x94692934L,
|
||||||
|
0x411520F7L, 0x7602D4F7L, 0xBCF46B2EL, 0xD4A20068L,
|
||||||
|
0xD4082471L, 0x3320F46AL, 0x43B7D4B7L, 0x500061AFL,
|
||||||
|
0x1E39F62EL, 0x97244546L, 0x14214F74L, 0xBF8B8840L,
|
||||||
|
0x4D95FC1DL, 0x96B591AFL, 0x70F4DDD3L, 0x66A02F45L,
|
||||||
|
0xBFBC09ECL, 0x03BD9785L, 0x7FAC6DD0L, 0x31CB8504L,
|
||||||
|
0x96EB27B3L, 0x55FD3941L, 0xDA2547E6L, 0xABCA0A9AL,
|
||||||
|
0x28507825L, 0x530429F4L, 0x0A2C86DAL, 0xE9B66DFBL,
|
||||||
|
0x68DC1462L, 0xD7486900L, 0x680EC0A4L, 0x27A18DEEL,
|
||||||
|
0x4F3FFEA2L, 0xE887AD8CL, 0xB58CE006L, 0x7AF4D6B6L,
|
||||||
|
0xAACE1E7CL, 0xD3375FECL, 0xCE78A399L, 0x406B2A42L,
|
||||||
|
0x20FE9E35L, 0xD9F385B9L, 0xEE39D7ABL, 0x3B124E8BL,
|
||||||
|
0x1DC9FAF7L, 0x4B6D1856L, 0x26A36631L, 0xEAE397B2L,
|
||||||
|
0x3A6EFA74L, 0xDD5B4332L, 0x6841E7F7L, 0xCA7820FBL,
|
||||||
|
0xFB0AF54EL, 0xD8FEB397L, 0x454056ACL, 0xBA489527L,
|
||||||
|
0x55533A3AL, 0x20838D87L, 0xFE6BA9B7L, 0xD096954BL,
|
||||||
|
0x55A867BCL, 0xA1159A58L, 0xCCA92963L, 0x99E1DB33L,
|
||||||
|
0xA62A4A56L, 0x3F3125F9L, 0x5EF47E1CL, 0x9029317CL,
|
||||||
|
0xFDF8E802L, 0x04272F70L, 0x80BB155CL, 0x05282CE3L,
|
||||||
|
0x95C11548L, 0xE4C66D22L, 0x48C1133FL, 0xC70F86DCL,
|
||||||
|
0x07F9C9EEL, 0x41041F0FL, 0x404779A4L, 0x5D886E17L,
|
||||||
|
0x325F51EBL, 0xD59BC0D1L, 0xF2BCC18FL, 0x41113564L,
|
||||||
|
0x257B7834L, 0x602A9C60L, 0xDFF8E8A3L, 0x1F636C1BL,
|
||||||
|
0x0E12B4C2L, 0x02E1329EL, 0xAF664FD1L, 0xCAD18115L,
|
||||||
|
0x6B2395E0L, 0x333E92E1L, 0x3B240B62L, 0xEEBEB922L,
|
||||||
|
0x85B2A20EL, 0xE6BA0D99L, 0xDE720C8CL, 0x2DA2F728L,
|
||||||
|
0xD0127845L, 0x95B794FDL, 0x647D0862L, 0xE7CCF5F0L,
|
||||||
|
0x5449A36FL, 0x877D48FAL, 0xC39DFD27L, 0xF33E8D1EL,
|
||||||
|
0x0A476341L, 0x992EFF74L, 0x3A6F6EABL, 0xF4F8FD37L,
|
||||||
|
0xA812DC60L, 0xA1EBDDF8L, 0x991BE14CL, 0xDB6E6B0DL,
|
||||||
|
0xC67B5510L, 0x6D672C37L, 0x2765D43BL, 0xDCD0E804L,
|
||||||
|
0xF1290DC7L, 0xCC00FFA3L, 0xB5390F92L, 0x690FED0BL,
|
||||||
|
0x667B9FFBL, 0xCEDB7D9CL, 0xA091CF0BL, 0xD9155EA3L,
|
||||||
|
0xBB132F88L, 0x515BAD24L, 0x7B9479BFL, 0x763BD6EBL,
|
||||||
|
0x37392EB3L, 0xCC115979L, 0x8026E297L, 0xF42E312DL,
|
||||||
|
0x6842ADA7L, 0xC66A2B3BL, 0x12754CCCL, 0x782EF11CL,
|
||||||
|
0x6A124237L, 0xB79251E7L, 0x06A1BBE6L, 0x4BFB6350L,
|
||||||
|
0x1A6B1018L, 0x11CAEDFAL, 0x3D25BDD8L, 0xE2E1C3C9L,
|
||||||
|
0x44421659L, 0x0A121386L, 0xD90CEC6EL, 0xD5ABEA2AL,
|
||||||
|
0x64AF674EL, 0xDA86A85FL, 0xBEBFE988L, 0x64E4C3FEL,
|
||||||
|
0x9DBC8057L, 0xF0F7C086L, 0x60787BF8L, 0x6003604DL,
|
||||||
|
0xD1FD8346L, 0xF6381FB0L, 0x7745AE04L, 0xD736FCCCL,
|
||||||
|
0x83426B33L, 0xF01EAB71L, 0xB0804187L, 0x3C005E5FL,
|
||||||
|
0x77A057BEL, 0xBDE8AE24L, 0x55464299L, 0xBF582E61L,
|
||||||
|
0x4E58F48FL, 0xF2DDFDA2L, 0xF474EF38L, 0x8789BDC2L,
|
||||||
|
0x5366F9C3L, 0xC8B38E74L, 0xB475F255L, 0x46FCD9B9L,
|
||||||
|
0x7AEB2661L, 0x8B1DDF84L, 0x846A0E79L, 0x915F95E2L,
|
||||||
|
0x466E598EL, 0x20B45770L, 0x8CD55591L, 0xC902DE4CL,
|
||||||
|
0xB90BACE1L, 0xBB8205D0L, 0x11A86248L, 0x7574A99EL,
|
||||||
|
0xB77F19B6L, 0xE0A9DC09L, 0x662D09A1L, 0xC4324633L,
|
||||||
|
0xE85A1F02L, 0x09F0BE8CL, 0x4A99A025L, 0x1D6EFE10L,
|
||||||
|
0x1AB93D1DL, 0x0BA5A4DFL, 0xA186F20FL, 0x2868F169L,
|
||||||
|
0xDCB7DA83L, 0x573906FEL, 0xA1E2CE9BL, 0x4FCD7F52L,
|
||||||
|
0x50115E01L, 0xA70683FAL, 0xA002B5C4L, 0x0DE6D027L,
|
||||||
|
0x9AF88C27L, 0x773F8641L, 0xC3604C06L, 0x61A806B5L,
|
||||||
|
0xF0177A28L, 0xC0F586E0L, 0x006058AAL, 0x30DC7D62L,
|
||||||
|
0x11E69ED7L, 0x2338EA63L, 0x53C2DD94L, 0xC2C21634L,
|
||||||
|
0xBBCBEE56L, 0x90BCB6DEL, 0xEBFC7DA1L, 0xCE591D76L,
|
||||||
|
0x6F05E409L, 0x4B7C0188L, 0x39720A3DL, 0x7C927C24L,
|
||||||
|
0x86E3725FL, 0x724D9DB9L, 0x1AC15BB4L, 0xD39EB8FCL,
|
||||||
|
0xED545578L, 0x08FCA5B5L, 0xD83D7CD3L, 0x4DAD0FC4L,
|
||||||
|
0x1E50EF5EL, 0xB161E6F8L, 0xA28514D9L, 0x6C51133CL,
|
||||||
|
0x6FD5C7E7L, 0x56E14EC4L, 0x362ABFCEL, 0xDDC6C837L,
|
||||||
|
0xD79A3234L, 0x92638212L, 0x670EFA8EL, 0x406000E0L },
|
||||||
|
|
||||||
|
{ 0x3A39CE37L, 0xD3FAF5CFL, 0xABC27737L, 0x5AC52D1BL,
|
||||||
|
0x5CB0679EL, 0x4FA33742L, 0xD3822740L, 0x99BC9BBEL,
|
||||||
|
0xD5118E9DL, 0xBF0F7315L, 0xD62D1C7EL, 0xC700C47BL,
|
||||||
|
0xB78C1B6BL, 0x21A19045L, 0xB26EB1BEL, 0x6A366EB4L,
|
||||||
|
0x5748AB2FL, 0xBC946E79L, 0xC6A376D2L, 0x6549C2C8L,
|
||||||
|
0x530FF8EEL, 0x468DDE7DL, 0xD5730A1DL, 0x4CD04DC6L,
|
||||||
|
0x2939BBDBL, 0xA9BA4650L, 0xAC9526E8L, 0xBE5EE304L,
|
||||||
|
0xA1FAD5F0L, 0x6A2D519AL, 0x63EF8CE2L, 0x9A86EE22L,
|
||||||
|
0xC089C2B8L, 0x43242EF6L, 0xA51E03AAL, 0x9CF2D0A4L,
|
||||||
|
0x83C061BAL, 0x9BE96A4DL, 0x8FE51550L, 0xBA645BD6L,
|
||||||
|
0x2826A2F9L, 0xA73A3AE1L, 0x4BA99586L, 0xEF5562E9L,
|
||||||
|
0xC72FEFD3L, 0xF752F7DAL, 0x3F046F69L, 0x77FA0A59L,
|
||||||
|
0x80E4A915L, 0x87B08601L, 0x9B09E6ADL, 0x3B3EE593L,
|
||||||
|
0xE990FD5AL, 0x9E34D797L, 0x2CF0B7D9L, 0x022B8B51L,
|
||||||
|
0x96D5AC3AL, 0x017DA67DL, 0xD1CF3ED6L, 0x7C7D2D28L,
|
||||||
|
0x1F9F25CFL, 0xADF2B89BL, 0x5AD6B472L, 0x5A88F54CL,
|
||||||
|
0xE029AC71L, 0xE019A5E6L, 0x47B0ACFDL, 0xED93FA9BL,
|
||||||
|
0xE8D3C48DL, 0x283B57CCL, 0xF8D56629L, 0x79132E28L,
|
||||||
|
0x785F0191L, 0xED756055L, 0xF7960E44L, 0xE3D35E8CL,
|
||||||
|
0x15056DD4L, 0x88F46DBAL, 0x03A16125L, 0x0564F0BDL,
|
||||||
|
0xC3EB9E15L, 0x3C9057A2L, 0x97271AECL, 0xA93A072AL,
|
||||||
|
0x1B3F6D9BL, 0x1E6321F5L, 0xF59C66FBL, 0x26DCF319L,
|
||||||
|
0x7533D928L, 0xB155FDF5L, 0x03563482L, 0x8ABA3CBBL,
|
||||||
|
0x28517711L, 0xC20AD9F8L, 0xABCC5167L, 0xCCAD925FL,
|
||||||
|
0x4DE81751L, 0x3830DC8EL, 0x379D5862L, 0x9320F991L,
|
||||||
|
0xEA7A90C2L, 0xFB3E7BCEL, 0x5121CE64L, 0x774FBE32L,
|
||||||
|
0xA8B6E37EL, 0xC3293D46L, 0x48DE5369L, 0x6413E680L,
|
||||||
|
0xA2AE0810L, 0xDD6DB224L, 0x69852DFDL, 0x09072166L,
|
||||||
|
0xB39A460AL, 0x6445C0DDL, 0x586CDECFL, 0x1C20C8AEL,
|
||||||
|
0x5BBEF7DDL, 0x1B588D40L, 0xCCD2017FL, 0x6BB4E3BBL,
|
||||||
|
0xDDA26A7EL, 0x3A59FF45L, 0x3E350A44L, 0xBCB4CDD5L,
|
||||||
|
0x72EACEA8L, 0xFA6484BBL, 0x8D6612AEL, 0xBF3C6F47L,
|
||||||
|
0xD29BE463L, 0x542F5D9EL, 0xAEC2771BL, 0xF64E6370L,
|
||||||
|
0x740E0D8DL, 0xE75B1357L, 0xF8721671L, 0xAF537D5DL,
|
||||||
|
0x4040CB08L, 0x4EB4E2CCL, 0x34D2466AL, 0x0115AF84L,
|
||||||
|
0xE1B00428L, 0x95983A1DL, 0x06B89FB4L, 0xCE6EA048L,
|
||||||
|
0x6F3F3B82L, 0x3520AB82L, 0x011A1D4BL, 0x277227F8L,
|
||||||
|
0x611560B1L, 0xE7933FDCL, 0xBB3A792BL, 0x344525BDL,
|
||||||
|
0xA08839E1L, 0x51CE794BL, 0x2F32C9B7L, 0xA01FBAC9L,
|
||||||
|
0xE01CC87EL, 0xBCC7D1F6L, 0xCF0111C3L, 0xA1E8AAC7L,
|
||||||
|
0x1A908749L, 0xD44FBD9AL, 0xD0DADECBL, 0xD50ADA38L,
|
||||||
|
0x0339C32AL, 0xC6913667L, 0x8DF9317CL, 0xE0B12B4FL,
|
||||||
|
0xF79E59B7L, 0x43F5BB3AL, 0xF2D519FFL, 0x27D9459CL,
|
||||||
|
0xBF97222CL, 0x15E6FC2AL, 0x0F91FC71L, 0x9B941525L,
|
||||||
|
0xFAE59361L, 0xCEB69CEBL, 0xC2A86459L, 0x12BAA8D1L,
|
||||||
|
0xB6C1075EL, 0xE3056A0CL, 0x10D25065L, 0xCB03A442L,
|
||||||
|
0xE0EC6E0EL, 0x1698DB3BL, 0x4C98A0BEL, 0x3278E964L,
|
||||||
|
0x9F1F9532L, 0xE0D392DFL, 0xD3A0342BL, 0x8971F21EL,
|
||||||
|
0x1B0A7441L, 0x4BA3348CL, 0xC5BE7120L, 0xC37632D8L,
|
||||||
|
0xDF359F8DL, 0x9B992F2EL, 0xE60B6F47L, 0x0FE3F11DL,
|
||||||
|
0xE54CDA54L, 0x1EDAD891L, 0xCE6279CFL, 0xCD3E7E6FL,
|
||||||
|
0x1618B166L, 0xFD2C1D05L, 0x848FD2C5L, 0xF6FB2299L,
|
||||||
|
0xF523F357L, 0xA6327623L, 0x93A83531L, 0x56CCCD02L,
|
||||||
|
0xACF08162L, 0x5A75EBB5L, 0x6E163697L, 0x88D273CCL,
|
||||||
|
0xDE966292L, 0x81B949D0L, 0x4C50901BL, 0x71C65614L,
|
||||||
|
0xE6C6C7BDL, 0x327A140AL, 0x45E1D006L, 0xC3F27B9AL,
|
||||||
|
0xC9AA53FDL, 0x62A80F00L, 0xBB25BFE2L, 0x35BDD2F6L,
|
||||||
|
0x71126905L, 0xB2040222L, 0xB6CBCF7CL, 0xCD769C2BL,
|
||||||
|
0x53113EC0L, 0x1640E3D3L, 0x38ABBD60L, 0x2547ADF0L,
|
||||||
|
0xBA38209CL, 0xF746CE76L, 0x77AFA1C5L, 0x20756060L,
|
||||||
|
0x85CBFE4EL, 0x8AE88DD8L, 0x7AAAF9B0L, 0x4CF9AA7EL,
|
||||||
|
0x1948C25CL, 0x02FB8A8CL, 0x01C36AE4L, 0xD6EBE1F9L,
|
||||||
|
0x90D4F869L, 0xA65CDEA0L, 0x3F09252DL, 0xC208E69FL,
|
||||||
|
0xB74E6132L, 0xCE77E25BL, 0x578FDFE3L, 0x3AC372E6L }
|
||||||
|
};
|
||||||
|
uInt32 F(BLOWFISH_CTX *ctx, uInt32 x) {
|
||||||
|
unsigned short a, b, c, d;
|
||||||
|
uInt32 y;
|
||||||
|
|
||||||
|
d = x & 0x00FF;
|
||||||
|
x >>= 8;
|
||||||
|
c = x & 0x00FF;
|
||||||
|
x >>= 8;
|
||||||
|
b = x & 0x00FF;
|
||||||
|
x >>= 8;
|
||||||
|
a = x & 0x00FF;
|
||||||
|
|
||||||
|
y = ctx->S[0][a] + ctx->S[1][b];
|
||||||
|
y = y ^ ctx->S[2][c];
|
||||||
|
y = y + ctx->S[3][d];
|
||||||
|
return y;
|
||||||
|
}
|
||||||
|
|
||||||
|
void Blowfish_Encrypt(BLOWFISH_CTX *ctx, uInt32 *xl, uInt32
|
||||||
|
*xr) {
|
||||||
|
uInt32 Xl;
|
||||||
|
uInt32 Xr;
|
||||||
|
uInt32 temp;
|
||||||
|
short i;
|
||||||
|
|
||||||
|
Xl = *xl;
|
||||||
|
Xr = *xr;
|
||||||
|
|
||||||
|
for (i = 0; i < N; ++i) {
|
||||||
|
Xl = Xl ^ ctx->P[i];
|
||||||
|
Xr = F(ctx, Xl) ^ Xr;
|
||||||
|
temp = Xl;
|
||||||
|
Xl = Xr;
|
||||||
|
Xr = temp;
|
||||||
|
}
|
||||||
|
|
||||||
|
temp = Xl;
|
||||||
|
Xl = Xr;
|
||||||
|
Xr = temp;
|
||||||
|
Xr = Xr ^ ctx->P[N];
|
||||||
|
Xl = Xl ^ ctx->P[N + 1];
|
||||||
|
*xl = Xl;
|
||||||
|
*xr = Xr;
|
||||||
|
}
|
||||||
|
|
||||||
|
void Blowfish_Decrypt(BLOWFISH_CTX *ctx, uInt32 *xl, uInt32
|
||||||
|
*xr) {
|
||||||
|
uInt32 Xl;
|
||||||
|
uInt32 Xr;
|
||||||
|
uInt32 temp;
|
||||||
|
short i;
|
||||||
|
|
||||||
|
Xl = *xl;
|
||||||
|
Xr = *xr;
|
||||||
|
|
||||||
|
for (i = N + 1; i > 1; --i) {
|
||||||
|
Xl = Xl ^ ctx->P[i];
|
||||||
|
Xr = F(ctx, Xl) ^ Xr;
|
||||||
|
/* Exchange Xl and Xr */
|
||||||
|
temp = Xl;
|
||||||
|
Xl = Xr;
|
||||||
|
Xr = temp;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Exchange Xl and Xr */
|
||||||
|
temp = Xl;
|
||||||
|
Xl = Xr;
|
||||||
|
Xr = temp;
|
||||||
|
Xr = Xr ^ ctx->P[1];
|
||||||
|
Xl = Xl ^ ctx->P[0];
|
||||||
|
*xl = Xl;
|
||||||
|
*xr = Xr;
|
||||||
|
}
|
||||||
|
|
||||||
|
void Blowfish_Init(BLOWFISH_CTX *ctx, unsigned char *key, int keyLen) {
|
||||||
|
int i, j, k;
|
||||||
|
uInt32 data, datal, datar;
|
||||||
|
|
||||||
|
for (i = 0; i < 4; i++) {
|
||||||
|
|
||||||
|
for (j = 0; j < 256; j++)
|
||||||
|
ctx->S[i][j] = ORIG_S[i][j];
|
||||||
|
}
|
||||||
|
|
||||||
|
j = 0;
|
||||||
|
|
||||||
|
for (i = 0; i < N + 2; ++i) {
|
||||||
|
data = 0x00000000;
|
||||||
|
|
||||||
|
for (k = 0; k < 4; ++k) {
|
||||||
|
data = (data << 8) | key[j];
|
||||||
|
j = j + 1;
|
||||||
|
if (j >= keyLen)
|
||||||
|
j = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
ctx->P[i] = ORIG_P[i] ^ data;
|
||||||
|
}
|
||||||
|
|
||||||
|
datal = 0x00000000;
|
||||||
|
datar = 0x00000000;
|
||||||
|
|
||||||
|
for (i = 0; i < N + 2; i += 2) {
|
||||||
|
Blowfish_Encrypt(ctx, &datal, &datar);
|
||||||
|
ctx->P[i] = datal;
|
||||||
|
ctx->P[i + 1] = datar;
|
||||||
|
}
|
||||||
|
|
||||||
|
for (i = 0; i < 4; ++i) {
|
||||||
|
|
||||||
|
for (j = 0; j < 256; j += 2) {
|
||||||
|
Blowfish_Encrypt(ctx, &datal, &datar);
|
||||||
|
ctx->S[i][j] = datal;
|
||||||
|
ctx->S[i][j + 1] = datar;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,74 @@
|
||||||
|
/* ====================================================================
|
||||||
|
* Copyright (c) 2002 Johnny Shelley. All rights reserved.
|
||||||
|
*
|
||||||
|
* Bcrypt is licensed under the BSD software license. See the file
|
||||||
|
* called 'LICENSE' that you should have received with this software
|
||||||
|
* for details
|
||||||
|
* ====================================================================
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include "includes.h"
|
||||||
|
#include "defines.h"
|
||||||
|
#include "functions.h"
|
||||||
|
|
||||||
|
void getEndian(unsigned char **e) {
|
||||||
|
short i = 0x4321;
|
||||||
|
int bigE = (*(char*) &i);
|
||||||
|
|
||||||
|
if ((*e = realloc(*e, sizeof(char) + 1)) == NULL)
|
||||||
|
memerror();
|
||||||
|
|
||||||
|
memset(*e, 0, sizeof(char) + 1);
|
||||||
|
|
||||||
|
if (bigE == 0x43)
|
||||||
|
memset(*e, endianBig, 1);
|
||||||
|
else if (bigE == 0x21)
|
||||||
|
memset(*e, endianLittle, 1);
|
||||||
|
}
|
||||||
|
|
||||||
|
uInt32 swapEndian(uInt32 value) {
|
||||||
|
unsigned int b1, b2, b3, b4;
|
||||||
|
uInt32 swapped;
|
||||||
|
|
||||||
|
b4 = (value>>24) & 0xff;
|
||||||
|
b3 = (value>>16) & 0xff;
|
||||||
|
b2 = (value>>8) & 0xff;
|
||||||
|
b1 = value & 0xff;
|
||||||
|
|
||||||
|
swapped = (b1<<24) | (b2<<16) | (b3<<8) | b4;
|
||||||
|
return(swapped);
|
||||||
|
}
|
||||||
|
|
||||||
|
int testEndian(char *input) {
|
||||||
|
unsigned char *myEndian = NULL, *yourEndian = NULL;
|
||||||
|
|
||||||
|
getEndian(&myEndian);
|
||||||
|
if ((yourEndian = malloc(2)) == NULL)
|
||||||
|
memerror();
|
||||||
|
|
||||||
|
memset(yourEndian, 0, 2);
|
||||||
|
memcpy(yourEndian, input, 1);
|
||||||
|
|
||||||
|
if (memcmp(myEndian, yourEndian, 1) == 0)
|
||||||
|
return(0);
|
||||||
|
|
||||||
|
return(1);
|
||||||
|
}
|
||||||
|
|
||||||
|
int swapCompressed(char **input, uLong sz) {
|
||||||
|
char c;
|
||||||
|
unsigned int j, swap;
|
||||||
|
|
||||||
|
memcpy(&c, *input+1, 1);
|
||||||
|
|
||||||
|
if (c == 0)
|
||||||
|
return(0);
|
||||||
|
|
||||||
|
j = sizeof(uInt32);
|
||||||
|
|
||||||
|
memcpy(&swap, *input+(sz - j), j);
|
||||||
|
swap = swapEndian(swap);
|
||||||
|
memcpy(*input+(sz - j), &swap, j);
|
||||||
|
|
||||||
|
return(1);
|
||||||
|
}
|
|
@ -0,0 +1,94 @@
|
||||||
|
/* ====================================================================
|
||||||
|
* Copyright (c) 2002 Johnny Shelley. All rights reserved.
|
||||||
|
*
|
||||||
|
* Bcrypt is licensed under the BSD software license. See the file
|
||||||
|
* called 'LICENSE' that you should have received with this software
|
||||||
|
* for details
|
||||||
|
* ====================================================================
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include "includes.h"
|
||||||
|
#include "defines.h"
|
||||||
|
#include "functions.h"
|
||||||
|
|
||||||
|
char * getkey(int type,char* TheKey)
|
||||||
|
{
|
||||||
|
char *key, *key2, overflow[2], *ch;
|
||||||
|
if ((key = malloc(MAXKEYBYTES + 2)) == NULL) memerror();
|
||||||
|
memset(key, 0, MAXKEYBYTES + 2);
|
||||||
|
strcpy(key,TheKey);
|
||||||
|
/* blowfish requires 32 bits, I want 64. deal w/ it */
|
||||||
|
if (strlen(key) < 9 && type == ENCRYPT)
|
||||||
|
{ /* \n is still tacked on */
|
||||||
|
fprintf(stderr, "Key must be at least 8 characters\n");
|
||||||
|
memset(key, 0, MAXKEYBYTES + 2);
|
||||||
|
return "";
|
||||||
|
}
|
||||||
|
if (type == ENCRYPT)
|
||||||
|
{
|
||||||
|
if ((key2 = malloc(MAXKEYBYTES + 2)) == NULL) memerror();
|
||||||
|
memset(key2, 0, MAXKEYBYTES + 2);
|
||||||
|
strcpy(key2,TheKey);
|
||||||
|
if (strcmp(key, key2))
|
||||||
|
{
|
||||||
|
fprintf(stderr, "\nKeys don't match!\n");
|
||||||
|
return "";
|
||||||
|
}
|
||||||
|
memset(key2, 0, strlen(key2));
|
||||||
|
free(key2);
|
||||||
|
}
|
||||||
|
if ((ch = memchr(key, (char) 10, strlen(key))) != NULL) memset(ch, 0, 1);
|
||||||
|
return(key);
|
||||||
|
}
|
||||||
|
|
||||||
|
void mutateKey(char **key, char **key2) {
|
||||||
|
uInt32 L, R, l, r;
|
||||||
|
BLOWFISH_CTX ctx;
|
||||||
|
char *newkey, *newkey2;
|
||||||
|
int i, j;
|
||||||
|
|
||||||
|
j = sizeof(uInt32);
|
||||||
|
|
||||||
|
Blowfish_Init(&ctx, *key, strlen(*key));
|
||||||
|
|
||||||
|
memcpy(&L, *key, j);
|
||||||
|
memcpy(&R, *key+j, j);
|
||||||
|
memset(*key, 0, MAXKEYBYTES + 1);
|
||||||
|
|
||||||
|
l = L;
|
||||||
|
r = R;
|
||||||
|
|
||||||
|
if ((*key2 = malloc(MAXKEYBYTES + 1)) == NULL)
|
||||||
|
memerror();
|
||||||
|
if ((newkey = malloc(MAXKEYBYTES + 1)) == NULL)
|
||||||
|
memerror();
|
||||||
|
if ((newkey2 = malloc(MAXKEYBYTES + 1)) == NULL)
|
||||||
|
memerror();
|
||||||
|
|
||||||
|
memset(*key2, 0, MAXKEYBYTES + 1);
|
||||||
|
memset(newkey, 0, MAXKEYBYTES + 1);
|
||||||
|
memset(newkey2, 0, MAXKEYBYTES + 1);
|
||||||
|
|
||||||
|
for (i=0; i < MAXKEYBYTES; i+=(j*2)) {
|
||||||
|
Blowfish_Encrypt(&ctx, &L, &R);
|
||||||
|
memcpy(newkey+i, &L, j);
|
||||||
|
memcpy(newkey+i+j, &R, j);
|
||||||
|
}
|
||||||
|
|
||||||
|
for (i=0; i < MAXKEYBYTES; i+=(j*2)) {
|
||||||
|
l = swapEndian(l);
|
||||||
|
r = swapEndian(r);
|
||||||
|
|
||||||
|
Blowfish_Encrypt(&ctx, &l, &r);
|
||||||
|
|
||||||
|
l = swapEndian(l);
|
||||||
|
r = swapEndian(r);
|
||||||
|
|
||||||
|
memcpy(newkey2+i, &l, j);
|
||||||
|
memcpy(newkey2+i+j, &r, j);
|
||||||
|
}
|
||||||
|
|
||||||
|
memcpy(*key, newkey, MAXKEYBYTES);
|
||||||
|
memcpy(*key2, newkey2, MAXKEYBYTES);
|
||||||
|
free(newkey);
|
||||||
|
}
|
|
@ -0,0 +1,148 @@
|
||||||
|
/* ====================================================================
|
||||||
|
* Copyright (c) 2002 Johnny Shelley. All rights reserved.
|
||||||
|
*
|
||||||
|
* Bcrypt is licensed under the BSD software license. See the file
|
||||||
|
* called 'LICENSE' that you should have received with this software
|
||||||
|
* for details
|
||||||
|
* ====================================================================
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include "includes.h"
|
||||||
|
#include "defines.h"
|
||||||
|
#include "functions.h"
|
||||||
|
|
||||||
|
int getremain(uLong sz, int dv) {
|
||||||
|
int r;
|
||||||
|
|
||||||
|
r = sz / dv;
|
||||||
|
r++;
|
||||||
|
r = r * dv;
|
||||||
|
r = r - sz;
|
||||||
|
return(r);
|
||||||
|
}
|
||||||
|
|
||||||
|
uLong padInput(char **input, uLong sz) {
|
||||||
|
int r, j;
|
||||||
|
|
||||||
|
j = sizeof(uInt32) * 2;
|
||||||
|
|
||||||
|
if (sz >= j)
|
||||||
|
r = getremain(sz, j);
|
||||||
|
else
|
||||||
|
r = j - sz;
|
||||||
|
|
||||||
|
if ( r < j) {
|
||||||
|
if ((*input = realloc(*input, sz + r + 1)) == NULL)
|
||||||
|
memerror();
|
||||||
|
|
||||||
|
memset(*input+sz, 0, r + 1);
|
||||||
|
sz+=r;
|
||||||
|
}
|
||||||
|
|
||||||
|
return(sz);
|
||||||
|
}
|
||||||
|
|
||||||
|
uLong attachKey(char **input, char *key, uLong sz) {
|
||||||
|
|
||||||
|
/* +3 so we have room for info tags at the beginning of the file */
|
||||||
|
if ((*input = realloc(*input, sz + MAXKEYBYTES + 3)) == NULL)
|
||||||
|
memerror();
|
||||||
|
|
||||||
|
memcpy(*input+sz, key, MAXKEYBYTES);
|
||||||
|
sz += MAXKEYBYTES;
|
||||||
|
|
||||||
|
return(sz);
|
||||||
|
}
|
||||||
|
|
||||||
|
uLong readfile(char *infile, char **input, int type, char *key,
|
||||||
|
struct stat statbuf) {
|
||||||
|
FILE *fd;
|
||||||
|
int readsize;
|
||||||
|
uLong sz = 0;
|
||||||
|
|
||||||
|
readsize = statbuf.st_size + 1;
|
||||||
|
|
||||||
|
fd = fopen(infile, "rb");
|
||||||
|
if (!fd) {
|
||||||
|
fprintf(stderr, "Unable to open file %s\n", infile);
|
||||||
|
return(-1);
|
||||||
|
}
|
||||||
|
|
||||||
|
if ((*input = malloc(readsize + sz + 1)) == NULL)
|
||||||
|
memerror();
|
||||||
|
|
||||||
|
memset(*input+sz, 0, readsize);
|
||||||
|
sz += fread(*input+sz, 1, readsize - 1, fd);
|
||||||
|
|
||||||
|
fclose(fd);
|
||||||
|
|
||||||
|
return(sz);
|
||||||
|
}
|
||||||
|
|
||||||
|
uLong writefile(char *outfile, char *output, uLong sz,
|
||||||
|
BCoptions options, struct stat statbuf) {
|
||||||
|
FILE *fd;
|
||||||
|
|
||||||
|
if (options.standardout == 1)
|
||||||
|
fd = stdout;
|
||||||
|
else
|
||||||
|
fd = fopen(outfile, "wb");
|
||||||
|
|
||||||
|
if (!fd) {
|
||||||
|
fprintf(stderr, "Unable to create file %s\n", outfile);
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (fwrite(output, 1, sz, fd) != sz) {
|
||||||
|
fprintf(stderr, "Out of space while writing file %s\n", outfile);
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!options.standardout) {
|
||||||
|
fclose(fd);
|
||||||
|
chmod(outfile, statbuf.st_mode);
|
||||||
|
}
|
||||||
|
|
||||||
|
return(0);
|
||||||
|
}
|
||||||
|
|
||||||
|
int deletefile(char *file, BCoptions options, char *key, struct stat statbuf) {
|
||||||
|
int lsize;
|
||||||
|
long g;
|
||||||
|
uLong j = 0, k = 0;
|
||||||
|
signed char i;
|
||||||
|
char *state, *garbage;
|
||||||
|
FILE *fd;
|
||||||
|
|
||||||
|
if (options.securedelete > 0) {
|
||||||
|
lsize = sizeof(long);
|
||||||
|
k = (statbuf.st_size / lsize) + 1;
|
||||||
|
if ((state = malloc(257)) == NULL)
|
||||||
|
memerror();
|
||||||
|
|
||||||
|
initstate((unsigned long) key, state, 256);
|
||||||
|
if ((garbage = malloc(lsize + 1)) == NULL)
|
||||||
|
memerror();
|
||||||
|
|
||||||
|
fd = fopen(file, "r+b");
|
||||||
|
|
||||||
|
|
||||||
|
for (i = options.securedelete; i > 0; i--) {
|
||||||
|
fseek(fd, 0, SEEK_SET);
|
||||||
|
|
||||||
|
for (j = 0; j < k; j += lsize) {
|
||||||
|
g = random();
|
||||||
|
memcpy(garbage, &g, lsize);
|
||||||
|
fwrite(garbage, lsize, 1, fd);
|
||||||
|
}
|
||||||
|
fflush(fd);
|
||||||
|
}
|
||||||
|
fclose(fd);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (unlink(file)) {
|
||||||
|
fprintf(stderr, "Error deleting file %s\n", file);
|
||||||
|
return(1);
|
||||||
|
}
|
||||||
|
return(0);
|
||||||
|
}
|
|
@ -0,0 +1,117 @@
|
||||||
|
/* ====================================================================
|
||||||
|
* Copyright (c) 2002 Johnny Shelley. All rights reserved.
|
||||||
|
*
|
||||||
|
* Bcrypt is licensed under the BSD software license. See the file
|
||||||
|
* called 'LICENSE' that you should have received with this software
|
||||||
|
* for details
|
||||||
|
* ====================================================================
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include "includes.h"
|
||||||
|
#include "defines.h"
|
||||||
|
#include "functions.h"
|
||||||
|
|
||||||
|
uLong BFEncrypt(char **input, char *key, uLong sz, BCoptions *options) {
|
||||||
|
uInt32 L, R;
|
||||||
|
uLong i;
|
||||||
|
BLOWFISH_CTX ctx;
|
||||||
|
int j;
|
||||||
|
unsigned char *myEndian = NULL;
|
||||||
|
j = sizeof(uInt32);
|
||||||
|
|
||||||
|
getEndian(&myEndian);
|
||||||
|
|
||||||
|
memmove(*input+2, *input, sz);
|
||||||
|
|
||||||
|
memcpy(*input, myEndian, 1);
|
||||||
|
memcpy(*input+1, &options->compression, 1);
|
||||||
|
|
||||||
|
sz += 2; /* add room for endian and compress flags */
|
||||||
|
|
||||||
|
Blowfish_Init (&ctx, key, MAXKEYBYTES);
|
||||||
|
|
||||||
|
for (i = 2; i < sz; i+=(j*2)) { /* start just after tags */
|
||||||
|
memcpy(&L, *input+i, j);
|
||||||
|
memcpy(&R, *input+i+j, j);
|
||||||
|
Blowfish_Encrypt(&ctx, &L, &R);
|
||||||
|
memcpy(*input+i, &L, j);
|
||||||
|
memcpy(*input+i+j, &R, j);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (options->compression == 1) {
|
||||||
|
if ((*input = realloc(*input, sz + j + 1)) == NULL)
|
||||||
|
memerror();
|
||||||
|
|
||||||
|
memset(*input+sz, 0, j + 1);
|
||||||
|
memcpy(*input+sz, &options->origsize, j);
|
||||||
|
sz += j; /* make room for the original size */
|
||||||
|
}
|
||||||
|
|
||||||
|
free(myEndian);
|
||||||
|
return(sz);
|
||||||
|
}
|
||||||
|
|
||||||
|
uLong BFDecrypt(char **input, char *key, char *key2, uLong sz,
|
||||||
|
BCoptions *options) {
|
||||||
|
uInt32 L, R;
|
||||||
|
uLong i;
|
||||||
|
BLOWFISH_CTX ctx;
|
||||||
|
int j, swap = 0;
|
||||||
|
unsigned char *myEndian = NULL;
|
||||||
|
char *mykey = NULL;
|
||||||
|
|
||||||
|
j = sizeof(uInt32);
|
||||||
|
|
||||||
|
if ((mykey = malloc(MAXKEYBYTES + 1)) == NULL)
|
||||||
|
memerror();
|
||||||
|
|
||||||
|
memset(mykey, 0, MAXKEYBYTES + 1);
|
||||||
|
|
||||||
|
if ((swap = testEndian(*input)) == 1)
|
||||||
|
memcpy(mykey, key2, MAXKEYBYTES);
|
||||||
|
else
|
||||||
|
memcpy(mykey, key, MAXKEYBYTES);
|
||||||
|
|
||||||
|
memcpy(&options->compression, *input+1, 1);
|
||||||
|
|
||||||
|
if (options->compression == 1) {
|
||||||
|
memcpy(&options->origsize, *input+(sz - j), j);
|
||||||
|
sz -= j; /* dump the size tag */
|
||||||
|
}
|
||||||
|
|
||||||
|
sz -= 2; /* now dump endian and compress flags */
|
||||||
|
|
||||||
|
Blowfish_Init (&ctx, mykey, MAXKEYBYTES);
|
||||||
|
|
||||||
|
for (i = 0; i < sz; i+=(j*2)) {
|
||||||
|
memcpy(&L, *input+i+2, j);
|
||||||
|
memcpy(&R, *input+i+j+2, j);
|
||||||
|
|
||||||
|
if (swap == 1) {
|
||||||
|
L = swapEndian(L);
|
||||||
|
R = swapEndian(R);
|
||||||
|
}
|
||||||
|
|
||||||
|
Blowfish_Decrypt(&ctx, &L, &R);
|
||||||
|
|
||||||
|
if (swap == 1) {
|
||||||
|
L = swapEndian(L);
|
||||||
|
R = swapEndian(R);
|
||||||
|
}
|
||||||
|
|
||||||
|
memcpy(*input+i, &L, j);
|
||||||
|
memcpy(*input+i+j, &R, j);
|
||||||
|
}
|
||||||
|
|
||||||
|
while (memcmp(*input+(sz-1), "\0", 1) == 0) /* strip excess nulls */
|
||||||
|
sz--; /* from decrypted files */
|
||||||
|
|
||||||
|
sz -= MAXKEYBYTES;
|
||||||
|
|
||||||
|
if (memcmp(*input+sz, mykey, MAXKEYBYTES) != 0)
|
||||||
|
return(0);
|
||||||
|
|
||||||
|
free(mykey);
|
||||||
|
free(myEndian);
|
||||||
|
return(sz);
|
||||||
|
}
|
|
@ -0,0 +1,57 @@
|
||||||
|
/* ====================================================================
|
||||||
|
* Copyright (c) 2002 Johnny Shelley. All rights reserved.
|
||||||
|
*
|
||||||
|
* Bcrypt is licensed under the BSD software license. See the file
|
||||||
|
* called 'LICENSE' that you should have received with this software
|
||||||
|
* for details
|
||||||
|
* ====================================================================
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include "includes.h"
|
||||||
|
#include "defines.h"
|
||||||
|
#include "functions.h"
|
||||||
|
|
||||||
|
uLong docompress(char **input, uLong sz) {
|
||||||
|
uLong newsz;
|
||||||
|
char *output;
|
||||||
|
|
||||||
|
newsz = sz + (sz *.1) + 13;
|
||||||
|
if ((output = malloc(newsz + 1)) == NULL)
|
||||||
|
memerror();
|
||||||
|
|
||||||
|
memset(output, 0, newsz + 1);
|
||||||
|
|
||||||
|
compress((Bytef *) output, &newsz, (const Bytef *) *input, sz);
|
||||||
|
|
||||||
|
free(*input);
|
||||||
|
if ((*input = malloc(newsz)) == NULL)
|
||||||
|
memerror();
|
||||||
|
|
||||||
|
memcpy(*input, output, newsz);
|
||||||
|
|
||||||
|
free(output);
|
||||||
|
|
||||||
|
return(newsz);
|
||||||
|
}
|
||||||
|
|
||||||
|
uLong douncompress(char **input, uLong sz, BCoptions options) {
|
||||||
|
char *output;
|
||||||
|
|
||||||
|
if ((output = malloc(options.origsize + 1)) == NULL)
|
||||||
|
memerror();
|
||||||
|
|
||||||
|
memset(output, 0, options.origsize + 1);
|
||||||
|
|
||||||
|
uncompress((Bytef *) output, (uLong *) &options.origsize,
|
||||||
|
(const Bytef *) *input, sz);
|
||||||
|
|
||||||
|
free(*input);
|
||||||
|
if ((*input = malloc(options.origsize)) == NULL)
|
||||||
|
memerror();
|
||||||
|
|
||||||
|
memcpy(*input, output, options.origsize);
|
||||||
|
|
||||||
|
free(output);
|
||||||
|
|
||||||
|
return(options.origsize);
|
||||||
|
}
|
|
@ -0,0 +1,9 @@
|
||||||
|
/Script1.rc/1.1/Fri Sep 13 07:33:27 2002//
|
||||||
|
/bcrypt.dsp/1.1/Fri Sep 13 07:06:00 2002//
|
||||||
|
/bcrypt.dsw/1.1/Fri Sep 13 07:11:13 2002/-kb/
|
||||||
|
/getopt.c/1.1/Fri Sep 13 07:08:05 2002//
|
||||||
|
/getopt.h/1.1/Fri Sep 13 07:08:05 2002//
|
||||||
|
/icon1.ico/1.1/Fri Sep 13 07:11:13 2002/-kb/
|
||||||
|
/readme-win32.txt/1.1/Fri Sep 13 07:08:05 2002//
|
||||||
|
/resource.h/1.1/Fri Sep 13 07:08:05 2002//
|
||||||
|
D/DLLs////
|
|
@ -0,0 +1 @@
|
||||||
|
bcrypt/win32console
|
|
@ -0,0 +1 @@
|
||||||
|
/home/cvs
|
|
@ -0,0 +1,4 @@
|
||||||
|
/libz.def/1.1/Fri Sep 13 07:08:10 2002//
|
||||||
|
/zconf.h/1.1/Fri Sep 13 07:08:10 2002//
|
||||||
|
/zlib.h/1.1/Fri Sep 13 07:08:10 2002//
|
||||||
|
D
|
|
@ -0,0 +1 @@
|
||||||
|
bcrypt/win32console/DLLs
|
|
@ -0,0 +1 @@
|
||||||
|
/home/cvs
|
|
@ -0,0 +1,70 @@
|
||||||
|
; i:\MINGW\BIN\dlltool.exe -Cn -a -z libz.def --export-all-symbols adler32.o compress.o crc32.o gzio.o uncompr.o deflate.o trees.o zutil.o inflate.o infblock.o inftrees.o infcodes.o infutil.o inffast.o
|
||||||
|
EXPORTS
|
||||||
|
gzseek @ 1 ;
|
||||||
|
_length_code @ 2 DATA ;
|
||||||
|
_tr_align @ 3 ;
|
||||||
|
_tr_flush_block @ 4 ;
|
||||||
|
_tr_init @ 5 ;
|
||||||
|
_tr_stored_block @ 6 ;
|
||||||
|
_tr_tally @ 7 ;
|
||||||
|
adler32 @ 8 ;
|
||||||
|
compress @ 9 ;
|
||||||
|
compress2 @ 10 ;
|
||||||
|
crc32 @ 11 ;
|
||||||
|
deflate @ 12 ;
|
||||||
|
deflateCopy @ 13 ;
|
||||||
|
deflateEnd @ 14 ;
|
||||||
|
deflateInit2_ @ 15 ;
|
||||||
|
deflateInit_ @ 16 ;
|
||||||
|
deflateParams @ 17 ;
|
||||||
|
deflateReset @ 18 ;
|
||||||
|
deflateSetDictionary @ 19 ;
|
||||||
|
deflate_copyright @ 20 DATA ;
|
||||||
|
get_crc_table @ 21 ;
|
||||||
|
gzclose @ 22 ;
|
||||||
|
gzdopen @ 23 ;
|
||||||
|
gzeof @ 24 ;
|
||||||
|
gzerror @ 25 ;
|
||||||
|
gzflush @ 26 ;
|
||||||
|
gzgetc @ 27 ;
|
||||||
|
gzgets @ 28 ;
|
||||||
|
gzopen @ 29 ;
|
||||||
|
gzprintf @ 30 ;
|
||||||
|
gzputc @ 31 ;
|
||||||
|
gzputs @ 32 ;
|
||||||
|
gzread @ 33 ;
|
||||||
|
gzrewind @ 34 ;
|
||||||
|
_dist_code @ 35 DATA ;
|
||||||
|
gzsetparams @ 36 ;
|
||||||
|
gztell @ 37 ;
|
||||||
|
gzwrite @ 38 ;
|
||||||
|
inflate @ 39 ;
|
||||||
|
inflateEnd @ 40 ;
|
||||||
|
inflateInit2_ @ 41 ;
|
||||||
|
inflateInit_ @ 42 ;
|
||||||
|
inflateReset @ 43 ;
|
||||||
|
inflateSetDictionary @ 44 ;
|
||||||
|
inflateSync @ 45 ;
|
||||||
|
inflateSyncPoint @ 46 ;
|
||||||
|
inflate_blocks @ 47 ;
|
||||||
|
inflate_blocks_free @ 48 ;
|
||||||
|
inflate_blocks_new @ 49 ;
|
||||||
|
inflate_blocks_reset @ 50 ;
|
||||||
|
inflate_blocks_sync_point @ 51 ;
|
||||||
|
inflate_codes @ 52 ;
|
||||||
|
inflate_codes_free @ 53 ;
|
||||||
|
inflate_codes_new @ 54 ;
|
||||||
|
inflate_copyright @ 55 DATA ;
|
||||||
|
inflate_fast @ 56 ;
|
||||||
|
inflate_flush @ 57 ;
|
||||||
|
inflate_mask @ 58 DATA ;
|
||||||
|
inflate_set_dictionary @ 59 ;
|
||||||
|
inflate_trees_bits @ 60 ;
|
||||||
|
inflate_trees_dynamic @ 61 ;
|
||||||
|
inflate_trees_fixed @ 62 ;
|
||||||
|
uncompress @ 63 ;
|
||||||
|
zError @ 64 ;
|
||||||
|
z_errmsg @ 65 DATA ;
|
||||||
|
zcalloc @ 66 ;
|
||||||
|
zcfree @ 67 ;
|
||||||
|
zlibVersion @ 68 ;
|
|
@ -0,0 +1,279 @@
|
||||||
|
/* zconf.h -- configuration of the zlib compression library
|
||||||
|
* Copyright (C) 1995-2002 Jean-loup Gailly.
|
||||||
|
* For conditions of distribution and use, see copyright notice in zlib.h
|
||||||
|
*/
|
||||||
|
|
||||||
|
/* @(#) $Id: zconf.h,v 1.1 2002/09/13 07:08:10 syntax Exp $ */
|
||||||
|
|
||||||
|
#ifndef _ZCONF_H
|
||||||
|
#define _ZCONF_H
|
||||||
|
|
||||||
|
/*
|
||||||
|
* If you *really* need a unique prefix for all types and library functions,
|
||||||
|
* compile with -DZ_PREFIX. The "standard" zlib should be compiled without it.
|
||||||
|
*/
|
||||||
|
#ifdef Z_PREFIX
|
||||||
|
# define deflateInit_ z_deflateInit_
|
||||||
|
# define deflate z_deflate
|
||||||
|
# define deflateEnd z_deflateEnd
|
||||||
|
# define inflateInit_ z_inflateInit_
|
||||||
|
# define inflate z_inflate
|
||||||
|
# define inflateEnd z_inflateEnd
|
||||||
|
# define deflateInit2_ z_deflateInit2_
|
||||||
|
# define deflateSetDictionary z_deflateSetDictionary
|
||||||
|
# define deflateCopy z_deflateCopy
|
||||||
|
# define deflateReset z_deflateReset
|
||||||
|
# define deflateParams z_deflateParams
|
||||||
|
# define inflateInit2_ z_inflateInit2_
|
||||||
|
# define inflateSetDictionary z_inflateSetDictionary
|
||||||
|
# define inflateSync z_inflateSync
|
||||||
|
# define inflateSyncPoint z_inflateSyncPoint
|
||||||
|
# define inflateReset z_inflateReset
|
||||||
|
# define compress z_compress
|
||||||
|
# define compress2 z_compress2
|
||||||
|
# define uncompress z_uncompress
|
||||||
|
# define adler32 z_adler32
|
||||||
|
# define crc32 z_crc32
|
||||||
|
# define get_crc_table z_get_crc_table
|
||||||
|
|
||||||
|
# define Byte z_Byte
|
||||||
|
# define uInt z_uInt
|
||||||
|
# define uLong z_uLong
|
||||||
|
# define Bytef z_Bytef
|
||||||
|
# define charf z_charf
|
||||||
|
# define intf z_intf
|
||||||
|
# define uIntf z_uIntf
|
||||||
|
# define uLongf z_uLongf
|
||||||
|
# define voidpf z_voidpf
|
||||||
|
# define voidp z_voidp
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if (defined(_WIN32) || defined(__WIN32__)) && !defined(WIN32)
|
||||||
|
# define WIN32
|
||||||
|
#endif
|
||||||
|
#if defined(__GNUC__) || defined(WIN32) || defined(__386__) || defined(i386)
|
||||||
|
# ifndef __32BIT__
|
||||||
|
# define __32BIT__
|
||||||
|
# endif
|
||||||
|
#endif
|
||||||
|
#if defined(__MSDOS__) && !defined(MSDOS)
|
||||||
|
# define MSDOS
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Compile with -DMAXSEG_64K if the alloc function cannot allocate more
|
||||||
|
* than 64k bytes at a time (needed on systems with 16-bit int).
|
||||||
|
*/
|
||||||
|
#if defined(MSDOS) && !defined(__32BIT__)
|
||||||
|
# define MAXSEG_64K
|
||||||
|
#endif
|
||||||
|
#ifdef MSDOS
|
||||||
|
# define UNALIGNED_OK
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if (defined(MSDOS) || defined(_WINDOWS) || defined(WIN32)) && !defined(STDC)
|
||||||
|
# define STDC
|
||||||
|
#endif
|
||||||
|
#if defined(__STDC__) || defined(__cplusplus) || defined(__OS2__)
|
||||||
|
# ifndef STDC
|
||||||
|
# define STDC
|
||||||
|
# endif
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifndef STDC
|
||||||
|
# ifndef const /* cannot use !defined(STDC) && !defined(const) on Mac */
|
||||||
|
# define const
|
||||||
|
# endif
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/* Some Mac compilers merge all .h files incorrectly: */
|
||||||
|
#if defined(__MWERKS__) || defined(applec) ||defined(THINK_C) ||defined(__SC__)
|
||||||
|
# define NO_DUMMY_DECL
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/* Old Borland C incorrectly complains about missing returns: */
|
||||||
|
#if defined(__BORLANDC__) && (__BORLANDC__ < 0x500)
|
||||||
|
# define NEED_DUMMY_RETURN
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
|
/* Maximum value for memLevel in deflateInit2 */
|
||||||
|
#ifndef MAX_MEM_LEVEL
|
||||||
|
# ifdef MAXSEG_64K
|
||||||
|
# define MAX_MEM_LEVEL 8
|
||||||
|
# else
|
||||||
|
# define MAX_MEM_LEVEL 9
|
||||||
|
# endif
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/* Maximum value for windowBits in deflateInit2 and inflateInit2.
|
||||||
|
* WARNING: reducing MAX_WBITS makes minigzip unable to extract .gz files
|
||||||
|
* created by gzip. (Files created by minigzip can still be extracted by
|
||||||
|
* gzip.)
|
||||||
|
*/
|
||||||
|
#ifndef MAX_WBITS
|
||||||
|
# define MAX_WBITS 15 /* 32K LZ77 window */
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/* The memory requirements for deflate are (in bytes):
|
||||||
|
(1 << (windowBits+2)) + (1 << (memLevel+9))
|
||||||
|
that is: 128K for windowBits=15 + 128K for memLevel = 8 (default values)
|
||||||
|
plus a few kilobytes for small objects. For example, if you want to reduce
|
||||||
|
the default memory requirements from 256K to 128K, compile with
|
||||||
|
make CFLAGS="-O -DMAX_WBITS=14 -DMAX_MEM_LEVEL=7"
|
||||||
|
Of course this will generally degrade compression (there's no free lunch).
|
||||||
|
|
||||||
|
The memory requirements for inflate are (in bytes) 1 << windowBits
|
||||||
|
that is, 32K for windowBits=15 (default value) plus a few kilobytes
|
||||||
|
for small objects.
|
||||||
|
*/
|
||||||
|
|
||||||
|
/* Type declarations */
|
||||||
|
|
||||||
|
#ifndef OF /* function prototypes */
|
||||||
|
# ifdef STDC
|
||||||
|
# define OF(args) args
|
||||||
|
# else
|
||||||
|
# define OF(args) ()
|
||||||
|
# endif
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/* The following definitions for FAR are needed only for MSDOS mixed
|
||||||
|
* model programming (small or medium model with some far allocations).
|
||||||
|
* This was tested only with MSC; for other MSDOS compilers you may have
|
||||||
|
* to define NO_MEMCPY in zutil.h. If you don't need the mixed model,
|
||||||
|
* just define FAR to be empty.
|
||||||
|
*/
|
||||||
|
#if (defined(M_I86SM) || defined(M_I86MM)) && !defined(__32BIT__)
|
||||||
|
/* MSC small or medium model */
|
||||||
|
# define SMALL_MEDIUM
|
||||||
|
# ifdef _MSC_VER
|
||||||
|
# define FAR _far
|
||||||
|
# else
|
||||||
|
# define FAR far
|
||||||
|
# endif
|
||||||
|
#endif
|
||||||
|
#if defined(__BORLANDC__) && (defined(__SMALL__) || defined(__MEDIUM__))
|
||||||
|
# ifndef __32BIT__
|
||||||
|
# define SMALL_MEDIUM
|
||||||
|
# define FAR _far
|
||||||
|
# endif
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/* Compile with -DZLIB_DLL for Windows DLL support */
|
||||||
|
#if defined(ZLIB_DLL)
|
||||||
|
# if defined(_WINDOWS) || defined(WINDOWS)
|
||||||
|
# ifdef FAR
|
||||||
|
# undef FAR
|
||||||
|
# endif
|
||||||
|
# include <windows.h>
|
||||||
|
# define ZEXPORT WINAPI
|
||||||
|
# ifdef WIN32
|
||||||
|
# define ZEXPORTVA WINAPIV
|
||||||
|
# else
|
||||||
|
# define ZEXPORTVA FAR _cdecl _export
|
||||||
|
# endif
|
||||||
|
# endif
|
||||||
|
# if defined (__BORLANDC__)
|
||||||
|
# if (__BORLANDC__ >= 0x0500) && defined (WIN32)
|
||||||
|
# include <windows.h>
|
||||||
|
# define ZEXPORT __declspec(dllexport) WINAPI
|
||||||
|
# define ZEXPORTRVA __declspec(dllexport) WINAPIV
|
||||||
|
# else
|
||||||
|
# if defined (_Windows) && defined (__DLL__)
|
||||||
|
# define ZEXPORT _export
|
||||||
|
# define ZEXPORTVA _export
|
||||||
|
# endif
|
||||||
|
# endif
|
||||||
|
# endif
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined (__BEOS__)
|
||||||
|
# if defined (ZLIB_DLL)
|
||||||
|
# define ZEXTERN extern __declspec(dllexport)
|
||||||
|
# else
|
||||||
|
# define ZEXTERN extern __declspec(dllimport)
|
||||||
|
# endif
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifndef ZEXPORT
|
||||||
|
# define ZEXPORT
|
||||||
|
#endif
|
||||||
|
#ifndef ZEXPORTVA
|
||||||
|
# define ZEXPORTVA
|
||||||
|
#endif
|
||||||
|
#ifndef ZEXTERN
|
||||||
|
# define ZEXTERN extern
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifndef FAR
|
||||||
|
# define FAR
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if !defined(MACOS) && !defined(TARGET_OS_MAC)
|
||||||
|
typedef unsigned char Byte; /* 8 bits */
|
||||||
|
#endif
|
||||||
|
typedef unsigned int uInt; /* 16 bits or more */
|
||||||
|
typedef unsigned long uLong; /* 32 bits or more */
|
||||||
|
|
||||||
|
#ifdef SMALL_MEDIUM
|
||||||
|
/* Borland C/C++ and some old MSC versions ignore FAR inside typedef */
|
||||||
|
# define Bytef Byte FAR
|
||||||
|
#else
|
||||||
|
typedef Byte FAR Bytef;
|
||||||
|
#endif
|
||||||
|
typedef char FAR charf;
|
||||||
|
typedef int FAR intf;
|
||||||
|
typedef uInt FAR uIntf;
|
||||||
|
typedef uLong FAR uLongf;
|
||||||
|
|
||||||
|
#ifdef STDC
|
||||||
|
typedef void FAR *voidpf;
|
||||||
|
typedef void *voidp;
|
||||||
|
#else
|
||||||
|
typedef Byte FAR *voidpf;
|
||||||
|
typedef Byte *voidp;
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifdef HAVE_UNISTD_H
|
||||||
|
# include <sys/types.h> /* for off_t */
|
||||||
|
# include <unistd.h> /* for SEEK_* and off_t */
|
||||||
|
# define z_off_t off_t
|
||||||
|
#endif
|
||||||
|
#ifndef SEEK_SET
|
||||||
|
# define SEEK_SET 0 /* Seek from beginning of file. */
|
||||||
|
# define SEEK_CUR 1 /* Seek from current position. */
|
||||||
|
# define SEEK_END 2 /* Set file pointer to EOF plus "offset" */
|
||||||
|
#endif
|
||||||
|
#ifndef z_off_t
|
||||||
|
# define z_off_t long
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/* MVS linker does not support external names larger than 8 bytes */
|
||||||
|
#if defined(__MVS__)
|
||||||
|
# pragma map(deflateInit_,"DEIN")
|
||||||
|
# pragma map(deflateInit2_,"DEIN2")
|
||||||
|
# pragma map(deflateEnd,"DEEND")
|
||||||
|
# pragma map(inflateInit_,"ININ")
|
||||||
|
# pragma map(inflateInit2_,"ININ2")
|
||||||
|
# pragma map(inflateEnd,"INEND")
|
||||||
|
# pragma map(inflateSync,"INSY")
|
||||||
|
# pragma map(inflateSetDictionary,"INSEDI")
|
||||||
|
# pragma map(inflate_blocks,"INBL")
|
||||||
|
# pragma map(inflate_blocks_new,"INBLNE")
|
||||||
|
# pragma map(inflate_blocks_free,"INBLFR")
|
||||||
|
# pragma map(inflate_blocks_reset,"INBLRE")
|
||||||
|
# pragma map(inflate_codes_free,"INCOFR")
|
||||||
|
# pragma map(inflate_codes,"INCO")
|
||||||
|
# pragma map(inflate_fast,"INFA")
|
||||||
|
# pragma map(inflate_flush,"INFLU")
|
||||||
|
# pragma map(inflate_mask,"INMA")
|
||||||
|
# pragma map(inflate_set_dictionary,"INSEDI2")
|
||||||
|
# pragma map(inflate_copyright,"INCOPY")
|
||||||
|
# pragma map(inflate_trees_bits,"INTRBI")
|
||||||
|
# pragma map(inflate_trees_dynamic,"INTRDY")
|
||||||
|
# pragma map(inflate_trees_fixed,"INTRFI")
|
||||||
|
# pragma map(inflate_trees_free,"INTRFR")
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#endif /* _ZCONF_H */
|
|
@ -0,0 +1,893 @@
|
||||||
|
/* zlib.h -- interface of the 'zlib' general purpose compression library
|
||||||
|
version 1.1.4, March 11th, 2002
|
||||||
|
|
||||||
|
Copyright (C) 1995-2002 Jean-loup Gailly and Mark Adler
|
||||||
|
|
||||||
|
This software is provided 'as-is', without any express or implied
|
||||||
|
warranty. In no event will the authors be held liable for any damages
|
||||||
|
arising from the use of this software.
|
||||||
|
|
||||||
|
Permission is granted to anyone to use this software for any purpose,
|
||||||
|
including commercial applications, and to alter it and redistribute it
|
||||||
|
freely, subject to the following restrictions:
|
||||||
|
|
||||||
|
1. The origin of this software must not be misrepresented; you must not
|
||||||
|
claim that you wrote the original software. If you use this software
|
||||||
|
in a product, an acknowledgment in the product documentation would be
|
||||||
|
appreciated but is not required.
|
||||||
|
2. Altered source versions must be plainly marked as such, and must not be
|
||||||
|
misrepresented as being the original software.
|
||||||
|
3. This notice may not be removed or altered from any source distribution.
|
||||||
|
|
||||||
|
Jean-loup Gailly Mark Adler
|
||||||
|
jloup@gzip.org madler@alumni.caltech.edu
|
||||||
|
|
||||||
|
|
||||||
|
The data format used by the zlib library is described by RFCs (Request for
|
||||||
|
Comments) 1950 to 1952 in the files ftp://ds.internic.net/rfc/rfc1950.txt
|
||||||
|
(zlib format), rfc1951.txt (deflate format) and rfc1952.txt (gzip format).
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef _ZLIB_H
|
||||||
|
#define _ZLIB_H
|
||||||
|
|
||||||
|
#include "zconf.h"
|
||||||
|
|
||||||
|
#ifdef __cplusplus
|
||||||
|
extern "C" {
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#define ZLIB_VERSION "1.1.4"
|
||||||
|
|
||||||
|
/*
|
||||||
|
The 'zlib' compression library provides in-memory compression and
|
||||||
|
decompression functions, including integrity checks of the uncompressed
|
||||||
|
data. This version of the library supports only one compression method
|
||||||
|
(deflation) but other algorithms will be added later and will have the same
|
||||||
|
stream interface.
|
||||||
|
|
||||||
|
Compression can be done in a single step if the buffers are large
|
||||||
|
enough (for example if an input file is mmap'ed), or can be done by
|
||||||
|
repeated calls of the compression function. In the latter case, the
|
||||||
|
application must provide more input and/or consume the output
|
||||||
|
(providing more output space) before each call.
|
||||||
|
|
||||||
|
The library also supports reading and writing files in gzip (.gz) format
|
||||||
|
with an interface similar to that of stdio.
|
||||||
|
|
||||||
|
The library does not install any signal handler. The decoder checks
|
||||||
|
the consistency of the compressed data, so the library should never
|
||||||
|
crash even in case of corrupted input.
|
||||||
|
*/
|
||||||
|
|
||||||
|
typedef voidpf (*alloc_func) OF((voidpf opaque, uInt items, uInt size));
|
||||||
|
typedef void (*free_func) OF((voidpf opaque, voidpf address));
|
||||||
|
|
||||||
|
struct internal_state;
|
||||||
|
|
||||||
|
typedef struct z_stream_s {
|
||||||
|
Bytef *next_in; /* next input byte */
|
||||||
|
uInt avail_in; /* number of bytes available at next_in */
|
||||||
|
uLong total_in; /* total nb of input bytes read so far */
|
||||||
|
|
||||||
|
Bytef *next_out; /* next output byte should be put there */
|
||||||
|
uInt avail_out; /* remaining free space at next_out */
|
||||||
|
uLong total_out; /* total nb of bytes output so far */
|
||||||
|
|
||||||
|
char *msg; /* last error message, NULL if no error */
|
||||||
|
struct internal_state FAR *state; /* not visible by applications */
|
||||||
|
|
||||||
|
alloc_func zalloc; /* used to allocate the internal state */
|
||||||
|
free_func zfree; /* used to free the internal state */
|
||||||
|
voidpf opaque; /* private data object passed to zalloc and zfree */
|
||||||
|
|
||||||
|
int data_type; /* best guess about the data type: ascii or binary */
|
||||||
|
uLong adler; /* adler32 value of the uncompressed data */
|
||||||
|
uLong reserved; /* reserved for future use */
|
||||||
|
} z_stream;
|
||||||
|
|
||||||
|
typedef z_stream FAR *z_streamp;
|
||||||
|
|
||||||
|
/*
|
||||||
|
The application must update next_in and avail_in when avail_in has
|
||||||
|
dropped to zero. It must update next_out and avail_out when avail_out
|
||||||
|
has dropped to zero. The application must initialize zalloc, zfree and
|
||||||
|
opaque before calling the init function. All other fields are set by the
|
||||||
|
compression library and must not be updated by the application.
|
||||||
|
|
||||||
|
The opaque value provided by the application will be passed as the first
|
||||||
|
parameter for calls of zalloc and zfree. This can be useful for custom
|
||||||
|
memory management. The compression library attaches no meaning to the
|
||||||
|
opaque value.
|
||||||
|
|
||||||
|
zalloc must return Z_NULL if there is not enough memory for the object.
|
||||||
|
If zlib is used in a multi-threaded application, zalloc and zfree must be
|
||||||
|
thread safe.
|
||||||
|
|
||||||
|
On 16-bit systems, the functions zalloc and zfree must be able to allocate
|
||||||
|
exactly 65536 bytes, but will not be required to allocate more than this
|
||||||
|
if the symbol MAXSEG_64K is defined (see zconf.h). WARNING: On MSDOS,
|
||||||
|
pointers returned by zalloc for objects of exactly 65536 bytes *must*
|
||||||
|
have their offset normalized to zero. The default allocation function
|
||||||
|
provided by this library ensures this (see zutil.c). To reduce memory
|
||||||
|
requirements and avoid any allocation of 64K objects, at the expense of
|
||||||
|
compression ratio, compile the library with -DMAX_WBITS=14 (see zconf.h).
|
||||||
|
|
||||||
|
The fields total_in and total_out can be used for statistics or
|
||||||
|
progress reports. After compression, total_in holds the total size of
|
||||||
|
the uncompressed data and may be saved for use in the decompressor
|
||||||
|
(particularly if the decompressor wants to decompress everything in
|
||||||
|
a single step).
|
||||||
|
*/
|
||||||
|
|
||||||
|
/* constants */
|
||||||
|
|
||||||
|
#define Z_NO_FLUSH 0
|
||||||
|
#define Z_PARTIAL_FLUSH 1 /* will be removed, use Z_SYNC_FLUSH instead */
|
||||||
|
#define Z_SYNC_FLUSH 2
|
||||||
|
#define Z_FULL_FLUSH 3
|
||||||
|
#define Z_FINISH 4
|
||||||
|
/* Allowed flush values; see deflate() below for details */
|
||||||
|
|
||||||
|
#define Z_OK 0
|
||||||
|
#define Z_STREAM_END 1
|
||||||
|
#define Z_NEED_DICT 2
|
||||||
|
#define Z_ERRNO (-1)
|
||||||
|
#define Z_STREAM_ERROR (-2)
|
||||||
|
#define Z_DATA_ERROR (-3)
|
||||||
|
#define Z_MEM_ERROR (-4)
|
||||||
|
#define Z_BUF_ERROR (-5)
|
||||||
|
#define Z_VERSION_ERROR (-6)
|
||||||
|
/* Return codes for the compression/decompression functions. Negative
|
||||||
|
* values are errors, positive values are used for special but normal events.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#define Z_NO_COMPRESSION 0
|
||||||
|
#define Z_BEST_SPEED 1
|
||||||
|
#define Z_BEST_COMPRESSION 9
|
||||||
|
#define Z_DEFAULT_COMPRESSION (-1)
|
||||||
|
/* compression levels */
|
||||||
|
|
||||||
|
#define Z_FILTERED 1
|
||||||
|
#define Z_HUFFMAN_ONLY 2
|
||||||
|
#define Z_DEFAULT_STRATEGY 0
|
||||||
|
/* compression strategy; see deflateInit2() below for details */
|
||||||
|
|
||||||
|
#define Z_BINARY 0
|
||||||
|
#define Z_ASCII 1
|
||||||
|
#define Z_UNKNOWN 2
|
||||||
|
/* Possible values of the data_type field */
|
||||||
|
|
||||||
|
#define Z_DEFLATED 8
|
||||||
|
/* The deflate compression method (the only one supported in this version) */
|
||||||
|
|
||||||
|
#define Z_NULL 0 /* for initializing zalloc, zfree, opaque */
|
||||||
|
|
||||||
|
#define zlib_version zlibVersion()
|
||||||
|
/* for compatibility with versions < 1.0.2 */
|
||||||
|
|
||||||
|
/* basic functions */
|
||||||
|
|
||||||
|
ZEXTERN const char * ZEXPORT zlibVersion OF((void));
|
||||||
|
/* The application can compare zlibVersion and ZLIB_VERSION for consistency.
|
||||||
|
If the first character differs, the library code actually used is
|
||||||
|
not compatible with the zlib.h header file used by the application.
|
||||||
|
This check is automatically made by deflateInit and inflateInit.
|
||||||
|
*/
|
||||||
|
|
||||||
|
/*
|
||||||
|
ZEXTERN int ZEXPORT deflateInit OF((z_streamp strm, int level));
|
||||||
|
|
||||||
|
Initializes the internal stream state for compression. The fields
|
||||||
|
zalloc, zfree and opaque must be initialized before by the caller.
|
||||||
|
If zalloc and zfree are set to Z_NULL, deflateInit updates them to
|
||||||
|
use default allocation functions.
|
||||||
|
|
||||||
|
The compression level must be Z_DEFAULT_COMPRESSION, or between 0 and 9:
|
||||||
|
1 gives best speed, 9 gives best compression, 0 gives no compression at
|
||||||
|
all (the input data is simply copied a block at a time).
|
||||||
|
Z_DEFAULT_COMPRESSION requests a default compromise between speed and
|
||||||
|
compression (currently equivalent to level 6).
|
||||||
|
|
||||||
|
deflateInit returns Z_OK if success, Z_MEM_ERROR if there was not
|
||||||
|
enough memory, Z_STREAM_ERROR if level is not a valid compression level,
|
||||||
|
Z_VERSION_ERROR if the zlib library version (zlib_version) is incompatible
|
||||||
|
with the version assumed by the caller (ZLIB_VERSION).
|
||||||
|
msg is set to null if there is no error message. deflateInit does not
|
||||||
|
perform any compression: this will be done by deflate().
|
||||||
|
*/
|
||||||
|
|
||||||
|
|
||||||
|
ZEXTERN int ZEXPORT deflate OF((z_streamp strm, int flush));
|
||||||
|
/*
|
||||||
|
deflate compresses as much data as possible, and stops when the input
|
||||||
|
buffer becomes empty or the output buffer becomes full. It may introduce some
|
||||||
|
output latency (reading input without producing any output) except when
|
||||||
|
forced to flush.
|
||||||
|
|
||||||
|
The detailed semantics are as follows. deflate performs one or both of the
|
||||||
|
following actions:
|
||||||
|
|
||||||
|
- Compress more input starting at next_in and update next_in and avail_in
|
||||||
|
accordingly. If not all input can be processed (because there is not
|
||||||
|
enough room in the output buffer), next_in and avail_in are updated and
|
||||||
|
processing will resume at this point for the next call of deflate().
|
||||||
|
|
||||||
|
- Provide more output starting at next_out and update next_out and avail_out
|
||||||
|
accordingly. This action is forced if the parameter flush is non zero.
|
||||||
|
Forcing flush frequently degrades the compression ratio, so this parameter
|
||||||
|
should be set only when necessary (in interactive applications).
|
||||||
|
Some output may be provided even if flush is not set.
|
||||||
|
|
||||||
|
Before the call of deflate(), the application should ensure that at least
|
||||||
|
one of the actions is possible, by providing more input and/or consuming
|
||||||
|
more output, and updating avail_in or avail_out accordingly; avail_out
|
||||||
|
should never be zero before the call. The application can consume the
|
||||||
|
compressed output when it wants, for example when the output buffer is full
|
||||||
|
(avail_out == 0), or after each call of deflate(). If deflate returns Z_OK
|
||||||
|
and with zero avail_out, it must be called again after making room in the
|
||||||
|
output buffer because there might be more output pending.
|
||||||
|
|
||||||
|
If the parameter flush is set to Z_SYNC_FLUSH, all pending output is
|
||||||
|
flushed to the output buffer and the output is aligned on a byte boundary, so
|
||||||
|
that the decompressor can get all input data available so far. (In particular
|
||||||
|
avail_in is zero after the call if enough output space has been provided
|
||||||
|
before the call.) Flushing may degrade compression for some compression
|
||||||
|
algorithms and so it should be used only when necessary.
|
||||||
|
|
||||||
|
If flush is set to Z_FULL_FLUSH, all output is flushed as with
|
||||||
|
Z_SYNC_FLUSH, and the compression state is reset so that decompression can
|
||||||
|
restart from this point if previous compressed data has been damaged or if
|
||||||
|
random access is desired. Using Z_FULL_FLUSH too often can seriously degrade
|
||||||
|
the compression.
|
||||||
|
|
||||||
|
If deflate returns with avail_out == 0, this function must be called again
|
||||||
|
with the same value of the flush parameter and more output space (updated
|
||||||
|
avail_out), until the flush is complete (deflate returns with non-zero
|
||||||
|
avail_out).
|
||||||
|
|
||||||
|
If the parameter flush is set to Z_FINISH, pending input is processed,
|
||||||
|
pending output is flushed and deflate returns with Z_STREAM_END if there
|
||||||
|
was enough output space; if deflate returns with Z_OK, this function must be
|
||||||
|
called again with Z_FINISH and more output space (updated avail_out) but no
|
||||||
|
more input data, until it returns with Z_STREAM_END or an error. After
|
||||||
|
deflate has returned Z_STREAM_END, the only possible operations on the
|
||||||
|
stream are deflateReset or deflateEnd.
|
||||||
|
|
||||||
|
Z_FINISH can be used immediately after deflateInit if all the compression
|
||||||
|
is to be done in a single step. In this case, avail_out must be at least
|
||||||
|
0.1% larger than avail_in plus 12 bytes. If deflate does not return
|
||||||
|
Z_STREAM_END, then it must be called again as described above.
|
||||||
|
|
||||||
|
deflate() sets strm->adler to the adler32 checksum of all input read
|
||||||
|
so far (that is, total_in bytes).
|
||||||
|
|
||||||
|
deflate() may update data_type if it can make a good guess about
|
||||||
|
the input data type (Z_ASCII or Z_BINARY). In doubt, the data is considered
|
||||||
|
binary. This field is only for information purposes and does not affect
|
||||||
|
the compression algorithm in any manner.
|
||||||
|
|
||||||
|
deflate() returns Z_OK if some progress has been made (more input
|
||||||
|
processed or more output produced), Z_STREAM_END if all input has been
|
||||||
|
consumed and all output has been produced (only when flush is set to
|
||||||
|
Z_FINISH), Z_STREAM_ERROR if the stream state was inconsistent (for example
|
||||||
|
if next_in or next_out was NULL), Z_BUF_ERROR if no progress is possible
|
||||||
|
(for example avail_in or avail_out was zero).
|
||||||
|
*/
|
||||||
|
|
||||||
|
|
||||||
|
ZEXTERN int ZEXPORT deflateEnd OF((z_streamp strm));
|
||||||
|
/*
|
||||||
|
All dynamically allocated data structures for this stream are freed.
|
||||||
|
This function discards any unprocessed input and does not flush any
|
||||||
|
pending output.
|
||||||
|
|
||||||
|
deflateEnd returns Z_OK if success, Z_STREAM_ERROR if the
|
||||||
|
stream state was inconsistent, Z_DATA_ERROR if the stream was freed
|
||||||
|
prematurely (some input or output was discarded). In the error case,
|
||||||
|
msg may be set but then points to a static string (which must not be
|
||||||
|
deallocated).
|
||||||
|
*/
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
ZEXTERN int ZEXPORT inflateInit OF((z_streamp strm));
|
||||||
|
|
||||||
|
Initializes the internal stream state for decompression. The fields
|
||||||
|
next_in, avail_in, zalloc, zfree and opaque must be initialized before by
|
||||||
|
the caller. If next_in is not Z_NULL and avail_in is large enough (the exact
|
||||||
|
value depends on the compression method), inflateInit determines the
|
||||||
|
compression method from the zlib header and allocates all data structures
|
||||||
|
accordingly; otherwise the allocation will be deferred to the first call of
|
||||||
|
inflate. If zalloc and zfree are set to Z_NULL, inflateInit updates them to
|
||||||
|
use default allocation functions.
|
||||||
|
|
||||||
|
inflateInit returns Z_OK if success, Z_MEM_ERROR if there was not enough
|
||||||
|
memory, Z_VERSION_ERROR if the zlib library version is incompatible with the
|
||||||
|
version assumed by the caller. msg is set to null if there is no error
|
||||||
|
message. inflateInit does not perform any decompression apart from reading
|
||||||
|
the zlib header if present: this will be done by inflate(). (So next_in and
|
||||||
|
avail_in may be modified, but next_out and avail_out are unchanged.)
|
||||||
|
*/
|
||||||
|
|
||||||
|
|
||||||
|
ZEXTERN int ZEXPORT inflate OF((z_streamp strm, int flush));
|
||||||
|
/*
|
||||||
|
inflate decompresses as much data as possible, and stops when the input
|
||||||
|
buffer becomes empty or the output buffer becomes full. It may some
|
||||||
|
introduce some output latency (reading input without producing any output)
|
||||||
|
except when forced to flush.
|
||||||
|
|
||||||
|
The detailed semantics are as follows. inflate performs one or both of the
|
||||||
|
following actions:
|
||||||
|
|
||||||
|
- Decompress more input starting at next_in and update next_in and avail_in
|
||||||
|
accordingly. If not all input can be processed (because there is not
|
||||||
|
enough room in the output buffer), next_in is updated and processing
|
||||||
|
will resume at this point for the next call of inflate().
|
||||||
|
|
||||||
|
- Provide more output starting at next_out and update next_out and avail_out
|
||||||
|
accordingly. inflate() provides as much output as possible, until there
|
||||||
|
is no more input data or no more space in the output buffer (see below
|
||||||
|
about the flush parameter).
|
||||||
|
|
||||||
|
Before the call of inflate(), the application should ensure that at least
|
||||||
|
one of the actions is possible, by providing more input and/or consuming
|
||||||
|
more output, and updating the next_* and avail_* values accordingly.
|
||||||
|
The application can consume the uncompressed output when it wants, for
|
||||||
|
example when the output buffer is full (avail_out == 0), or after each
|
||||||
|
call of inflate(). If inflate returns Z_OK and with zero avail_out, it
|
||||||
|
must be called again after making room in the output buffer because there
|
||||||
|
might be more output pending.
|
||||||
|
|
||||||
|
If the parameter flush is set to Z_SYNC_FLUSH, inflate flushes as much
|
||||||
|
output as possible to the output buffer. The flushing behavior of inflate is
|
||||||
|
not specified for values of the flush parameter other than Z_SYNC_FLUSH
|
||||||
|
and Z_FINISH, but the current implementation actually flushes as much output
|
||||||
|
as possible anyway.
|
||||||
|
|
||||||
|
inflate() should normally be called until it returns Z_STREAM_END or an
|
||||||
|
error. However if all decompression is to be performed in a single step
|
||||||
|
(a single call of inflate), the parameter flush should be set to
|
||||||
|
Z_FINISH. In this case all pending input is processed and all pending
|
||||||
|
output is flushed; avail_out must be large enough to hold all the
|
||||||
|
uncompressed data. (The size of the uncompressed data may have been saved
|
||||||
|
by the compressor for this purpose.) The next operation on this stream must
|
||||||
|
be inflateEnd to deallocate the decompression state. The use of Z_FINISH
|
||||||
|
is never required, but can be used to inform inflate that a faster routine
|
||||||
|
may be used for the single inflate() call.
|
||||||
|
|
||||||
|
If a preset dictionary is needed at this point (see inflateSetDictionary
|
||||||
|
below), inflate sets strm-adler to the adler32 checksum of the
|
||||||
|
dictionary chosen by the compressor and returns Z_NEED_DICT; otherwise
|
||||||
|
it sets strm->adler to the adler32 checksum of all output produced
|
||||||
|
so far (that is, total_out bytes) and returns Z_OK, Z_STREAM_END or
|
||||||
|
an error code as described below. At the end of the stream, inflate()
|
||||||
|
checks that its computed adler32 checksum is equal to that saved by the
|
||||||
|
compressor and returns Z_STREAM_END only if the checksum is correct.
|
||||||
|
|
||||||
|
inflate() returns Z_OK if some progress has been made (more input processed
|
||||||
|
or more output produced), Z_STREAM_END if the end of the compressed data has
|
||||||
|
been reached and all uncompressed output has been produced, Z_NEED_DICT if a
|
||||||
|
preset dictionary is needed at this point, Z_DATA_ERROR if the input data was
|
||||||
|
corrupted (input stream not conforming to the zlib format or incorrect
|
||||||
|
adler32 checksum), Z_STREAM_ERROR if the stream structure was inconsistent
|
||||||
|
(for example if next_in or next_out was NULL), Z_MEM_ERROR if there was not
|
||||||
|
enough memory, Z_BUF_ERROR if no progress is possible or if there was not
|
||||||
|
enough room in the output buffer when Z_FINISH is used. In the Z_DATA_ERROR
|
||||||
|
case, the application may then call inflateSync to look for a good
|
||||||
|
compression block.
|
||||||
|
*/
|
||||||
|
|
||||||
|
|
||||||
|
ZEXTERN int ZEXPORT inflateEnd OF((z_streamp strm));
|
||||||
|
/*
|
||||||
|
All dynamically allocated data structures for this stream are freed.
|
||||||
|
This function discards any unprocessed input and does not flush any
|
||||||
|
pending output.
|
||||||
|
|
||||||
|
inflateEnd returns Z_OK if success, Z_STREAM_ERROR if the stream state
|
||||||
|
was inconsistent. In the error case, msg may be set but then points to a
|
||||||
|
static string (which must not be deallocated).
|
||||||
|
*/
|
||||||
|
|
||||||
|
/* Advanced functions */
|
||||||
|
|
||||||
|
/*
|
||||||
|
The following functions are needed only in some special applications.
|
||||||
|
*/
|
||||||
|
|
||||||
|
/*
|
||||||
|
ZEXTERN int ZEXPORT deflateInit2 OF((z_streamp strm,
|
||||||
|
int level,
|
||||||
|
int method,
|
||||||
|
int windowBits,
|
||||||
|
int memLevel,
|
||||||
|
int strategy));
|
||||||
|
|
||||||
|
This is another version of deflateInit with more compression options. The
|
||||||
|
fields next_in, zalloc, zfree and opaque must be initialized before by
|
||||||
|
the caller.
|
||||||
|
|
||||||
|
The method parameter is the compression method. It must be Z_DEFLATED in
|
||||||
|
this version of the library.
|
||||||
|
|
||||||
|
The windowBits parameter is the base two logarithm of the window size
|
||||||
|
(the size of the history buffer). It should be in the range 8..15 for this
|
||||||
|
version of the library. Larger values of this parameter result in better
|
||||||
|
compression at the expense of memory usage. The default value is 15 if
|
||||||
|
deflateInit is used instead.
|
||||||
|
|
||||||
|
The memLevel parameter specifies how much memory should be allocated
|
||||||
|
for the internal compression state. memLevel=1 uses minimum memory but
|
||||||
|
is slow and reduces compression ratio; memLevel=9 uses maximum memory
|
||||||
|
for optimal speed. The default value is 8. See zconf.h for total memory
|
||||||
|
usage as a function of windowBits and memLevel.
|
||||||
|
|
||||||
|
The strategy parameter is used to tune the compression algorithm. Use the
|
||||||
|
value Z_DEFAULT_STRATEGY for normal data, Z_FILTERED for data produced by a
|
||||||
|
filter (or predictor), or Z_HUFFMAN_ONLY to force Huffman encoding only (no
|
||||||
|
string match). Filtered data consists mostly of small values with a
|
||||||
|
somewhat random distribution. In this case, the compression algorithm is
|
||||||
|
tuned to compress them better. The effect of Z_FILTERED is to force more
|
||||||
|
Huffman coding and less string matching; it is somewhat intermediate
|
||||||
|
between Z_DEFAULT and Z_HUFFMAN_ONLY. The strategy parameter only affects
|
||||||
|
the compression ratio but not the correctness of the compressed output even
|
||||||
|
if it is not set appropriately.
|
||||||
|
|
||||||
|
deflateInit2 returns Z_OK if success, Z_MEM_ERROR if there was not enough
|
||||||
|
memory, Z_STREAM_ERROR if a parameter is invalid (such as an invalid
|
||||||
|
method). msg is set to null if there is no error message. deflateInit2 does
|
||||||
|
not perform any compression: this will be done by deflate().
|
||||||
|
*/
|
||||||
|
|
||||||
|
ZEXTERN int ZEXPORT deflateSetDictionary OF((z_streamp strm,
|
||||||
|
const Bytef *dictionary,
|
||||||
|
uInt dictLength));
|
||||||
|
/*
|
||||||
|
Initializes the compression dictionary from the given byte sequence
|
||||||
|
without producing any compressed output. This function must be called
|
||||||
|
immediately after deflateInit, deflateInit2 or deflateReset, before any
|
||||||
|
call of deflate. The compressor and decompressor must use exactly the same
|
||||||
|
dictionary (see inflateSetDictionary).
|
||||||
|
|
||||||
|
The dictionary should consist of strings (byte sequences) that are likely
|
||||||
|
to be encountered later in the data to be compressed, with the most commonly
|
||||||
|
used strings preferably put towards the end of the dictionary. Using a
|
||||||
|
dictionary is most useful when the data to be compressed is short and can be
|
||||||
|
predicted with good accuracy; the data can then be compressed better than
|
||||||
|
with the default empty dictionary.
|
||||||
|
|
||||||
|
Depending on the size of the compression data structures selected by
|
||||||
|
deflateInit or deflateInit2, a part of the dictionary may in effect be
|
||||||
|
discarded, for example if the dictionary is larger than the window size in
|
||||||
|
deflate or deflate2. Thus the strings most likely to be useful should be
|
||||||
|
put at the end of the dictionary, not at the front.
|
||||||
|
|
||||||
|
Upon return of this function, strm->adler is set to the Adler32 value
|
||||||
|
of the dictionary; the decompressor may later use this value to determine
|
||||||
|
which dictionary has been used by the compressor. (The Adler32 value
|
||||||
|
applies to the whole dictionary even if only a subset of the dictionary is
|
||||||
|
actually used by the compressor.)
|
||||||
|
|
||||||
|
deflateSetDictionary returns Z_OK if success, or Z_STREAM_ERROR if a
|
||||||
|
parameter is invalid (such as NULL dictionary) or the stream state is
|
||||||
|
inconsistent (for example if deflate has already been called for this stream
|
||||||
|
or if the compression method is bsort). deflateSetDictionary does not
|
||||||
|
perform any compression: this will be done by deflate().
|
||||||
|
*/
|
||||||
|
|
||||||
|
ZEXTERN int ZEXPORT deflateCopy OF((z_streamp dest,
|
||||||
|
z_streamp source));
|
||||||
|
/*
|
||||||
|
Sets the destination stream as a complete copy of the source stream.
|
||||||
|
|
||||||
|
This function can be useful when several compression strategies will be
|
||||||
|
tried, for example when there are several ways of pre-processing the input
|
||||||
|
data with a filter. The streams that will be discarded should then be freed
|
||||||
|
by calling deflateEnd. Note that deflateCopy duplicates the internal
|
||||||
|
compression state which can be quite large, so this strategy is slow and
|
||||||
|
can consume lots of memory.
|
||||||
|
|
||||||
|
deflateCopy returns Z_OK if success, Z_MEM_ERROR if there was not
|
||||||
|
enough memory, Z_STREAM_ERROR if the source stream state was inconsistent
|
||||||
|
(such as zalloc being NULL). msg is left unchanged in both source and
|
||||||
|
destination.
|
||||||
|
*/
|
||||||
|
|
||||||
|
ZEXTERN int ZEXPORT deflateReset OF((z_streamp strm));
|
||||||
|
/*
|
||||||
|
This function is equivalent to deflateEnd followed by deflateInit,
|
||||||
|
but does not free and reallocate all the internal compression state.
|
||||||
|
The stream will keep the same compression level and any other attributes
|
||||||
|
that may have been set by deflateInit2.
|
||||||
|
|
||||||
|
deflateReset returns Z_OK if success, or Z_STREAM_ERROR if the source
|
||||||
|
stream state was inconsistent (such as zalloc or state being NULL).
|
||||||
|
*/
|
||||||
|
|
||||||
|
ZEXTERN int ZEXPORT deflateParams OF((z_streamp strm,
|
||||||
|
int level,
|
||||||
|
int strategy));
|
||||||
|
/*
|
||||||
|
Dynamically update the compression level and compression strategy. The
|
||||||
|
interpretation of level and strategy is as in deflateInit2. This can be
|
||||||
|
used to switch between compression and straight copy of the input data, or
|
||||||
|
to switch to a different kind of input data requiring a different
|
||||||
|
strategy. If the compression level is changed, the input available so far
|
||||||
|
is compressed with the old level (and may be flushed); the new level will
|
||||||
|
take effect only at the next call of deflate().
|
||||||
|
|
||||||
|
Before the call of deflateParams, the stream state must be set as for
|
||||||
|
a call of deflate(), since the currently available input may have to
|
||||||
|
be compressed and flushed. In particular, strm->avail_out must be non-zero.
|
||||||
|
|
||||||
|
deflateParams returns Z_OK if success, Z_STREAM_ERROR if the source
|
||||||
|
stream state was inconsistent or if a parameter was invalid, Z_BUF_ERROR
|
||||||
|
if strm->avail_out was zero.
|
||||||
|
*/
|
||||||
|
|
||||||
|
/*
|
||||||
|
ZEXTERN int ZEXPORT inflateInit2 OF((z_streamp strm,
|
||||||
|
int windowBits));
|
||||||
|
|
||||||
|
This is another version of inflateInit with an extra parameter. The
|
||||||
|
fields next_in, avail_in, zalloc, zfree and opaque must be initialized
|
||||||
|
before by the caller.
|
||||||
|
|
||||||
|
The windowBits parameter is the base two logarithm of the maximum window
|
||||||
|
size (the size of the history buffer). It should be in the range 8..15 for
|
||||||
|
this version of the library. The default value is 15 if inflateInit is used
|
||||||
|
instead. If a compressed stream with a larger window size is given as
|
||||||
|
input, inflate() will return with the error code Z_DATA_ERROR instead of
|
||||||
|
trying to allocate a larger window.
|
||||||
|
|
||||||
|
inflateInit2 returns Z_OK if success, Z_MEM_ERROR if there was not enough
|
||||||
|
memory, Z_STREAM_ERROR if a parameter is invalid (such as a negative
|
||||||
|
memLevel). msg is set to null if there is no error message. inflateInit2
|
||||||
|
does not perform any decompression apart from reading the zlib header if
|
||||||
|
present: this will be done by inflate(). (So next_in and avail_in may be
|
||||||
|
modified, but next_out and avail_out are unchanged.)
|
||||||
|
*/
|
||||||
|
|
||||||
|
ZEXTERN int ZEXPORT inflateSetDictionary OF((z_streamp strm,
|
||||||
|
const Bytef *dictionary,
|
||||||
|
uInt dictLength));
|
||||||
|
/*
|
||||||
|
Initializes the decompression dictionary from the given uncompressed byte
|
||||||
|
sequence. This function must be called immediately after a call of inflate
|
||||||
|
if this call returned Z_NEED_DICT. The dictionary chosen by the compressor
|
||||||
|
can be determined from the Adler32 value returned by this call of
|
||||||
|
inflate. The compressor and decompressor must use exactly the same
|
||||||
|
dictionary (see deflateSetDictionary).
|
||||||
|
|
||||||
|
inflateSetDictionary returns Z_OK if success, Z_STREAM_ERROR if a
|
||||||
|
parameter is invalid (such as NULL dictionary) or the stream state is
|
||||||
|
inconsistent, Z_DATA_ERROR if the given dictionary doesn't match the
|
||||||
|
expected one (incorrect Adler32 value). inflateSetDictionary does not
|
||||||
|
perform any decompression: this will be done by subsequent calls of
|
||||||
|
inflate().
|
||||||
|
*/
|
||||||
|
|
||||||
|
ZEXTERN int ZEXPORT inflateSync OF((z_streamp strm));
|
||||||
|
/*
|
||||||
|
Skips invalid compressed data until a full flush point (see above the
|
||||||
|
description of deflate with Z_FULL_FLUSH) can be found, or until all
|
||||||
|
available input is skipped. No output is provided.
|
||||||
|
|
||||||
|
inflateSync returns Z_OK if a full flush point has been found, Z_BUF_ERROR
|
||||||
|
if no more input was provided, Z_DATA_ERROR if no flush point has been found,
|
||||||
|
or Z_STREAM_ERROR if the stream structure was inconsistent. In the success
|
||||||
|
case, the application may save the current current value of total_in which
|
||||||
|
indicates where valid compressed data was found. In the error case, the
|
||||||
|
application may repeatedly call inflateSync, providing more input each time,
|
||||||
|
until success or end of the input data.
|
||||||
|
*/
|
||||||
|
|
||||||
|
ZEXTERN int ZEXPORT inflateReset OF((z_streamp strm));
|
||||||
|
/*
|
||||||
|
This function is equivalent to inflateEnd followed by inflateInit,
|
||||||
|
but does not free and reallocate all the internal decompression state.
|
||||||
|
The stream will keep attributes that may have been set by inflateInit2.
|
||||||
|
|
||||||
|
inflateReset returns Z_OK if success, or Z_STREAM_ERROR if the source
|
||||||
|
stream state was inconsistent (such as zalloc or state being NULL).
|
||||||
|
*/
|
||||||
|
|
||||||
|
|
||||||
|
/* utility functions */
|
||||||
|
|
||||||
|
/*
|
||||||
|
The following utility functions are implemented on top of the
|
||||||
|
basic stream-oriented functions. To simplify the interface, some
|
||||||
|
default options are assumed (compression level and memory usage,
|
||||||
|
standard memory allocation functions). The source code of these
|
||||||
|
utility functions can easily be modified if you need special options.
|
||||||
|
*/
|
||||||
|
|
||||||
|
ZEXTERN int ZEXPORT compress OF((Bytef *dest, uLongf *destLen,
|
||||||
|
const Bytef *source, uLong sourceLen));
|
||||||
|
/*
|
||||||
|
Compresses the source buffer into the destination buffer. sourceLen is
|
||||||
|
the byte length of the source buffer. Upon entry, destLen is the total
|
||||||
|
size of the destination buffer, which must be at least 0.1% larger than
|
||||||
|
sourceLen plus 12 bytes. Upon exit, destLen is the actual size of the
|
||||||
|
compressed buffer.
|
||||||
|
This function can be used to compress a whole file at once if the
|
||||||
|
input file is mmap'ed.
|
||||||
|
compress returns Z_OK if success, Z_MEM_ERROR if there was not
|
||||||
|
enough memory, Z_BUF_ERROR if there was not enough room in the output
|
||||||
|
buffer.
|
||||||
|
*/
|
||||||
|
|
||||||
|
ZEXTERN int ZEXPORT compress2 OF((Bytef *dest, uLongf *destLen,
|
||||||
|
const Bytef *source, uLong sourceLen,
|
||||||
|
int level));
|
||||||
|
/*
|
||||||
|
Compresses the source buffer into the destination buffer. The level
|
||||||
|
parameter has the same meaning as in deflateInit. sourceLen is the byte
|
||||||
|
length of the source buffer. Upon entry, destLen is the total size of the
|
||||||
|
destination buffer, which must be at least 0.1% larger than sourceLen plus
|
||||||
|
12 bytes. Upon exit, destLen is the actual size of the compressed buffer.
|
||||||
|
|
||||||
|
compress2 returns Z_OK if success, Z_MEM_ERROR if there was not enough
|
||||||
|
memory, Z_BUF_ERROR if there was not enough room in the output buffer,
|
||||||
|
Z_STREAM_ERROR if the level parameter is invalid.
|
||||||
|
*/
|
||||||
|
|
||||||
|
ZEXTERN int ZEXPORT uncompress OF((Bytef *dest, uLongf *destLen,
|
||||||
|
const Bytef *source, uLong sourceLen));
|
||||||
|
/*
|
||||||
|
Decompresses the source buffer into the destination buffer. sourceLen is
|
||||||
|
the byte length of the source buffer. Upon entry, destLen is the total
|
||||||
|
size of the destination buffer, which must be large enough to hold the
|
||||||
|
entire uncompressed data. (The size of the uncompressed data must have
|
||||||
|
been saved previously by the compressor and transmitted to the decompressor
|
||||||
|
by some mechanism outside the scope of this compression library.)
|
||||||
|
Upon exit, destLen is the actual size of the compressed buffer.
|
||||||
|
This function can be used to decompress a whole file at once if the
|
||||||
|
input file is mmap'ed.
|
||||||
|
|
||||||
|
uncompress returns Z_OK if success, Z_MEM_ERROR if there was not
|
||||||
|
enough memory, Z_BUF_ERROR if there was not enough room in the output
|
||||||
|
buffer, or Z_DATA_ERROR if the input data was corrupted.
|
||||||
|
*/
|
||||||
|
|
||||||
|
|
||||||
|
typedef voidp gzFile;
|
||||||
|
|
||||||
|
ZEXTERN gzFile ZEXPORT gzopen OF((const char *path, const char *mode));
|
||||||
|
/*
|
||||||
|
Opens a gzip (.gz) file for reading or writing. The mode parameter
|
||||||
|
is as in fopen ("rb" or "wb") but can also include a compression level
|
||||||
|
("wb9") or a strategy: 'f' for filtered data as in "wb6f", 'h' for
|
||||||
|
Huffman only compression as in "wb1h". (See the description
|
||||||
|
of deflateInit2 for more information about the strategy parameter.)
|
||||||
|
|
||||||
|
gzopen can be used to read a file which is not in gzip format; in this
|
||||||
|
case gzread will directly read from the file without decompression.
|
||||||
|
|
||||||
|
gzopen returns NULL if the file could not be opened or if there was
|
||||||
|
insufficient memory to allocate the (de)compression state; errno
|
||||||
|
can be checked to distinguish the two cases (if errno is zero, the
|
||||||
|
zlib error is Z_MEM_ERROR). */
|
||||||
|
|
||||||
|
ZEXTERN gzFile ZEXPORT gzdopen OF((int fd, const char *mode));
|
||||||
|
/*
|
||||||
|
gzdopen() associates a gzFile with the file descriptor fd. File
|
||||||
|
descriptors are obtained from calls like open, dup, creat, pipe or
|
||||||
|
fileno (in the file has been previously opened with fopen).
|
||||||
|
The mode parameter is as in gzopen.
|
||||||
|
The next call of gzclose on the returned gzFile will also close the
|
||||||
|
file descriptor fd, just like fclose(fdopen(fd), mode) closes the file
|
||||||
|
descriptor fd. If you want to keep fd open, use gzdopen(dup(fd), mode).
|
||||||
|
gzdopen returns NULL if there was insufficient memory to allocate
|
||||||
|
the (de)compression state.
|
||||||
|
*/
|
||||||
|
|
||||||
|
ZEXTERN int ZEXPORT gzsetparams OF((gzFile file, int level, int strategy));
|
||||||
|
/*
|
||||||
|
Dynamically update the compression level or strategy. See the description
|
||||||
|
of deflateInit2 for the meaning of these parameters.
|
||||||
|
gzsetparams returns Z_OK if success, or Z_STREAM_ERROR if the file was not
|
||||||
|
opened for writing.
|
||||||
|
*/
|
||||||
|
|
||||||
|
ZEXTERN int ZEXPORT gzread OF((gzFile file, voidp buf, unsigned len));
|
||||||
|
/*
|
||||||
|
Reads the given number of uncompressed bytes from the compressed file.
|
||||||
|
If the input file was not in gzip format, gzread copies the given number
|
||||||
|
of bytes into the buffer.
|
||||||
|
gzread returns the number of uncompressed bytes actually read (0 for
|
||||||
|
end of file, -1 for error). */
|
||||||
|
|
||||||
|
ZEXTERN int ZEXPORT gzwrite OF((gzFile file,
|
||||||
|
const voidp buf, unsigned len));
|
||||||
|
/*
|
||||||
|
Writes the given number of uncompressed bytes into the compressed file.
|
||||||
|
gzwrite returns the number of uncompressed bytes actually written
|
||||||
|
(0 in case of error).
|
||||||
|
*/
|
||||||
|
|
||||||
|
ZEXTERN int ZEXPORTVA gzprintf OF((gzFile file, const char *format, ...));
|
||||||
|
/*
|
||||||
|
Converts, formats, and writes the args to the compressed file under
|
||||||
|
control of the format string, as in fprintf. gzprintf returns the number of
|
||||||
|
uncompressed bytes actually written (0 in case of error).
|
||||||
|
*/
|
||||||
|
|
||||||
|
ZEXTERN int ZEXPORT gzputs OF((gzFile file, const char *s));
|
||||||
|
/*
|
||||||
|
Writes the given null-terminated string to the compressed file, excluding
|
||||||
|
the terminating null character.
|
||||||
|
gzputs returns the number of characters written, or -1 in case of error.
|
||||||
|
*/
|
||||||
|
|
||||||
|
ZEXTERN char * ZEXPORT gzgets OF((gzFile file, char *buf, int len));
|
||||||
|
/*
|
||||||
|
Reads bytes from the compressed file until len-1 characters are read, or
|
||||||
|
a newline character is read and transferred to buf, or an end-of-file
|
||||||
|
condition is encountered. The string is then terminated with a null
|
||||||
|
character.
|
||||||
|
gzgets returns buf, or Z_NULL in case of error.
|
||||||
|
*/
|
||||||
|
|
||||||
|
ZEXTERN int ZEXPORT gzputc OF((gzFile file, int c));
|
||||||
|
/*
|
||||||
|
Writes c, converted to an unsigned char, into the compressed file.
|
||||||
|
gzputc returns the value that was written, or -1 in case of error.
|
||||||
|
*/
|
||||||
|
|
||||||
|
ZEXTERN int ZEXPORT gzgetc OF((gzFile file));
|
||||||
|
/*
|
||||||
|
Reads one byte from the compressed file. gzgetc returns this byte
|
||||||
|
or -1 in case of end of file or error.
|
||||||
|
*/
|
||||||
|
|
||||||
|
ZEXTERN int ZEXPORT gzflush OF((gzFile file, int flush));
|
||||||
|
/*
|
||||||
|
Flushes all pending output into the compressed file. The parameter
|
||||||
|
flush is as in the deflate() function. The return value is the zlib
|
||||||
|
error number (see function gzerror below). gzflush returns Z_OK if
|
||||||
|
the flush parameter is Z_FINISH and all output could be flushed.
|
||||||
|
gzflush should be called only when strictly necessary because it can
|
||||||
|
degrade compression.
|
||||||
|
*/
|
||||||
|
|
||||||
|
ZEXTERN z_off_t ZEXPORT gzseek OF((gzFile file,
|
||||||
|
z_off_t offset, int whence));
|
||||||
|
/*
|
||||||
|
Sets the starting position for the next gzread or gzwrite on the
|
||||||
|
given compressed file. The offset represents a number of bytes in the
|
||||||
|
uncompressed data stream. The whence parameter is defined as in lseek(2);
|
||||||
|
the value SEEK_END is not supported.
|
||||||
|
If the file is opened for reading, this function is emulated but can be
|
||||||
|
extremely slow. If the file is opened for writing, only forward seeks are
|
||||||
|
supported; gzseek then compresses a sequence of zeroes up to the new
|
||||||
|
starting position.
|
||||||
|
|
||||||
|
gzseek returns the resulting offset location as measured in bytes from
|
||||||
|
the beginning of the uncompressed stream, or -1 in case of error, in
|
||||||
|
particular if the file is opened for writing and the new starting position
|
||||||
|
would be before the current position.
|
||||||
|
*/
|
||||||
|
|
||||||
|
ZEXTERN int ZEXPORT gzrewind OF((gzFile file));
|
||||||
|
/*
|
||||||
|
Rewinds the given file. This function is supported only for reading.
|
||||||
|
|
||||||
|
gzrewind(file) is equivalent to (int)gzseek(file, 0L, SEEK_SET)
|
||||||
|
*/
|
||||||
|
|
||||||
|
ZEXTERN z_off_t ZEXPORT gztell OF((gzFile file));
|
||||||
|
/*
|
||||||
|
Returns the starting position for the next gzread or gzwrite on the
|
||||||
|
given compressed file. This position represents a number of bytes in the
|
||||||
|
uncompressed data stream.
|
||||||
|
|
||||||
|
gztell(file) is equivalent to gzseek(file, 0L, SEEK_CUR)
|
||||||
|
*/
|
||||||
|
|
||||||
|
ZEXTERN int ZEXPORT gzeof OF((gzFile file));
|
||||||
|
/*
|
||||||
|
Returns 1 when EOF has previously been detected reading the given
|
||||||
|
input stream, otherwise zero.
|
||||||
|
*/
|
||||||
|
|
||||||
|
ZEXTERN int ZEXPORT gzclose OF((gzFile file));
|
||||||
|
/*
|
||||||
|
Flushes all pending output if necessary, closes the compressed file
|
||||||
|
and deallocates all the (de)compression state. The return value is the zlib
|
||||||
|
error number (see function gzerror below).
|
||||||
|
*/
|
||||||
|
|
||||||
|
ZEXTERN const char * ZEXPORT gzerror OF((gzFile file, int *errnum));
|
||||||
|
/*
|
||||||
|
Returns the error message for the last error which occurred on the
|
||||||
|
given compressed file. errnum is set to zlib error number. If an
|
||||||
|
error occurred in the file system and not in the compression library,
|
||||||
|
errnum is set to Z_ERRNO and the application may consult errno
|
||||||
|
to get the exact error code.
|
||||||
|
*/
|
||||||
|
|
||||||
|
/* checksum functions */
|
||||||
|
|
||||||
|
/*
|
||||||
|
These functions are not related to compression but are exported
|
||||||
|
anyway because they might be useful in applications using the
|
||||||
|
compression library.
|
||||||
|
*/
|
||||||
|
|
||||||
|
ZEXTERN uLong ZEXPORT adler32 OF((uLong adler, const Bytef *buf, uInt len));
|
||||||
|
|
||||||
|
/*
|
||||||
|
Update a running Adler-32 checksum with the bytes buf[0..len-1] and
|
||||||
|
return the updated checksum. If buf is NULL, this function returns
|
||||||
|
the required initial value for the checksum.
|
||||||
|
An Adler-32 checksum is almost as reliable as a CRC32 but can be computed
|
||||||
|
much faster. Usage example:
|
||||||
|
|
||||||
|
uLong adler = adler32(0L, Z_NULL, 0);
|
||||||
|
|
||||||
|
while (read_buffer(buffer, length) != EOF) {
|
||||||
|
adler = adler32(adler, buffer, length);
|
||||||
|
}
|
||||||
|
if (adler != original_adler) error();
|
||||||
|
*/
|
||||||
|
|
||||||
|
ZEXTERN uLong ZEXPORT crc32 OF((uLong crc, const Bytef *buf, uInt len));
|
||||||
|
/*
|
||||||
|
Update a running crc with the bytes buf[0..len-1] and return the updated
|
||||||
|
crc. If buf is NULL, this function returns the required initial value
|
||||||
|
for the crc. Pre- and post-conditioning (one's complement) is performed
|
||||||
|
within this function so it shouldn't be done by the application.
|
||||||
|
Usage example:
|
||||||
|
|
||||||
|
uLong crc = crc32(0L, Z_NULL, 0);
|
||||||
|
|
||||||
|
while (read_buffer(buffer, length) != EOF) {
|
||||||
|
crc = crc32(crc, buffer, length);
|
||||||
|
}
|
||||||
|
if (crc != original_crc) error();
|
||||||
|
*/
|
||||||
|
|
||||||
|
|
||||||
|
/* various hacks, don't look :) */
|
||||||
|
|
||||||
|
/* deflateInit and inflateInit are macros to allow checking the zlib version
|
||||||
|
* and the compiler's view of z_stream:
|
||||||
|
*/
|
||||||
|
ZEXTERN int ZEXPORT deflateInit_ OF((z_streamp strm, int level,
|
||||||
|
const char *version, int stream_size));
|
||||||
|
ZEXTERN int ZEXPORT inflateInit_ OF((z_streamp strm,
|
||||||
|
const char *version, int stream_size));
|
||||||
|
ZEXTERN int ZEXPORT deflateInit2_ OF((z_streamp strm, int level, int method,
|
||||||
|
int windowBits, int memLevel,
|
||||||
|
int strategy, const char *version,
|
||||||
|
int stream_size));
|
||||||
|
ZEXTERN int ZEXPORT inflateInit2_ OF((z_streamp strm, int windowBits,
|
||||||
|
const char *version, int stream_size));
|
||||||
|
#define deflateInit(strm, level) \
|
||||||
|
deflateInit_((strm), (level), ZLIB_VERSION, sizeof(z_stream))
|
||||||
|
#define inflateInit(strm) \
|
||||||
|
inflateInit_((strm), ZLIB_VERSION, sizeof(z_stream))
|
||||||
|
#define deflateInit2(strm, level, method, windowBits, memLevel, strategy) \
|
||||||
|
deflateInit2_((strm),(level),(method),(windowBits),(memLevel),\
|
||||||
|
(strategy), ZLIB_VERSION, sizeof(z_stream))
|
||||||
|
#define inflateInit2(strm, windowBits) \
|
||||||
|
inflateInit2_((strm), (windowBits), ZLIB_VERSION, sizeof(z_stream))
|
||||||
|
|
||||||
|
|
||||||
|
#if !defined(_Z_UTIL_H) && !defined(NO_DUMMY_DECL)
|
||||||
|
struct internal_state {int dummy;}; /* hack for buggy compilers */
|
||||||
|
#endif
|
||||||
|
|
||||||
|
ZEXTERN const char * ZEXPORT zError OF((int err));
|
||||||
|
ZEXTERN int ZEXPORT inflateSyncPoint OF((z_streamp z));
|
||||||
|
ZEXTERN const uLongf * ZEXPORT get_crc_table OF((void));
|
||||||
|
|
||||||
|
#ifdef __cplusplus
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#endif /* _ZLIB_H */
|
|
@ -0,0 +1,72 @@
|
||||||
|
//Microsoft Developer Studio generated resource script.
|
||||||
|
//
|
||||||
|
#include "resource.h"
|
||||||
|
|
||||||
|
#define APSTUDIO_READONLY_SYMBOLS
|
||||||
|
/////////////////////////////////////////////////////////////////////////////
|
||||||
|
//
|
||||||
|
// Generated from the TEXTINCLUDE 2 resource.
|
||||||
|
//
|
||||||
|
#include "afxres.h"
|
||||||
|
|
||||||
|
/////////////////////////////////////////////////////////////////////////////
|
||||||
|
#undef APSTUDIO_READONLY_SYMBOLS
|
||||||
|
|
||||||
|
/////////////////////////////////////////////////////////////////////////////
|
||||||
|
// English (U.S.) resources
|
||||||
|
|
||||||
|
#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENU)
|
||||||
|
#ifdef _WIN32
|
||||||
|
LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US
|
||||||
|
#pragma code_page(1252)
|
||||||
|
#endif //_WIN32
|
||||||
|
|
||||||
|
/////////////////////////////////////////////////////////////////////////////
|
||||||
|
//
|
||||||
|
// Icon
|
||||||
|
//
|
||||||
|
|
||||||
|
// Icon with lowest ID value placed first to ensure application icon
|
||||||
|
// remains consistent on all systems.
|
||||||
|
IDI_ICON1 ICON DISCARDABLE "icon1.ico"
|
||||||
|
|
||||||
|
#ifdef APSTUDIO_INVOKED
|
||||||
|
/////////////////////////////////////////////////////////////////////////////
|
||||||
|
//
|
||||||
|
// TEXTINCLUDE
|
||||||
|
//
|
||||||
|
|
||||||
|
1 TEXTINCLUDE DISCARDABLE
|
||||||
|
BEGIN
|
||||||
|
"resource.h\0"
|
||||||
|
END
|
||||||
|
|
||||||
|
2 TEXTINCLUDE DISCARDABLE
|
||||||
|
BEGIN
|
||||||
|
"#include ""afxres.h""\r\n"
|
||||||
|
"\0"
|
||||||
|
END
|
||||||
|
|
||||||
|
3 TEXTINCLUDE DISCARDABLE
|
||||||
|
BEGIN
|
||||||
|
"\r\n"
|
||||||
|
"\0"
|
||||||
|
END
|
||||||
|
|
||||||
|
#endif // APSTUDIO_INVOKED
|
||||||
|
|
||||||
|
#endif // English (U.S.) resources
|
||||||
|
/////////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
#ifndef APSTUDIO_INVOKED
|
||||||
|
/////////////////////////////////////////////////////////////////////////////
|
||||||
|
//
|
||||||
|
// Generated from the TEXTINCLUDE 3 resource.
|
||||||
|
//
|
||||||
|
|
||||||
|
|
||||||
|
/////////////////////////////////////////////////////////////////////////////
|
||||||
|
#endif // not APSTUDIO_INVOKED
|
||||||
|
|
|
@ -0,0 +1,178 @@
|
||||||
|
# Microsoft Developer Studio Project File - Name="bcrypt" - Package Owner=<4>
|
||||||
|
# Microsoft Developer Studio Generated Build File, Format Version 6.00
|
||||||
|
# ** DO NOT EDIT **
|
||||||
|
|
||||||
|
# TARGTYPE "Win32 (x86) Console Application" 0x0103
|
||||||
|
|
||||||
|
CFG=bcrypt - Win32 Debug
|
||||||
|
!MESSAGE This is not a valid makefile. To build this project using NMAKE,
|
||||||
|
!MESSAGE use the Export Makefile command and run
|
||||||
|
!MESSAGE
|
||||||
|
!MESSAGE NMAKE /f "bcrypt.mak".
|
||||||
|
!MESSAGE
|
||||||
|
!MESSAGE You can specify a configuration when running NMAKE
|
||||||
|
!MESSAGE by defining the macro CFG on the command line. For example:
|
||||||
|
!MESSAGE
|
||||||
|
!MESSAGE NMAKE /f "bcrypt.mak" CFG="bcrypt - Win32 Debug"
|
||||||
|
!MESSAGE
|
||||||
|
!MESSAGE Possible choices for configuration are:
|
||||||
|
!MESSAGE
|
||||||
|
!MESSAGE "bcrypt - Win32 Release" (based on "Win32 (x86) Console Application")
|
||||||
|
!MESSAGE "bcrypt - Win32 Debug" (based on "Win32 (x86) Console Application")
|
||||||
|
!MESSAGE
|
||||||
|
|
||||||
|
# Begin Project
|
||||||
|
# PROP AllowPerConfigDependencies 0
|
||||||
|
# PROP Scc_ProjName ""
|
||||||
|
# PROP Scc_LocalPath ""
|
||||||
|
CPP=cl.exe
|
||||||
|
RSC=rc.exe
|
||||||
|
|
||||||
|
!IF "$(CFG)" == "bcrypt - Win32 Release"
|
||||||
|
|
||||||
|
# PROP BASE Use_MFC 0
|
||||||
|
# PROP BASE Use_Debug_Libraries 0
|
||||||
|
# PROP BASE Output_Dir "Release"
|
||||||
|
# PROP BASE Intermediate_Dir "Release"
|
||||||
|
# PROP BASE Target_Dir ""
|
||||||
|
# PROP Use_MFC 0
|
||||||
|
# PROP Use_Debug_Libraries 0
|
||||||
|
# PROP Output_Dir "Release"
|
||||||
|
# PROP Intermediate_Dir "Release"
|
||||||
|
# PROP Ignore_Export_Lib 0
|
||||||
|
# PROP Target_Dir ""
|
||||||
|
# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
|
||||||
|
# ADD CPP /nologo /W3 /GX /O2 /I "..\\" /I ".\DLLs" /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
|
||||||
|
# ADD BASE RSC /l 0x409 /d "NDEBUG"
|
||||||
|
# ADD RSC /l 0x409 /d "NDEBUG"
|
||||||
|
BSC32=bscmake.exe
|
||||||
|
# ADD BASE BSC32 /nologo
|
||||||
|
# ADD BSC32 /nologo
|
||||||
|
LINK32=link.exe
|
||||||
|
# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386
|
||||||
|
# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 /libpath:"..\\" /libpath:".\DLLs"
|
||||||
|
|
||||||
|
!ELSEIF "$(CFG)" == "bcrypt - Win32 Debug"
|
||||||
|
|
||||||
|
# PROP BASE Use_MFC 0
|
||||||
|
# PROP BASE Use_Debug_Libraries 1
|
||||||
|
# PROP BASE Output_Dir "Debug"
|
||||||
|
# PROP BASE Intermediate_Dir "Debug"
|
||||||
|
# PROP BASE Target_Dir ""
|
||||||
|
# PROP Use_MFC 0
|
||||||
|
# PROP Use_Debug_Libraries 1
|
||||||
|
# PROP Output_Dir "Debug"
|
||||||
|
# PROP Intermediate_Dir "Debug"
|
||||||
|
# PROP Ignore_Export_Lib 0
|
||||||
|
# PROP Target_Dir ""
|
||||||
|
# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c
|
||||||
|
# ADD CPP /nologo /W3 /Gm /GX /ZI /Od /I "..\\" /I ".\DLLs" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c
|
||||||
|
# ADD BASE RSC /l 0x409 /d "_DEBUG"
|
||||||
|
# ADD RSC /l 0x409 /d "_DEBUG"
|
||||||
|
BSC32=bscmake.exe
|
||||||
|
# ADD BASE BSC32 /nologo
|
||||||
|
# ADD BSC32 /nologo
|
||||||
|
LINK32=link.exe
|
||||||
|
# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept
|
||||||
|
# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept /libpath:"..\\" /libpath:".\DLLs"
|
||||||
|
|
||||||
|
!ENDIF
|
||||||
|
|
||||||
|
# Begin Target
|
||||||
|
|
||||||
|
# Name "bcrypt - Win32 Release"
|
||||||
|
# Name "bcrypt - Win32 Debug"
|
||||||
|
# Begin Group "Source Files"
|
||||||
|
|
||||||
|
# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat"
|
||||||
|
# Begin Source File
|
||||||
|
|
||||||
|
SOURCE=..\blowfish.c
|
||||||
|
# End Source File
|
||||||
|
# Begin Source File
|
||||||
|
|
||||||
|
SOURCE=..\endian.c
|
||||||
|
# End Source File
|
||||||
|
# Begin Source File
|
||||||
|
|
||||||
|
SOURCE=.\getopt.c
|
||||||
|
# End Source File
|
||||||
|
# Begin Source File
|
||||||
|
|
||||||
|
SOURCE=..\keys.c
|
||||||
|
# End Source File
|
||||||
|
# Begin Source File
|
||||||
|
|
||||||
|
SOURCE=..\main.c
|
||||||
|
# End Source File
|
||||||
|
# Begin Source File
|
||||||
|
|
||||||
|
SOURCE=..\rwfile.c
|
||||||
|
# End Source File
|
||||||
|
# Begin Source File
|
||||||
|
|
||||||
|
SOURCE=..\wrapbf.c
|
||||||
|
# End Source File
|
||||||
|
# Begin Source File
|
||||||
|
|
||||||
|
SOURCE=..\wrapzl.c
|
||||||
|
# End Source File
|
||||||
|
# End Group
|
||||||
|
# Begin Group "Header Files"
|
||||||
|
|
||||||
|
# PROP Default_Filter "h;hpp;hxx;hm;inl"
|
||||||
|
# Begin Source File
|
||||||
|
|
||||||
|
SOURCE=..\blowfish.h
|
||||||
|
# End Source File
|
||||||
|
# Begin Source File
|
||||||
|
|
||||||
|
SOURCE=..\config.h
|
||||||
|
# End Source File
|
||||||
|
# Begin Source File
|
||||||
|
|
||||||
|
SOURCE=..\defines.h
|
||||||
|
# End Source File
|
||||||
|
# Begin Source File
|
||||||
|
|
||||||
|
SOURCE=..\functions.h
|
||||||
|
# End Source File
|
||||||
|
# Begin Source File
|
||||||
|
|
||||||
|
SOURCE=.\getopt.h
|
||||||
|
# End Source File
|
||||||
|
# Begin Source File
|
||||||
|
|
||||||
|
SOURCE=..\includes.h
|
||||||
|
# End Source File
|
||||||
|
# End Group
|
||||||
|
# Begin Group "Resource Files"
|
||||||
|
|
||||||
|
# PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe"
|
||||||
|
# Begin Source File
|
||||||
|
|
||||||
|
SOURCE=.\icon1.ico
|
||||||
|
# End Source File
|
||||||
|
# Begin Source File
|
||||||
|
|
||||||
|
SOURCE=.\Script1.rc
|
||||||
|
# End Source File
|
||||||
|
# Begin Source File
|
||||||
|
|
||||||
|
SOURCE=.\DLLs\libz.lib
|
||||||
|
# End Source File
|
||||||
|
# End Group
|
||||||
|
# Begin Source File
|
||||||
|
|
||||||
|
SOURCE=..\License
|
||||||
|
# End Source File
|
||||||
|
# Begin Source File
|
||||||
|
|
||||||
|
SOURCE=..\Readme
|
||||||
|
# End Source File
|
||||||
|
# Begin Source File
|
||||||
|
|
||||||
|
SOURCE=".\readme-win32.txt"
|
||||||
|
# End Source File
|
||||||
|
# End Target
|
||||||
|
# End Project
|
|
@ -0,0 +1,29 @@
|
||||||
|
Microsoft Developer Studio Workspace File, Format Version 6.00
|
||||||
|
# WARNING: DO NOT EDIT OR DELETE THIS WORKSPACE FILE!
|
||||||
|
|
||||||
|
###############################################################################
|
||||||
|
|
||||||
|
Project: "bcrypt"=.\bcrypt.dsp - Package Owner=<4>
|
||||||
|
|
||||||
|
Package=<5>
|
||||||
|
{{{
|
||||||
|
}}}
|
||||||
|
|
||||||
|
Package=<4>
|
||||||
|
{{{
|
||||||
|
}}}
|
||||||
|
|
||||||
|
###############################################################################
|
||||||
|
|
||||||
|
Global:
|
||||||
|
|
||||||
|
Package=<5>
|
||||||
|
{{{
|
||||||
|
}}}
|
||||||
|
|
||||||
|
Package=<3>
|
||||||
|
{{{
|
||||||
|
}}}
|
||||||
|
|
||||||
|
###############################################################################
|
||||||
|
|
|
@ -0,0 +1,177 @@
|
||||||
|
//GETOPT.C
|
||||||
|
/*****************************************************************************
|
||||||
|
*
|
||||||
|
* MODULE NAME : GETOPT.C
|
||||||
|
*
|
||||||
|
* COPYRIGHTS:
|
||||||
|
* This module contains code made available by IBM
|
||||||
|
* Corporation on an AS IS basis. Any one receiving the
|
||||||
|
* module is considered to be licensed under IBM copyrights
|
||||||
|
* to use the IBM-provided source code in any way he or she
|
||||||
|
* deems fit, including copying it, compiling it, modifying
|
||||||
|
* it, and redistributing it, with or without
|
||||||
|
* modifications. No license under any IBM patents or
|
||||||
|
* patent applications is to be implied from this copyright
|
||||||
|
* license.
|
||||||
|
*
|
||||||
|
* A user of the module should understand that IBM cannot
|
||||||
|
* provide technical support for the module and will not be
|
||||||
|
* responsible for any consequences of use of the program.
|
||||||
|
* * Any notices, including this one, are not to be removed
|
||||||
|
* from the module without the prior written consent of
|
||||||
|
* IBM.
|
||||||
|
*
|
||||||
|
* AUTHOR: Original author:
|
||||||
|
* G. R. Blair (BOBBLAIR at AUSVM1)
|
||||||
|
* Internet: bobblair@bobblair.austin.ibm.com
|
||||||
|
*
|
||||||
|
* Extensively revised by:
|
||||||
|
* John Q. Walker II, Ph.D. (JOHHQ at RALVM6)
|
||||||
|
* Internet: johnq@ralvm6.vnet.ibm.com
|
||||||
|
*
|
||||||
|
*****************************************************************************/
|
||||||
|
|
||||||
|
/******************************************************************************
|
||||||
|
* getopt()
|
||||||
|
*
|
||||||
|
* The getopt() function is a command line parser. It returns the next
|
||||||
|
* option character in argv that matches an option character in opstring.
|
||||||
|
*
|
||||||
|
* The argv argument points to an array of argc+1 elements containing argc
|
||||||
|
* pointers to character strings followed by a null pointer.
|
||||||
|
*
|
||||||
|
* The opstring argument points to a string of option characters; if an
|
||||||
|
* option character is followed by a colon, the option is expected to have
|
||||||
|
* an argument that may or may not be separated from it by white space.
|
||||||
|
* The external variable optarg is set to point to the start of the option
|
||||||
|
* argument on return from getopt().
|
||||||
|
*
|
||||||
|
* The getopt() function places in optind the argv index of the next argument
|
||||||
|
* to be processed. The system initializes the external variable optind to
|
||||||
|
* 1 before the first call to getopt().
|
||||||
|
*
|
||||||
|
* When all options have been processed (that is, up to the first nonoption
|
||||||
|
* argument), getopt() returns EOF. The special option "--" may be used to
|
||||||
|
* delimit the end of the options; EOF will be returned, and "--" will be
|
||||||
|
* skipped.
|
||||||
|
*
|
||||||
|
* The getopt() function returns a question mark (?) when it encounters an
|
||||||
|
* option character not included in opstring. This error message can be
|
||||||
|
* disabled by setting opterr to zero. Otherwise, it returns the option
|
||||||
|
* character that was detected.
|
||||||
|
*
|
||||||
|
* If the special option "--" is detected, or all options have been
|
||||||
|
* processed, EOF is returned.
|
||||||
|
*
|
||||||
|
* Options are marked by either a minus sign (-) or a slash (/).
|
||||||
|
*
|
||||||
|
* No errors are defined.
|
||||||
|
*****************************************************************************/
|
||||||
|
#include <stdio.h> /* for EOF */
|
||||||
|
#include <string.h> /* for strchr() */
|
||||||
|
|
||||||
|
|
||||||
|
/* static (global) variables that are specified as exported by getopt() */
|
||||||
|
char *optarg = NULL; /* pointer to the start of the option argument */
|
||||||
|
int optind = 1; /* number of the next argv[] to be evaluated */
|
||||||
|
int opterr = 1; /* non-zero if a question mark should be returned
|
||||||
|
when a non-valid option character is detected */
|
||||||
|
|
||||||
|
/* handle possible future character set concerns by putting this in a macro */
|
||||||
|
#define _next_char(string) (char)(*(string+1))
|
||||||
|
|
||||||
|
int getopt(int argc, char *argv[], char *opstring)
|
||||||
|
{
|
||||||
|
static char *pIndexPosition = NULL; /* place inside current argv string */
|
||||||
|
char *pArgString = NULL; /* where to start from next */
|
||||||
|
char *pOptString; /* the string in our program */
|
||||||
|
|
||||||
|
|
||||||
|
if (pIndexPosition != NULL) {
|
||||||
|
/* we last left off inside an argv string */
|
||||||
|
if (*(++pIndexPosition)) {
|
||||||
|
/* there is more to come in the most recent argv */
|
||||||
|
pArgString = pIndexPosition;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (pArgString == NULL) {
|
||||||
|
/* we didn't leave off in the middle of an argv string */
|
||||||
|
if (optind >= argc) {
|
||||||
|
/* more command-line arguments than the argument count */
|
||||||
|
pIndexPosition = NULL; /* not in the middle of anything */
|
||||||
|
return EOF; /* used up all command-line arguments */
|
||||||
|
}
|
||||||
|
|
||||||
|
/*---------------------------------------------------------------------
|
||||||
|
* If the next argv[] is not an option, there can be no more options.
|
||||||
|
*-------------------------------------------------------------------*/
|
||||||
|
pArgString = argv[optind++]; /* set this to the next argument ptr */
|
||||||
|
|
||||||
|
if (('/' != *pArgString) && /* doesn't start with a slash or a dash? */
|
||||||
|
('-' != *pArgString)) {
|
||||||
|
--optind; /* point to current arg once we're done */
|
||||||
|
optarg = NULL; /* no argument follows the option */
|
||||||
|
pIndexPosition = NULL; /* not in the middle of anything */
|
||||||
|
return EOF; /* used up all the command-line flags */
|
||||||
|
}
|
||||||
|
|
||||||
|
/* check for special end-of-flags markers */
|
||||||
|
if ((strcmp(pArgString, "-") == 0) ||
|
||||||
|
(strcmp(pArgString, "--") == 0)) {
|
||||||
|
optarg = NULL; /* no argument follows the option */
|
||||||
|
pIndexPosition = NULL; /* not in the middle of anything */
|
||||||
|
return EOF; /* encountered the special flag */
|
||||||
|
}
|
||||||
|
|
||||||
|
pArgString++; /* look past the / or - */
|
||||||
|
}
|
||||||
|
|
||||||
|
if (':' == *pArgString) { /* is it a colon? */
|
||||||
|
/*---------------------------------------------------------------------
|
||||||
|
* Rare case: if opterr is non-zero, return a question mark;
|
||||||
|
* otherwise, just return the colon we're on.
|
||||||
|
*-------------------------------------------------------------------*/
|
||||||
|
return (opterr ? (int)'?' : (int)':');
|
||||||
|
}
|
||||||
|
else if ((pOptString = strchr(opstring, *pArgString)) == 0) {
|
||||||
|
/*---------------------------------------------------------------------
|
||||||
|
* The letter on the command-line wasn't any good.
|
||||||
|
*-------------------------------------------------------------------*/
|
||||||
|
optarg = NULL; /* no argument follows the option */
|
||||||
|
pIndexPosition = NULL; /* not in the middle of anything */
|
||||||
|
return (opterr ? (int)'?' : (int)*pArgString);
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
/*---------------------------------------------------------------------
|
||||||
|
* The letter on the command-line matches one we expect to see
|
||||||
|
*-------------------------------------------------------------------*/
|
||||||
|
if (':' == _next_char(pOptString)) { /* is the next letter a colon? */
|
||||||
|
/* It is a colon. Look for an argument string. */
|
||||||
|
if ('\0' != _next_char(pArgString)) { /* argument in this argv? */
|
||||||
|
optarg = &pArgString[1]; /* Yes, it is */
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
/*-------------------------------------------------------------
|
||||||
|
* The argument string must be in the next argv.
|
||||||
|
* But, what if there is none (bad input from the user)?
|
||||||
|
* In that case, return the letter, and optarg as NULL.
|
||||||
|
*-----------------------------------------------------------*/
|
||||||
|
if (optind < argc)
|
||||||
|
optarg = argv[optind++];
|
||||||
|
else {
|
||||||
|
optarg = NULL;
|
||||||
|
return (opterr ? (int)'?' : (int)*pArgString);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
pIndexPosition = NULL; /* not in the middle of anything */
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
/* it's not a colon, so just return the letter */
|
||||||
|
optarg = NULL; /* no argument follows the option */
|
||||||
|
pIndexPosition = pArgString; /* point to the letter we're on */
|
||||||
|
}
|
||||||
|
return (int)*pArgString; /* return the letter that matched */
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
|
@ -0,0 +1,38 @@
|
||||||
|
/*****************************************************************************
|
||||||
|
*
|
||||||
|
* MODULE NAME : GETOPT.H
|
||||||
|
*
|
||||||
|
* COPYRIGHTS:
|
||||||
|
* This module contains code made available by IBM
|
||||||
|
* Corporation on an AS IS basis. Any one receiving the
|
||||||
|
* module is considered to be licensed under IBM copyrights
|
||||||
|
* to use the IBM-provided source code in any way he or she
|
||||||
|
* deems fit, including copying it, compiling it, modifying
|
||||||
|
* it, and redistributing it, with or without
|
||||||
|
* modifications. No license under any IBM patents or
|
||||||
|
* patent applications is to be implied from this copyright
|
||||||
|
* license.
|
||||||
|
*
|
||||||
|
* A user of the module should understand that IBM cannot
|
||||||
|
* provide technical support for the module and will not be
|
||||||
|
* responsible for any consequences of use of the program.
|
||||||
|
*
|
||||||
|
* Any notices, including this one, are not to be removed
|
||||||
|
* from the module without the prior written consent of
|
||||||
|
* IBM.
|
||||||
|
*
|
||||||
|
* AUTHOR: Original author:
|
||||||
|
* G. R. Blair (BOBBLAIR at AUSVM1)
|
||||||
|
* Internet: bobblair@bobblair.austin.ibm.com
|
||||||
|
*
|
||||||
|
* Extensively revised by:
|
||||||
|
* John Q. Walker II, Ph.D. (JOHHQ at RALVM6)
|
||||||
|
* Internet: johnq@ralvm6.vnet.ibm.com
|
||||||
|
*
|
||||||
|
*****************************************************************************/
|
||||||
|
|
||||||
|
extern char * optarg;
|
||||||
|
extern int optind;
|
||||||
|
|
||||||
|
int getopt ( int argc, char **argv, char *optstring);
|
||||||
|
|
Binary file not shown.
After Width: | Height: | Size: 766 B |
|
@ -0,0 +1,16 @@
|
||||||
|
To run the program, make sure the bcrypt.exe and zlib.dll files are
|
||||||
|
in the same directory. It will also work if zlib.dll is located
|
||||||
|
elsewhere, but still in the path. The win32 native version behaves
|
||||||
|
slightly differently, in that it doesn't hide the passphrase as you
|
||||||
|
type it in. Otherwise, it's functionally identical to Un*x native
|
||||||
|
code.
|
||||||
|
|
||||||
|
ZLib for Win32 obtained from the GnuWin32 project at:
|
||||||
|
http://sourceforge.net/project/showfiles.php?group_id=23617
|
||||||
|
Download zlib-1.1.4-bin.zip to get the .dll.
|
||||||
|
|
||||||
|
If you plan on compiling from source, download zlib-1.1.4-bin.zip to
|
||||||
|
get the .dll, and zlib-1.1.4-lib.zip to get the include files. Place
|
||||||
|
the .dll file in the win32console directory, and everything should
|
||||||
|
work perfectly from within the Visual Studio environment.
|
||||||
|
|
|
@ -0,0 +1,16 @@
|
||||||
|
//{{NO_DEPENDENCIES}}
|
||||||
|
// Microsoft Developer Studio generated include file.
|
||||||
|
// Used by Script1.rc
|
||||||
|
//
|
||||||
|
#define IDI_ICON1 101
|
||||||
|
|
||||||
|
// Next default values for new objects
|
||||||
|
//
|
||||||
|
#ifdef APSTUDIO_INVOKED
|
||||||
|
#ifndef APSTUDIO_READONLY_SYMBOLS
|
||||||
|
#define _APS_NEXT_RESOURCE_VALUE 102
|
||||||
|
#define _APS_NEXT_COMMAND_VALUE 40001
|
||||||
|
#define _APS_NEXT_CONTROL_VALUE 1000
|
||||||
|
#define _APS_NEXT_SYMED_VALUE 101
|
||||||
|
#endif
|
||||||
|
#endif
|
|
@ -0,0 +1,6 @@
|
||||||
|
<?php
|
||||||
|
$b = '$2y$10$hPnrtXL/7lSmwYW5c03XB.6WLaxRRmBUYq8sRxGyExApoTzTjI8mi';
|
||||||
|
$c = '$2y$10$OSHXWhG2UjDkQUzhT1nFTeFnDzoYjPzpO9Uy9736LTkgMAUZyJw9q';
|
||||||
|
var_dump( password_verify('password',$c) );
|
||||||
|
var_dump( password_needs_rehash($c, PASSWORD_BCRYPT, array('cost' => 10) ) );
|
||||||
|
print password_hash('password',PASSWORD_BCRYPT) . PHP_EOL;
|
|
@ -0,0 +1,48 @@
|
||||||
|
cmake_minimum_required(VERSION 3.0)
|
||||||
|
project(hathor)
|
||||||
|
INCLUDE(CheckIncludeFiles)
|
||||||
|
INCLUDE(CheckLibraryExists)
|
||||||
|
include(CheckFunctionExists)
|
||||||
|
|
||||||
|
check_include_files(libintl.h HAVE_LIBINTL_H)
|
||||||
|
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11 -Wall")
|
||||||
|
|
||||||
|
set(Boost_USE_STATIC_LIBS OFF)
|
||||||
|
set(Boost_USE_MULTITHREADED ON)
|
||||||
|
set(Boost_USE_STATIC_RUNTIME OFF)
|
||||||
|
find_package(Boost 1.58.0 COMPONENTS system filesystem)
|
||||||
|
|
||||||
|
if(NOT Boost_FOUND)
|
||||||
|
message( SEND_ERROR "One or more boost libraries were not found. If you have boost installed check that it is version 1.58 or above." )
|
||||||
|
endif()
|
||||||
|
find_package(PkgConfig)
|
||||||
|
pkg_check_modules(TAGLIB23 REQUIRED taglib)
|
||||||
|
#find_package(mysqlcppconn 1.0)
|
||||||
|
#pkg_check_modules(MYSQL QUIET libmysqlcppconn-1.0)
|
||||||
|
#pkg_check_modules(MYSQL REQUIRED mysqlcppconn-1.0)
|
||||||
|
#CHECK_LIBRARY_EXISTS(pipecolors pcprintf "/usr/lib" PIPE)
|
||||||
|
find_library(MYSQLCONNECTORCPP_LIBRARY
|
||||||
|
NAMES
|
||||||
|
mysqlcppconn
|
||||||
|
mysqlcppconn-static
|
||||||
|
HINTS
|
||||||
|
"/usr/lib"
|
||||||
|
PATH_SUFFIXES
|
||||||
|
lib)
|
||||||
|
|
||||||
|
if(NOT MYSQLCONNECTORCPP_LIBRARY)
|
||||||
|
message( SEND_ERROR "Oracle's mysqlconnector lib is required.")
|
||||||
|
else()
|
||||||
|
message(STATUS "Found libmysqlcppconn")
|
||||||
|
endif()
|
||||||
|
|
||||||
|
set(SOURCE_FILES
|
||||||
|
mysql.cc
|
||||||
|
config.cc
|
||||||
|
common.cc
|
||||||
|
scanner.cc
|
||||||
|
3rdparty/crypt_blowfish.c
|
||||||
|
)
|
||||||
|
|
||||||
|
add_executable(scanner ${SOURCE_FILES})
|
||||||
|
TARGET_LINK_LIBRARIES(scanner "-lboost_system -lboost_filesystem -ltag -lmysqlcppconn")
|
|
@ -0,0 +1,340 @@
|
||||||
|
GNU GENERAL PUBLIC LICENSE
|
||||||
|
Version 2, June 1991
|
||||||
|
|
||||||
|
Copyright (C) 1989, 1991 Free Software Foundation, Inc., <http://fsf.org/>
|
||||||
|
51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
||||||
|
Everyone is permitted to copy and distribute verbatim copies
|
||||||
|
of this license document, but changing it is not allowed.
|
||||||
|
|
||||||
|
Preamble
|
||||||
|
|
||||||
|
The licenses for most software are designed to take away your
|
||||||
|
freedom to share and change it. By contrast, the GNU General Public
|
||||||
|
License is intended to guarantee your freedom to share and change free
|
||||||
|
software--to make sure the software is free for all its users. This
|
||||||
|
General Public License applies to most of the Free Software
|
||||||
|
Foundation's software and to any other program whose authors commit to
|
||||||
|
using it. (Some other Free Software Foundation software is covered by
|
||||||
|
the GNU Lesser General Public License instead.) You can apply it to
|
||||||
|
your programs, too.
|
||||||
|
|
||||||
|
When we speak of free software, we are referring to freedom, not
|
||||||
|
price. Our General Public Licenses are designed to make sure that you
|
||||||
|
have the freedom to distribute copies of free software (and charge for
|
||||||
|
this service if you wish), that you receive source code or can get it
|
||||||
|
if you want it, that you can change the software or use pieces of it
|
||||||
|
in new free programs; and that you know you can do these things.
|
||||||
|
|
||||||
|
To protect your rights, we need to make restrictions that forbid
|
||||||
|
anyone to deny you these rights or to ask you to surrender the rights.
|
||||||
|
These restrictions translate to certain responsibilities for you if you
|
||||||
|
distribute copies of the software, or if you modify it.
|
||||||
|
|
||||||
|
For example, if you distribute copies of such a program, whether
|
||||||
|
gratis or for a fee, you must give the recipients all the rights that
|
||||||
|
you have. You must make sure that they, too, receive or can get the
|
||||||
|
source code. And you must show them these terms so they know their
|
||||||
|
rights.
|
||||||
|
|
||||||
|
We protect your rights with two steps: (1) copyright the software, and
|
||||||
|
(2) offer you this license which gives you legal permission to copy,
|
||||||
|
distribute and/or modify the software.
|
||||||
|
|
||||||
|
Also, for each author's protection and ours, we want to make certain
|
||||||
|
that everyone understands that there is no warranty for this free
|
||||||
|
software. If the software is modified by someone else and passed on, we
|
||||||
|
want its recipients to know that what they have is not the original, so
|
||||||
|
that any problems introduced by others will not reflect on the original
|
||||||
|
authors' reputations.
|
||||||
|
|
||||||
|
Finally, any free program is threatened constantly by software
|
||||||
|
patents. We wish to avoid the danger that redistributors of a free
|
||||||
|
program will individually obtain patent licenses, in effect making the
|
||||||
|
program proprietary. To prevent this, we have made it clear that any
|
||||||
|
patent must be licensed for everyone's free use or not licensed at all.
|
||||||
|
|
||||||
|
The precise terms and conditions for copying, distribution and
|
||||||
|
modification follow.
|
||||||
|
|
||||||
|
GNU GENERAL PUBLIC LICENSE
|
||||||
|
TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
|
||||||
|
|
||||||
|
0. This License applies to any program or other work which contains
|
||||||
|
a notice placed by the copyright holder saying it may be distributed
|
||||||
|
under the terms of this General Public License. The "Program", below,
|
||||||
|
refers to any such program or work, and a "work based on the Program"
|
||||||
|
means either the Program or any derivative work under copyright law:
|
||||||
|
that is to say, a work containing the Program or a portion of it,
|
||||||
|
either verbatim or with modifications and/or translated into another
|
||||||
|
language. (Hereinafter, translation is included without limitation in
|
||||||
|
the term "modification".) Each licensee is addressed as "you".
|
||||||
|
|
||||||
|
Activities other than copying, distribution and modification are not
|
||||||
|
covered by this License; they are outside its scope. The act of
|
||||||
|
running the Program is not restricted, and the output from the Program
|
||||||
|
is covered only if its contents constitute a work based on the
|
||||||
|
Program (independent of having been made by running the Program).
|
||||||
|
Whether that is true depends on what the Program does.
|
||||||
|
|
||||||
|
1. You may copy and distribute verbatim copies of the Program's
|
||||||
|
source code as you receive it, in any medium, provided that you
|
||||||
|
conspicuously and appropriately publish on each copy an appropriate
|
||||||
|
copyright notice and disclaimer of warranty; keep intact all the
|
||||||
|
notices that refer to this License and to the absence of any warranty;
|
||||||
|
and give any other recipients of the Program a copy of this License
|
||||||
|
along with the Program.
|
||||||
|
|
||||||
|
You may charge a fee for the physical act of transferring a copy, and
|
||||||
|
you may at your option offer warranty protection in exchange for a fee.
|
||||||
|
|
||||||
|
2. You may modify your copy or copies of the Program or any portion
|
||||||
|
of it, thus forming a work based on the Program, and copy and
|
||||||
|
distribute such modifications or work under the terms of Section 1
|
||||||
|
above, provided that you also meet all of these conditions:
|
||||||
|
|
||||||
|
a) You must cause the modified files to carry prominent notices
|
||||||
|
stating that you changed the files and the date of any change.
|
||||||
|
|
||||||
|
b) You must cause any work that you distribute or publish, that in
|
||||||
|
whole or in part contains or is derived from the Program or any
|
||||||
|
part thereof, to be licensed as a whole at no charge to all third
|
||||||
|
parties under the terms of this License.
|
||||||
|
|
||||||
|
c) If the modified program normally reads commands interactively
|
||||||
|
when run, you must cause it, when started running for such
|
||||||
|
interactive use in the most ordinary way, to print or display an
|
||||||
|
announcement including an appropriate copyright notice and a
|
||||||
|
notice that there is no warranty (or else, saying that you provide
|
||||||
|
a warranty) and that users may redistribute the program under
|
||||||
|
these conditions, and telling the user how to view a copy of this
|
||||||
|
License. (Exception: if the Program itself is interactive but
|
||||||
|
does not normally print such an announcement, your work based on
|
||||||
|
the Program is not required to print an announcement.)
|
||||||
|
|
||||||
|
These requirements apply to the modified work as a whole. If
|
||||||
|
identifiable sections of that work are not derived from the Program,
|
||||||
|
and can be reasonably considered independent and separate works in
|
||||||
|
themselves, then this License, and its terms, do not apply to those
|
||||||
|
sections when you distribute them as separate works. But when you
|
||||||
|
distribute the same sections as part of a whole which is a work based
|
||||||
|
on the Program, the distribution of the whole must be on the terms of
|
||||||
|
this License, whose permissions for other licensees extend to the
|
||||||
|
entire whole, and thus to each and every part regardless of who wrote it.
|
||||||
|
|
||||||
|
Thus, it is not the intent of this section to claim rights or contest
|
||||||
|
your rights to work written entirely by you; rather, the intent is to
|
||||||
|
exercise the right to control the distribution of derivative or
|
||||||
|
collective works based on the Program.
|
||||||
|
|
||||||
|
In addition, mere aggregation of another work not based on the Program
|
||||||
|
with the Program (or with a work based on the Program) on a volume of
|
||||||
|
a storage or distribution medium does not bring the other work under
|
||||||
|
the scope of this License.
|
||||||
|
|
||||||
|
3. You may copy and distribute the Program (or a work based on it,
|
||||||
|
under Section 2) in object code or executable form under the terms of
|
||||||
|
Sections 1 and 2 above provided that you also do one of the following:
|
||||||
|
|
||||||
|
a) Accompany it with the complete corresponding machine-readable
|
||||||
|
source code, which must be distributed under the terms of Sections
|
||||||
|
1 and 2 above on a medium customarily used for software interchange; or,
|
||||||
|
|
||||||
|
b) Accompany it with a written offer, valid for at least three
|
||||||
|
years, to give any third party, for a charge no more than your
|
||||||
|
cost of physically performing source distribution, a complete
|
||||||
|
machine-readable copy of the corresponding source code, to be
|
||||||
|
distributed under the terms of Sections 1 and 2 above on a medium
|
||||||
|
customarily used for software interchange; or,
|
||||||
|
|
||||||
|
c) Accompany it with the information you received as to the offer
|
||||||
|
to distribute corresponding source code. (This alternative is
|
||||||
|
allowed only for noncommercial distribution and only if you
|
||||||
|
received the program in object code or executable form with such
|
||||||
|
an offer, in accord with Subsection b above.)
|
||||||
|
|
||||||
|
The source code for a work means the preferred form of the work for
|
||||||
|
making modifications to it. For an executable work, complete source
|
||||||
|
code means all the source code for all modules it contains, plus any
|
||||||
|
associated interface definition files, plus the scripts used to
|
||||||
|
control compilation and installation of the executable. However, as a
|
||||||
|
special exception, the source code distributed need not include
|
||||||
|
anything that is normally distributed (in either source or binary
|
||||||
|
form) with the major components (compiler, kernel, and so on) of the
|
||||||
|
operating system on which the executable runs, unless that component
|
||||||
|
itself accompanies the executable.
|
||||||
|
|
||||||
|
If distribution of executable or object code is made by offering
|
||||||
|
access to copy from a designated place, then offering equivalent
|
||||||
|
access to copy the source code from the same place counts as
|
||||||
|
distribution of the source code, even though third parties are not
|
||||||
|
compelled to copy the source along with the object code.
|
||||||
|
|
||||||
|
4. You may not copy, modify, sublicense, or distribute the Program
|
||||||
|
except as expressly provided under this License. Any attempt
|
||||||
|
otherwise to copy, modify, sublicense or distribute the Program is
|
||||||
|
void, and will automatically terminate your rights under this License.
|
||||||
|
However, parties who have received copies, or rights, from you under
|
||||||
|
this License will not have their licenses terminated so long as such
|
||||||
|
parties remain in full compliance.
|
||||||
|
|
||||||
|
5. You are not required to accept this License, since you have not
|
||||||
|
signed it. However, nothing else grants you permission to modify or
|
||||||
|
distribute the Program or its derivative works. These actions are
|
||||||
|
prohibited by law if you do not accept this License. Therefore, by
|
||||||
|
modifying or distributing the Program (or any work based on the
|
||||||
|
Program), you indicate your acceptance of this License to do so, and
|
||||||
|
all its terms and conditions for copying, distributing or modifying
|
||||||
|
the Program or works based on it.
|
||||||
|
|
||||||
|
6. Each time you redistribute the Program (or any work based on the
|
||||||
|
Program), the recipient automatically receives a license from the
|
||||||
|
original licensor to copy, distribute or modify the Program subject to
|
||||||
|
these terms and conditions. You may not impose any further
|
||||||
|
restrictions on the recipients' exercise of the rights granted herein.
|
||||||
|
You are not responsible for enforcing compliance by third parties to
|
||||||
|
this License.
|
||||||
|
|
||||||
|
7. If, as a consequence of a court judgment or allegation of patent
|
||||||
|
infringement or for any other reason (not limited to patent issues),
|
||||||
|
conditions are imposed on you (whether by court order, agreement or
|
||||||
|
otherwise) that contradict the conditions of this License, they do not
|
||||||
|
excuse you from the conditions of this License. If you cannot
|
||||||
|
distribute so as to satisfy simultaneously your obligations under this
|
||||||
|
License and any other pertinent obligations, then as a consequence you
|
||||||
|
may not distribute the Program at all. For example, if a patent
|
||||||
|
license would not permit royalty-free redistribution of the Program by
|
||||||
|
all those who receive copies directly or indirectly through you, then
|
||||||
|
the only way you could satisfy both it and this License would be to
|
||||||
|
refrain entirely from distribution of the Program.
|
||||||
|
|
||||||
|
If any portion of this section is held invalid or unenforceable under
|
||||||
|
any particular circumstance, the balance of the section is intended to
|
||||||
|
apply and the section as a whole is intended to apply in other
|
||||||
|
circumstances.
|
||||||
|
|
||||||
|
It is not the purpose of this section to induce you to infringe any
|
||||||
|
patents or other property right claims or to contest validity of any
|
||||||
|
such claims; this section has the sole purpose of protecting the
|
||||||
|
integrity of the free software distribution system, which is
|
||||||
|
implemented by public license practices. Many people have made
|
||||||
|
generous contributions to the wide range of software distributed
|
||||||
|
through that system in reliance on consistent application of that
|
||||||
|
system; it is up to the author/donor to decide if he or she is willing
|
||||||
|
to distribute software through any other system and a licensee cannot
|
||||||
|
impose that choice.
|
||||||
|
|
||||||
|
This section is intended to make thoroughly clear what is believed to
|
||||||
|
be a consequence of the rest of this License.
|
||||||
|
|
||||||
|
8. If the distribution and/or use of the Program is restricted in
|
||||||
|
certain countries either by patents or by copyrighted interfaces, the
|
||||||
|
original copyright holder who places the Program under this License
|
||||||
|
may add an explicit geographical distribution limitation excluding
|
||||||
|
those countries, so that distribution is permitted only in or among
|
||||||
|
countries not thus excluded. In such case, this License incorporates
|
||||||
|
the limitation as if written in the body of this License.
|
||||||
|
|
||||||
|
9. The Free Software Foundation may publish revised and/or new versions
|
||||||
|
of the General Public License from time to time. Such new versions will
|
||||||
|
be similar in spirit to the present version, but may differ in detail to
|
||||||
|
address new problems or concerns.
|
||||||
|
|
||||||
|
Each version is given a distinguishing version number. If the Program
|
||||||
|
specifies a version number of this License which applies to it and "any
|
||||||
|
later version", you have the option of following the terms and conditions
|
||||||
|
either of that version or of any later version published by the Free
|
||||||
|
Software Foundation. If the Program does not specify a version number of
|
||||||
|
this License, you may choose any version ever published by the Free Software
|
||||||
|
Foundation.
|
||||||
|
|
||||||
|
10. If you wish to incorporate parts of the Program into other free
|
||||||
|
programs whose distribution conditions are different, write to the author
|
||||||
|
to ask for permission. For software which is copyrighted by the Free
|
||||||
|
Software Foundation, write to the Free Software Foundation; we sometimes
|
||||||
|
make exceptions for this. Our decision will be guided by the two goals
|
||||||
|
of preserving the free status of all derivatives of our free software and
|
||||||
|
of promoting the sharing and reuse of software generally.
|
||||||
|
|
||||||
|
NO WARRANTY
|
||||||
|
|
||||||
|
11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
|
||||||
|
FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN
|
||||||
|
OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
|
||||||
|
PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
|
||||||
|
OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
|
||||||
|
MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS
|
||||||
|
TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE
|
||||||
|
PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
|
||||||
|
REPAIR OR CORRECTION.
|
||||||
|
|
||||||
|
12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
|
||||||
|
WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
|
||||||
|
REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
|
||||||
|
INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
|
||||||
|
OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
|
||||||
|
TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
|
||||||
|
YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
|
||||||
|
PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
|
||||||
|
POSSIBILITY OF SUCH DAMAGES.
|
||||||
|
|
||||||
|
END OF TERMS AND CONDITIONS
|
||||||
|
|
||||||
|
How to Apply These Terms to Your New Programs
|
||||||
|
|
||||||
|
If you develop a new program, and you want it to be of the greatest
|
||||||
|
possible use to the public, the best way to achieve this is to make it
|
||||||
|
free software which everyone can redistribute and change under these terms.
|
||||||
|
|
||||||
|
To do so, attach the following notices to the program. It is safest
|
||||||
|
to attach them to the start of each source file to most effectively
|
||||||
|
convey the exclusion of warranty; and each file should have at least
|
||||||
|
the "copyright" line and a pointer to where the full notice is found.
|
||||||
|
|
||||||
|
{description}
|
||||||
|
Copyright (C) {year} {fullname}
|
||||||
|
|
||||||
|
This program is free software; you can redistribute it and/or modify
|
||||||
|
it under the terms of the GNU General Public License as published by
|
||||||
|
the Free Software Foundation; either version 2 of the License, or
|
||||||
|
(at your option) any later version.
|
||||||
|
|
||||||
|
This program is distributed in the hope that it will be useful,
|
||||||
|
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
GNU General Public License for more details.
|
||||||
|
|
||||||
|
You should have received a copy of the GNU General Public License along
|
||||||
|
with this program; if not, write to the Free Software Foundation, Inc.,
|
||||||
|
51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
|
||||||
|
|
||||||
|
Also add information on how to contact you by electronic and paper mail.
|
||||||
|
|
||||||
|
If the program is interactive, make it output a short notice like this
|
||||||
|
when it starts in an interactive mode:
|
||||||
|
|
||||||
|
Gnomovision version 69, Copyright (C) year name of author
|
||||||
|
Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
|
||||||
|
This is free software, and you are welcome to redistribute it
|
||||||
|
under certain conditions; type `show c' for details.
|
||||||
|
|
||||||
|
The hypothetical commands `show w' and `show c' should show the appropriate
|
||||||
|
parts of the General Public License. Of course, the commands you use may
|
||||||
|
be called something other than `show w' and `show c'; they could even be
|
||||||
|
mouse-clicks or menu items--whatever suits your program.
|
||||||
|
|
||||||
|
You should also get your employer (if you work as a programmer) or your
|
||||||
|
school, if any, to sign a "copyright disclaimer" for the program, if
|
||||||
|
necessary. Here is a sample; alter the names:
|
||||||
|
|
||||||
|
Yoyodyne, Inc., hereby disclaims all copyright interest in the program
|
||||||
|
`Gnomovision' (which makes passes at compilers) written by James Hacker.
|
||||||
|
|
||||||
|
{signature of Ty Coon}, 1 April 1989
|
||||||
|
Ty Coon, President of Vice
|
||||||
|
|
||||||
|
This General Public License does not permit incorporating your program into
|
||||||
|
proprietary programs. If your program is a subroutine library, you may
|
||||||
|
consider it more useful to permit linking proprietary applications with the
|
||||||
|
library. If this is what you want to do, use the GNU Lesser General
|
||||||
|
Public License instead of this License.
|
||||||
|
|
|
@ -0,0 +1,3 @@
|
||||||
|
all:
|
||||||
|
g++ -o scanner mysql.cc config.cc common.cc scanner.cc -lboost_system -lboost_filesystem -ltag -lcrypt -lssl -lcrypto -std=c++11 -lmysqlcppconn
|
||||||
|
|
|
@ -0,0 +1,3 @@
|
||||||
|
RewriteEngine On
|
||||||
|
RewriteCond %{REQUEST_FILENAME} !-f
|
||||||
|
RewriteRule ^ index.php [QSA,L]
|
|
@ -0,0 +1,186 @@
|
||||||
|
<?php
|
||||||
|
/**
|
||||||
|
* Created by PhpStorm.
|
||||||
|
* User: eric
|
||||||
|
* Date: 8/22/15
|
||||||
|
* Time: 6:36 PM
|
||||||
|
*/
|
||||||
|
|
||||||
|
namespace Hathor;
|
||||||
|
|
||||||
|
class Hathor
|
||||||
|
{
|
||||||
|
public function __construct() {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
class Format extends Hathor
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
public function __construct() {
|
||||||
|
parent::__construct();
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
public function __destruct() {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
public function __toString() {
|
||||||
|
return "This is neat";
|
||||||
|
}
|
||||||
|
/**
|
||||||
|
* @param $size
|
||||||
|
* @return string
|
||||||
|
* @throws \InvalidArgumentException
|
||||||
|
*/
|
||||||
|
public static function tokb( $size ) {
|
||||||
|
if( is_numeric($size) ):
|
||||||
|
return sprintf('%.02fk', $size / 1024 );
|
||||||
|
else:
|
||||||
|
throw new \InvalidArgumentException('Must be an int in function tokb( int $size )!');
|
||||||
|
endif;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* [tomb description]
|
||||||
|
* @param int $size [description]
|
||||||
|
* @return string [description]
|
||||||
|
* @throws \InvalidArgumentException [<description>]
|
||||||
|
*/
|
||||||
|
public function tomb( $size ) {
|
||||||
|
if( is_numeric($size) ):
|
||||||
|
return sprintf('%.02fmb', ($size / 1024) / 1024 );
|
||||||
|
else:
|
||||||
|
throw new \InvalidArgumentException('Must be an int in function tomb( int $size)!');
|
||||||
|
endif;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param $size
|
||||||
|
* @return string
|
||||||
|
*/
|
||||||
|
public function togb( $size ) {
|
||||||
|
return sprintf('%.02fgb', ( ($size / 1024) / 1024 ) / 1024 );
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param array $array
|
||||||
|
* @param bool|false $jpp
|
||||||
|
* @return string
|
||||||
|
* @throws \InvalidArgumentException
|
||||||
|
*/
|
||||||
|
public static function tojson(array $array, $jpp = false)
|
||||||
|
{
|
||||||
|
if (!is_array ($array)):
|
||||||
|
throw new \InvalidArgumentException;
|
||||||
|
elseif (is_object ($array)):
|
||||||
|
$array = (array)$array;
|
||||||
|
endif;
|
||||||
|
if($jpp):
|
||||||
|
return json_encode ($array, JSON_NUMERIC_CHECK | JSON_PRESERVE_ZERO_FRACTION | JSON_PRETTY_PRINT );
|
||||||
|
else:
|
||||||
|
return json_encode ($array, JSON_NUMERIC_CHECK | JSON_PRESERVE_ZERO_FRACTION );
|
||||||
|
endif;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Class Connection
|
||||||
|
* @package Hathor
|
||||||
|
* @description
|
||||||
|
* Small class to connect to the database
|
||||||
|
*/
|
||||||
|
use \Slim\PDO\Database;
|
||||||
|
class Connection extends Database {
|
||||||
|
|
||||||
|
private $dsn;
|
||||||
|
/**
|
||||||
|
* @param none
|
||||||
|
* @description
|
||||||
|
* Get database information from configuration
|
||||||
|
* and setup the PDO connection
|
||||||
|
* @return \Slim\PDO\Database connection
|
||||||
|
*/
|
||||||
|
public function __construct() {
|
||||||
|
global $config;
|
||||||
|
$this->dsn = sprintf('mysql:host=%s;dbname=%s;charset=utf8', $config->db['host'], $config->db['db']);
|
||||||
|
return parent::__construct($this->dsn, $config->db['user'], $config->db['pass']);
|
||||||
|
}
|
||||||
|
public function __toString() {
|
||||||
|
return $this->dsn;
|
||||||
|
}
|
||||||
|
public function __destruct() {
|
||||||
|
unset($this);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Class Log
|
||||||
|
* @package Hathor
|
||||||
|
*/
|
||||||
|
class Log extends Hathor {
|
||||||
|
|
||||||
|
public function write($message) {
|
||||||
|
var_dump($message);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
/**
|
||||||
|
* Class DefaultHeaders *
|
||||||
|
* @package Hathor
|
||||||
|
* @description
|
||||||
|
* Middleware to set default headers that
|
||||||
|
* we want on every request.
|
||||||
|
*/
|
||||||
|
use \Slim\Middleware;
|
||||||
|
class DefaultHeaders extends Middleware
|
||||||
|
{
|
||||||
|
|
||||||
|
private $strln;
|
||||||
|
|
||||||
|
public function call()
|
||||||
|
{
|
||||||
|
global $config;
|
||||||
|
$defaults = [
|
||||||
|
'X-Powered-By' => 'SlimPHP/2, Hathor Music Api/1.0 (gentoo)',
|
||||||
|
'X-Hathor-Version' => '1.0/gentoo',
|
||||||
|
'Allow' => 'GET, HEAD, OPTIONS',
|
||||||
|
'Content-Language' => 'en',
|
||||||
|
'Content-Type' => 'application/json; charset=utf-8',
|
||||||
|
'Server' => 'Hathor Music Api/1.0 (gentoo)',
|
||||||
|
'X-XSS-Prottection' => '1; mode=block',
|
||||||
|
'ETag' => md5(time())
|
||||||
|
];
|
||||||
|
$env = $this->app->environment;
|
||||||
|
$env['slim.errors'] = fopen($config->logs['error'], 'w');
|
||||||
|
|
||||||
|
// Loop through default headers we want set on every response and set them.
|
||||||
|
foreach($defaults as $headerKey => $headerVal):
|
||||||
|
$this->app->response->headers->set($headerKey, $headerVal);
|
||||||
|
endforeach;
|
||||||
|
// Run inner middleware and application
|
||||||
|
$this->next->call();
|
||||||
|
// Set the Content-Length + 1
|
||||||
|
$this->strln = strlen($this->app->response->getBody());
|
||||||
|
// Check if it is head. If it is we don't want any content length.
|
||||||
|
$this->strln = $this->app->request->isHead() ? 0 : $this->strln;
|
||||||
|
// Set the Content-Length header
|
||||||
|
$this->app->response->headers->set('Content-Length', $this->strln);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,221 @@
|
||||||
|
<?php
|
||||||
|
require __DIR__ . '/../bootstrap.php';
|
||||||
|
|
||||||
|
function hathor_home() {
|
||||||
|
$artists = get_artists();
|
||||||
|
$length = count($artists);
|
||||||
|
$ret['status'] = 200;
|
||||||
|
$ret['count'] = $length;
|
||||||
|
$ret['response'] = $artists;
|
||||||
|
$app = \Slim\Slim::getInstance();
|
||||||
|
$app->response->setBody( \Hathor\Format::tojson($ret) );
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
function hathor_get_error($type = HATHOR_NO_RESULTS) {
|
||||||
|
// print_r(json_decode('{"errors":[{"code":215,"message":"Bad Authentication data."}]}'));
|
||||||
|
|
||||||
|
$error['errors'][] = [
|
||||||
|
'code' => 404,
|
||||||
|
'message' => 'No results found.'
|
||||||
|
];
|
||||||
|
|
||||||
|
return \Hathor\Format::tojson($error);
|
||||||
|
}
|
||||||
|
function hathor_years_get_options() {
|
||||||
|
|
||||||
|
$return['GET'][] =
|
||||||
|
[
|
||||||
|
'int' => 'year',
|
||||||
|
'description' => 'The year of the album'
|
||||||
|
];
|
||||||
|
|
||||||
|
return \Hathor\Format::tojson($return, true);
|
||||||
|
}
|
||||||
|
|
||||||
|
$app->get('/track/play/:tid', function($tid) use ($app) {
|
||||||
|
|
||||||
|
$track = get_track($tid);
|
||||||
|
$app->response->headers->set('Content-Type', 'audio/mpeg');
|
||||||
|
$app->response->setBody( file_get_contents( $track['uri'] ) );
|
||||||
|
/*$content = base64_encode( file_get_contents( $track['uri'] ) );
|
||||||
|
if( file_exists( dirname($track['uri']) . DIRECTORY_SEPARATOR . 'album.jpg' ) ):
|
||||||
|
$albumart = base64_encode( file_get_contents( dirname($track['uri']) . DIRECTORY_SEPARATOR . 'album.jpg' ) );
|
||||||
|
else:
|
||||||
|
$albumart = base64_encode( file_get_contents( 'http://placekitten.com/120/121' ) );
|
||||||
|
endif;
|
||||||
|
|
||||||
|
print sprintf('<img src="data:image/jpeg;base64,%s" />', $albumart);
|
||||||
|
print sprintf('<audio id="player" src="data:audio/mpeg;base64,%s" controls preload="auto" autobuffer></audio>', $content);
|
||||||
|
*/
|
||||||
|
}
|
||||||
|
);
|
||||||
|
function get_track($tid) {
|
||||||
|
global $config;
|
||||||
|
$pdo = new Hathor\Connection();
|
||||||
|
//get_connection($config['db']);
|
||||||
|
$selectStatement = $pdo->select()
|
||||||
|
->from('tracks')
|
||||||
|
->where('tid','=', $tid);
|
||||||
|
$stmt = $selectStatement->execute();
|
||||||
|
$ret = $stmt->fetch();
|
||||||
|
close_connection($pdo);
|
||||||
|
return $ret;
|
||||||
|
}
|
||||||
|
|
||||||
|
function hathor_get_album($aid) {
|
||||||
|
$app = \Slim\Slim::getInstance();
|
||||||
|
global $config;
|
||||||
|
|
||||||
|
$album = get_album($aid);
|
||||||
|
$request = $app->request;
|
||||||
|
$res = $app->response;
|
||||||
|
|
||||||
|
$res->headers->set('Content-Type', 'application/json');
|
||||||
|
$res->setStatus(200);
|
||||||
|
|
||||||
|
if($request->isOptions()):
|
||||||
|
$res->headers->set('Allow', 'GET, OPTIONS');
|
||||||
|
$res->setBody("200 OK\nAllow: GET,OPTIONS\n");
|
||||||
|
else:
|
||||||
|
$json['status'] = 200;
|
||||||
|
|
||||||
|
foreach($config->defaults['cover_files'] as $cover):
|
||||||
|
if( file_exists( dirname($album[0]['uri']) . DIRECTORY_SEPARATOR . $cover ) ):
|
||||||
|
$albumcover = dirname($album[0]['uri']) . DIRECTORY_SEPARATOR . $cover;
|
||||||
|
break;
|
||||||
|
else:
|
||||||
|
continue;
|
||||||
|
endif;
|
||||||
|
endforeach;
|
||||||
|
if(isset($albumcover)):
|
||||||
|
$meta = getimagesize($albumcover, $info);
|
||||||
|
$meta = array(
|
||||||
|
'width' => $meta[0],
|
||||||
|
'height'=> $meta[1],
|
||||||
|
'bits' => isset($meta['bits']) ? $meta['bits'] : null,
|
||||||
|
'mime' => isset($meta['mime']) ? $meta['mime'] : null,
|
||||||
|
'extra' => empty($info) ? null : $info
|
||||||
|
);
|
||||||
|
$cover = array(
|
||||||
|
'base64' => base64_encode( file_get_contents( $albumcover ) ),
|
||||||
|
'uri' => $albumcover,
|
||||||
|
'size' => \Hathor\Format::tokb( filesize($albumcover) ),
|
||||||
|
'meta' => $meta
|
||||||
|
);
|
||||||
|
|
||||||
|
else:
|
||||||
|
$meta = getimagesize(__DIR__ . DIRECTORY_SEPARATOR . '../images/album.jpg', $info);
|
||||||
|
$meta = array(
|
||||||
|
'width' => $meta[0],
|
||||||
|
'height'=> $meta[1],
|
||||||
|
'bits' => isset($meta['bits']) ? $meta['bits'] : null,
|
||||||
|
'mime' => isset($meta['mime']) ? $meta['mime'] : null,
|
||||||
|
'extra' => empty($info) ? null : $info
|
||||||
|
);
|
||||||
|
$cover = array(
|
||||||
|
'base64' => base64_encode( file_get_contents( __DIR__ . DIRECTORY_SEPARATOR . '../images/album.jpg' ) ),
|
||||||
|
'uri' => $request->getResourceUri(),
|
||||||
|
'size' => filesize(__DIR__ . DIRECTORY_SEPARATOR . '../images/album.jpg'),
|
||||||
|
'meta' => $meta
|
||||||
|
);
|
||||||
|
endif;
|
||||||
|
|
||||||
|
foreach($album as $track):
|
||||||
|
$tr[ $track['track'] ] = array(
|
||||||
|
'tid' => $track['tid'],
|
||||||
|
'title' => $track['title'],
|
||||||
|
'genre' => $track['genre'],
|
||||||
|
'track' => $track['track'],
|
||||||
|
'length' => $track['length'],
|
||||||
|
'playtime' => sprintf('%d:%02d',$track['minutes'], $track['seconds']),
|
||||||
|
'size' => sprintf('%.02f MB', ( filesize($track['uri']) / 1024 ) / 1024 )
|
||||||
|
);
|
||||||
|
endforeach;
|
||||||
|
|
||||||
|
|
||||||
|
$json['response'] = array(
|
||||||
|
'artist' => $album[0]['artist'],
|
||||||
|
'arid' => $album[0]['arid'],
|
||||||
|
'album' => $album[0]['album'],
|
||||||
|
'aid' => $album[0]['aid'],
|
||||||
|
'cover' => $cover,
|
||||||
|
'total' => count($tr),
|
||||||
|
'tracks' => $tr
|
||||||
|
);
|
||||||
|
|
||||||
|
$res->setBody( json_encode($json) );
|
||||||
|
endif;
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
function get_album($aid) {
|
||||||
|
global $config;
|
||||||
|
$pdo = new Hathor\Connection();//get_connection($config['db']);
|
||||||
|
$selectStatement = $pdo->select(
|
||||||
|
array('tid','title','track','arid','artist','aid','album','year','genre','label','minutes','seconds','length','uri')
|
||||||
|
)
|
||||||
|
->distinct()
|
||||||
|
->groupBy('tid')
|
||||||
|
->orderBy('track', 'ASC')
|
||||||
|
->from('tracks')
|
||||||
|
->where('aid','=',$aid);
|
||||||
|
$stmt = $selectStatement->execute();
|
||||||
|
$ret = $stmt->fetchAll();
|
||||||
|
close_connection($pdo);
|
||||||
|
return $ret;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
$app->get('/artist/:arid', function ($arid) use($app) {
|
||||||
|
$app->response->headers()->set('Content-Type','application/json');
|
||||||
|
$app->response->setBody(json_encode(get_artist($arid)));
|
||||||
|
})->conditions( array('id' => '[\w\d]+') );
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
function get_artist($arid) {
|
||||||
|
global $config;
|
||||||
|
$pdo = new Hathor\Connection();
|
||||||
|
$selectStatement = $pdo->select(
|
||||||
|
array('arid','artist')
|
||||||
|
)
|
||||||
|
//->distinct()
|
||||||
|
->groupby('arid')
|
||||||
|
->from('artists')
|
||||||
|
->where('arid','=',$arid);
|
||||||
|
$stmt = $selectStatement->execute();
|
||||||
|
$ret = $stmt->fetchAll();
|
||||||
|
close_connection($pdo);
|
||||||
|
return $ret;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
function get_artists() {
|
||||||
|
global $config;
|
||||||
|
$test = new \Hathor\Connection();
|
||||||
|
$pdo = new Hathor\Connection();
|
||||||
|
$selectStatement = $pdo->select(array('name','arid'))
|
||||||
|
->orderBy('name')
|
||||||
|
->from('artists');
|
||||||
|
$stmt = $selectStatement->execute();
|
||||||
|
$ret = $stmt->fetchAll();
|
||||||
|
close_connection($pdo);
|
||||||
|
return $ret;
|
||||||
|
}
|
||||||
|
|
||||||
|
function get_years() {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
function close_connection(\Slim\PDO\Database $db) {
|
||||||
|
$db = null;
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
$app->run();
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,30 @@
|
||||||
|
<?php
|
||||||
|
/*
|
||||||
|
* @file bootstrap.php
|
||||||
|
* @description Load defaults
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
|
||||||
|
define('HATHOR_NO_RESULTS', 1363);
|
||||||
|
define('HATHOR_PARTIAL', 1364);
|
||||||
|
|
||||||
|
require __DIR__ . '/../3rdparty/autoload.php';
|
||||||
|
require __DIR__ . '/config.php';
|
||||||
|
require __DIR__ . '/api/Hathor.php';
|
||||||
|
|
||||||
|
$app = new \Slim\Slim(array(
|
||||||
|
'debug' => true,
|
||||||
|
'mode' => 'development',
|
||||||
|
'log.writer' => new Hathor\Log,
|
||||||
|
'log.enabled' => true,
|
||||||
|
'log.level' => \Slim\Log::DEBUG,
|
||||||
|
));
|
||||||
|
$app->add(new \Hathor\DefaultHeaders());
|
||||||
|
require __DIR__ . '/routes.php';
|
||||||
|
$app->setName('hwt-thr');
|
||||||
|
$app->container->singleton('format', function () {
|
||||||
|
return new \Hathor\Format();
|
||||||
|
});
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,52 @@
|
||||||
|
<?php
|
||||||
|
/**
|
||||||
|
* config.php
|
||||||
|
*
|
||||||
|
* Copyright 2015 R. Eric Wheeler <eric@rewiv.com>
|
||||||
|
*
|
||||||
|
* This program is free software; you can redistribute it and/or modify
|
||||||
|
* it under the terms of the GNU General Public License as published by
|
||||||
|
* the Free Software Foundation; either version 2 of the License, or
|
||||||
|
* (at your option) any later version.
|
||||||
|
*
|
||||||
|
* This program is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
* GNU General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU General Public License
|
||||||
|
* along with this program; if not, write to the Free Software
|
||||||
|
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
|
||||||
|
* MA 02110-1301, USA.
|
||||||
|
*
|
||||||
|
*
|
||||||
|
**/
|
||||||
|
|
||||||
|
require_once( __DIR__ . DIRECTORY_SEPARATOR . basename('bootstrap.php', '.php') . '.php');
|
||||||
|
|
||||||
|
if( isset( $_SERVER['HTTP_REFERER'] ) ):
|
||||||
|
header("Location: /", 401);
|
||||||
|
endif;
|
||||||
|
|
||||||
|
$config = new stdClass();
|
||||||
|
|
||||||
|
$config->db = array(
|
||||||
|
'host' => 'localhost',
|
||||||
|
'db' => 'hathor_music',
|
||||||
|
'port' => 3306,
|
||||||
|
'user' => 'root',
|
||||||
|
'pass' => '123'
|
||||||
|
);
|
||||||
|
|
||||||
|
$config->defaults['cover_files'] = array(
|
||||||
|
'folder.jpg',
|
||||||
|
'folder.jpeg',
|
||||||
|
'artist.jpg',
|
||||||
|
'artist.jpeg',
|
||||||
|
'album.jpg',
|
||||||
|
'album.jpeg'
|
||||||
|
);
|
||||||
|
$config->logs = [
|
||||||
|
'error' => '/home/eric/code/hathor/app/hathor.err',
|
||||||
|
'access' => '/home/eric/code/hathor/app/hathor.log'
|
||||||
|
];
|
Binary file not shown.
After Width: | Height: | Size: 11 KiB |
Binary file not shown.
After Width: | Height: | Size: 54 KiB |
|
@ -0,0 +1,74 @@
|
||||||
|
-- MySQL dump 10.13 Distrib 5.6.26, for Linux (x86_64)
|
||||||
|
--
|
||||||
|
-- Host: localhost Database: hathor
|
||||||
|
-- ------------------------------------------------------
|
||||||
|
-- Server version 5.6.26-log
|
||||||
|
|
||||||
|
/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
|
||||||
|
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
|
||||||
|
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
|
||||||
|
/*!40101 SET NAMES utf8 */;
|
||||||
|
/*!40103 SET @OLD_TIME_ZONE=@@TIME_ZONE */;
|
||||||
|
/*!40103 SET TIME_ZONE='+00:00' */;
|
||||||
|
/*!40014 SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */;
|
||||||
|
/*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */;
|
||||||
|
/*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */;
|
||||||
|
/*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */;
|
||||||
|
|
||||||
|
--
|
||||||
|
-- Current Database: `hathor`
|
||||||
|
--
|
||||||
|
|
||||||
|
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `hathor` /*!40100 DEFAULT CHARACTER SET utf8 */;
|
||||||
|
|
||||||
|
USE `hathor`;
|
||||||
|
|
||||||
|
--
|
||||||
|
-- Table structure for table `tracks`
|
||||||
|
--
|
||||||
|
|
||||||
|
DROP TABLE IF EXISTS `tracks`;
|
||||||
|
/*!40101 SET @saved_cs_client = @@character_set_client */;
|
||||||
|
/*!40101 SET character_set_client = utf8 */;
|
||||||
|
CREATE TABLE `tracks` (
|
||||||
|
`id` int(11) NOT NULL AUTO_INCREMENT COMMENT 'id of the song in the database',
|
||||||
|
`tid` varchar(64) NOT NULL COMMENT 'song id md5 hash',
|
||||||
|
`uri` varchar(1000) NOT NULL COMMENT 'full path of file',
|
||||||
|
`arid` varchar(64) NOT NULL COMMENT 'corresponding artist id from artist table in md5 hash',
|
||||||
|
`artist` varchar(255) NOT NULL COMMENT 'artist name',
|
||||||
|
`aid` varchar(64) NOT NULL COMMENT 'corresponding album id from album table in md5 hash',
|
||||||
|
`album` varchar(255) NOT NULL COMMENT 'album title',
|
||||||
|
`title` varchar(255) NOT NULL COMMENT 'title of song',
|
||||||
|
`track` tinyint(4) unsigned NOT NULL DEFAULT '0' COMMENT 'track number of song',
|
||||||
|
`genre` varchar(45) DEFAULT NULL COMMENT 'genre of song',
|
||||||
|
`year` tinyint(4) NOT NULL DEFAULT '0' COMMENT 'year of song',
|
||||||
|
`label` varchar(255) DEFAULT NULL COMMENT 'music label of song e.g. Columbia Records',
|
||||||
|
`lyrics` blob COMMENT 'lyrics if any',
|
||||||
|
`bitrate` mediumint(6) unsigned DEFAULT '0' COMMENT 'bitrate of song',
|
||||||
|
`sample` mediumint(6) unsigned DEFAULT '0' COMMENT 'sample rate of song',
|
||||||
|
`channels` smallint(2) unsigned DEFAULT '0' COMMENT 'channels of song i.e stereo = 2, mono = 1',
|
||||||
|
`length` int(10) unsigned DEFAULT '0' COMMENT 'length of song',
|
||||||
|
`minutes` tinyint(4) unsigned DEFAULT '0' COMMENT 'total length of song in minutes and seconds',
|
||||||
|
`seconds` tinyint(4) unsigned DEFAULT '0' COMMENT 'seconds of song',
|
||||||
|
`pls` blob COMMENT 'playlists this song is associated with',
|
||||||
|
`ts` timestamp NULL DEFAULT CURRENT_TIMESTAMP COMMENT 'timestamp of last update of song',
|
||||||
|
PRIMARY KEY (`id`),
|
||||||
|
UNIQUE KEY `tid_UNIQUE` (`tid`),
|
||||||
|
KEY `tid_idx` (`tid`),
|
||||||
|
KEY `uri_idx` (`uri`(255)),
|
||||||
|
KEY `arid_idx` (`arid`),
|
||||||
|
KEY `aid_idx` (`aid`),
|
||||||
|
KEY `track_idx` (`track`)
|
||||||
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
|
||||||
|
/*!40101 SET character_set_client = @saved_cs_client */;
|
||||||
|
/*!40103 SET TIME_ZONE=@OLD_TIME_ZONE */;
|
||||||
|
|
||||||
|
/*!40101 SET SQL_MODE=@OLD_SQL_MODE */;
|
||||||
|
/*!40014 SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS */;
|
||||||
|
/*!40014 SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS */;
|
||||||
|
/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
|
||||||
|
/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;
|
||||||
|
/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;
|
||||||
|
/*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */;
|
||||||
|
|
||||||
|
-- Dump completed on 2015-08-17 7:55:50
|
|
@ -0,0 +1,64 @@
|
||||||
|
<?php
|
||||||
|
/*
|
||||||
|
* @file routes.php
|
||||||
|
* @description
|
||||||
|
* Contains all the api routes
|
||||||
|
*/
|
||||||
|
|
||||||
|
$app->map('/', 'hathor_home')->via('GET','HEAD','OPTIONS');
|
||||||
|
|
||||||
|
//$app->get('/artists', 'hathor_get_artists')->via('GET', 'HEAD', 'OPTIONS');
|
||||||
|
//$app->get('/artist/:arid', 'hathor_get_artist')->via('GET', 'HEAD', 'OPTIONS');
|
||||||
|
|
||||||
|
//$app->get('/albums', 'hathor_get_albums')->via('GET', 'HEAD', 'OPTIONS');
|
||||||
|
$app->map('/album/:aid', 'hathor_get_album')->conditions( array('id' => '[\w\d]+') )->via('GET', 'HEAD', 'OPTIONS');
|
||||||
|
$app->map('/album/cover/:cid', 'hathor_get_cover')->via('GET','HEAD','OPTIONS');
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
function hathor_get_cover() {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
/**
|
||||||
|
* /artists
|
||||||
|
* /artists/{arid}
|
||||||
|
* /artists/{arid}/albums
|
||||||
|
* /artists/{arid}/albums/{aid}
|
||||||
|
* /artists/{arid}/albums/{aid}/tracks
|
||||||
|
* /artists/{arid}/albums/{arid}/tracks/{tid}
|
||||||
|
* /artists/{arid}/albums/{arid}/tracks/{tid}/play
|
||||||
|
* /artists/{arid}/albums/{arid}/tracks/{tid}/download
|
||||||
|
*/
|
||||||
|
|
||||||
|
/**
|
||||||
|
* /albums
|
||||||
|
* /albums/{aid}
|
||||||
|
* /albums/{aid}/tracks
|
||||||
|
* /albums/{aid}/tracks/{tid}
|
||||||
|
* /albums/{aid}/tracks/{tid}/play
|
||||||
|
* /albums/{aid}/tracks/{tid}/download
|
||||||
|
*/
|
||||||
|
|
||||||
|
/**
|
||||||
|
* /tracks
|
||||||
|
* /tracks/{tid}
|
||||||
|
* /tracks/{tid}/play
|
||||||
|
* /tracks/{tid}/download
|
||||||
|
*/
|
||||||
|
|
||||||
|
/**
|
||||||
|
* /years
|
||||||
|
* /years/{year}
|
||||||
|
*/
|
||||||
|
|
||||||
|
/**
|
||||||
|
* /users
|
||||||
|
* /users/{uid}
|
||||||
|
* /users/{uid}/playlists
|
||||||
|
* /users/{uid}/playlists/{plid}
|
||||||
|
*/
|
||||||
|
|
||||||
|
/**
|
||||||
|
* /playlists
|
||||||
|
* /playlists/{plid}
|
||||||
|
*/
|
|
@ -0,0 +1,10 @@
|
||||||
|
<?php
|
||||||
|
|
||||||
|
function tokb(array $size ) {
|
||||||
|
|
||||||
|
}
|
||||||
|
try {
|
||||||
|
tokb( 2 );
|
||||||
|
} catch(\Exception $e) {
|
||||||
|
print_r($e);
|
||||||
|
}
|
|
@ -0,0 +1,6 @@
|
||||||
|
<?php
|
||||||
|
require_once '3rdparty/autoload.php';
|
||||||
|
$id3 = new getID3;
|
||||||
|
$id3->setOption(array('encoding' => 'UTF-8'));
|
||||||
|
$file = $id3->analyze('/home/eric/code/hathor/tests/Bob Dylan.Bringing It All Back Home.01.Subterranean Homesick Blues.mp3');
|
||||||
|
echo '<pre>'. print_r($file, true) .'</pre>';
|
|
@ -0,0 +1,35 @@
|
||||||
|
#include <cstdlib>
|
||||||
|
#include <cstdio>
|
||||||
|
#include <openssl/blowfish.h>
|
||||||
|
#include <cstring>
|
||||||
|
#include <iostream>
|
||||||
|
#define SIZE 64
|
||||||
|
|
||||||
|
int main()
|
||||||
|
{
|
||||||
|
unsigned char* in = (unsigned char *)"TestData";
|
||||||
|
unsigned char* out = (unsigned char*) calloc(SIZE+1, sizeof(char));
|
||||||
|
unsigned char* out2 = (unsigned char*) calloc(SIZE+1, sizeof(char));
|
||||||
|
//pData = (int*) calloc (i,sizeof(int));
|
||||||
|
BF_KEY *key = (BF_KEY*) calloc(1, sizeof(BF_KEY));
|
||||||
|
std::string result;
|
||||||
|
/* set up a test key */
|
||||||
|
BF_set_key(key, SIZE, (const unsigned char*)"TestKey!" );
|
||||||
|
|
||||||
|
/* test out encryption */
|
||||||
|
char buf[sizeof(BF_KEY)];
|
||||||
|
BF_ecb_encrypt(in, out, key, BF_ENCRYPT);
|
||||||
|
|
||||||
|
for(int i=0;i<sizeof(BF_KEY); i++) {
|
||||||
|
sprintf(buf, "%c", out[i]);
|
||||||
|
result.append( buf );
|
||||||
|
}
|
||||||
|
printf("%s\n", result.c_str());
|
||||||
|
/* test out decryption */
|
||||||
|
BF_ecb_encrypt(out, out2, key, BF_DECRYPT);
|
||||||
|
printf("%s\n", out2);
|
||||||
|
free(out);
|
||||||
|
free(out2);
|
||||||
|
free(key);
|
||||||
|
return 0;
|
||||||
|
}
|
|
@ -0,0 +1,77 @@
|
||||||
|
#include "common.hh"
|
||||||
|
|
||||||
|
#define BCRYPT_HASHSIZE (64)
|
||||||
|
#define RANDBYTES (16)
|
||||||
|
#define COST (12)
|
||||||
|
|
||||||
|
using namespace std;
|
||||||
|
|
||||||
|
int getch() {
|
||||||
|
struct termios oldt,
|
||||||
|
newt;
|
||||||
|
int ch;
|
||||||
|
tcgetattr( STDIN_FILENO, &oldt );
|
||||||
|
newt = oldt;
|
||||||
|
newt.c_lflag &= ~( ICANON | ECHO );
|
||||||
|
tcsetattr( STDIN_FILENO, TCSANOW, &newt );
|
||||||
|
ch = getchar();
|
||||||
|
tcsetattr( STDIN_FILENO, TCSANOW, &oldt );
|
||||||
|
return ch;
|
||||||
|
}
|
||||||
|
|
||||||
|
std::string getPass( const char * prompt = "Enter Password : ", char h_ch = '*') {
|
||||||
|
std::string pass;
|
||||||
|
char ch;
|
||||||
|
cout << prompt;
|
||||||
|
|
||||||
|
while ( ch != '\n' ) {
|
||||||
|
ch = getch();
|
||||||
|
|
||||||
|
if(ch == 127 || ch == 8 ) {
|
||||||
|
if( !pass.empty() ) {
|
||||||
|
cout << "\b \b";
|
||||||
|
pass.pop_back();
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
pass.push_back(ch);
|
||||||
|
if(pass.front() == '\n') { cout << "\nPassword required. Exiting ...\n" << endl; exit(EXIT_FAILURE); }
|
||||||
|
cout << h_ch;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
pass.pop_back();
|
||||||
|
|
||||||
|
cout << endl;
|
||||||
|
return pass;
|
||||||
|
}
|
||||||
|
|
||||||
|
inline bool is_empty_string(const std::string s) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
void toLower(std::string &str)
|
||||||
|
{
|
||||||
|
const int length = str.length();
|
||||||
|
for(int i=0; i < length; ++i)
|
||||||
|
{
|
||||||
|
str[i] = std::tolower(str[i]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
inline bool file_exists (const std::string& name) {
|
||||||
|
struct stat buffer;
|
||||||
|
return (stat (name.c_str(), &buffer) == 0);
|
||||||
|
}
|
||||||
|
bool is_hidden(const boost::filesystem::path &p)
|
||||||
|
{
|
||||||
|
|
||||||
|
boost::filesystem::path::string_type name = p.filename().native();
|
||||||
|
if(name != ".." &&
|
||||||
|
name != "." &&
|
||||||
|
name[0] == '.')
|
||||||
|
{
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
return false;
|
||||||
|
}
|
|
@ -0,0 +1,22 @@
|
||||||
|
#ifndef HATHOR_COMMON_HH
|
||||||
|
#define HATHOR_COMMON_HH
|
||||||
|
#include <sys/stat.h>
|
||||||
|
#include <cstdlib>
|
||||||
|
#include <termios.h>
|
||||||
|
#include <crypt.h>
|
||||||
|
#include <openssl/md5.h>
|
||||||
|
|
||||||
|
// Include boost
|
||||||
|
#include "boost/filesystem.hpp"
|
||||||
|
#include "boost/filesystem/operations.hpp"
|
||||||
|
#include "boost/filesystem/path.hpp"
|
||||||
|
#include "boost/progress.hpp"
|
||||||
|
#include "boost/lexical_cast.hpp"
|
||||||
|
|
||||||
|
int getch();
|
||||||
|
std::string getPass( const char * prompt, char h_ch);
|
||||||
|
inline bool is_empty_string(const std::string s);
|
||||||
|
bool is_hidden(const boost::filesystem::path &p);
|
||||||
|
void toLower( std::string &str );
|
||||||
|
|
||||||
|
#endif
|
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
|
@ -0,0 +1,24 @@
|
||||||
|
var components = {
|
||||||
|
"packages": [
|
||||||
|
{
|
||||||
|
"name": "jplayer",
|
||||||
|
"main": "jplayer-built.js"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"shim": {
|
||||||
|
"jplayer": {
|
||||||
|
"deps": [
|
||||||
|
"jquery"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"baseUrl": "components"
|
||||||
|
};
|
||||||
|
if (typeof require !== "undefined" && require.config) {
|
||||||
|
require.config(components);
|
||||||
|
} else {
|
||||||
|
var require = components;
|
||||||
|
}
|
||||||
|
if (typeof exports !== "undefined" && typeof module !== "undefined") {
|
||||||
|
module.exports = components;
|
||||||
|
}
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue