summaryrefslogtreecommitdiff
path: root/ext/mcrypt/mcrypt.c
diff options
context:
space:
mode:
authorSascha Schumann <sas@php.net>1999-04-25 16:50:40 +0000
committerSascha Schumann <sas@php.net>1999-04-25 16:50:40 +0000
commit11fc109ca647ecb70c544fa8e6a93b9cfb0f3853 (patch)
treefd82426253f9aa26fed0cb8ef533abfebb316770 /ext/mcrypt/mcrypt.c
parentc4442ed7c56de371cb8d76b6a2148b48f5889e1b (diff)
downloadphp-git-11fc109ca647ecb70c544fa8e6a93b9cfb0f3853.tar.gz
add mcrypt module
Diffstat (limited to 'ext/mcrypt/mcrypt.c')
-rw-r--r--ext/mcrypt/mcrypt.c99
1 files changed, 99 insertions, 0 deletions
diff --git a/ext/mcrypt/mcrypt.c b/ext/mcrypt/mcrypt.c
new file mode 100644
index 0000000000..59dac95de9
--- /dev/null
+++ b/ext/mcrypt/mcrypt.c
@@ -0,0 +1,99 @@
+
+#include "php.h"
+
+#if HAVE_LIBMCRYPT
+
+#include "php_mcrypt.h"
+
+#include "lcrypt.h"
+
+function_entry mcrypt_functions[] = {
+ PHP_FE(mcrypt_ecb, NULL)
+ {0},
+};
+
+static int php3_minit_mcrypt(INIT_FUNC_ARGS);
+
+zend_module_entry mcrypt_module_entry = {
+ "mcrypt",
+ mcrypt_functions,
+ php3_minit_mcrypt, NULL,
+ NULL, NULL,
+ NULL,
+ STANDARD_MODULE_PROPERTIES,
+};
+
+#if 0
+
+typedef struct mcrypt_global_struct {
+ int le_h;
+} mcrypt_global_struct;
+
+static mcrypt_global_struct mcryptg;
+
+#define MCRYPTG(x) mcryptg.x
+
+#endif
+
+#define MCRYPT_ENTRY(a) REGISTER_LONG_CONSTANT("MC_" #a, a, 0)
+
+static int php3_minit_mcrypt(INIT_FUNC_ARGS)
+{
+ MCRYPT_ENTRY(BLOWFISH);
+ MCRYPT_ENTRY(DES);
+ MCRYPT_ENTRY(TripleDES);
+ MCRYPT_ENTRY(ThreeWAY);
+ MCRYPT_ENTRY(GOST);
+ MCRYPT_ENTRY(SAFER64);
+ MCRYPT_ENTRY(SAFER128);
+ MCRYPT_ENTRY(CAST128);
+ MCRYPT_ENTRY(TEAN);
+ MCRYPT_ENTRY(TWOFISH);
+ MCRYPT_ENTRY(RC2);
+#ifdef CRYPT
+ MCRYPT_ENTRY(CRYPT);
+#endif
+ return SUCCESS;
+}
+
+PHP_FUNCTION(mcrypt_ecb)
+{
+ pval *cipher, *data, *key, *mode;
+ int td;
+ char *ndata;
+ size_t bsize;
+ size_t nr;
+ size_t nsize;
+
+ if(ARG_COUNT(ht) != 4 || getParameters(ht, 4, &cipher, &key, &data, &mode) == FAILURE) {
+ WRONG_PARAM_COUNT;
+ }
+ convert_to_long(cipher);
+ convert_to_long(mode);
+ convert_to_string(data);
+ convert_to_string(key);
+
+ bsize = get_block_size(cipher->value.lval);
+ nr = (data->value.str.len + bsize - 1) / bsize;
+ nsize = nr * bsize;
+
+ td = init_mcrypt_ecb(cipher->value.lval, key->value.str.val, key->value.str.len);
+ if(td == -1) {
+ php3_error(E_WARNING, "mcrypt initialization failed");
+ RETURN_FALSE;
+ }
+
+ ndata = ecalloc(nr, bsize);
+ memcpy(ndata, data->value.str.val, data->value.str.len);
+
+ if(mode->value.lval == 0)
+ mcrypt_ecb(td, ndata, nsize);
+ else
+ mdecrypt_ecb(td, ndata, nsize);
+
+ end_mcrypt(td);
+
+ RETURN_STRINGL(ndata, nsize, 0);
+}
+
+#endif