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 = 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);
- 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 = 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);
- free(sha1_ctx);
- return 1;
-}
-
--#elif defined(HAVE_SHA1_IN_LIBGCRYPT) /* Use libgcrypt for SHA1 */
+-#elif defined(HAVE_SHA1_IN_CRYPTOAPI) /* Use CryptoAPI for SHA1 */
+-
+-#define WIN32_LEAN_AND_MEAN
+-#include <X11/Xwindows.h>
+-#include <wincrypt.h>
-
--# include <gcrypt.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;
+-}
-
--void *x_sha1_init(void)
+-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 */
+-
+-#include <gcrypt.h>
+-
+-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 = malloc(sizeof(*ctx));
-- if(!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);
- 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 = malloc(sizeof(*ctx));
+-
- if (!ctx)
- return NULL;
- ret = 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)
-{
- int ret;
- SHA_CTX *sha_ctx = ctx;
+-
- ret = SHA1_Update(sha_ctx, data, size);
- if (!ret)
- 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);
- 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;
}
else
DIX_LIB='$(top_builddir)/dix/libdix.la'
OS_LIB='$(top_builddir)/os/libos.la'
-@@ -1358,99 +1358,6 @@
- MIEXT_SHADOW_LIB='$(top_builddir)/miext/shadow/libshadow.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],
+- [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
- [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
-
PKG_CHECK_MODULES([XSERVERCFLAGS], [$REQUIRED_MODULES $REQUIRED_LIBS])
PKG_CHECK_MODULES([XSERVERLIBS], [$REQUIRED_LIBS])
+
+