div0-gittools
netradiant
mediasource
+d0_blind_id
+*.d0si
fteqcc | git://github.com/Blub/qclib.git | master |
div0-gittools | git://git.icculus.org/divverent/div0-gittools.git | master |
netradiant | | master |
+d0_blind_id | http://github.com/divVerent/d0_blind_id.git | master |
"
# todo: in darkplaces, change repobranch to div0-stable
fi
case "$1" in
-c)
+ cleand0=true
cleandp=true
cleanqcc=true
cleanqc=true
shift
;;
-n)
+ cleand0=false
cleandp=false
cleanqcc=false
cleanqc=false
shift
;;
*)
+ cleand0=false
cleandp=false
cleanqcc=false
cleanqc=true # version info
fi
fi
+ enter "$d0/d0_blind_id" verbose
+ if ! [ -f Makefile ]; then
+ verbose sh autogen.sh
+ verbose ./configure
+ fi
+ if $cleand0; then
+ verbose make $MAKEFLAGS clean
+ fi
+ verbose make $MAKEFLAGS
+
enter "$d0/fteqcc" verbose
if $cleanqcc; then
verbose make $MAKEFLAGS clean
run)
if [ -n "$WE_HATE_OUR_USERS" ]; then
client=
- export PATH="$d0/misc/buildfiles/win64:$d0/misc/buildfiles/win32:$PATH"
+ export PATH="$d0/misc/buildfiles/win64:$d0/misc/buildfiles/win32:$d0/d0_blind_id/.libs:$PATH"
elif [ x"`uname`" = x"Darwin" ]; then
- export DYLD_LIBRARY_PATH="$d0/misc/buildfiles/osx/Xonotic-SDL.app/Contents/MacOS"
+ export DYLD_LIBRARY_PATH="$d0/misc/buildfiles/osx/Xonotic-SDL.app/Contents/MacOS:$d0/d0_blind_id/.libs"
export DYLD_FRAMEWORK_PATH="$d0/misc/buildfiles/osx/Xonotic-SDL.app/Contents/Frameworks"
client=-sdl
else
+ export LD_LIBRARY_PATH="$d0/d0_blind_id/.libs"
client=-sdl
fi
case "$1" in
--- /dev/null
+#ifndef __D0_H__
+#define __D0_H__
+
+#include <unistd.h> // size_t
+
+#define EXPORT __attribute__((__visibility__("default")))
+#define WARN_UNUSED_RESULT __attribute__((warn_unused_result))
+#define BOOL int
+
+extern void *(*d0_malloc)(size_t len);
+extern void (*d0_free)(void *p);
+
+#endif
--- /dev/null
+#ifndef __D0_BLIND_ID_H__
+#define __D0_BLIND_ID_H__
+
+#include "d0.h"
+
+typedef struct d0_blind_id_s d0_blind_id_t;
+typedef BOOL (*d0_fastreject_function) (const d0_blind_id_t *ctx, void *pass);
+
+EXPORT WARN_UNUSED_RESULT d0_blind_id_t *d0_blind_id_new(void);
+EXPORT void d0_blind_id_free(d0_blind_id_t *a);
+EXPORT void d0_blind_id_clear(d0_blind_id_t *ctx);
+EXPORT WARN_UNUSED_RESULT BOOL d0_blind_id_copy(d0_blind_id_t *ctx, const d0_blind_id_t *src);
+EXPORT WARN_UNUSED_RESULT BOOL d0_blind_id_generate_private_key(d0_blind_id_t *ctx, int k);
+EXPORT WARN_UNUSED_RESULT BOOL d0_blind_id_generate_private_key_fastreject(d0_blind_id_t *ctx, int k, d0_fastreject_function reject, void *pass);
+EXPORT WARN_UNUSED_RESULT BOOL d0_blind_id_read_private_key(d0_blind_id_t *ctx, const char *inbuf, size_t inbuflen);
+EXPORT WARN_UNUSED_RESULT BOOL d0_blind_id_read_public_key(d0_blind_id_t *ctx, const char *inbuf, size_t inbuflen);
+EXPORT WARN_UNUSED_RESULT BOOL d0_blind_id_write_private_key(const d0_blind_id_t *ctx, char *outbuf, size_t *outbuflen);
+EXPORT WARN_UNUSED_RESULT BOOL d0_blind_id_write_public_key(const d0_blind_id_t *ctx, char *outbuf, size_t *outbuflen);
+EXPORT WARN_UNUSED_RESULT BOOL d0_blind_id_fingerprint64_public_key(const d0_blind_id_t *ctx, char *outbuf, size_t *outbuflen);
+EXPORT WARN_UNUSED_RESULT BOOL d0_blind_id_generate_private_id_modulus(d0_blind_id_t *ctx);
+EXPORT WARN_UNUSED_RESULT BOOL d0_blind_id_read_private_id_modulus(d0_blind_id_t *ctx, const char *inbuf, size_t inbuflen);
+EXPORT WARN_UNUSED_RESULT BOOL d0_blind_id_write_private_id_modulus(const d0_blind_id_t *ctx, char *outbuf, size_t *outbuflen);
+EXPORT WARN_UNUSED_RESULT BOOL d0_blind_id_generate_private_id_start(d0_blind_id_t *ctx);
+EXPORT WARN_UNUSED_RESULT BOOL d0_blind_id_generate_private_id_request(d0_blind_id_t *ctx, char *outbuf, size_t *outbuflen);
+EXPORT WARN_UNUSED_RESULT BOOL d0_blind_id_answer_private_id_request(const d0_blind_id_t *ctx, const char *inbuf, size_t inbuflen, char *outbuf, size_t *outbuflen);
+EXPORT WARN_UNUSED_RESULT BOOL d0_blind_id_finish_private_id_request(d0_blind_id_t *ctx, const char *inbuf, size_t inbuflen);
+EXPORT WARN_UNUSED_RESULT BOOL d0_blind_id_read_private_id_request_camouflage(d0_blind_id_t *ctx, const char *inbuf, size_t inbuflen);
+EXPORT WARN_UNUSED_RESULT BOOL d0_blind_id_write_private_id_request_camouflage(const d0_blind_id_t *ctx, char *outbuf, size_t *outbuflen);
+EXPORT WARN_UNUSED_RESULT BOOL d0_blind_id_read_private_id(d0_blind_id_t *ctx, const char *inbuf, size_t inbuflen);
+EXPORT WARN_UNUSED_RESULT BOOL d0_blind_id_read_public_id(d0_blind_id_t *ctx, const char *inbuf, size_t inbuflen);
+EXPORT WARN_UNUSED_RESULT BOOL d0_blind_id_write_private_id(const d0_blind_id_t *ctx, char *outbuf, size_t *outbuflen);
+EXPORT WARN_UNUSED_RESULT BOOL d0_blind_id_write_public_id(const d0_blind_id_t *ctx, char *outbuf, size_t *outbuflen);
+EXPORT WARN_UNUSED_RESULT BOOL d0_blind_id_authenticate_with_private_id_start(d0_blind_id_t *ctx, BOOL is_first, BOOL send_modulus, char *message, size_t msglen, char *outbuf, size_t *outbuflen);
+EXPORT WARN_UNUSED_RESULT BOOL d0_blind_id_authenticate_with_private_id_challenge(d0_blind_id_t *ctx, BOOL is_first, BOOL recv_modulus, const char *inbuf, size_t inbuflen, char *outbuf, size_t *outbuflen, BOOL *status);
+EXPORT WARN_UNUSED_RESULT BOOL d0_blind_id_authenticate_with_private_id_response(d0_blind_id_t *ctx, const char *inbuf, size_t inbuflen, char *outbuf, size_t *outbuflen);
+EXPORT WARN_UNUSED_RESULT BOOL d0_blind_id_authenticate_with_private_id_verify(d0_blind_id_t *ctx, const char *inbuf, size_t inbuflen, char *msg, size_t *msglen, BOOL *status);
+EXPORT WARN_UNUSED_RESULT BOOL d0_blind_id_fingerprint64_public_id(const d0_blind_id_t *ctx, char *outbuf, size_t *outbuflen);
+EXPORT WARN_UNUSED_RESULT BOOL d0_blind_id_sessionkey_public_id(const d0_blind_id_t *ctx, char *outbuf, size_t *outbuflen); // can only be done after successful key exchange, this performs a modpow; key length is limited by SHA_DIGESTSIZE for now; also ONLY valid after successful d0_blind_id_authenticate_with_private_id_verify/d0_blind_id_fingerprint64_public_id
+
+EXPORT void d0_blind_id_INITIALIZE(void);
+EXPORT void d0_blind_id_SHUTDOWN(void);
+
+EXPORT void d0_blind_id_util_sha256(char *out, const char *in, size_t n);
+
+#endif
--- /dev/null
+# libd0_blind_id.la - a libtool library file
+# Generated by ltmain.sh (GNU libtool) 2.2.6 Debian-2.2.6a-4
+#
+# Please DO NOT delete this file!
+# It is necessary for linking the library.
+
+# The name that we can dlopen(3).
+dlname='libd0_blind_id.so.0'
+
+# Names of this library.
+library_names='libd0_blind_id.so.0.0.0 libd0_blind_id.so.0 libd0_blind_id.so'
+
+# The name of the static archive.
+old_library='libd0_blind_id.a'
+
+# Linker flags that can not go in dependency_libs.
+inherited_linker_flags=''
+
+# Libraries that this one depends upon.
+dependency_libs=' /usr/lib/libgmp.la'
+
+# Names of additional weak libraries provided by this library
+weak_library_names=''
+
+# Version information for libd0_blind_id.
+current=0
+age=0
+revision=0
+
+# Is this an already installed library?
+installed=yes
+
+# Should we warn about portability when linking against -modules?
+shouldnotlink=no
+
+# Files to dlopen/dlpreopen
+dlopen=''
+dlpreopen=''
+
+# Directory that this library needs to be installed in:
+libdir='/home/rpolzer/Games/Xonotic/misc/builddeps/dp.linux64/lib'
--- /dev/null
+libd0_blind_id.so.0.0.0
\ No newline at end of file
--- /dev/null
+libd0_blind_id.so.0.0.0
\ No newline at end of file
--- /dev/null
+# libd0_rijndael.la - a libtool library file
+# Generated by ltmain.sh (GNU libtool) 2.2.6 Debian-2.2.6a-4
+#
+# Please DO NOT delete this file!
+# It is necessary for linking the library.
+
+# The name that we can dlopen(3).
+dlname='libd0_rijndael.so.0'
+
+# Names of this library.
+library_names='libd0_rijndael.so.0.0.0 libd0_rijndael.so.0 libd0_rijndael.so'
+
+# The name of the static archive.
+old_library='libd0_rijndael.a'
+
+# Linker flags that can not go in dependency_libs.
+inherited_linker_flags=''
+
+# Libraries that this one depends upon.
+dependency_libs=' /usr/lib/libgmp.la'
+
+# Names of additional weak libraries provided by this library
+weak_library_names=''
+
+# Version information for libd0_rijndael.
+current=0
+age=0
+revision=0
+
+# Is this an already installed library?
+installed=yes
+
+# Should we warn about portability when linking against -modules?
+shouldnotlink=no
+
+# Files to dlopen/dlpreopen
+dlopen=''
+dlpreopen=''
+
+# Directory that this library needs to be installed in:
+libdir='/home/rpolzer/Games/Xonotic/misc/builddeps/dp.linux64/lib'
--- /dev/null
+libd0_rijndael.so.0.0.0
\ No newline at end of file
--- /dev/null
+libd0_rijndael.so.0.0.0
\ No newline at end of file
--- /dev/null
+prefix=/home/rpolzer/Games/Xonotic/misc/builddeps/dp.linux64
+exec_prefix=${prefix}
+libdir=${exec_prefix}/lib
+includedir=${prefix}/include
+
+Name: Blind-ID
+Description: Library for user identification using RSA blind signatures
+Requires:
+Version: 0.1
+Libs: -L${libdir} -ld0_blind_id
+Cflags: -I${includedir}/d0_blind_id
--- /dev/null
+prefix=/usr/local
+exec_prefix=${prefix}
+libdir=${exec_prefix}/lib
+includedir=${prefix}/include
+
+Name: Blind-ID
+Description: Library for user identification using RSA blind signatures
+Requires:
+Version: 0.1
+Libs: -L${libdir} -ld0_blind_id
+Cflags: -I${includedir}/d0_blind_id
--- /dev/null
+-----BEGIN PGP MESSAGE-----
+Version: GnuPG v1.4.10 (GNU/Linux)
+
+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
+=8ysN
+-----END PGP MESSAGE-----
--- /dev/null
+-----BEGIN PGP MESSAGE-----
+Version: GnuPG v1.4.10 (GNU/Linux)
+
+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
+=/6Ot
+-----END PGP MESSAGE-----
--- /dev/null
+This is the TESTING key, and will NOT be accepted by official Xonotic releases.