003 File Manager
Current Path:
/usr/src/contrib/ldns
usr
/
src
/
contrib
/
ldns
/
📁
..
📄
Changelog
(42.17 KB)
📄
LICENSE
(1.47 KB)
📄
Makefile.in
(77.62 KB)
📄
README
(4.04 KB)
📄
README.git
(858 B)
📄
README.snapshots
(257 B)
📄
aclocal.m4
(883 B)
📄
acx_nlnetlabs.m4
(42.25 KB)
📄
ax_pkg_swig.m4
(6.65 KB)
📄
ax_python_devel.m4
(10.87 KB)
📄
buffer.c
(3.74 KB)
📁
compat
📄
config.guess
(42.74 KB)
📄
config.sub
(35.31 KB)
📄
configure
(560.43 KB)
📄
configure.ac
(31.6 KB)
📄
dane.c
(22.96 KB)
📄
dname.c
(13.12 KB)
📄
dnssec.c
(50.58 KB)
📄
dnssec_sign.c
(40.7 KB)
📄
dnssec_verify.c
(74.11 KB)
📄
dnssec_zone.c
(27.93 KB)
📁
drill
📄
duration.c
(8.63 KB)
📄
error.c
(9.53 KB)
📄
freebsd-configure.sh
(681 B)
📄
higher.c
(7.56 KB)
📄
host2str.c
(67.47 KB)
📄
host2wire.c
(13.13 KB)
📄
install-sh
(14.8 KB)
📄
keys.c
(52.57 KB)
📁
ldns
📄
libdns.doxygen
(103.99 KB)
📄
libdns.vim
(19.14 KB)
📄
linktest.c
(136 B)
📄
ltmain.sh
(316.81 KB)
📁
m4
📄
net.c
(23.2 KB)
📁
packaging
📄
packet.c
(24.25 KB)
📄
parse.c
(8.58 KB)
📄
radix.c
(36.53 KB)
📄
rbtree.c
(17.31 KB)
📄
rdata.c
(16 KB)
📄
resolver.c
(35.62 KB)
📄
rr.c
(84.07 KB)
📄
rr_functions.c
(8.59 KB)
📄
sha1.c
(6.08 KB)
📄
sha2.c
(29.86 KB)
📄
str2host.c
(37.63 KB)
📄
tsig.c
(11.98 KB)
📄
update.c
(7.54 KB)
📄
util.c
(17.68 KB)
📄
wire2host.c
(12.71 KB)
📄
zone.c
(6.17 KB)
Editing: sha1.c
/* * modified for ldns by Jelte Jansen, original taken from OpenBSD: * * SHA-1 in C * By Steve Reid <steve@edmweb.com> * 100% Public Domain * * Test Vectors (from FIPS PUB 180-1) * "abc" * A9993E36 4706816A BA3E2571 7850C26C 9CD0D89D * "abcdbcdecdefdefgefghfghighijhijkijkljklmklmnlmnomnopnopq" * 84983E44 1C3BD26E BAAE4AA1 F95129E5 E54670F1 * A million repetitions of "a" * 34AA973C D4C4DAA4 F61EEB2B DBAD2731 6534016F */ /* #define LITTLE_ENDIAN * This should be #define'd already, if true. */ #include <ldns/config.h> #include <ldns/ldns.h> #include <strings.h> #define SHA1HANDSOFF 1 /* Copies data before messing with it. */ #define rol(value, bits) (((value) << (bits)) | ((value) >> (32 - (bits)))) /* blk0() and blk() perform the initial expand. */ /* I got the idea of expanding during the round function from SSLeay */ #if BYTE_ORDER == LITTLE_ENDIAN #define blk0(i) (block->l[i] = (rol(block->l[i],24)&0xFF00FF00) \ |(rol(block->l[i],8)&0x00FF00FF)) #else #define blk0(i) block->l[i] #endif #define blk(i) (block->l[i&15] = rol(block->l[(i+13)&15]^block->l[(i+8)&15] \ ^block->l[(i+2)&15]^block->l[i&15],1)) /* (R0+R1), R2, R3, R4 are the different operations used in SHA1 */ #define R0(v,w,x,y,z,i) z+=((w&(x^y))^y)+blk0(i)+0x5A827999+rol(v,5);w=rol(w,30); #define R1(v,w,x,y,z,i) z+=((w&(x^y))^y)+blk(i)+0x5A827999+rol(v,5);w=rol(w,30); #define R2(v,w,x,y,z,i) z+=(w^x^y)+blk(i)+0x6ED9EBA1+rol(v,5);w=rol(w,30); #define R3(v,w,x,y,z,i) z+=(((w|x)&y)|(w&x))+blk(i)+0x8F1BBCDC+rol(v,5);w=rol(w,30); #define R4(v,w,x,y,z,i) z+=(w^x^y)+blk(i)+0xCA62C1D6+rol(v,5);w=rol(w,30); /* Hash a single 512-bit block. This is the core of the algorithm. */ void ldns_sha1_transform(uint32_t state[5], const unsigned char buffer[LDNS_SHA1_BLOCK_LENGTH]) { uint32_t a, b, c, d, e; typedef union { unsigned char c[64]; unsigned int l[16]; } CHAR64LONG16; CHAR64LONG16* block; #ifdef SHA1HANDSOFF unsigned char workspace[LDNS_SHA1_BLOCK_LENGTH]; block = (CHAR64LONG16 *)workspace; memmove(block, buffer, LDNS_SHA1_BLOCK_LENGTH); #else block = (CHAR64LONG16 *)buffer; #endif /* Copy context->state[] to working vars */ a = state[0]; b = state[1]; c = state[2]; d = state[3]; e = state[4]; /* 4 rounds of 20 operations each. Loop unrolled. */ R0(a,b,c,d,e, 0); R0(e,a,b,c,d, 1); R0(d,e,a,b,c, 2); R0(c,d,e,a,b, 3); R0(b,c,d,e,a, 4); R0(a,b,c,d,e, 5); R0(e,a,b,c,d, 6); R0(d,e,a,b,c, 7); R0(c,d,e,a,b, 8); R0(b,c,d,e,a, 9); R0(a,b,c,d,e,10); R0(e,a,b,c,d,11); R0(d,e,a,b,c,12); R0(c,d,e,a,b,13); R0(b,c,d,e,a,14); R0(a,b,c,d,e,15); R1(e,a,b,c,d,16); R1(d,e,a,b,c,17); R1(c,d,e,a,b,18); R1(b,c,d,e,a,19); R2(a,b,c,d,e,20); R2(e,a,b,c,d,21); R2(d,e,a,b,c,22); R2(c,d,e,a,b,23); R2(b,c,d,e,a,24); R2(a,b,c,d,e,25); R2(e,a,b,c,d,26); R2(d,e,a,b,c,27); R2(c,d,e,a,b,28); R2(b,c,d,e,a,29); R2(a,b,c,d,e,30); R2(e,a,b,c,d,31); R2(d,e,a,b,c,32); R2(c,d,e,a,b,33); R2(b,c,d,e,a,34); R2(a,b,c,d,e,35); R2(e,a,b,c,d,36); R2(d,e,a,b,c,37); R2(c,d,e,a,b,38); R2(b,c,d,e,a,39); R3(a,b,c,d,e,40); R3(e,a,b,c,d,41); R3(d,e,a,b,c,42); R3(c,d,e,a,b,43); R3(b,c,d,e,a,44); R3(a,b,c,d,e,45); R3(e,a,b,c,d,46); R3(d,e,a,b,c,47); R3(c,d,e,a,b,48); R3(b,c,d,e,a,49); R3(a,b,c,d,e,50); R3(e,a,b,c,d,51); R3(d,e,a,b,c,52); R3(c,d,e,a,b,53); R3(b,c,d,e,a,54); R3(a,b,c,d,e,55); R3(e,a,b,c,d,56); R3(d,e,a,b,c,57); R3(c,d,e,a,b,58); R3(b,c,d,e,a,59); R4(a,b,c,d,e,60); R4(e,a,b,c,d,61); R4(d,e,a,b,c,62); R4(c,d,e,a,b,63); R4(b,c,d,e,a,64); R4(a,b,c,d,e,65); R4(e,a,b,c,d,66); R4(d,e,a,b,c,67); R4(c,d,e,a,b,68); R4(b,c,d,e,a,69); R4(a,b,c,d,e,70); R4(e,a,b,c,d,71); R4(d,e,a,b,c,72); R4(c,d,e,a,b,73); R4(b,c,d,e,a,74); R4(a,b,c,d,e,75); R4(e,a,b,c,d,76); R4(d,e,a,b,c,77); R4(c,d,e,a,b,78); R4(b,c,d,e,a,79); /* Add the working vars back into context.state[] */ state[0] += a; state[1] += b; state[2] += c; state[3] += d; state[4] += e; /* Wipe variables */ a = b = c = d = e = 0; } /* SHA1Init - Initialize new context */ void ldns_sha1_init(ldns_sha1_ctx *context) { /* SHA1 initialization constants */ context->count = 0; context->state[0] = 0x67452301; context->state[1] = 0xEFCDAB89; context->state[2] = 0x98BADCFE; context->state[3] = 0x10325476; context->state[4] = 0xC3D2E1F0; } /* Run your data through this. */ void ldns_sha1_update(ldns_sha1_ctx *context, const unsigned char *data, unsigned int len) { unsigned int i; unsigned int j; j = (unsigned)(uint32_t)((context->count >> 3) & 63); context->count += (len << 3); if ((j + len) > 63) { memmove(&context->buffer[j], data, (i = 64 - j)); ldns_sha1_transform(context->state, context->buffer); for ( ; i + 63 < len; i += 64) { ldns_sha1_transform(context->state, &data[i]); } j = 0; } else i = 0; memmove(&context->buffer[j], &data[i], len - i); } /* Add padding and return the message digest. */ void ldns_sha1_final(unsigned char digest[LDNS_SHA1_DIGEST_LENGTH], ldns_sha1_ctx *context) { unsigned int i; unsigned char finalcount[8]; for (i = 0; i < 8; i++) { finalcount[i] = (unsigned char)((context->count >> ((7 - (i & 7)) * 8)) & 255); /* Endian independent */ } ldns_sha1_update(context, (unsigned char *)"\200", 1); while ((context->count & 504) != 448) { ldns_sha1_update(context, (unsigned char *)"\0", 1); } ldns_sha1_update(context, finalcount, 8); /* Should cause a SHA1Transform() */ if (digest != NULL) for (i = 0; i < LDNS_SHA1_DIGEST_LENGTH; i++) { digest[i] = (unsigned char)((context->state[i >> 2] >> ((3 - (i & 3)) * 8)) & 255); } #ifdef SHA1HANDSOFF /* make SHA1Transform overwrite its own static vars */ ldns_sha1_transform(context->state, context->buffer); #endif } unsigned char * ldns_sha1(unsigned char *data, unsigned int data_len, unsigned char *digest) { ldns_sha1_ctx ctx; ldns_sha1_init(&ctx); ldns_sha1_update(&ctx, data, data_len); ldns_sha1_final(digest, &ctx); return digest; }
Upload File
Create Folder