mirror of
https://github.com/A2osX/A2osX.git
synced 2025-02-21 06:29:08 +00:00
LIBCRYPT:Bugfix & lot of bytes saved
This commit is contained in:
parent
b25303e93a
commit
25c601906e
140
.Docs/LIBCRYPT.md
Normal file
140
.Docs/LIBCRYPT.md
Normal file
@ -0,0 +1,140 @@
|
||||
*** Auto generated by docgen.cmd ***
|
||||
|
||||
## Copyright
|
||||
Copyright 2015 - 2020, Remy Gibert and the A2osX contributors.
|
||||
|
||||
## MD4
|
||||
Return MD4 Hash for input String
|
||||
|
||||
# C
|
||||
`void MD4 (const char* str, char* digest);`
|
||||
|
||||
# ASM
|
||||
`>PUSHW str`
|
||||
`>PUSHW digest`
|
||||
`>LIBCALL hLIBCRYPT,LIBCRYPT.MD4`
|
||||
|
||||
## RETURN VALUE
|
||||
CC
|
||||
|
||||
## MD5
|
||||
Return MD5 Hash for input String
|
||||
|
||||
# C
|
||||
`void MD5 (const char* str, char* digest);`
|
||||
|
||||
# ASM
|
||||
`>PUSHW str`
|
||||
`>PUSHW digest`
|
||||
`>LIBCALL hLIBCRYPT,LIBCRYPT.MD5`
|
||||
|
||||
## RETURN VALUE
|
||||
CC
|
||||
|
||||
## MD4Init
|
||||
Initialize a MD4 computation
|
||||
|
||||
# C
|
||||
`hMD4 MD4init();`
|
||||
|
||||
# ASM
|
||||
`>LIBCALL hLIBCRYPT,LIBCRYPT.MD4Init`
|
||||
|
||||
## RETURN VALUE
|
||||
A = hMem To S.MD4
|
||||
|
||||
## MD5Init
|
||||
Initialize a MD5 computation
|
||||
|
||||
# C
|
||||
`hMD5 MD5init();`
|
||||
|
||||
# ASM
|
||||
`>LIBCALL hLIBCRYPT,LIBCRYPT.MD5Init`
|
||||
|
||||
## RETURN VALUE
|
||||
A = hMem To S.MD5
|
||||
|
||||
## MD4Update
|
||||
Add Data to MD4 computation
|
||||
|
||||
# C
|
||||
`void MD4update (hMD4 MD4, char* data, int len);`
|
||||
|
||||
# ASM
|
||||
`>PUSHB MD4`
|
||||
`>PUSHW data`
|
||||
`>PUSHW len`
|
||||
`>hLIBCRYPT,LIBCRYPT.MD4Update`
|
||||
|
||||
## RETURN VALUE
|
||||
|
||||
## MD5Update
|
||||
Add Data to MD5 computation
|
||||
|
||||
# C
|
||||
`void MD5update (hMD5 MD5, char* data, int len);`
|
||||
|
||||
# ASM
|
||||
`>PUSHB MD5`
|
||||
`>PUSHW data`
|
||||
`>PUSHW len`
|
||||
`>hLIBCRYPT,LIBCRYPT.MD5Update`
|
||||
|
||||
## RETURN VALUE
|
||||
|
||||
## MD4Finalize
|
||||
|
||||
# C
|
||||
`void MD4finalize (hMD4 MD4, char* digest);`
|
||||
|
||||
# ASM
|
||||
`>PUSHB MD4`
|
||||
`>PUSHW digest`
|
||||
`>LIBCALL hLIBCRYPT,LIBCRYPT.MD4Finalize`
|
||||
|
||||
## RETURN VALUE
|
||||
|
||||
## MD5Finalize
|
||||
|
||||
# C
|
||||
`void MD5finalize (hMD5 MD5, char* digest);`
|
||||
|
||||
# ASM
|
||||
`>PUSHB MD5`
|
||||
`>PUSHW digest`
|
||||
`>LIBCALL hLIBCRYPT,LIBCRYPT.MD5Finalize`
|
||||
|
||||
## RETURN VALUE
|
||||
|
||||
## HMACMD5
|
||||
Return HMACMD5 Hash for input String
|
||||
|
||||
# C
|
||||
`void HMACMD5(const char* str, const char* key, char* digest);`
|
||||
|
||||
# ASM
|
||||
`>PUSHW str`
|
||||
`>PUSHW key`
|
||||
`>PUSHW digest`
|
||||
`>LIBCALL hLIBCRYPT,LIBCRYPT.HMACMD5`
|
||||
|
||||
## RETURN VALUE
|
||||
CC
|
||||
|
||||
## License
|
||||
A2osX is licensed under the GNU General Public License.
|
||||
|
||||
This program is free software; you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation; either version 2 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
This program is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
The full A2osX license can be found **[Here](../LICENSE)**.
|
||||
|
||||
*** End of Auto generated file ***
|
Binary file not shown.
@ -40,6 +40,11 @@ set SRCDIR=%~dp0..\LIB
|
||||
set FILTER=LIBTCPIP.S*.txt
|
||||
Call :SCAN
|
||||
|
||||
set DOCFILE=%~dp0..\.Docs\LIBCRYPT.md
|
||||
set SRCDIR=%~dp0..\LIB
|
||||
set FILTER=LIBCRYPT.S*.txt
|
||||
Call :SCAN
|
||||
|
||||
set DOCFILE=%~dp0..\.Docs\Commands.md
|
||||
set SRCDIR=%~dp0..\BIN
|
||||
set FILTER=*.S.txt
|
||||
|
@ -257,7 +257,7 @@ CS.RUN.PRINT >LEA.G HMACMD5Buf
|
||||
rts
|
||||
|
||||
*--------------------------------------
|
||||
RevertASCII >LEA.G HMACMD5Buf
|
||||
RevertASCII >LEA.G HMACMD5Buf
|
||||
>STYA ZPDataBufPtr
|
||||
ldx #16
|
||||
stx ZPDataLen
|
||||
|
@ -19,7 +19,10 @@ K.EVT.MAX .EQ 4
|
||||
K.TTY.MAX .EQ 8
|
||||
K.IRQDEV.MAX .EQ 4
|
||||
*--------------------------------------
|
||||
Mem.Table .EQ $0800
|
||||
Mem.Table .EQ $0800 -> $1000
|
||||
*--------------------------------------
|
||||
* Z80 .EQ $1000
|
||||
* Scratch512 .EQ $1100
|
||||
*--------------------------------------
|
||||
hFDs .EQ $1300 K.hFD.MAX
|
||||
hFDs.hName .EQ $1320 K.hFD.MAX
|
||||
|
@ -7,31 +7,25 @@ LIBCRYPT.MD4Init .EQ 6
|
||||
LIBCRYPT.MD4Update .EQ 8
|
||||
LIBCRYPT.MD4Finalize .EQ 10
|
||||
*--------------------------------------
|
||||
LIBCRYPT.HMACMD5 .EQ 12
|
||||
LIBCRYPT.MD5 .EQ 12
|
||||
LIBCRYPT.MD5Init .EQ 14
|
||||
LIBCRYPT.MD5Update .EQ 16
|
||||
LIBCRYPT.MD5Finalize .EQ 18
|
||||
*--------------------------------------
|
||||
LIBCRYPT.HMACMD5 .EQ 20
|
||||
*--------------------------------------
|
||||
* S.MD4, S.MD5 STRUCT
|
||||
*--------------------------------------
|
||||
S.MD4.ABCD0 .EQ 0
|
||||
S.MD4.A0 .EQ 0
|
||||
S.MD4.B0 .EQ 4
|
||||
S.MD4.C0 .EQ 8
|
||||
S.MD4.D0 .EQ 12
|
||||
S.MD4.BITCOUNT .EQ 16
|
||||
S.MD4.EXTRABIT .EQ 24
|
||||
S.MD4.FINALIZED .EQ 25
|
||||
|
||||
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
|
||||
S.MDx.ABCD0 .EQ 0
|
||||
S.MDx.A0 .EQ 0
|
||||
S.MDx.B0 .EQ 4
|
||||
S.MDx.C0 .EQ 8
|
||||
S.MDx.D0 .EQ 12
|
||||
S.MDx.BITCOUNT .EQ 16
|
||||
S.MDx.EXTRABIT .EQ 24
|
||||
S.MDx.FINALIZED .EQ 25
|
||||
*
|
||||
S.MDx .EQ 26
|
||||
*--------------------------------------
|
||||
MAN
|
||||
SAVE inc/libcrypt.i
|
||||
|
@ -14,27 +14,40 @@ NEW
|
||||
ZS.START
|
||||
ZPCtxPtr .BS 2
|
||||
ZPDataPtr .BS 2
|
||||
ZPKeyPtr .BS 2
|
||||
ZPHashPtr .BS 2
|
||||
ZPChunkLen .BS 2
|
||||
|
||||
MD4.ABCD
|
||||
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
|
||||
MDx.ABCD
|
||||
MDx.A .BS 4 Chunk Level,A,B,C,D
|
||||
MDx.B .BS 4
|
||||
MDx.C .BS 4
|
||||
MDx.D .BS 4
|
||||
|
||||
MD4.F1
|
||||
MD5.F1 .BS 4
|
||||
MD4.F2
|
||||
MD5.F2 .BS 4
|
||||
MDx.F1 .BS 4
|
||||
MDx.F2 .BS 4
|
||||
|
||||
ZS.END .ED
|
||||
*--------------------------------------
|
||||
* TEMP storage allowed here because of:
|
||||
* - No Task switching when in a LIB
|
||||
* - No I/O (printf....)
|
||||
*--------------------------------------
|
||||
.DUMMY
|
||||
.OR $1100
|
||||
ZPDataLen .BS 2
|
||||
ZPChunkLen .BS 2
|
||||
|
||||
MDx.MODE .BS 1
|
||||
|
||||
MDx.DTemp .BS 4
|
||||
MDx.F .BS 4
|
||||
MDx.i .BS 1
|
||||
MDx.BUFFER64 .BS 64
|
||||
|
||||
HMACMD5.IPAD .BS 65
|
||||
HMACMD5.OPAD .BS 65
|
||||
.ED
|
||||
*--------------------------------------
|
||||
* DWORD Macros : Do NOT disturb carry with cpx, cpy...
|
||||
*--------------------------------------
|
||||
.MA ADC32
|
||||
@ -124,6 +137,10 @@ CS.START cld
|
||||
.DA MD4Init
|
||||
.DA MD4Update
|
||||
.DA MD4Finalize
|
||||
.DA MD5
|
||||
.DA MD5Init
|
||||
.DA MD5Update
|
||||
.DA MD5Finalize
|
||||
.DA HMACMD5
|
||||
*--------------------------------------
|
||||
J.MD4.XXXX .DA MD4.0015
|
||||
@ -133,8 +150,6 @@ J.MD5.XXXX .DA MD5.0015
|
||||
.DA MD5.1631
|
||||
.DA MD5.3247
|
||||
.DA MD5.4863
|
||||
L.HMACMD5.IPAD .DA HMACMD5.IPAD
|
||||
L.HMACMD5.OPAD .DA HMACMD5.OPAD
|
||||
.DA 0
|
||||
*--------------------------------------
|
||||
LIB.LOAD
|
||||
@ -152,17 +167,35 @@ LIB.UNLOAD clc
|
||||
* ## RETURN VALUE
|
||||
* CC
|
||||
*\--------------------------------------
|
||||
MD4 >PULLW ZPHashPtr
|
||||
MD4 clc
|
||||
.HS B0 BCS
|
||||
*/--------------------------------------
|
||||
* ## MD5
|
||||
* Return MD5 Hash for input String
|
||||
* # C
|
||||
* `void MD5 (const char* str, char* digest);`
|
||||
* # ASM
|
||||
* `>PUSHW str`
|
||||
* `>PUSHW digest`
|
||||
* `>LIBCALL hLIBCRYPT,LIBCRYPT.MD5`
|
||||
* ## RETURN VALUE
|
||||
* CC
|
||||
*\--------------------------------------
|
||||
MD5 sec
|
||||
|
||||
ror MDx.MODE
|
||||
|
||||
>PULLW ZPHashPtr
|
||||
>PULLYA
|
||||
>STYA ZPDataPtr
|
||||
>SYSCALL2 strlen
|
||||
>STYA ZPDataLen
|
||||
.1 jsr MDxInit.I
|
||||
.1 jsr MD5Init
|
||||
bcs .9
|
||||
|
||||
pha save MD4 Context hMem
|
||||
|
||||
jsr MD4Update.I
|
||||
jsr MDxUpdate.I
|
||||
jsr MDxFinalize.I
|
||||
|
||||
pla
|
||||
@ -179,26 +212,36 @@ MD4 >PULLW ZPHashPtr
|
||||
* ## RETURN VALUE
|
||||
* A = hMem To S.MD4
|
||||
*\--------------------------------------
|
||||
MD4Init
|
||||
MDxInit.I >LDYAI S.MD4
|
||||
MD4Init
|
||||
*/--------------------------------------
|
||||
* ## MD5Init
|
||||
* Initialize a MD5 computation
|
||||
* # C
|
||||
* `hMD5 MD5init();`
|
||||
* # ASM
|
||||
* `>LIBCALL hLIBCRYPT,LIBCRYPT.MD5Init`
|
||||
* ## RETURN VALUE
|
||||
* A = hMem To S.MD5
|
||||
*\--------------------------------------
|
||||
MD5Init >LDYAI S.MDx
|
||||
>SYSCALL2 getmem
|
||||
bcs MDxInit.9
|
||||
|
||||
>STYA ZPCtxPtr
|
||||
|
||||
MD5Reset.I ldy #0
|
||||
MDxReset.I ldy #0
|
||||
|
||||
.1 lda MD4.ABCDINIT,y
|
||||
.1 lda MDx.ABCDINIT,y
|
||||
sta (ZPCtxPtr),y
|
||||
iny
|
||||
cpy #S.MD4.BITCOUNT
|
||||
cpy #S.MDx.BITCOUNT
|
||||
bne .1
|
||||
|
||||
lda #0
|
||||
|
||||
.2 sta (ZPCtxPtr),y
|
||||
iny
|
||||
cpy #S.MD4 Includes S.MD4/5.FINALIZED Flag
|
||||
cpy #S.MDx Includes S.MDx.FINALIZED Flag
|
||||
bne .2
|
||||
|
||||
txa
|
||||
@ -216,21 +259,32 @@ MDxInit.9 rts
|
||||
* `>hLIBCRYPT,LIBCRYPT.MD4Update`
|
||||
* ## RETURN VALUE
|
||||
*\--------------------------------------
|
||||
MD4Update >PULLW ZPDataLen get LEN
|
||||
MD4Update clc
|
||||
.HS B0 BCS
|
||||
*/--------------------------------------
|
||||
* ## MD5Update
|
||||
* Add Data to MD5 computation
|
||||
* # C
|
||||
* `void MD5update (hMD5 MD5, char* data, int len);`
|
||||
* # ASM
|
||||
* `>PUSHB MD5`
|
||||
* `>PUSHW data`
|
||||
* `>PUSHW len`
|
||||
* `>hLIBCRYPT,LIBCRYPT.MD5Update`
|
||||
* ## RETURN VALUE
|
||||
*\--------------------------------------
|
||||
MD5Update sec
|
||||
|
||||
ror MDx.MODE
|
||||
|
||||
>PULLW ZPDataLen get LEN
|
||||
>PULLW ZPDataPtr get DATA
|
||||
|
||||
>PULLA
|
||||
>SYSCALL2 GetMemPtr get MD5 Context
|
||||
>SYSCALL2 GetMemPtr get MD5 Context
|
||||
>STYA ZPCtxPtr
|
||||
|
||||
MD4Update.I clc
|
||||
.HS B0 BCS
|
||||
|
||||
MD5Update.I sec
|
||||
|
||||
ror MD.MODE
|
||||
|
||||
ldy #S.MD4.FINALIZED
|
||||
MDxUpdate.I ldy #S.MDx.FINALIZED
|
||||
lda (ZPCtxPtr),y
|
||||
beq .1
|
||||
|
||||
@ -257,7 +311,7 @@ MD5Update.I sec
|
||||
ldy #0
|
||||
|
||||
.51 lda (ZPDataPtr),y Load Buffer with data
|
||||
sta MD4.BUFFER64,y
|
||||
sta MDx.BUFFER64,y
|
||||
iny
|
||||
cpy ZPChunkLen
|
||||
bne .51
|
||||
@ -267,7 +321,7 @@ MD5Update.I sec
|
||||
* Append "$80" & Padding & original size
|
||||
|
||||
lda #$80 no, Append $80
|
||||
.52 sta MD5.BUFFER64,y
|
||||
.52 sta MDx.BUFFER64,y
|
||||
|
||||
asl
|
||||
* lda #0
|
||||
@ -276,7 +330,7 @@ MD5Update.I sec
|
||||
cpy #64
|
||||
bcc .52
|
||||
|
||||
ldy #S.MD4.EXTRABIT Mark MD5 Context as Appended
|
||||
ldy #S.MDx.EXTRABIT Mark MD5 Context as Appended
|
||||
ror
|
||||
* lda #$80
|
||||
sta (ZPCtxPtr),y
|
||||
@ -316,7 +370,23 @@ MD5Update.I sec
|
||||
* `>LIBCALL hLIBCRYPT,LIBCRYPT.MD4Finalize`
|
||||
* ## RETURN VALUE
|
||||
*\--------------------------------------
|
||||
MD4Finalize >PULLW ZPHashPtr
|
||||
MD4Finalize clc
|
||||
.HS B0 BCS
|
||||
*/--------------------------------------
|
||||
* ## MD5Finalize
|
||||
* # C
|
||||
* `void MD5finalize (hMD5 MD5, char* digest);`
|
||||
* # ASM
|
||||
* `>PUSHB MD5`
|
||||
* `>PUSHW digest`
|
||||
* `>LIBCALL hLIBCRYPT,LIBCRYPT.MD5Finalize`
|
||||
* ## RETURN VALUE
|
||||
*\--------------------------------------
|
||||
MD5Finalize sec
|
||||
|
||||
ror MDx.MODE
|
||||
|
||||
>PULLW ZPHashPtr
|
||||
>PULLA
|
||||
pha
|
||||
>SYSCALL2 GetMemPtr
|
||||
@ -328,7 +398,7 @@ MD4Finalize >PULLW ZPHashPtr
|
||||
>SYSCALL2 FreeMem
|
||||
rts
|
||||
|
||||
MDxFinalize.I ldy #S.MD4.FINALIZED
|
||||
MDxFinalize.I ldy #S.MDx.FINALIZED
|
||||
|
||||
lda (ZPCtxPtr),y
|
||||
bne .11
|
||||
@ -336,6 +406,7 @@ MDxFinalize.I ldy #S.MD4.FINALIZED
|
||||
jsr MDxExtraChunk
|
||||
|
||||
.11 ldy #0
|
||||
sty MDx.i
|
||||
|
||||
.1 lda (ZPCtxPtr),y
|
||||
lsr
|
||||
@ -343,13 +414,13 @@ MDxFinalize.I ldy #S.MD4.FINALIZED
|
||||
lsr
|
||||
lsr
|
||||
tax
|
||||
lda MD4.DIGITS,x
|
||||
lda MDx.DIGITS,x
|
||||
jsr .7
|
||||
|
||||
lda (ZPCtxPtr),y
|
||||
and #$0F
|
||||
tax
|
||||
lda MD4.DIGITS,x
|
||||
lda MDx.DIGITS,x
|
||||
jsr .7
|
||||
|
||||
iny
|
||||
@ -357,16 +428,16 @@ MDxFinalize.I ldy #S.MD4.FINALIZED
|
||||
bne .1
|
||||
|
||||
lda #0
|
||||
sta (ZPHashPtr)
|
||||
clc
|
||||
rts
|
||||
|
||||
.7 sta (ZPHashPtr)
|
||||
inc ZPHashPtr
|
||||
bne MDxFinalize.RTS
|
||||
|
||||
inc ZPHashPtr+1
|
||||
.7 phy
|
||||
|
||||
ldy MDx.i
|
||||
inc MDx.i
|
||||
sta (ZPHashPtr),y
|
||||
|
||||
ply
|
||||
|
||||
MDxFinalize.RTS rts
|
||||
*/--------------------------------------
|
||||
* ## HMACMD5
|
||||
@ -385,11 +456,15 @@ MDxFinalize.RTS rts
|
||||
*--------------------------------------
|
||||
HMACMD5 >PULLW ZPHashPtr
|
||||
>PULLW ZPDataPtr
|
||||
>PULLW HMAC.DTemp
|
||||
>PULLW ZPKeyPtr
|
||||
|
||||
jsr MDxInit.I
|
||||
jsr MD5Init
|
||||
bcs MDxFinalize.RTS
|
||||
|
||||
sec
|
||||
|
||||
ror MDx.MODE Switch to MD5
|
||||
|
||||
pha
|
||||
|
||||
>LDYA ZPDataPtr
|
||||
@ -401,11 +476,9 @@ HMACMD5 >PULLW ZPHashPtr
|
||||
tay
|
||||
beq .4
|
||||
|
||||
.2 >PUSHW ZPHashPtr
|
||||
jsr MD5Update.I
|
||||
.2 jsr MDxUpdate.I
|
||||
jsr MDxFinalize.I
|
||||
|
||||
>PULLW ZPHashPtr
|
||||
>LDYA ZPCtxPtr
|
||||
>STYA ZPDataPtr
|
||||
|
||||
@ -430,25 +503,23 @@ HMACMD5 >PULLW ZPHashPtr
|
||||
stz HMACMD5.IPAD+64
|
||||
stz HMACMD5.OPAD+64
|
||||
|
||||
jsr MD5Reset.I
|
||||
jsr MDxReset.I
|
||||
|
||||
>LDYA L.HMACMD5.IPAD
|
||||
>LDYAI HMACMD5.IPAD
|
||||
>STYA ZPDataPtr
|
||||
>LDYAI 64
|
||||
>STYA ZPDataLen
|
||||
>PUSHW ZPHashPtr
|
||||
jsr MD5Update.I
|
||||
|
||||
jsr MDxUpdate.I
|
||||
|
||||
>LDYA HMAC.DTemp
|
||||
>LDYA ZPKeyPtr
|
||||
>STYA ZPDataPtr
|
||||
>SYSCALL2 strlen
|
||||
>STYA ZPDataLen
|
||||
jsr MD5Update.I
|
||||
|
||||
jsr MDxUpdate.I
|
||||
jsr MDxFinalize.I
|
||||
|
||||
>PULLW ZPHashPtr
|
||||
|
||||
ldy #0
|
||||
|
||||
.8 lda (ZPCtxPtr),y
|
||||
@ -457,22 +528,22 @@ HMACMD5 >PULLW ZPHashPtr
|
||||
cpy #16
|
||||
bne .8
|
||||
|
||||
jsr MD5Reset.I
|
||||
jsr MDxReset.I
|
||||
|
||||
>LDYA L.HMACMD5.OPAD
|
||||
>LDYAI HMACMD5.OPAD
|
||||
>STYA ZPDataPtr
|
||||
>LDYAI 64
|
||||
>STYA ZPDataLen
|
||||
jsr MD5Update.I
|
||||
jsr MDxUpdate.I
|
||||
|
||||
>LDYA L.HMACMD5.IPAD
|
||||
>LDYAI HMACMD5.IPAD
|
||||
>STYA ZPDataPtr
|
||||
|
||||
ldy #16
|
||||
sty ZPDataLen
|
||||
jsr MD5Update.I
|
||||
|
||||
jsr MDxFinalize.I
|
||||
jsr MDxUpdate.I
|
||||
jsr MDxFinalize.I MDx.MODE setup by MD5Update
|
||||
|
||||
pla
|
||||
>SYSCALL2 FreeMem
|
||||
@ -488,16 +559,16 @@ HMACMD5 >PULLW ZPHashPtr
|
||||
* ZPCtxPtr = MD4 Context
|
||||
*--------------------------------------
|
||||
MDxAppendBitCnt ldx #56
|
||||
ldy #S.MD4.BITCOUNT Append 8 Bytes of BITCOUNT
|
||||
ldy #S.MDx.BITCOUNT Append 8 Bytes of BITCOUNT
|
||||
|
||||
.1 lda (ZPCtxPtr),y
|
||||
sta MD4.BUFFER64,x
|
||||
sta MDx.BUFFER64,x
|
||||
inx
|
||||
iny
|
||||
cpy #S.MD4.BITCOUNT+8
|
||||
cpy #S.MDx.BITCOUNT+8
|
||||
bne .1
|
||||
|
||||
ldy #S.MD4.FINALIZED Mark MD5 Context as Finalized
|
||||
ldy #S.MDx.FINALIZED Mark MD5 Context as Finalized
|
||||
lda #$80
|
||||
sta (ZPCtxPtr),y
|
||||
rts
|
||||
@ -511,12 +582,12 @@ MDxUpdateBitCnt stz ZPChunkLen+1
|
||||
lda ZPChunkLen
|
||||
asl
|
||||
rol ZPChunkLen+1
|
||||
asl times 8 to get bit count
|
||||
asl times 8 to get BITCOUNT
|
||||
rol ZPChunkLen+1
|
||||
asl
|
||||
rol ZPChunkLen+1
|
||||
clc
|
||||
ldy #S.MD4.BITCOUNT
|
||||
ldy #S.MDx.BITCOUNT
|
||||
adc (ZPCtxPtr),y
|
||||
sta (ZPCtxPtr),y
|
||||
iny
|
||||
@ -540,23 +611,23 @@ MDxUpdateBitCnt stz ZPChunkLen+1
|
||||
* In :
|
||||
* ZPCtxPtr = MDx Context
|
||||
*--------------------------------------
|
||||
MDxExtraChunk ldy #S.MD4.FINALIZED
|
||||
MDxExtraChunk ldy #S.MDx.FINALIZED
|
||||
lda #$80
|
||||
sta (ZPCtxPtr),y Mark MD5 Context as "finalized"
|
||||
ldx #0
|
||||
ldy #S.MD4.EXTRABIT Extra Bit already appended ?
|
||||
ldy #S.MDx.EXTRABIT Extra Bit already appended ?
|
||||
lda (ZPCtxPtr),y
|
||||
bne .1
|
||||
|
||||
lda #$80
|
||||
sta MD4.BUFFER64 Add extra bit to buffer
|
||||
sta MDx.BUFFER64 Add extra bit to buffer
|
||||
sta (ZPCtxPtr),y Mark Extrabit added
|
||||
inx
|
||||
|
||||
.1 stz MD5.BUFFER64,x pad with "0"...
|
||||
.1 stz MDx.BUFFER64,x pad with "0"...
|
||||
inx
|
||||
cpx #56
|
||||
bne .1 ...until room for bitcount
|
||||
bne .1 ...until room for BITCOUNT
|
||||
|
||||
jsr MDxAppendBitCnt
|
||||
jsr MDxTransform
|
||||
@ -569,7 +640,7 @@ MDxUpdateABCD0 ldy #0
|
||||
|
||||
.1 clc ADC32 A+A0->A0, B, C, D....
|
||||
|
||||
.2 lda MD4.ABCD,y
|
||||
.2 lda MDx.ABCD,y
|
||||
adc (ZPCtxPtr),y
|
||||
sta (ZPCtxPtr),y
|
||||
iny
|
||||
@ -582,7 +653,17 @@ MDxUpdateABCD0 ldy #0
|
||||
|
||||
rts
|
||||
*--------------------------------------
|
||||
MDxTransform bit MD.MODE
|
||||
MDxTransform ldy #15 init ABCD Chunk with Context ABCD0
|
||||
|
||||
.1 lda (ZPCtxPtr),y
|
||||
sta MDx.ABCD,y
|
||||
dey
|
||||
bpl .1
|
||||
|
||||
lda #0 make sure A = MDx.i = 0 before transform
|
||||
sta MDx.i
|
||||
|
||||
bit MDx.MODE
|
||||
bpl MD4Transform
|
||||
|
||||
jmp MD5Transform
|
||||
@ -590,63 +671,54 @@ MDxTransform bit MD.MODE
|
||||
* MD4Transform
|
||||
* In:
|
||||
* ZPCtxPtr = MD4 Context
|
||||
* 512 Bits Padded chunk in MD4.BUFFER64
|
||||
* 512 Bits Padded chunk in MDx.BUFFER64
|
||||
* Out:
|
||||
* Updated MD4.ABCD
|
||||
* Updated MDx.ABCD
|
||||
* https://tools.ietf.org/html/rfc1320 MD4
|
||||
*--------------------------------------
|
||||
MD4Transform ldy #15 init ABCD Chunk with Context ABCD0
|
||||
|
||||
.1 lda (ZPCtxPtr),y
|
||||
sta MD4.ABCD,y
|
||||
dey
|
||||
bpl .1
|
||||
|
||||
stz MD4.i Start Proceed 0 to 47 bytes
|
||||
lda #0 lda MD4.i
|
||||
|
||||
.2 lsr
|
||||
MD4Transform lsr
|
||||
lsr
|
||||
lsr
|
||||
and #6
|
||||
cmp #6
|
||||
bne .3
|
||||
bne .1
|
||||
|
||||
lda #0
|
||||
|
||||
.3 tax
|
||||
.1 tax
|
||||
|
||||
jsr MD4.XXXX
|
||||
|
||||
inc MD5.i
|
||||
lda MD5.i
|
||||
inc MDx.i
|
||||
lda MDx.i
|
||||
cmp #48
|
||||
bne .2
|
||||
bne MD4Transform
|
||||
|
||||
rts
|
||||
*--------------------------------------
|
||||
MD4.XXXX jmp (J.MD4.XXXX,x)
|
||||
*--------------------------------------
|
||||
MD4.0015 >NOT32 MD4.B,MD4.F2
|
||||
>AND32 MD4.B,MD4.C,MD4.F1
|
||||
>AND32 MD4.F2,MD4.D,MD4.F2
|
||||
>ORA32 MD4.F1,MD4.F2,MD4.F
|
||||
MD4.0015 >NOT32 MDx.B,MDx.F2
|
||||
>AND32 MDx.B,MDx.C,MDx.F1
|
||||
>AND32 MDx.F2,MDx.D,MDx.F2
|
||||
>ORA32 MDx.F1,MDx.F2,MDx.F
|
||||
bra MD4.XXXX.END
|
||||
*--------------------------------------
|
||||
MD4.1631 >AND32 MD4.B,MD4.C,MD4.F1
|
||||
>AND32 MD4.B,MD4.D,MD4.F2
|
||||
>ORA32 MD4.F1,MD4.F2,MD4.F1
|
||||
>AND32 MD4.C,MD4.D,MD4.F2
|
||||
>ORA32 MD4.F1,MD4.F2,MD4.F
|
||||
MD4.1631 >AND32 MDx.B,MDx.C,MDx.F1
|
||||
>AND32 MDx.B,MDx.D,MDx.F2
|
||||
>ORA32 MDx.F1,MDx.F2,MDx.F1
|
||||
>AND32 MDx.C,MDx.D,MDx.F2
|
||||
>ORA32 MDx.F1,MDx.F2,MDx.F
|
||||
bra MD4.XXXX.END
|
||||
*--------------------------------------
|
||||
MD4.3247 >EOR32 MD4.B,MD4.C,MD4.F
|
||||
>EOR32 MD4.F,MD4.D,MD4.F
|
||||
MD4.3247 >EOR32 MDx.B,MDx.C,MDx.F
|
||||
>EOR32 MDx.F,MDx.D,MDx.F
|
||||
*--------------------------------------
|
||||
MD4.XXXX.END >MOV32 MD4.D,MD4.DTemp
|
||||
>MOV32 MD4.C,MD4.D
|
||||
>MOV32 MD4.B,MD4.C
|
||||
>ADC32 MD4.A,MD4.F,MD4.B
|
||||
lda MD4.i
|
||||
MD4.XXXX.END >MOV32 MDx.D,MDx.DTemp
|
||||
>MOV32 MDx.C,MDx.D
|
||||
>MOV32 MDx.B,MDx.C
|
||||
>ADC32 MDx.A,MDx.F,MDx.B
|
||||
lda MDx.i
|
||||
lsr
|
||||
lsr
|
||||
and #$0C
|
||||
@ -657,9 +729,9 @@ MD4.XXXX.END >MOV32 MD4.D,MD4.DTemp
|
||||
ldx #0
|
||||
clc
|
||||
|
||||
.1 lda MD4.K-4,y ADC32 MD4.K[i],MD4.F,MD4.F
|
||||
adc MD4.B,x
|
||||
sta MD4.B,x
|
||||
.1 lda MD4.K-4,y ADC32 MDx.K[i],MDx.F,MDx.F
|
||||
adc MDx.B,x
|
||||
sta MDx.B,x
|
||||
iny
|
||||
inx
|
||||
txa
|
||||
@ -667,7 +739,7 @@ MD4.XXXX.END >MOV32 MD4.D,MD4.DTemp
|
||||
bne .1
|
||||
|
||||
.3 tax
|
||||
ldy MD4.i
|
||||
ldy MDx.i
|
||||
lda MD4.g,y
|
||||
asl
|
||||
asl
|
||||
@ -675,41 +747,31 @@ MD4.XXXX.END >MOV32 MD4.D,MD4.DTemp
|
||||
|
||||
clc
|
||||
|
||||
.2 lda MD4.BUFFER64,y ADC32 M[g],MD4.F,MD4.F
|
||||
adc MD4.B,x
|
||||
sta MD4.B,x
|
||||
.2 lda MDx.BUFFER64,y ADC32 M[g],MDx.F,MDx.F
|
||||
adc MDx.B,x
|
||||
sta MDx.B,x
|
||||
iny
|
||||
inx
|
||||
txa
|
||||
eor #4 DO NOT DISTURB carry with cpx !!!
|
||||
bne .2
|
||||
|
||||
ldy MD4.i
|
||||
ldy MDx.i
|
||||
ldx MD4.s,y get s[i] in x
|
||||
|
||||
>ROL32x MD4.B
|
||||
>MOV32 MD4.DTemp,MD4.A
|
||||
>ROL32x MDx.B
|
||||
>MOV32 MDx.DTemp,MDx.A
|
||||
rts
|
||||
*--------------------------------------
|
||||
* MD5Transform
|
||||
* In:
|
||||
* ZPCtxPtr = MD5 Context
|
||||
* 512 Bits Padded chunk in MD5.BUFFER64
|
||||
* 512 Bits Padded chunk in MDx.BUFFER64
|
||||
* Out:
|
||||
* Updated MD5.ABCD
|
||||
* Updated MDx.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
|
||||
MD5Transform lsr
|
||||
lsr
|
||||
lsr
|
||||
and #6
|
||||
@ -717,40 +779,40 @@ MD5Transform ldy #15 init ABCD Chunk with Context ABCD0
|
||||
|
||||
jsr MD5.XXXX
|
||||
|
||||
inc MD5.i
|
||||
lda MD5.i
|
||||
inc MDx.i
|
||||
lda MDx.i
|
||||
cmp #64
|
||||
bne .2
|
||||
bne MD5Transform
|
||||
|
||||
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
|
||||
MD5.0015 >NOT32 MDx.B,MDx.F2
|
||||
>AND32 MDx.B,MDx.C,MDx.F1
|
||||
>AND32 MDx.F2,MDx.D,MDx.F2
|
||||
>ORA32 MDx.F1,MDx.F2,MDx.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
|
||||
MD5.1631 >NOT32 MDx.D,MDx.F2
|
||||
>AND32 MDx.D,MDx.B,MDx.F1
|
||||
>AND32 MDx.F2,MDx.C,MDx.F2
|
||||
>ORA32 MDx.F1,MDx.F2,MDx.F
|
||||
bra MD5.XXXX.END
|
||||
*--------------------------------------
|
||||
MD5.3247 >EOR32 MD5.B,MD5.C,MD5.F
|
||||
>EOR32 MD5.F,MD5.D,MD5.F
|
||||
MD5.3247 >EOR32 MDx.B,MDx.C,MDx.F
|
||||
>EOR32 MDx.F,MDx.D,MDx.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.4863 >NOT32 MDx.D,MDx.F1
|
||||
>ORA32 MDx.F1,MDx.B,MDx.F2
|
||||
>EOR32 MDx.F2,MDx.C,MDx.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
|
||||
MD5.XXXX.END >MOV32 MDx.D,MDx.DTemp
|
||||
>MOV32 MDx.C,MDx.D
|
||||
>MOV32 MDx.B,MDx.C
|
||||
>ADC32 MDx.A,MDx.F,MDx.F
|
||||
lda MDx.i
|
||||
asl
|
||||
asl
|
||||
tay
|
||||
@ -758,9 +820,9 @@ MD5.XXXX.END >MOV32 MD5.D,MD5.DTemp
|
||||
ldx #0
|
||||
clc
|
||||
|
||||
.1 lda MD5.K,y ADC32 MD5.K[i],MD5.F,MD5.F
|
||||
adc MD5.F,x
|
||||
sta MD5.F,x
|
||||
.1 lda MD5.K,y ADC32 MD5.K[i],MDx.F,MDx.F
|
||||
adc MDx.F,x
|
||||
sta MDx.F,x
|
||||
iny
|
||||
inx
|
||||
txa
|
||||
@ -768,7 +830,7 @@ MD5.XXXX.END >MOV32 MD5.D,MD5.DTemp
|
||||
bne .1
|
||||
|
||||
tax
|
||||
ldy MD5.i
|
||||
ldy MDx.i
|
||||
lda MD5.g,y
|
||||
asl
|
||||
asl
|
||||
@ -776,25 +838,25 @@ MD5.XXXX.END >MOV32 MD5.D,MD5.DTemp
|
||||
|
||||
clc
|
||||
|
||||
.2 lda MD5.BUFFER64,y ADC32 M[g],MD5.F,MD5.F
|
||||
adc MD5.F,x
|
||||
sta MD5.F,x
|
||||
.2 lda MDx.BUFFER64,y ADC32 M[g],MDx.F,MDx.F
|
||||
adc MDx.F,x
|
||||
sta MDx.F,x
|
||||
iny
|
||||
inx
|
||||
txa
|
||||
eor #4 DO NOT DISTURB carry with cpx !!!
|
||||
bne .2
|
||||
|
||||
ldy MD5.i
|
||||
ldy MDx.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
|
||||
>ROL32x MDx.F
|
||||
>ADC32 MDx.B,MDx.F,MDx.B
|
||||
>MOV32 MDx.DTemp,MDx.A
|
||||
rts
|
||||
*--------------------------------------
|
||||
CS.END
|
||||
MD4.ABCDINIT .HS 01234567.89ABCDEF.FEDCBA98.76543210
|
||||
MDx.ABCDINIT .HS 01234567.89ABCDEF.FEDCBA98.76543210
|
||||
*--------------------------------------
|
||||
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
|
||||
@ -833,23 +895,7 @@ MD5.K .HS 78A46AD7.56B7C7E8.DB702024.EECEBDC1
|
||||
.HS 4F7EA86F.E0E62CFE.144301A3.A111084E
|
||||
.HS 827E53F7.35F23ABD.BBD2D72A.91D386EB
|
||||
*--------------------------------------
|
||||
MD4.DIGITS .AS "0123456789abcdef"
|
||||
*--------------------------------------
|
||||
ZPDataLen .BS 2
|
||||
|
||||
MD.MODE .BS 1
|
||||
|
||||
MD4.DTemp
|
||||
MD5.DTemp .BS 4
|
||||
MD4.F
|
||||
MD5.F .BS 4
|
||||
MD4.i
|
||||
MD5.i .BS 1
|
||||
MD4.BUFFER64
|
||||
MD5.BUFFER64 .BS 64
|
||||
HMAC.DTemp .BS 4
|
||||
HMACMD5.IPAD .BS 65
|
||||
HMACMD5.OPAD .BS 65
|
||||
MDx.DIGITS .AS "0123456789abcdef"
|
||||
*--------------------------------------
|
||||
MAN
|
||||
SAVE usr/src/lib/libcrypt.s
|
||||
|
Loading…
x
Reference in New Issue
Block a user