Subversion Repositories Kolibri OS

Rev

Go to most recent revision | Details | Last modification | View Log | RSS feed

Rev Author Line No. Line
3115 dunkaist 1
format MS COFF
2
 
3
public @EXPORT as 'EXPORTS'
4
 
5
include '../../../../struct.inc'
6
include '../../../../proc32.inc'
7
include '../../../../macros.inc'
8
include '../../../../config.inc'
9
;include '../../../../debug.inc'
10
 
11
purge section,mov,add,sub
12
section '.flat' code readable align 16
13
 
14
include 'libcrash.inc'
15
include 'crc32.asm'
16
include 'md4.asm'
17
include 'md5.asm'
18
include 'sha1.asm'
19
include 'sha224_256.asm'
20
include 'sha384_512.asm'
21
 
22
 
23
proc lib_init
24
	; generate crc32 table
25
	bts	[crash._.init_flags], 0
26
	jc	.crc32_table_done
27
 
28
	mov	edi, crash._.crc32_table
29
	xor	ecx, ecx
30
	mov	edx, 0xedb88320
31
  .1:
32
	mov	ebx, 8
33
	mov	eax, ecx
34
  .2:
35
	shr	eax, 1
36
	jnc	@f
37
	xor	eax, edx
38
    @@:
39
	dec	ebx
40
	jnz	.2
41
	stosd
42
	inc	cl
43
	jnz	.1
44
 
45
  .crc32_table_done:
46
	ret
47
endp
48
 
49
 
50
proc crash.hash  _type, _hash, _data, _len, _callback, _msglen
51
locals
52
	hash_func	rd	1
53
endl
54
	mov	eax, [_type]
55
	mov	ecx, eax
56
	and	eax, 0x000000ff
57
	sub	eax, 1
58
	mov	edx, [crash._.table + eax*8]
59
	mov	esi, [crash._.table + eax*8 + 4]
60
	mov	edi, [_hash]
61
	mov	[hash_func], edx
62
	and	ecx, 0x0000ff00
63
	shr	ecx, 8
64
	rep	movsd
65
 
66
	stdcall	[hash_func], [_hash], [_data], [_len], [_callback], [_msglen]
67
 
68
	ret
69
endp
70
 
71
 
72
proc crash.bin2hex _bin, _hex, _type
73
	xor	eax, eax
74
	mov	ebx, crash._.bin2hex_table
75
	mov	esi, [_bin]
76
	mov	edi, [_hex]
77
	mov	ecx, [_type]
78
	and	ecx, 0x00ff0000
79
	shr	ecx, 16 - 2
80
  .byte:
81
	lodsb
82
	mov	ah, al
83
	shr	ah, 4
84
	and	al, 0x0f
85
	xlatb
86
	xchg	al, ah
87
	xlatb
88
	stosw
89
	dec	ecx
90
	jnz	.byte
91
 
92
	ret
93
endp
94
 
95
 
96
crash._.bin2hex_table	db	'0123456789abcdef'
97
crash._.table:		;	hash function,	address of initial hash value
98
			dd	crash.crc32,	crash._.crc_init
99
			dd	crash.md4,	crash._.md4_init
100
			dd	crash.md5,	crash._.md5_init
101
			dd	crash.sha1,	crash._.sha1_init
102
			dd	crash.sha256,	crash._.sha224_init
103
			dd	crash.sha256,	crash._.sha256_init
104
			dd	crash.sha512,	crash._.sha384_init
105
			dd	crash.sha512,	crash._.sha512_init
106
 
107
crash._.crc_init	dd	0xffffffff
108
crash._.md4_init:
109
crash._.md5_init:
110
crash._.sha1_init	dd	0x67452301, 0xefcdab89, 0x98badcfe, 0x10325476, 0xc3d2e1f0
111
crash._.sha224_init	dd	0xc1059ed8, 0x367cd507, 0x3070dd17, 0xf70e5939, 0xffc00b31, 0x68581511, 0x64f98fa7, 0xbefa4fa4
112
crash._.sha256_init	dd	0x6a09e667, 0xbb67ae85, 0x3c6ef372, 0xa54ff53a, 0x510e527f, 0x9b05688c, 0x1f83d9ab, 0x5be0cd19
113
crash._.sha384_init	dq	0xcbbb9d5dc1059ed8, 0x629a292a367cd507, 0x9159015a3070dd17, 0x152fecd8f70e5939,\
114
				0x67332667ffc00b31, 0x8eb44a8768581511, 0xdb0c2e0d64f98fa7, 0x47b5481dbefa4fa4
115
crash._.sha512_init	dq	0x6a09e667f3bcc908, 0xbb67ae8584caa73b, 0x3c6ef372fe94f82b, 0xa54ff53a5f1d36f1,\
116
				0x510e527fade682d1, 0x9b05688c2b3e6c1f, 0x1f83d9abfb41bd6b, 0x5be0cd19137e2179
117
 
