281 lines
2.4 KiB
NASM
281 lines
2.4 KiB
NASM
|
case on
|
||
|
mcopy sha1.macros
|
||
|
mcopy rotate.macros
|
||
|
|
||
|
* Direct page locations
|
||
|
;chunk gequ 0 ; 8 bytes
|
||
|
a_ gequ 8 ; elements of state
|
||
|
b gequ 12
|
||
|
c gequ 16
|
||
|
d gequ 20
|
||
|
e gequ 24
|
||
|
f gequ 28 ; result of function in hash computation
|
||
|
k gequ 32
|
||
|
temp gequ 36
|
||
|
h0 gequ 40
|
||
|
h1 gequ 44
|
||
|
h2 gequ 48
|
||
|
h3 gequ 52
|
||
|
h4 gequ 56
|
||
|
w gequ 60
|
||
|
|
||
|
initial_value privdata
|
||
|
dc h'67452301 efcdab89 98badcfe 10325476 c3d2e1f0'
|
||
|
end
|
||
|
|
||
|
|
||
|
sha1_init start
|
||
|
CFunction SHA1_INIT
|
||
|
end
|
||
|
|
||
|
SHA1_INIT start
|
||
|
lda #$2301
|
||
|
sta h0
|
||
|
lda #$6745
|
||
|
sta h0+2
|
||
|
|
||
|
lda #$AB89
|
||
|
sta h1
|
||
|
lda #$EFCD
|
||
|
sta h1+2
|
||
|
|
||
|
lda #$DCFE
|
||
|
sta h2
|
||
|
lda #$98BA
|
||
|
sta h2+2
|
||
|
|
||
|
lda #$5476
|
||
|
sta h3
|
||
|
lda #$1032
|
||
|
sta h3+2
|
||
|
|
||
|
lda #$E1F0
|
||
|
sta h4
|
||
|
lda #$C3D2
|
||
|
sta h4+2
|
||
|
rtl
|
||
|
end
|
||
|
|
||
|
|
||
|
sha1_processchunk start
|
||
|
CFunction SHA1_PROCESSCHUNK
|
||
|
end
|
||
|
|
||
|
SHA1_PROCESSCHUNK start
|
||
|
|
||
|
ComputeSchedule
|
||
|
|
||
|
lda h0
|
||
|
sta a_
|
||
|
lda h0+2
|
||
|
sta a_+2
|
||
|
|
||
|
lda h1
|
||
|
sta b
|
||
|
lda h1+2
|
||
|
sta b+2
|
||
|
|
||
|
lda h2
|
||
|
sta c
|
||
|
lda h2+2
|
||
|
sta c+2
|
||
|
|
||
|
lda h3
|
||
|
sta d
|
||
|
lda h3+2
|
||
|
sta d+2
|
||
|
|
||
|
lda h4
|
||
|
sta e
|
||
|
lda h4+2
|
||
|
sta e+2
|
||
|
|
||
|
ldy #0
|
||
|
loop cpy #60
|
||
|
bge f_60
|
||
|
cpy #40
|
||
|
bge f_40
|
||
|
cpy #20
|
||
|
bge f_20
|
||
|
|
||
|
* f_0 to f_19
|
||
|
f_0 lda c
|
||
|
eor d
|
||
|
and b
|
||
|
eor d
|
||
|
sta f
|
||
|
lda #$7999
|
||
|
sta k
|
||
|
|
||
|
lda c+2
|
||
|
eor d+2
|
||
|
and b+2
|
||
|
eor d+2
|
||
|
sta f+2
|
||
|
lda #$5A82
|
||
|
sta k+2
|
||
|
bra after_f
|
||
|
|
||
|
* f_20 to f_39
|
||
|
f_20 lda b
|
||
|
eor c
|
||
|
eor d
|
||
|
sta f
|
||
|
lda #$EBA1
|
||
|
sta k
|
||
|
|
||
|
lda b+2
|
||
|
eor c+2
|
||
|
eor d+2
|
||
|
sta f+2
|
||
|
lda #$6ED9
|
||
|
sta k+2
|
||
|
bra after_f
|
||
|
|
||
|
* f_40 to f_59
|
||
|
f_40 lda c
|
||
|
ora d
|
||
|
and b
|
||
|
sta temp
|
||
|
lda c
|
||
|
and d
|
||
|
ora temp
|
||
|
sta f
|
||
|
lda #$BCDC
|
||
|
sta k
|
||
|
|
||
|
lda c+2
|
||
|
ora d+2
|
||
|
and b+2
|
||
|
sta temp
|
||
|
lda c+2
|
||
|
and d+2
|
||
|
ora temp
|
||
|
sta f+2
|
||
|
lda #$8F1B
|
||
|
sta k+2
|
||
|
bra after_f
|
||
|
|
||
|
* f_60 to f_79
|
||
|
f_60 lda b
|
||
|
eor c
|
||
|
eor d
|
||
|
sta f
|
||
|
lda #$C1D6
|
||
|
sta k
|
||
|
|
||
|
lda b+2
|
||
|
eor c+2
|
||
|
eor d+2
|
||
|
sta f+2
|
||
|
lda #$CA62
|
||
|
sta k+2
|
||
|
bra after_f
|
||
|
|
||
|
after_f anop
|
||
|
ROTL4MOVE temp,a_,5
|
||
|
phy
|
||
|
tya
|
||
|
asl a
|
||
|
asl a
|
||
|
tax
|
||
|
clc
|
||
|
lda w,x
|
||
|
adc temp
|
||
|
tay
|
||
|
lda w+2,x
|
||
|
adc temp+2
|
||
|
tax
|
||
|
clc
|
||
|
tya
|
||
|
adc f
|
||
|
tay
|
||
|
txa
|
||
|
adc f+2
|
||
|
tax
|
||
|
clc
|
||
|
tya
|
||
|
adc e
|
||
|
tay
|
||
|
txa
|
||
|
adc e+2
|
||
|
tax
|
||
|
clc
|
||
|
tya
|
||
|
adc k
|
||
|
sta temp
|
||
|
txa
|
||
|
adc k+2
|
||
|
sta temp+2
|
||
|
ply
|
||
|
|
||
|
lda d
|
||
|
sta e
|
||
|
lda d+2
|
||
|
sta e+2
|
||
|
|
||
|
lda c
|
||
|
sta d
|
||
|
lda c+2
|
||
|
sta d+2
|
||
|
|
||
|
ROTL4MOVE c,b,30
|
||
|
|
||
|
lda a_
|
||
|
sta b
|
||
|
lda a_+2
|
||
|
sta b+2
|
||
|
|
||
|
lda temp
|
||
|
sta a_
|
||
|
lda temp+2
|
||
|
sta a_+2
|
||
|
|
||
|
iny
|
||
|
cpy #80
|
||
|
bge endloop
|
||
|
jmp loop
|
||
|
|
||
|
endloop clc
|
||
|
lda h0
|
||
|
adc a_
|
||
|
sta h0
|
||
|
lda h0+2
|
||
|
adc a_+2
|
||
|
sta h0+2
|
||
|
|
||
|
clc
|
||
|
lda h1
|
||
|
adc b
|
||
|
sta h1
|
||
|
lda h1+2
|
||
|
adc b+2
|
||
|
sta h1+2
|
||
|
|
||
|
clc
|
||
|
lda h2
|
||
|
adc c
|
||
|
sta h2
|
||
|
lda h2+2
|
||
|
adc c+2
|
||
|
sta h2+2
|
||
|
|
||
|
clc
|
||
|
lda h3
|
||
|
adc d
|
||
|
sta h3
|
||
|
lda h3+2
|
||
|
adc d+2
|
||
|
sta h3+2
|
||
|
|
||
|
clc
|
||
|
lda h4
|
||
|
adc e
|
||
|
sta h4
|
||
|
lda h4+2
|
||
|
adc e+2
|
||
|
sta h4+2
|
||
|
|
||
|
rtl
|
||
|
end
|