mirror of
https://github.com/A2osX/A2osX.git
synced 2024-11-29 02:49:54 +00:00
add MD4 in LibCrypt
This commit is contained in:
parent
8d350f1f29
commit
923b8847ce
@ -6,8 +6,12 @@ LIBCRYPT.MD4 .EQ 4
|
|||||||
LIBCRYPT.MD4Init .EQ 6
|
LIBCRYPT.MD4Init .EQ 6
|
||||||
LIBCRYPT.MD4Update .EQ 8
|
LIBCRYPT.MD4Update .EQ 8
|
||||||
LIBCRYPT.MD4Finalize .EQ 10
|
LIBCRYPT.MD4Finalize .EQ 10
|
||||||
|
LIBCRYPT.MD5 .EQ 12
|
||||||
|
LIBCRYPT.MD5Init .EQ LIBCRYPT.MD4Init
|
||||||
|
LIBCRYPT.MD5Update .EQ 14
|
||||||
|
LIBCRYPT.MD5Finalize .EQ LIBCRYPT.MD4Finalize
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
* S.MD4 STRUCT
|
* S.MD4, S.MD5 STRUCT
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
S.MD4.ABCD0 .EQ 0
|
S.MD4.ABCD0 .EQ 0
|
||||||
S.MD4.A0 .EQ 0
|
S.MD4.A0 .EQ 0
|
||||||
@ -19,6 +23,17 @@ S.MD4.EXTRABIT .EQ 24
|
|||||||
S.MD4.FINALIZED .EQ 25
|
S.MD4.FINALIZED .EQ 25
|
||||||
|
|
||||||
S.MD4 .EQ 26
|
S.MD4 .EQ 26
|
||||||
|
|
||||||
|
S.MD5.ABCD0 .EQ S.MD4.ABCD0
|
||||||
|
S.MD5.A0 .EQ S.MD4.A0
|
||||||
|
S.MD5.B0 .EQ S.MD4.B0
|
||||||
|
S.MD5.C0 .EQ S.MD4.C0
|
||||||
|
S.MD5.D0 .EQ S.MD4.D0
|
||||||
|
S.MD5.BITCOUNT .EQ S.MD4.BITCOUNT
|
||||||
|
S.MD5.EXTRABIT .EQ S.MD4.EXTRABIT
|
||||||
|
S.MD5.FINALIZED .EQ S.MD4.FINALIZED
|
||||||
|
|
||||||
|
S.MD5 .EQ S.MD4
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
MAN
|
MAN
|
||||||
SAVE inc/libcrypt.i
|
SAVE inc/libcrypt.i
|
||||||
|
@ -20,28 +20,37 @@ ZPHashPtr .BS 2
|
|||||||
|
|
||||||
ZPChunkLen .BS 2
|
ZPChunkLen .BS 2
|
||||||
|
|
||||||
MD4.ABCD
|
MD.MODE .BS 1
|
||||||
MD4.A .BS 4 Chunk Level,A,B,C,D
|
|
||||||
MD4.B .BS 4
|
|
||||||
MD4.C .BS 4
|
|
||||||
MD4.D .BS 4
|
|
||||||
|
|
||||||
MD4.F1 .BS 4
|
MD4.ABCD
|
||||||
MD4.F2 .BS 4
|
MD5.ABCD
|
||||||
|
MD4.A
|
||||||
|
MD5.A .BS 4 Chunk Level,A,B,C,D
|
||||||
|
MD4.B
|
||||||
|
MD5.B .BS 4
|
||||||
|
MD4.C
|
||||||
|
MD5.C .BS 4
|
||||||
|
MD4.D
|
||||||
|
MD5.D .BS 4
|
||||||
|
|
||||||
|
MD4.F1
|
||||||
|
MD5.F1 .BS 4
|
||||||
|
MD4.F2
|
||||||
|
MD5.F2 .BS 4
|
||||||
|
|
||||||
ZS.END .ED
|
ZS.END .ED
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
* DWORD Macros : Do NOT disturb carry with cpx, cpy...
|
* DWORD Macros : Do NOT disturb carry with cpx, cpy...
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
.MA ADC32
|
.MA ADC32
|
||||||
ldx #3
|
ldy #3
|
||||||
ldy #0
|
ldx #0
|
||||||
clc
|
clc
|
||||||
:1 lda ]1,y
|
:1 lda ]1,x
|
||||||
adc ]2,y
|
adc ]2,x
|
||||||
sta ]3,y
|
sta ]3,x
|
||||||
iny
|
inx
|
||||||
dex
|
dey
|
||||||
bpl :1
|
bpl :1
|
||||||
.EM
|
.EM
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
@ -120,10 +129,15 @@ CS.START cld
|
|||||||
.DA MD4Init
|
.DA MD4Init
|
||||||
.DA MD4Update
|
.DA MD4Update
|
||||||
.DA MD4Finalize
|
.DA MD4Finalize
|
||||||
|
.DA MD5
|
||||||
|
.DA MD5Update
|
||||||
J.MD4.XXXX .DA MD4.0015
|
J.MD4.XXXX .DA MD4.0015
|
||||||
.DA MD4.1631
|
.DA MD4.1631
|
||||||
.DA MD4.3247
|
.DA MD4.3247
|
||||||
.DA MD4.4863
|
J.MD5.XXXX .DA MD5.0015
|
||||||
|
.DA MD5.1631
|
||||||
|
.DA MD5.3247
|
||||||
|
.DA MD5.4863
|
||||||
.DA 0
|
.DA 0
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
LIB.LOAD
|
LIB.LOAD
|
||||||
@ -137,10 +151,27 @@ LIB.UNLOAD clc
|
|||||||
* # ASM
|
* # ASM
|
||||||
* `>PUSHW digest`
|
* `>PUSHW digest`
|
||||||
* `>PUSHW str`
|
* `>PUSHW str`
|
||||||
|
* `>LIBCALL hLIBCRYPT,LIBCRYPT.MD4`
|
||||||
* ## RETURN VALUE
|
* ## RETURN VALUE
|
||||||
* CC
|
* CC
|
||||||
*\--------------------------------------
|
*\--------------------------------------
|
||||||
MD4 >PULLW ZPDataPtr
|
MD4 lda #0
|
||||||
|
.HS 2C BIT ABS
|
||||||
|
*/--------------------------------------
|
||||||
|
* ## MD5
|
||||||
|
* Return MD5 Hash for input String
|
||||||
|
* # C
|
||||||
|
* `void MD5 (const char* str, char* digest);`
|
||||||
|
* # ASM
|
||||||
|
* `>PUSHW digest`
|
||||||
|
* `>PUSHW str`
|
||||||
|
* `>LIBCALL hLIBCRYPT,LIBCRYPT.MD5`
|
||||||
|
* ## RETURN VALUE
|
||||||
|
* CC
|
||||||
|
*\--------------------------------------
|
||||||
|
MD5 lda #1
|
||||||
|
sta MD.MODE
|
||||||
|
>PULLW ZPDataPtr
|
||||||
>PULLW ZPHashPtr
|
>PULLW ZPHashPtr
|
||||||
>LDYA ZPDataPtr
|
>LDYA ZPDataPtr
|
||||||
>SYSCALL2 strlen
|
>SYSCALL2 strlen
|
||||||
@ -148,24 +179,40 @@ MD4 >PULLW ZPDataPtr
|
|||||||
.1 jsr MD4Init
|
.1 jsr MD4Init
|
||||||
bcs .9
|
bcs .9
|
||||||
|
|
||||||
pha save MD4 Context hMem
|
pha save MD4/MD5 Context hMem
|
||||||
|
lda MD.MODE
|
||||||
|
bne .2
|
||||||
jsr MD4Update.I
|
jsr MD4Update.I
|
||||||
jsr MD4Finalize.I
|
bra .3
|
||||||
|
.2 jsr MD5Update.I
|
||||||
|
|
||||||
|
.3 jsr MD4Finalize.I
|
||||||
pla
|
pla
|
||||||
>SYSCALL2 FreeMem Free MD4 Context
|
>SYSCALL2 FreeMem Free MD4/MD5 Context
|
||||||
clc
|
clc
|
||||||
.9 rts
|
.9 rts
|
||||||
*/--------------------------------------
|
*/--------------------------------------
|
||||||
* ## MD4Init
|
* ## MD4Init
|
||||||
* Initialize a MD4 computation
|
* Initialize a MD4 computation
|
||||||
* # C
|
* # C
|
||||||
* `hMD4 MD4init();`
|
* `hMD4 MD5init();`
|
||||||
* # ASM
|
* # ASM
|
||||||
* `>LIBCALL hLIBCRYPT,LIBCRYPT.MD4Init`
|
* `>LIBCALL hLIBCRYPT,LIBCRYPT.MD4Init`
|
||||||
* ## RETURN VALUE
|
* ## RETURN VALUE
|
||||||
* A = hMem To S.MD4
|
* A = hMem To S.MD4
|
||||||
*\--------------------------------------
|
*\--------------------------------------
|
||||||
MD4Init >LDYAI S.MD4
|
*/--------------------------------------
|
||||||
|
* ## MD5Init
|
||||||
|
* Initialize a MD5 computation
|
||||||
|
* # C
|
||||||
|
* `hMD5 MD5init();`
|
||||||
|
* # ASM
|
||||||
|
* `>LIBCALL hLIBCRYPT,LIBCRYPT.MD5Init`
|
||||||
|
* ## RETURN VALUE
|
||||||
|
* A = hMem To S.MD5
|
||||||
|
*\--------------------------------------
|
||||||
|
MD4Init
|
||||||
|
MD5Init >LDYAI S.MD4
|
||||||
>SYSCALL2 getmem
|
>SYSCALL2 getmem
|
||||||
bcs .9
|
bcs .9
|
||||||
|
|
||||||
@ -182,7 +229,7 @@ MD4Init >LDYAI S.MD4
|
|||||||
|
|
||||||
.2 sta (ZPCtxPtr),y
|
.2 sta (ZPCtxPtr),y
|
||||||
iny
|
iny
|
||||||
cpy #S.MD4 Includes S.MD4.FINALIZED Flag
|
cpy #S.MD4 Includes S.MD4/5.FINALIZED Flag
|
||||||
bne .2
|
bne .2
|
||||||
|
|
||||||
txa
|
txa
|
||||||
@ -200,12 +247,30 @@ MD4Init >LDYAI S.MD4
|
|||||||
* `>hLIBCRYPT,LIBCRYPT.MD4Update`
|
* `>hLIBCRYPT,LIBCRYPT.MD4Update`
|
||||||
* ## RETURN VALUE
|
* ## RETURN VALUE
|
||||||
*\--------------------------------------
|
*\--------------------------------------
|
||||||
MD4Update >SYSCALL2 GetMemPtr get MD4 Context
|
MD4Update lda #0
|
||||||
|
.HS 2C BIT ABS
|
||||||
|
*/--------------------------------------
|
||||||
|
* ## MD5Update
|
||||||
|
* Add Data to MD5 computation
|
||||||
|
* # C
|
||||||
|
* `void MD5update (hMD5 MD5, char* data, int len);`
|
||||||
|
* # ASM
|
||||||
|
* `>PUSHW len`
|
||||||
|
* `>PUSHW data`
|
||||||
|
* `>LDA.G MD5`
|
||||||
|
* `>hLIBCRYPT,LIBCRYPT.MD5Update`
|
||||||
|
* ## RETURN VALUE
|
||||||
|
*\--------------------------------------
|
||||||
|
MD5Update lda #1
|
||||||
|
sta MD.MODE
|
||||||
|
|
||||||
|
>SYSCALL2 GetMemPtr get MD5 Context
|
||||||
>STYA ZPCtxPtr
|
>STYA ZPCtxPtr
|
||||||
>PULLW ZPDataPtr get DATA
|
>PULLW ZPDataPtr get DATA
|
||||||
>PULLW ZPDataLen get LEN
|
>PULLW ZPDataLen get LEN
|
||||||
|
|
||||||
MD4Update.I ldy #S.MD4.FINALIZED
|
MD4Update.I
|
||||||
|
MD5Update.I ldy #S.MD4.FINALIZED
|
||||||
lda (ZPCtxPtr),y
|
lda (ZPCtxPtr),y
|
||||||
beq .1
|
beq .1
|
||||||
|
|
||||||
@ -242,19 +307,18 @@ MD4Update.I ldy #S.MD4.FINALIZED
|
|||||||
* Append "$80" & Padding & original size
|
* Append "$80" & Padding & original size
|
||||||
|
|
||||||
lda #$80 no, Append $80
|
lda #$80 no, Append $80
|
||||||
sta MD4.BUFFER64,y
|
.52 sta MD5.BUFFER64,y
|
||||||
|
|
||||||
lda #0
|
asl
|
||||||
|
* lda #0
|
||||||
|
|
||||||
.52 iny Pad with 0 to 64
|
iny Pad with 0 to 64
|
||||||
cpy #64
|
cpy #64
|
||||||
beq .53
|
bcc .52
|
||||||
|
|
||||||
sta MD4.BUFFER64,y
|
ldy #S.MD4.EXTRABIT Mark MD5 Context as Appended
|
||||||
bra .52
|
ror
|
||||||
|
* lda #$80
|
||||||
.53 ldy #S.MD4.EXTRABIT Mark MD4 Context as Appended
|
|
||||||
lda #$80
|
|
||||||
sta (ZPCtxPtr),y
|
sta (ZPCtxPtr),y
|
||||||
lda ZPChunkLen
|
lda ZPChunkLen
|
||||||
cmp #56 Enough room for BITCOUNT ?
|
cmp #56 Enough room for BITCOUNT ?
|
||||||
@ -262,8 +326,13 @@ MD4Update.I ldy #S.MD4.FINALIZED
|
|||||||
|
|
||||||
jsr MD4AppendBitCount
|
jsr MD4AppendBitCount
|
||||||
|
|
||||||
.58 jsr MD4Transform
|
.58 lda MD.MODE
|
||||||
jsr MD4UpdateABCD0
|
bne .59
|
||||||
|
jsr MD4Transform
|
||||||
|
bra .60
|
||||||
|
.59 jsr MD5Transform
|
||||||
|
|
||||||
|
.60 jsr MD4UpdateABCD0
|
||||||
|
|
||||||
.8 lda ZPDataLen Substract Bytes processed from LEN
|
.8 lda ZPDataLen Substract Bytes processed from LEN
|
||||||
sec
|
sec
|
||||||
@ -291,16 +360,28 @@ MD4Update.I ldy #S.MD4.FINALIZED
|
|||||||
* `>LIBCALL hLIBCRYPT,LIBCRYPT.MD4Finalize`
|
* `>LIBCALL hLIBCRYPT,LIBCRYPT.MD4Finalize`
|
||||||
* ## RETURN VALUE
|
* ## RETURN VALUE
|
||||||
*\--------------------------------------
|
*\--------------------------------------
|
||||||
MD4Finalize pha
|
*/--------------------------------------
|
||||||
|
* ## MD5Finalize
|
||||||
|
* # C
|
||||||
|
* `void MD5finalize (hMD5 MD5, char* digest);`
|
||||||
|
* # ASM
|
||||||
|
* `>PUSHW digest`
|
||||||
|
* `>LDA.G MD5`
|
||||||
|
* `>LIBCALL hLIBCRYPT,LIBCRYPT.MD5Finalize`
|
||||||
|
* ## RETURN VALUE
|
||||||
|
*\--------------------------------------
|
||||||
|
MD4Finalize
|
||||||
|
MD5Finalize pha
|
||||||
>SYSCALL2 GetMemPtr
|
>SYSCALL2 GetMemPtr
|
||||||
>STYA ZPCtxPtr get MD4 Context
|
>STYA ZPCtxPtr get MD5 Context
|
||||||
>PULLW ZPHashPtr
|
>PULLW ZPHashPtr
|
||||||
jsr MD4Finalize.I
|
jsr MD4Finalize.I
|
||||||
pla
|
pla
|
||||||
>SYSCALL2 FreeMem
|
>SYSCALL2 FreeMem
|
||||||
rts
|
rts
|
||||||
|
|
||||||
MD4Finalize.I ldy #S.MD4.FINALIZED
|
MD4Finalize.I
|
||||||
|
MD5Finalize.I ldy #S.MD4.FINALIZED
|
||||||
|
|
||||||
lda (ZPCtxPtr),y
|
lda (ZPCtxPtr),y
|
||||||
bne .11
|
bne .11
|
||||||
@ -347,7 +428,12 @@ MD4Finalize.I ldy #S.MD4.FINALIZED
|
|||||||
* In :
|
* In :
|
||||||
* ZPCtxPtr = MD4 Context
|
* ZPCtxPtr = MD4 Context
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
|
* MD5AppendBitCount
|
||||||
|
* In :
|
||||||
|
* ZPCtxPtr = MD5 Context
|
||||||
|
*--------------------------------------
|
||||||
MD4AppendBitCount
|
MD4AppendBitCount
|
||||||
|
MD5AppendBitCount
|
||||||
ldx #56
|
ldx #56
|
||||||
ldy #S.MD4.BITCOUNT Append 8 Bytes of BITCOUNT
|
ldy #S.MD4.BITCOUNT Append 8 Bytes of BITCOUNT
|
||||||
|
|
||||||
@ -358,7 +444,7 @@ MD4AppendBitCount
|
|||||||
cpy #S.MD4.BITCOUNT+8
|
cpy #S.MD4.BITCOUNT+8
|
||||||
bne .1
|
bne .1
|
||||||
|
|
||||||
ldy #S.MD4.FINALIZED Mark MD4 Context as Finalized
|
ldy #S.MD4.FINALIZED Mark MD5 Context as Finalized
|
||||||
lda #$80
|
lda #$80
|
||||||
sta (ZPCtxPtr),y
|
sta (ZPCtxPtr),y
|
||||||
rts
|
rts
|
||||||
@ -368,7 +454,14 @@ MD4AppendBitCount
|
|||||||
* CL = Size (in bytes) to add to MD4 context
|
* CL = Size (in bytes) to add to MD4 context
|
||||||
* ZPCtxPtr = MD4 Context
|
* ZPCtxPtr = MD4 Context
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
|
*--------------------------------------
|
||||||
|
* MD5UpdateBitCount
|
||||||
|
* In :
|
||||||
|
* CL = Size (in bytes) to add to MD5 context
|
||||||
|
* ZPCtxPtr = MD5 Context
|
||||||
|
*--------------------------------------
|
||||||
MD4UpdateBitCount
|
MD4UpdateBitCount
|
||||||
|
MD5UpdateBitCount
|
||||||
stz ZPChunkLen+1
|
stz ZPChunkLen+1
|
||||||
lda ZPChunkLen
|
lda ZPChunkLen
|
||||||
asl
|
asl
|
||||||
@ -402,9 +495,15 @@ MD4UpdateBitCount
|
|||||||
* In :
|
* In :
|
||||||
* ZPCtxPtr = MD4 Context
|
* ZPCtxPtr = MD4 Context
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
MD4ExtraChunk ldy #S.MD4.FINALIZED
|
*--------------------------------------
|
||||||
|
* MD5ExtraChunk
|
||||||
|
* In :
|
||||||
|
* ZPCtxPtr = MD5 Context
|
||||||
|
*--------------------------------------
|
||||||
|
MD4ExtraChunk
|
||||||
|
MD5ExtraChunk ldy #S.MD4.FINALIZED
|
||||||
lda #$80
|
lda #$80
|
||||||
sta (ZPCtxPtr),y Mark MD4 Context as "finalized"
|
sta (ZPCtxPtr),y Mark MD5 Context as "finalized"
|
||||||
ldx #0
|
ldx #0
|
||||||
ldy #S.MD4.EXTRABIT Extra Bit already appended ?
|
ldy #S.MD4.EXTRABIT Extra Bit already appended ?
|
||||||
lda (ZPCtxPtr),y
|
lda (ZPCtxPtr),y
|
||||||
@ -415,19 +514,30 @@ MD4ExtraChunk ldy #S.MD4.FINALIZED
|
|||||||
sta (ZPCtxPtr),y Mark Extrabit added
|
sta (ZPCtxPtr),y Mark Extrabit added
|
||||||
inx
|
inx
|
||||||
|
|
||||||
.1 stz MD4.BUFFER64,x pad with "0"...
|
.1 stz MD5.BUFFER64,x pad with "0"...
|
||||||
inx
|
inx
|
||||||
cpx #56
|
cpx #56
|
||||||
bne .1 ...until room for bitcount
|
bne .1 ...until room for bitcount
|
||||||
|
|
||||||
jsr MD4AppendBitCount
|
jsr MD4AppendBitCount
|
||||||
|
lda MD.MODE
|
||||||
|
bne .2
|
||||||
jsr MD4Transform
|
jsr MD4Transform
|
||||||
|
bra .3
|
||||||
|
.2 jsr MD5Transform
|
||||||
|
.3
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
* MD4UpdateABCD0
|
* MD4UpdateABCD0
|
||||||
* In:
|
* In:
|
||||||
* ZPCtxPtr = MD4 Context
|
* ZPCtxPtr = MD4 Context
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
MD4UpdateABCD0 ldy #0
|
*--------------------------------------
|
||||||
|
* MD5UpdateABCD0
|
||||||
|
* In:
|
||||||
|
* ZPCtxPtr = MD5 Context
|
||||||
|
*--------------------------------------
|
||||||
|
MD4UpdateABCD0
|
||||||
|
MD5UpdateABCD0 ldy #0
|
||||||
|
|
||||||
.1 clc ADC32 A+A0->A0, B, C, D....
|
.1 clc ADC32 A+A0->A0, B, C, D....
|
||||||
|
|
||||||
@ -451,7 +561,6 @@ MD4UpdateABCD0 ldy #0
|
|||||||
* Out:
|
* Out:
|
||||||
* Updated MD4.ABCD
|
* Updated MD4.ABCD
|
||||||
* https://tools.ietf.org/html/rfc1320 MD4
|
* https://tools.ietf.org/html/rfc1320 MD4
|
||||||
* https://tools.ietf.org/html/rfc1321 MD5
|
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
MD4Transform ldy #15 init ABCD Chunk with Context ABCD0
|
MD4Transform ldy #15 init ABCD Chunk with Context ABCD0
|
||||||
|
|
||||||
@ -460,79 +569,81 @@ MD4Transform ldy #15 init ABCD Chunk with Context ABCD0
|
|||||||
dey
|
dey
|
||||||
bpl .1
|
bpl .1
|
||||||
|
|
||||||
stz MD4.i Start Proceed 0 to 63 bytes
|
stz MD4.i Start Proceed 0 to 47 bytes
|
||||||
lda #0 lda MD4.i
|
lda #0 lda MD4.i
|
||||||
|
|
||||||
.2 lsr
|
.2 lsr
|
||||||
lsr
|
lsr
|
||||||
lsr
|
lsr
|
||||||
and #6
|
and #6
|
||||||
tax
|
cmp #6
|
||||||
|
bne .3
|
||||||
|
lda #0
|
||||||
|
|
||||||
|
.3 tax
|
||||||
|
|
||||||
jsr MD4.XXXX
|
jsr MD4.XXXX
|
||||||
|
|
||||||
inc MD4.i
|
inc MD5.i
|
||||||
lda MD4.i
|
lda MD5.i
|
||||||
cmp #64
|
cmp #48
|
||||||
bne .2
|
bne .2
|
||||||
|
|
||||||
rts
|
rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
MD4.XXXX jmp (J.MD4.XXXX,x)
|
MD4.XXXX jmp (J.MD4.XXXX,x)
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
MD4.0015 >AND32 MD4.B,MD4.C,MD4.F1
|
MD4.0015 >NOT32 MD4.B,MD4.F2
|
||||||
>NOT32 MD4.B,MD4.F2
|
>AND32 MD4.B,MD4.C,MD4.F1
|
||||||
>AND32 MD4.F2,MD4.D,MD4.F2
|
>AND32 MD4.F2,MD4.D,MD4.F2
|
||||||
>ORA32 MD4.F1,MD4.F2,MD4.F
|
>ORA32 MD4.F1,MD4.F2,MD4.F
|
||||||
bra MD4.XXXX.END
|
bra MD4.XXXX.END
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
MD4.1631 >AND32 MD4.D,MD4.B,MD4.F1
|
MD4.1631 >AND32 MD4.B,MD4.C,MD4.F1
|
||||||
>NOT32 MD4.D,MD4.F2
|
>AND32 MD4.B,MD4.D,MD4.F2
|
||||||
>AND32 MD4.F2,MD4.C,MD4.F2
|
>ORA32 MD4.F1,MD4.F2,MD4.F1
|
||||||
|
>AND32 MD4.C,MD4.D,MD4.F2
|
||||||
>ORA32 MD4.F1,MD4.F2,MD4.F
|
>ORA32 MD4.F1,MD4.F2,MD4.F
|
||||||
bra MD4.XXXX.END
|
bra MD4.XXXX.END
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
MD4.3247 >EOR32 MD4.B,MD4.C,MD4.F
|
MD4.3247 >EOR32 MD4.B,MD4.C,MD4.F
|
||||||
>EOR32 MD4.F,MD4.D,MD4.F
|
>EOR32 MD4.F,MD4.D,MD4.F
|
||||||
bra MD4.XXXX.END
|
|
||||||
*--------------------------------------
|
|
||||||
MD4.4863 >NOT32 MD4.D,MD4.F1
|
|
||||||
>ORA32 MD4.F1,MD4.B,MD4.F2
|
|
||||||
>EOR32 MD4.F2,MD4.C,MD4.F
|
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
MD4.XXXX.END >MOV32 MD4.D,MD4.DTemp
|
MD4.XXXX.END >MOV32 MD4.D,MD4.DTemp
|
||||||
>MOV32 MD4.C,MD4.D
|
>MOV32 MD4.C,MD4.D
|
||||||
>MOV32 MD4.B,MD4.C
|
>MOV32 MD4.B,MD4.C
|
||||||
>ADC32 MD4.A,MD4.F,MD4.F
|
>ADC32 MD4.A,MD4.F,MD4.B
|
||||||
lda MD4.i
|
lda MD4.i
|
||||||
asl
|
lsr
|
||||||
asl
|
lsr
|
||||||
|
and #$0C
|
||||||
|
beq .3
|
||||||
tay
|
tay
|
||||||
|
|
||||||
ldx #0
|
ldx #0
|
||||||
clc
|
clc
|
||||||
|
|
||||||
.1 lda MD4.K,y ADC32 MD4.K[i],MD4.F,MD4.F
|
.1 lda MD4.K-4,y ADC32 MD4.K[i],MD4.F,MD4.F
|
||||||
adc MD4.F,x
|
adc MD4.B,x
|
||||||
sta MD4.F,x
|
sta MD4.B,x
|
||||||
iny
|
iny
|
||||||
inx
|
inx
|
||||||
txa
|
txa
|
||||||
eor #4 DO NOT DISTURB carry with cpx !!!
|
eor #4 DO NOT DISTURB carry with cpx !!!
|
||||||
bne .1
|
bne .1
|
||||||
|
|
||||||
|
.3 tax
|
||||||
ldy MD4.i
|
ldy MD4.i
|
||||||
lda MD4.g,y
|
lda MD4.g,y
|
||||||
asl
|
asl
|
||||||
asl
|
asl
|
||||||
tay
|
tay
|
||||||
ldx #0
|
|
||||||
|
|
||||||
clc
|
clc
|
||||||
|
|
||||||
.2 lda MD4.BUFFER64,y ADC32 M[g],MD4.F,MD4.F
|
.2 lda MD4.BUFFER64,y ADC32 M[g],MD4.F,MD4.F
|
||||||
adc MD4.F,x
|
adc MD4.B,x
|
||||||
sta MD4.F,x
|
sta MD4.B,x
|
||||||
iny
|
iny
|
||||||
inx
|
inx
|
||||||
txa
|
txa
|
||||||
@ -542,25 +653,136 @@ MD4.XXXX.END >MOV32 MD4.D,MD4.DTemp
|
|||||||
ldy MD4.i
|
ldy MD4.i
|
||||||
ldx MD4.s,y get s[i] in x
|
ldx MD4.s,y get s[i] in x
|
||||||
|
|
||||||
>ROL32x MD4.F
|
>ROL32x MD4.B
|
||||||
>ADC32 MD4.B,MD4.F,MD4.B
|
|
||||||
>MOV32 MD4.DTemp,MD4.A
|
>MOV32 MD4.DTemp,MD4.A
|
||||||
rts
|
rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
|
* MD5Transform
|
||||||
|
* In:
|
||||||
|
* ZPCtxPtr = MD5 Context
|
||||||
|
* 512 Bits Padded chunk in MD5.BUFFER64
|
||||||
|
* Out:
|
||||||
|
* Updated MD5.ABCD
|
||||||
|
* https://tools.ietf.org/html/rfc1321 MD5
|
||||||
|
*--------------------------------------
|
||||||
|
MD5Transform ldy #15 init ABCD Chunk with Context ABCD0
|
||||||
|
|
||||||
|
.1 lda (ZPCtxPtr),y
|
||||||
|
sta MD5.ABCD,y
|
||||||
|
dey
|
||||||
|
bpl .1
|
||||||
|
|
||||||
|
stz MD5.i Start Proceed 0 to 63 bytes
|
||||||
|
lda #0 lda MD5.i
|
||||||
|
|
||||||
|
.2 lsr
|
||||||
|
lsr
|
||||||
|
lsr
|
||||||
|
and #6
|
||||||
|
tax
|
||||||
|
|
||||||
|
jsr MD5.XXXX
|
||||||
|
|
||||||
|
inc MD5.i
|
||||||
|
lda MD5.i
|
||||||
|
cmp #64
|
||||||
|
bne .2
|
||||||
|
|
||||||
|
rts
|
||||||
|
*--------------------------------------
|
||||||
|
MD5.XXXX jmp (J.MD5.XXXX,x)
|
||||||
|
*--------------------------------------
|
||||||
|
MD5.0015 >NOT32 MD5.B,MD5.F2
|
||||||
|
>AND32 MD5.B,MD5.C,MD5.F1
|
||||||
|
>AND32 MD5.F2,MD5.D,MD5.F2
|
||||||
|
>ORA32 MD5.F1,MD5.F2,MD5.F
|
||||||
|
bra MD5.XXXX.END
|
||||||
|
*--------------------------------------
|
||||||
|
MD5.1631 >NOT32 MD5.D,MD5.F2
|
||||||
|
>AND32 MD5.D,MD5.B,MD5.F1
|
||||||
|
>AND32 MD5.F2,MD5.C,MD5.F2
|
||||||
|
>ORA32 MD5.F1,MD5.F2,MD5.F
|
||||||
|
bra MD5.XXXX.END
|
||||||
|
*--------------------------------------
|
||||||
|
MD5.3247 >EOR32 MD5.B,MD5.C,MD5.F
|
||||||
|
>EOR32 MD5.F,MD5.D,MD5.F
|
||||||
|
bra MD5.XXXX.END
|
||||||
|
*--------------------------------------
|
||||||
|
MD5.4863 >NOT32 MD5.D,MD5.F1
|
||||||
|
>ORA32 MD5.F1,MD5.B,MD5.F2
|
||||||
|
>EOR32 MD5.F2,MD5.C,MD5.F
|
||||||
|
*--------------------------------------
|
||||||
|
MD5.XXXX.END >MOV32 MD5.D,MD5.DTemp
|
||||||
|
>MOV32 MD5.C,MD5.D
|
||||||
|
>MOV32 MD5.B,MD5.C
|
||||||
|
>ADC32 MD5.A,MD5.F,MD5.F
|
||||||
|
lda MD5.i
|
||||||
|
asl
|
||||||
|
asl
|
||||||
|
tay
|
||||||
|
|
||||||
|
ldx #0
|
||||||
|
clc
|
||||||
|
|
||||||
|
.1 lda MD5.K,y ADC32 MD5.K[i],MD5.F,MD5.F
|
||||||
|
adc MD5.F,x
|
||||||
|
sta MD5.F,x
|
||||||
|
iny
|
||||||
|
inx
|
||||||
|
txa
|
||||||
|
eor #4 DO NOT DISTURB carry with cpx !!!
|
||||||
|
bne .1
|
||||||
|
|
||||||
|
tax
|
||||||
|
ldy MD5.i
|
||||||
|
lda MD5.g,y
|
||||||
|
asl
|
||||||
|
asl
|
||||||
|
tay
|
||||||
|
|
||||||
|
clc
|
||||||
|
|
||||||
|
.2 lda MD5.BUFFER64,y ADC32 M[g],MD5.F,MD5.F
|
||||||
|
adc MD5.F,x
|
||||||
|
sta MD5.F,x
|
||||||
|
iny
|
||||||
|
inx
|
||||||
|
txa
|
||||||
|
eor #4 DO NOT DISTURB carry with cpx !!!
|
||||||
|
bne .2
|
||||||
|
|
||||||
|
ldy MD5.i
|
||||||
|
ldx MD5.s,y get s[i] in x
|
||||||
|
|
||||||
|
>ROL32x MD5.F
|
||||||
|
>ADC32 MD5.B,MD5.F,MD5.B
|
||||||
|
>MOV32 MD5.DTemp,MD5.A
|
||||||
|
rts
|
||||||
|
*--------------------------------------
|
||||||
CS.END
|
CS.END
|
||||||
MD4.ABCDINIT .HS 01234567.89ABCDEF.FEDCBA98.76543210
|
MD4.ABCDINIT .HS 01234567.89ABCDEF.FEDCBA98.76543210
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
MD4.s .DA #7,#12,#17,#22,#7,#12,#17,#22,#7,#12,#17,#22,#7,#12,#17,#22
|
MD4.s .DA #3,#7,#11,#19,#3,#7,#11,#19,#3,#7,#11,#19,#3,#7,#11,#19
|
||||||
|
.DA #3,#5,#9,#13,#3,#5,#9,#13,#3,#5,#9,#13,#3,#5,#9,#13
|
||||||
|
.DA #3,#9,#11,#15,#3,#9,#11,#15,#3,#9,#11,#15,#3,#9,#11,#15
|
||||||
|
*--------------------------------------
|
||||||
|
MD4.g .DA #0,#1,#2,#3,#4,#5,#6,#7,#8,#9,#10,#11,#12,#13,#14,#15
|
||||||
|
.DA #0,#4,#8,#12,#1,#5,#9,#13,#2,#6,#10,#14,#3,#7,#11,#15
|
||||||
|
.DA #0,#8,#4,#12,#2,#10,#6,#14,#1,#9,#5,#13,#3,#11,#7,#15
|
||||||
|
*--------------------------------------
|
||||||
|
MD4.K .HS 9979825A.A1EBD96E
|
||||||
|
*--------------------------------------
|
||||||
|
MD5.s .DA #7,#12,#17,#22,#7,#12,#17,#22,#7,#12,#17,#22,#7,#12,#17,#22
|
||||||
.DA #5,#9,#14,#20,#5,#9,#14,#20,#5,#9,#14,#20,#5,#9,#14,#20
|
.DA #5,#9,#14,#20,#5,#9,#14,#20,#5,#9,#14,#20,#5,#9,#14,#20
|
||||||
.DA #4,#11,#16,#23,#4,#11,#16,#23,#4,#11,#16,#23,#4,#11,#16,#23
|
.DA #4,#11,#16,#23,#4,#11,#16,#23,#4,#11,#16,#23,#4,#11,#16,#23
|
||||||
.DA #6,#10,#15,#21,#6,#10,#15,#21,#6,#10,#15,#21,#6,#10,#15,#21
|
.DA #6,#10,#15,#21,#6,#10,#15,#21,#6,#10,#15,#21,#6,#10,#15,#21
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
MD4.g .DA #0,#1,#2,#3,#4,#5,#6,#7,#8,#9,#10,#11,#12,#13,#14,#15
|
MD5.g .DA #0,#1,#2,#3,#4,#5,#6,#7,#8,#9,#10,#11,#12,#13,#14,#15
|
||||||
.DA #1,#6,#11,#0,#5,#10,#15,#4,#9,#14,#3,#8,#13,#2,#7,#12
|
.DA #1,#6,#11,#0,#5,#10,#15,#4,#9,#14,#3,#8,#13,#2,#7,#12
|
||||||
.DA #5,#8,#11,#14,#1,#4,#7,#10,#13,#0,#3,#6,#9,#12,#15,#2
|
.DA #5,#8,#11,#14,#1,#4,#7,#10,#13,#0,#3,#6,#9,#12,#15,#2
|
||||||
.DA #0,#7,#14,#5,#12,#3,#10,#1,#8,#15,#6,#13,#4,#11,#2,#9
|
.DA #0,#7,#14,#5,#12,#3,#10,#1,#8,#15,#6,#13,#4,#11,#2,#9
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
MD4.K .HS 78A46AD7.56B7C7E8.DB702024.EECEBDC1
|
MD5.K .HS 78A46AD7.56B7C7E8.DB702024.EECEBDC1
|
||||||
.HS AF0F7CF5.2AC68747.134630A8.019546FD
|
.HS AF0F7CF5.2AC68747.134630A8.019546FD
|
||||||
.HS D8988069.AFF7448B.B15BFFFF.BED75C89
|
.HS D8988069.AFF7448B.B15BFFFF.BED75C89
|
||||||
.HS 2211906B.937198FD.8E4379A6.2108B449
|
.HS 2211906B.937198FD.8E4379A6.2108B449
|
||||||
@ -577,16 +799,18 @@ MD4.K .HS 78A46AD7.56B7C7E8.DB702024.EECEBDC1
|
|||||||
.HS 4F7EA86F.E0E62CFE.144301A3.A111084E
|
.HS 4F7EA86F.E0E62CFE.144301A3.A111084E
|
||||||
.HS 827E53F7.35F23ABD.BBD2D72A.91D386EB
|
.HS 827E53F7.35F23ABD.BBD2D72A.91D386EB
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
MD4.SQRT2 .HS 5A827999
|
|
||||||
MD4.SQRT3 .HS 6ED9EBA1
|
|
||||||
MD4.DIGITS .AS "0123456789ABCDEF"
|
MD4.DIGITS .AS "0123456789ABCDEF"
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
ZPDataLen .BS 2
|
ZPDataLen .BS 2
|
||||||
|
|
||||||
MD4.DTemp .BS 4
|
MD4.DTemp
|
||||||
MD4.F .BS 4
|
MD5.DTemp .BS 4
|
||||||
MD4.i .BS 1
|
MD4.F
|
||||||
MD4.BUFFER64 .BS 64
|
MD5.F .BS 4
|
||||||
|
MD4.i
|
||||||
|
MD5.i .BS 1
|
||||||
|
MD4.BUFFER64
|
||||||
|
MD5.BUFFER64 .BS 64
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
MAN
|
MAN
|
||||||
SAVE usr/src/lib/libcrypt.s
|
SAVE usr/src/lib/libcrypt.s
|
||||||
|
Loading…
Reference in New Issue
Block a user