65816-crypto/aes.macros

133 lines
1.7 KiB
Plaintext
Raw Normal View History

macro
AddInitialRoundKey
lcla &i
.top
lda state1+&i
eor rk+&i
sta state1+&i
&i seta &i+2
aif &i<16,.top
mend
macro
NormalRound &round
aif &round/2*2=&round,.evenround
MixColumn 0,0,5,10,15,state1,state2
MixColumn 4,4,9,14,3,state1,state2
MixColumn 8,8,13,2,7,state1,state2
MixColumn 12,12,1,6,11,state1,state2
ago .done
.evenround
MixColumn 0,0,5,10,15,state2,state1
MixColumn 4,4,9,14,3,state2,state1
MixColumn 8,8,13,2,7,state2,state1
MixColumn 12,12,1,6,11,state2,state1
.done
mend
macro
MixColumn &i,&A,&B,&C,&D,&state,&out
aif (&i=0).AND.(&round<>1),.skip
ldy &state+&D
.skip
lda Sbox,Y
pha
ldx &state+&A
eor Xtime2Sbox,X
ldy &state+&B
eor Xtime3Sbox,Y
ldy &state+&C
eor Sbox,Y
eor rk+&round*16+&i
sta &out+&i
pla
eor Xtime3Sbox,Y
eor Sbox,X
ldy &state+&B
eor Xtime2Sbox,Y
eor rk+&round*16+&i+1
sta &out+&i+1
lda Sbox,Y
pha
ldy &state+&D
eor Xtime3Sbox,Y
eor Sbox,X
ldy &state+&C
eor Xtime2Sbox,Y
eor rk+&round*16+&i+2
sta &out+&i+2
pla
eor Sbox,Y
eor Xtime3Sbox,X
ldy &state+&D
eor Xtime2Sbox,Y
eor rk+&round*16+&i+3
sta &out+&i+3
aif &i<>12,.skip2
tay
.skip2
mend
macro
FinalRound &round
FinalRoundStep 3,15,1
FinalRoundStep 15,11
FinalRoundStep 11,7
FinalRoundStep 7,3
FinalRoundStep 0,0
FinalRoundStep 4,4
FinalRoundStep 8,8
FinalRoundStep 12,12
FinalRoundStep 13,1
FinalRoundStep 1,5
FinalRoundStep 5,9
FinalRoundStep 9,13
FinalRoundStep 10,2
FinalRoundStep 2,10
FinalRoundStep 14,6
FinalRoundStep 6,14
mend
macro
FinalRoundStep &to,&from,&skipldy
aif C:&skipldy,.skip
ldy state2+&from
.skip
lda Sbox,Y
eor rk+&round*16+&to
sta state1+&to
mend
macro
ShortRegs
sep #$30
longa off
longi off
mend
macro
LongRegs
rep #$30
longa on
longi on
mend