118
crash._.init_flags	dd	0
119
crash._.sha256_table	dd	0x428a2f98, 0x71374491, 0xb5c0fbcf, 0xe9b5dba5, 0x3956c25b, 0x59f111f1, 0x923f82a4, 0xab1c5ed5,\
120
				0xd807aa98, 0x12835b01, 0x243185be, 0x550c7dc3, 0x72be5d74, 0x80deb1fe, 0x9bdc06a7, 0xc19bf174,\
121
				0xe49b69c1, 0xefbe4786, 0x0fc19dc6, 0x240ca1cc, 0x2de92c6f, 0x4a7484aa, 0x5cb0a9dc, 0x76f988da,\
122
				0x983e5152, 0xa831c66d, 0xb00327c8, 0xbf597fc7, 0xc6e00bf3, 0xd5a79147, 0x06ca6351, 0x14292967,\
123
				0x27b70a85, 0x2e1b2138, 0x4d2c6dfc, 0x53380d13, 0x650a7354, 0x766a0abb, 0x81c2c92e, 0x92722c85,\
124
				0xa2bfe8a1, 0xa81a664b, 0xc24b8b70, 0xc76c51a3, 0xd192e819, 0xd6990624, 0xf40e3585, 0x106aa070,\
125
				0x19a4c116, 0x1e376c08, 0x2748774c, 0x34b0bcb5, 0x391c0cb3, 0x4ed8aa4a, 0x5b9cca4f, 0x682e6ff3,\
126
				0x748f82ee, 0x78a5636f, 0x84c87814, 0x8cc70208, 0x90befffa, 0xa4506ceb, 0xbef9a3f7, 0xc67178f2
127
 
128
crash._.sha512_table	dq	0x428a2f98d728ae22, 0x7137449123ef65cd, 0xb5c0fbcfec4d3b2f, 0xe9b5dba58189dbbc,\
129
				0x3956c25bf348b538, 0x59f111f1b605d019, 0x923f82a4af194f9b, 0xab1c5ed5da6d8118,\
130
				0xd807aa98a3030242, 0x12835b0145706fbe, 0x243185be4ee4b28c, 0x550c7dc3d5ffb4e2,\
131
				0x72be5d74f27b896f, 0x80deb1fe3b1696b1, 0x9bdc06a725c71235, 0xc19bf174cf692694,\
132
				0xe49b69c19ef14ad2, 0xefbe4786384f25e3, 0x0fc19dc68b8cd5b5, 0x240ca1cc77ac9c65,\
133
				0x2de92c6f592b0275, 0x4a7484aa6ea6e483, 0x5cb0a9dcbd41fbd4, 0x76f988da831153b5,\
134
				0x983e5152ee66dfab, 0xa831c66d2db43210, 0xb00327c898fb213f, 0xbf597fc7beef0ee4,\
135
				0xc6e00bf33da88fc2, 0xd5a79147930aa725, 0x06ca6351e003826f, 0x142929670a0e6e70,\
136
				0x27b70a8546d22ffc, 0x2e1b21385c26c926, 0x4d2c6dfc5ac42aed, 0x53380d139d95b3df,\
137
				0x650a73548baf63de, 0x766a0abb3c77b2a8, 0x81c2c92e47edaee6, 0x92722c851482353b,\
138
				0xa2bfe8a14cf10364, 0xa81a664bbc423001, 0xc24b8b70d0f89791, 0xc76c51a30654be30,\
139
				0xd192e819d6ef5218, 0xd69906245565a910, 0xf40e35855771202a, 0x106aa07032bbd1b8,\
140
				0x19a4c116b8d2d0c8, 0x1e376c085141ab53, 0x2748774cdf8eeb99, 0x34b0bcb5e19b48a8,\
141
				0x391c0cb3c5c95a63, 0x4ed8aa4ae3418acb, 0x5b9cca4f7763e373, 0x682e6ff3d6b2b8a3,\
142
				0x748f82ee5defb2fc, 0x78a5636f43172f60, 0x84c87814a1f0ab72, 0x8cc702081a6439ec,\
143
				0x90befffa23631e28, 0xa4506cebde82bde9, 0xbef9a3f7b2c67915, 0xc67178f2e372532b,\
144
				0xca273eceea26619c, 0xd186b8c721c0c207, 0xeada7dd6cde0eb1e, 0xf57d4f7fee6ed178,\
145
				0x06f067aa72176fba, 0x0a637dc5a2c898a6, 0x113f9804bef90dae, 0x1b710b35131c471b,\
146
				0x28db77f523047d84, 0x32caab7b40c72493, 0x3c9ebe0a15c9bebc, 0x431d67c49c100d4c,\
147
				0x4cc5d4becb3e42b6, 0x597f299cfc657e2a, 0x5fcb6fab3ad6faec, 0x6c44198c4a475817
148
 
149
align 4
150
@EXPORT:
151
 
152
export                                   \
153
    lib_init        , 'lib_init'       , \
154
    crash.hash      , 'crash_hash'     , \
155
    crash.bin2hex   , 'crash_bin2hex'
156
 
157
section '.data' data readable writable align 16
158
crash._.crc32_table	rd	256