packages feed

hsgnutls-0.2.3.2: crypt_helpers.c

#include <gcrypt.h>

int endian() {
	int i = 1;
	char* p = (char *)&i;
	if(p[0] == 1) return LITTLE_ENDIAN;
	else return BIG_ENDIAN;
}

void fix_endian(char *addr,size_t len) {
	if(endian() == LITTLE_ENDIAN) {
		size_t i;
		char tmp;
		for(i=0;i<len/2;i++) {
			tmp = addr[i];
			addr[i] = addr[len-i-1];
			addr[len-i-1] = tmp;
		}
	}
}

gcry_error_t gcry_cipher_setkey2 (gcry_cipher_hd_t H, void *K, size_t L) {
	fix_endian((char*)K,L);
	return gcry_cipher_setkey(H,K,L);
}

gcry_error_t gcry_cipher_setiv2 (gcry_cipher_hd_t H, void *K, size_t L) {
	fix_endian((char*)K,L);
	return gcry_cipher_setiv(H,K,L);
}