Fix SHA-256 DLL stability issues and return code

This commit is contained in:
Stanislav N Mikhailov
2026-03-04 21:05:17 +03:00
parent 967d1f6a60
commit bae0af9693
5 changed files with 16 additions and 8 deletions
+5 -1
View File
@@ -6,5 +6,9 @@ sha-256.obj
sha-256.dll
sha-256.lib
sha-256.exp
tmp_smoke_sha/*
tmp_verify_sha/*
*.h
*.tmp
*.c
sha-256.dll
+11 -7
View File
@@ -140,9 +140,9 @@ Sha256 proc CF_Addr:QWORD,CF_FullSize:QWORD,CF_CurrSize:QWORD,CF_digests:QWORD,C
movdqu myXMMSAVE+128,XMM14
movdqu myXMMSAVE+144,XMM15
mov myRnSAVE,r12
mov myRnSAVE+4,r13
mov myRnSAVE+8,r14
mov myRnSAVE+12,r15
mov myRnSAVE+8,r13
mov myRnSAVE+16,r14
mov myRnSAVE+24,r15
;если хэш по предложенному адресу = 0, запускаем Sha256Init
mov rax,qword ptr [r9]
add r9,8
@@ -190,6 +190,8 @@ Sha256 proc CF_Addr:QWORD,CF_FullSize:QWORD,CF_CurrSize:QWORD,CF_digests:QWORD,C
mov lastblocksize,1 ;сообщаю, что произойдёт переполнение и блока будет 2 (1024 бита)
endingofsegment1: ;━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓
lea rcx,lastblock ;rcx - указатель ┃
test rdx,rdx
jz end_endingofsegment2
endingofsegment2: ; ┃
mov bl,[rax] ; перебрасываю хвост в локальную область ┃
mov [rcx],bl ; оптимизировать!!! наверняка - жуткий тормоз!!! ┃
@@ -197,6 +199,7 @@ Sha256 proc CF_Addr:QWORD,CF_FullSize:QWORD,CF_CurrSize:QWORD,CF_digests:QWORD,C
inc rcx ; ┃
dec rdx ; ┃
jnz endingofsegment2;━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛
end_endingofsegment2:
mov BYTE ptr [rcx],128 ;дописываю 1 и 7 бит
mov edx,endingOfSegment
inc rdx ;в rdx - длинна хвоста + 8 бит
@@ -314,9 +317,10 @@ Sha256 proc CF_Addr:QWORD,CF_FullSize:QWORD,CF_CurrSize:QWORD,CF_digests:QWORD,C
movdqu XMM14,myXMMSAVE+128
movdqu XMM15,myXMMSAVE+144
mov R12,myRnSAVE
mov R13,myRnSAVE+4
mov R14,myRnSAVE+8
mov R15,myRnSAVE+12
mov R13,myRnSAVE+8
mov R14,myRnSAVE+16
mov R15,myRnSAVE+24
xor eax,eax ; NULL (0) = success
ret
Sha256 Endp
;Инициализация хэш функции, ввод исходных значений
@@ -6945,4 +6949,4 @@ CompCycle proc; Цикл сжатия. Вынес в отдельную проц
or r12,r11 ;A=T1+T2
ret
CompCycle Endp
end
end
BIN
View File
Binary file not shown.
BIN
View File
Binary file not shown.
BIN
View File
Binary file not shown.