65816-crypto/sha1.asm

141 lines
1.3 KiB
NASM
Raw Normal View History

case on
mcopy sha1.macros
* Direct page locations
2017-06-30 18:23:29 +00:00
;chunk gequ 0
a_ gequ 8 ; elements of state
b gequ 12
c gequ 16
d gequ 20
e gequ 24
2017-06-30 01:16:22 +00:00
idx gequ 28
2017-06-30 18:23:29 +00:00
unused gequ 30
f_plus_k gequ 32
temp gequ 36
h0 gequ 40
h1 gequ 44
h2 gequ 48
h3 gequ 52
h4 gequ 56
w gequ 60
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
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
ComputeSchedule 1
BlockLoopPart 1
jsr ComputeScheduleSub
BlockLoopPart 2
jsr ComputeScheduleSub
BlockLoopPart 3
jsr ComputeScheduleSub
BlockLoopPart 4
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
ComputeScheduleSub anop
ComputeSchedule 2
rts
end