9838b7032e
This is strictly the application of the script 'x-indent-all.sh' from util/modular. Compared to the patch that Daniel posted in January, I've added a few indent flags: -bap -psl -T PrivatePtr -T pmWait -T _XFUNCPROTOBEGIN -T _XFUNCPROTOEND -T _X_EXPORT The typedefs were needed to make the output of sdksyms.sh match the previous output, otherwise, the code is formatted badly enough that sdksyms.sh generates incorrect output. The generated code was compared with the previous version and found to be essentially identical -- "assert" line numbers and BUILD_TIME were the only differences found. The comparison was done with this script: dir1=$1 dir2=$2 for dir in $dir1 $dir2; do (cd $dir && find . -name '*.o' | while read file; do dir=`dirname $file` base=`basename $file .o` dump=$dir/$base.dump objdump -d $file > $dump done) done find $dir1 -name '*.dump' | while read dump; do otherdump=`echo $dump | sed "s;$dir1;$dir2;"` diff -u $dump $otherdump done Signed-off-by: Keith Packard <keithp@keithp.com> Acked-by: Daniel Stone <daniel@fooishbar.org> Acked-by: Alan Coopersmith <alan.coopersmith@oracle.com>
196 lines
3.2 KiB
C
196 lines
3.2 KiB
C
#ifdef HAVE_DIX_CONFIG_H
|
|
#include <dix-config.h>
|
|
#endif
|
|
|
|
#include "os.h"
|
|
#include "xsha1.h"
|
|
|
|
#if defined(HAVE_SHA1_IN_LIBMD) /* Use libmd for SHA1 */ \
|
|
|| defined(HAVE_SHA1_IN_LIBC) /* Use libc for SHA1 */
|
|
|
|
#include <sha1.h>
|
|
|
|
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)
|
|
{
|
|
SHA1_CTX *sha1_ctx = ctx;
|
|
|
|
SHA1Update(sha1_ctx, data, size);
|
|
return 1;
|
|
}
|
|
|
|
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 */
|
|
|
|
#include <CommonCrypto/CommonDigest.h>
|
|
|
|
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)
|
|
{
|
|
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])
|
|
{
|
|
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 */
|
|
|
|
#include <gcrypt.h>
|
|
|
|
void *
|
|
x_sha1_init(void)
|
|
{
|
|
static int init;
|
|
gcry_md_hd_t h;
|
|
gcry_error_t err;
|
|
|
|
if (!init) {
|
|
if (!gcry_check_version(NULL))
|
|
return NULL;
|
|
gcry_control(GCRYCTL_DISABLE_SECMEM, 0);
|
|
gcry_control(GCRYCTL_INITIALIZATION_FINISHED, 0);
|
|
init = 1;
|
|
}
|
|
|
|
err = gcry_md_open(&h, GCRY_MD_SHA1, 0);
|
|
if (err)
|
|
return NULL;
|
|
return h;
|
|
}
|
|
|
|
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])
|
|
{
|
|
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 */
|
|
|
|
#include <libsha1.h>
|
|
|
|
void *
|
|
x_sha1_init(void)
|
|
{
|
|
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)
|
|
{
|
|
sha1_hash(data, size, ctx);
|
|
return 1;
|
|
}
|
|
|
|
int
|
|
x_sha1_final(void *ctx, unsigned char result[20])
|
|
{
|
|
sha1_end(result, ctx);
|
|
free(ctx);
|
|
return 1;
|
|
}
|
|
|
|
#else /* Use OpenSSL's libcrypto */
|
|
|
|
#include <stddef.h> /* buggy openssl/sha.h wants size_t */
|
|
#include <openssl/sha.h>
|
|
|
|
void *
|
|
x_sha1_init(void)
|
|
{
|
|
int ret;
|
|
SHA_CTX *ctx = malloc(sizeof(*ctx));
|
|
|
|
if (!ctx)
|
|
return NULL;
|
|
ret = SHA1_Init(ctx);
|
|
if (!ret) {
|
|
free(ctx);
|
|
return NULL;
|
|
}
|
|
return ctx;
|
|
}
|
|
|
|
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 ret;
|
|
SHA_CTX *sha_ctx = ctx;
|
|
|
|
ret = SHA1_Final(result, sha_ctx);
|
|
free(sha_ctx);
|
|
return ret;
|
|
}
|
|
|
|
#endif
|