create mode 100644 render/sha1.c
create mode 100644 render/sha1.h
-diff --git a/configure.ac b/configure.ac
-index 3e8ea10..ef21aa0 100644
---- a/configure.ac
-+++ b/configure.ac
-@@ -1305,7 +1305,7 @@ AC_DEFINE(BIGREQS, 1, [Support BigRequests extension])
-
- if test "x$SPECIAL_DTRACE_OBJECTS" = "xyes" ; then
- DIX_LIB='$(top_builddir)/dix/dix.O'
-- OS_LIB='$(top_builddir)/os/os.O $(SHA1_LIBS)'
-+ OS_LIB='$(top_builddir)/os/os.O'
- else
- DIX_LIB='$(top_builddir)/dix/libdix.la'
- OS_LIB='$(top_builddir)/os/libos.la'
-@@ -1349,99 +1349,6 @@
- MIEXT_SHADOW_LIB='$(top_builddir)/miext/shadow/libshadow.la'
- CORE_INCS='-I$(top_srcdir)/include -I$(top_builddir)/include'
-
--# SHA1 hashing
--AC_ARG_WITH([sha1],
-- [AS_HELP_STRING([--with-sha1=libc|libmd|libgcrypt|libcrypto|libsha1|CommonCrypto],
-- [choose SHA1 implementation])])
--AC_CHECK_FUNC([SHA1Init], [HAVE_SHA1_IN_LIBC=yes])
--if test "x$with_sha1" = x && test "x$HAVE_SHA1_IN_LIBC" = xyes; then
-- with_sha1=libc
--fi
--if test "x$with_sha1" = xlibc && test "x$HAVE_SHA1_IN_LIBC" != xyes; then
-- AC_MSG_ERROR([libc requested but not found])
--fi
--if test "x$with_sha1" = xlibc; then
-- AC_DEFINE([HAVE_SHA1_IN_LIBC], [1],
-- [Use libc SHA1 functions])
-- SHA1_LIBS=""
--fi
--AC_CHECK_FUNC([CC_SHA1_Init], [HAVE_SHA1_IN_COMMONCRYPTO=yes])
--if test "x$with_sha1" = x && test "x$HAVE_SHA1_IN_COMMONCRYPTO" = xyes; then
-- with_sha1=CommonCrypto
--fi
--if test "x$with_sha1" = xCommonCrypto && test "x$HAVE_SHA1_IN_COMMONCRYPTO" != xyes; then
-- AC_MSG_ERROR([CommonCrypto requested but not found])
--fi
--if test "x$with_sha1" = xCommonCrypto; then
-- AC_DEFINE([HAVE_SHA1_IN_COMMONCRYPTO], [1],
-- [Use CommonCrypto SHA1 functions])
-- SHA1_LIBS=""
--fi
--AC_CHECK_LIB([md], [SHA1Init], [HAVE_LIBMD=yes])
--if test "x$with_sha1" = x && test "x$HAVE_LIBMD" = xyes; then
-- with_sha1=libmd
--fi
--if test "x$with_sha1" = xlibmd && test "x$HAVE_LIBMD" != xyes; then
-- AC_MSG_ERROR([libmd requested but not found])
--fi
--if test "x$with_sha1" = xlibmd; then
-- AC_DEFINE([HAVE_SHA1_IN_LIBMD], [1],
-- [Use libmd SHA1 functions])
-- SHA1_LIBS=-lmd
--fi
--AC_CHECK_LIB([sha1], [sha1_begin], [HAVE_LIBSHA1=yes])
--if test "x$with_sha1" = x && test "x$HAVE_LIBSHA1" = xyes; then
-- with_sha1=libsha1
--fi
--if test "x$with_sha1" = xlibsha1 && test "x$HAVE_LIBSHA1" != xyes; then
-- AC_MSG_ERROR([libsha1 requested but not found])
--fi
--if test "x$with_sha1" = xlibsha1; then
-- AC_DEFINE([HAVE_SHA1_IN_LIBSHA1], [1],
-- [Use libsha1 for SHA1])
-- SHA1_LIBS=-lsha1
--fi
--AC_CHECK_LIB([gcrypt], [gcry_md_open], [HAVE_LIBGCRYPT=yes])
--if test "x$with_sha1" = x && test "x$HAVE_LIBGCRYPT" = xyes; then
-- with_sha1=libgcrypt
--fi
--if test "x$with_sha1" = xlibgcrypt && test "x$HAVE_LIBGCRYPT" != xyes; then
-- AC_MSG_ERROR([libgcrypt requested but not found])
--fi
--if test "x$with_sha1" = xlibgcrypt; then
-- AC_DEFINE([HAVE_SHA1_IN_LIBGCRYPT], [1],
-- [Use libgcrypt SHA1 functions])
-- SHA1_LIBS=-lgcrypt
--fi
--# We don't need all of the OpenSSL libraries, just libcrypto
--AC_CHECK_LIB([crypto], [SHA1_Init], [HAVE_LIBCRYPTO=yes])
--PKG_CHECK_MODULES([OPENSSL], [openssl], [HAVE_OPENSSL_PKC=yes],
-- [HAVE_OPENSSL_PKC=no])
--if test "x$HAVE_LIBCRYPTO" = xyes || test "x$HAVE_OPENSSL_PKC" = xyes; then
-- if test "x$with_sha1" = x; then
-- with_sha1=libcrypto
-- fi
--else
-- if test "x$with_sha1" = xlibcrypto; then
-- AC_MSG_ERROR([OpenSSL libcrypto requested but not found])
-- fi
--fi
--if test "x$with_sha1" = xlibcrypto; then
-- if test "x$HAVE_LIBCRYPTO" = xyes; then
-- SHA1_LIBS=-lcrypto
-- else
-- SHA1_LIBS="$OPENSSL_LIBS"
-- SHA1_CFLAGS="$OPENSSL_CFLAGS"
-- fi
--fi
--AC_MSG_CHECKING([for SHA1 implementation])
--if test "x$with_sha1" = x; then
-- AC_MSG_ERROR([No suitable SHA1 implementation found])
--fi
--AC_MSG_RESULT([$with_sha1])
--AC_SUBST(SHA1_LIBS)
--AC_SUBST(SHA1_CFLAGS)
--
- PKG_CHECK_MODULES([XSERVERCFLAGS], [$REQUIRED_MODULES $REQUIRED_LIBS])
- PKG_CHECK_MODULES([XSERVERLIBS], [$REQUIRED_LIBS])
-
diff --git a/include/dix-config.h.in b/include/dix-config.h.in
index 058c8fd..d6e99a5 100644
--- a/include/dix-config.h.in
+++ b/include/dix-config.h.in
-@@ -160,21 +160,6 @@
+@@ -142,24 +142,6 @@
/* Define to 1 if you have the <rpcsvc/dbm.h> header file. */
#undef HAVE_RPCSVC_DBM_H
-/* Define to use CommonCrypto SHA1 functions */
-#undef HAVE_SHA1_IN_COMMONCRYPTO
-
+-/* Define to use CryptoAPI SHA1 functions */
+-#undef HAVE_SHA1_IN_CRYPTOAPI
+-
-/* Define to use libmd SHA1 functions */
-#undef HAVE_SHA1_IN_LIBMD
-
xstrans.c \
xprintf.c \
$(XORG_SRCS)
-diff --git a/os/xsha1.c b/os/xsha1.c
-deleted file mode 100644
-index 355862f..0000000
---- a/os/xsha1.c
-+++ /dev/null
-@@ -1,168 +0,0 @@
+--- a/os/xsha1.c 2012-03-30 04:57:28.000000000 +0200
++++ /dev/null 2011-06-01 08:46:43.490033582 +0200
+@@ -1,237 +0,0 @@
-#ifdef HAVE_DIX_CONFIG_H
-#include <dix-config.h>
-#endif
-#include "xsha1.h"
-
-#if defined(HAVE_SHA1_IN_LIBMD) /* Use libmd for SHA1 */ \
-- || defined(HAVE_SHA1_IN_LIBC) /* Use libc for SHA1 */
+- || defined(HAVE_SHA1_IN_LIBC) /* Use libc for SHA1 */
-
--# include <sha1.h>
+-#include <sha1.h>
-
--void *x_sha1_init(void)
+-void *
+-x_sha1_init(void)
-{
-- SHA1_CTX *ctx = xalloc(sizeof(*ctx));
+- SHA1_CTX *ctx = malloc(sizeof(*ctx));
+-
- if (!ctx)
- return NULL;
- SHA1Init(ctx);
- return ctx;
-}
-
--int x_sha1_update(void *ctx, void *data, int size)
+-int
+-x_sha1_update(void *ctx, void *data, int size)
-{
- SHA1_CTX *sha1_ctx = ctx;
+-
- SHA1Update(sha1_ctx, data, size);
- return 1;
-}
-
--int x_sha1_final(void *ctx, unsigned char result[20])
+-int
+-x_sha1_final(void *ctx, unsigned char result[20])
-{
- SHA1_CTX *sha1_ctx = ctx;
+-
- SHA1Final(result, sha1_ctx);
-- xfree(sha1_ctx);
+- free(sha1_ctx);
- return 1;
-}
-
--#elif defined(HAVE_SHA1_IN_COMMONCRYPTO) /* Use CommonCrypto for SHA1 */
+-#elif defined(HAVE_SHA1_IN_COMMONCRYPTO) /* Use CommonCrypto for SHA1 */
-
-#include <CommonCrypto/CommonDigest.h>
-
--void *x_sha1_init(void)
+-void *
+-x_sha1_init(void)
-{
-- CC_SHA1_CTX *ctx = xalloc(sizeof(*ctx));
+- CC_SHA1_CTX *ctx = malloc(sizeof(*ctx));
+-
- if (!ctx)
- return NULL;
- CC_SHA1_Init(ctx);
- return ctx;
-}
-
--int x_sha1_update(void *ctx, void *data, int size)
+-int
+-x_sha1_update(void *ctx, void *data, int size)
-{
- CC_SHA1_CTX *sha1_ctx = ctx;
+-
- CC_SHA1_Update(sha1_ctx, data, size);
- return 1;
-}
-
--int x_sha1_final(void *ctx, unsigned char result[20])
+-int
+-x_sha1_final(void *ctx, unsigned char result[20])
-{
- CC_SHA1_CTX *sha1_ctx = ctx;
+-
- CC_SHA1_Final(result, sha1_ctx);
-- xfree(sha1_ctx);
+- free(sha1_ctx);
+- return 1;
+-}
+-
+-#elif defined(HAVE_SHA1_IN_CRYPTOAPI) /* Use CryptoAPI for SHA1 */
+-
+-#define WIN32_LEAN_AND_MEAN
+-#include <X11/Xwindows.h>
+-#include <wincrypt.h>
+-
+-static HCRYPTPROV hProv;
+-
+-void *
+-x_sha1_init(void)
+-{
+- HCRYPTHASH *ctx = malloc(sizeof(*ctx));
+-
+- if (!ctx)
+- return NULL;
+- CryptAcquireContext(&hProv, NULL, MS_DEF_PROV, PROV_RSA_FULL, CRYPT_VERIFYCONTEXT);
+- CryptCreateHash(hProv, CALG_SHA1, 0, 0, ctx);
+- return ctx;
+-}
+-
+-int
+-x_sha1_update(void *ctx, void *data, int size)
+-{
+- HCRYPTHASH *hHash = ctx;
+-
+- CryptHashData(*hHash, data, size, 0);
+- return 1;
+-}
+-
+-int
+-x_sha1_final(void *ctx, unsigned char result[20])
+-{
+- HCRYPTHASH *hHash = ctx;
+- DWORD len = 20;
+-
+- CryptGetHashParam(*hHash, HP_HASHVAL, result, &len, 0);
+- CryptDestroyHash(*hHash);
+- CryptReleaseContext(hProv, 0);
+- free(ctx);
- return 1;
-}
-
--#elif defined(HAVE_SHA1_IN_LIBGCRYPT) /* Use libgcrypt for SHA1 */
+-#elif defined(HAVE_SHA1_IN_LIBGCRYPT) /* Use libgcrypt for SHA1 */
-
--# include <gcrypt.h>
+-#include <gcrypt.h>
-
--void *x_sha1_init(void)
+-void *
+-x_sha1_init(void)
-{
- static int init;
- gcry_md_hd_t h;
- return h;
-}
-
--int x_sha1_update(void *ctx, void *data, int size)
+-int
+-x_sha1_update(void *ctx, void *data, int size)
-{
- gcry_md_hd_t h = ctx;
+-
- gcry_md_write(h, data, size);
- return 1;
-}
-
--int x_sha1_final(void *ctx, unsigned char result[20])
+-int
+-x_sha1_final(void *ctx, unsigned char result[20])
-{
- gcry_md_hd_t h = ctx;
+-
- memcpy(result, gcry_md_read(h, GCRY_MD_SHA1), 20);
- gcry_md_close(h);
- return 1;
-}
-
--#elif defined(HAVE_SHA1_IN_LIBSHA1) /* Use libsha1 */
+-#elif defined(HAVE_SHA1_IN_LIBSHA1) /* Use libsha1 */
-
--# include <libsha1.h>
+-#include <libsha1.h>
-
--void *x_sha1_init(void)
+-void *
+-x_sha1_init(void)
-{
-- sha1_ctx *ctx = xalloc(sizeof(*ctx));
-- if(!ctx)
+- sha1_ctx *ctx = malloc(sizeof(*ctx));
+-
+- if (!ctx)
- return NULL;
- sha1_begin(ctx);
- return ctx;
-}
-
--int x_sha1_update(void *ctx, void *data, int size)
+-int
+-x_sha1_update(void *ctx, void *data, int size)
-{
- sha1_hash(data, size, ctx);
- return 1;
-}
-
--int x_sha1_final(void *ctx, unsigned char result[20])
+-int
+-x_sha1_final(void *ctx, unsigned char result[20])
-{
- sha1_end(result, ctx);
-- xfree(ctx);
+- free(ctx);
- return 1;
-}
-
--#else /* Use OpenSSL's libcrypto */
+-#else /* Use OpenSSL's libcrypto */
-
--# include <stddef.h> /* buggy openssl/sha.h wants size_t */
--# include <openssl/sha.h>
+-#include <stddef.h> /* buggy openssl/sha.h wants size_t */
+-#include <openssl/sha.h>
-
--void *x_sha1_init(void)
+-void *
+-x_sha1_init(void)
-{
- int ret;
-- SHA_CTX *ctx = xalloc(sizeof(*ctx));
+- SHA_CTX *ctx = malloc(sizeof(*ctx));
+-
- if (!ctx)
- return NULL;
- ret = SHA1_Init(ctx);
- if (!ret) {
-- xfree(ctx);
+- free(ctx);
- return NULL;
- }
- return ctx;
-}
-
--int x_sha1_update(void *ctx, void *data, int size)
+-int
+-x_sha1_update(void *ctx, void *data, int size)
-{
- int ret;
- SHA_CTX *sha_ctx = ctx;
+-
- ret = SHA1_Update(sha_ctx, data, size);
- if (!ret)
-- xfree(sha_ctx);
+- free(sha_ctx);
- return ret;
-}
-
--int x_sha1_final(void *ctx, unsigned char result[20])
+-int
+-x_sha1_final(void *ctx, unsigned char result[20])
-{
- int ret;
- SHA_CTX *sha_ctx = ctx;
+-
- ret = SHA1_Final(result, sha_ctx);
-- xfree(sha_ctx);
+- free(sha_ctx);
- return ret;
-}
-
index 216c613..bb46702 100644
--- a/render/Makefile.am
+++ b/render/Makefile.am
-@@ -14,8 +14,11 @@ librender_la_SOURCES = \
+@@ -13,8 +13,11 @@ librender_la_SOURCES = \
+ mitrap.c \
mitri.c \
picture.c \
- render.c \
+ sha1.c \
- renderedge.c
+ render.c
if XORG
- sdk_HEADERS = picture.h mipict.h glyphstr.h picturestr.h renderedge.h
+ sdk_HEADERS = picture.h mipict.h glyphstr.h picturestr.h
endif
+
+EXTRA_DIST = sha1.h
#include "misc.h"
#include "scrnintstr.h"
#include "os.h"
-@@ -193,21 +192,13 @@ HashGlyph (xGlyphInfo *gi,
- unsigned long size,
- unsigned char sha1[20])
+@@ -167,21 +167,13 @@ int
+ HashGlyph(xGlyphInfo * gi,
+ CARD8 *bits, unsigned long size, unsigned char sha1[20])
{
- void *ctx = x_sha1_init();
- int success;
--
++ SHA1_CTX ctx;
+
- if (!ctx)
-- return BadAlloc;
--
+- return BadAlloc;
++ SHA1Init (&ctx);
++ SHA1Update (&ctx, gi, sizeof (xGlyphInfo));
++ SHA1Update (&ctx, bits, size);
++ SHA1Final (sha1, &ctx);
+
- success = x_sha1_update(ctx, gi, sizeof(xGlyphInfo));
- if (!success)
-- return BadAlloc;
+- return BadAlloc;
- success = x_sha1_update(ctx, bits, size);
- if (!success)
-- return BadAlloc;
+- return BadAlloc;
- success = x_sha1_final(ctx, sha1);
- if (!success)
-- return BadAlloc;
-+ SHA1_CTX ctx;
-+
-+ SHA1Init (&ctx);
-+ SHA1Update (&ctx, gi, sizeof (xGlyphInfo));
-+ SHA1Update (&ctx, bits, size);
-+ SHA1Final (sha1, &ctx);
-+
+- return BadAlloc;
return Success;
}
--
1.6.0.4
+--- xorg-server-1.9.2.902/configure.ac.orig 2010-12-04 06:56:52.000000000 +0100
++++ xorg-server-1.9.2.902/configure.ac 2010-12-07 19:16:06.420296250 +0100
+@@ -1338,7 +1338,7 @@
+
+ if test "x$SPECIAL_DTRACE_OBJECTS" = "xyes" ; then
+ DIX_LIB='$(top_builddir)/dix/dix.O'
+- OS_LIB='$(top_builddir)/os/os.O $(SHA1_LIBS) $(DLOPEN_LIBS)'
++ OS_LIB='$(top_builddir)/os/os.O $(DLOPEN_LIBS)'
+ else
+ DIX_LIB='$(top_builddir)/dix/libdix.la'
+ OS_LIB='$(top_builddir)/os/libos.la'
+@@ -1358,112 +1358,6 @@
+ MIEXT_SYNC_LIB='$(top_builddir)/miext/sync/libsync.la'
+ CORE_INCS='-I$(top_srcdir)/include -I$(top_builddir)/include'
+
+-# SHA1 hashing
+-AC_ARG_WITH([sha1],
+- [AS_HELP_STRING([--with-sha1=libc|libmd|libgcrypt|libcrypto|libsha1|CommonCrypto|CryptoAPI],
+- [choose SHA1 implementation])])
+-AC_CHECK_FUNC([SHA1Init], [HAVE_SHA1_IN_LIBC=yes])
+-if test "x$with_sha1" = x && test "x$HAVE_SHA1_IN_LIBC" = xyes; then
+- with_sha1=libc
+-fi
+-if test "x$with_sha1" = xlibc && test "x$HAVE_SHA1_IN_LIBC" != xyes; then
+- AC_MSG_ERROR([libc requested but not found])
+-fi
+-if test "x$with_sha1" = xlibc; then
+- AC_DEFINE([HAVE_SHA1_IN_LIBC], [1],
+- [Use libc SHA1 functions])
+- SHA1_LIBS=""
+-fi
+-AC_CHECK_FUNC([CC_SHA1_Init], [HAVE_SHA1_IN_COMMONCRYPTO=yes])
+-if test "x$with_sha1" = x && test "x$HAVE_SHA1_IN_COMMONCRYPTO" = xyes; then
+- with_sha1=CommonCrypto
+-fi
+-if test "x$with_sha1" = xCommonCrypto && test "x$HAVE_SHA1_IN_COMMONCRYPTO" != xyes; then
+- AC_MSG_ERROR([CommonCrypto requested but not found])
+-fi
+-if test "x$with_sha1" = xCommonCrypto; then
+- AC_DEFINE([HAVE_SHA1_IN_COMMONCRYPTO], [1],
+- [Use CommonCrypto SHA1 functions])
+- SHA1_LIBS=""
+-fi
+-dnl stdcall functions cannot be tested with AC_CHECK_LIB
+-AC_CHECK_HEADER([wincrypt.h], [HAVE_SHA1_IN_CRYPTOAPI=yes], [], [#include <windows.h>])
+-if test "x$with_sha1" = x && test "x$HAVE_SHA1_IN_CRYPTOAPI" = xyes; then
+- with_sha1=CryptoAPI
+-fi
+-if test "x$with_sha1" = xCryptoAPI && test "x$HAVE_SHA1_IN_CRYPTOAPI" != xyes; then
+- AC_MSG_ERROR([CryptoAPI requested but not found])
+-fi
+-if test "x$with_sha1" = xCryptoAPI; then
+- AC_DEFINE([HAVE_SHA1_IN_CRYPTOAPI], [1],
+- [Use CryptoAPI SHA1 functions])
+- SHA1_LIBS=""
+-fi
+-AC_CHECK_LIB([md], [SHA1Init], [HAVE_LIBMD=yes])
+-if test "x$with_sha1" = x && test "x$HAVE_LIBMD" = xyes; then
+- with_sha1=libmd
+-fi
+-if test "x$with_sha1" = xlibmd && test "x$HAVE_LIBMD" != xyes; then
+- AC_MSG_ERROR([libmd requested but not found])
+-fi
+-if test "x$with_sha1" = xlibmd; then
+- AC_DEFINE([HAVE_SHA1_IN_LIBMD], [1],
+- [Use libmd SHA1 functions])
+- SHA1_LIBS=-lmd
+-fi
+-PKG_CHECK_MODULES([LIBSHA1], [libsha1], [HAVE_LIBSHA1=yes], [HAVE_LIBSHA1=no])
+-if test "x$with_sha1" = x && test "x$HAVE_LIBSHA1" = xyes; then
+- with_sha1=libsha1
+-fi
+-if test "x$with_sha1" = xlibsha1 && test "x$HAVE_LIBSHA1" != xyes; then
+- AC_MSG_ERROR([libsha1 requested but not found])
+-fi
+-if test "x$with_sha1" = xlibsha1; then
+- AC_DEFINE([HAVE_SHA1_IN_LIBSHA1], [1],
+- [Use libsha1 for SHA1])
+- SHA1_LIBS=-lsha1
+-fi
+-AC_CHECK_LIB([gcrypt], [gcry_md_open], [HAVE_LIBGCRYPT=yes])
+-if test "x$with_sha1" = x && test "x$HAVE_LIBGCRYPT" = xyes; then
+- with_sha1=libgcrypt
+-fi
+-if test "x$with_sha1" = xlibgcrypt && test "x$HAVE_LIBGCRYPT" != xyes; then
+- AC_MSG_ERROR([libgcrypt requested but not found])
+-fi
+-if test "x$with_sha1" = xlibgcrypt; then
+- AC_DEFINE([HAVE_SHA1_IN_LIBGCRYPT], [1],
+- [Use libgcrypt SHA1 functions])
+- SHA1_LIBS=-lgcrypt
+-fi
+-# We don't need all of the OpenSSL libraries, just libcrypto
+-AC_CHECK_LIB([crypto], [SHA1_Init], [HAVE_LIBCRYPTO=yes])
+-PKG_CHECK_MODULES([OPENSSL], [openssl], [HAVE_OPENSSL_PKC=yes],
+- [HAVE_OPENSSL_PKC=no])
+-if test "x$HAVE_LIBCRYPTO" = xyes || test "x$HAVE_OPENSSL_PKC" = xyes; then
+- if test "x$with_sha1" = x; then
+- with_sha1=libcrypto
+- fi
+-else
+- if test "x$with_sha1" = xlibcrypto; then
+- AC_MSG_ERROR([OpenSSL libcrypto requested but not found])
+- fi
+-fi
+-if test "x$with_sha1" = xlibcrypto; then
+- if test "x$HAVE_LIBCRYPTO" = xyes; then
+- SHA1_LIBS=-lcrypto
+- else
+- SHA1_LIBS="$OPENSSL_LIBS"
+- SHA1_CFLAGS="$OPENSSL_CFLAGS"
+- fi
+-fi
+-AC_MSG_CHECKING([for SHA1 implementation])
+-if test "x$with_sha1" = x; then
+- AC_MSG_ERROR([No suitable SHA1 implementation found])
+-fi
+-AC_MSG_RESULT([$with_sha1])
+-AC_SUBST(SHA1_LIBS)
+-AC_SUBST(SHA1_CFLAGS)
+-
+ PKG_CHECK_MODULES([XSERVERCFLAGS], [$REQUIRED_MODULES $REQUIRED_LIBS])
+ PKG_CHECK_MODULES([XSERVERLIBS], [$REQUIRED_LIBS])
+
+