From 25c601906e5c4a452f6d9a38f113d776088f44db Mon Sep 17 00:00:00 2001 From: burniouf Date: Thu, 29 Jul 2021 18:41:57 +0200 Subject: [PATCH] LIBCRYPT:Bugfix & lot of bytes saved --- .Docs/LIBCRYPT.md | 140 +++++++++++++ .Floppies/A2OSX.BUILD.po | Bin 33553920 -> 33553920 bytes .Tools/docgen.cmd | 5 + BIN/HMACMD5.S.txt | 2 +- INC/KERNEL.I.txt | 5 +- INC/LIBCRYPT.I.txt | 38 ++-- LIB/LIBCRYPT.S.txt | 424 ++++++++++++++++++++++----------------- 7 files changed, 401 insertions(+), 213 deletions(-) create mode 100644 .Docs/LIBCRYPT.md diff --git a/.Docs/LIBCRYPT.md b/.Docs/LIBCRYPT.md new file mode 100644 index 00000000..d8583d38 --- /dev/null +++ b/.Docs/LIBCRYPT.md @@ -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 *** diff --git a/.Floppies/A2OSX.BUILD.po b/.Floppies/A2OSX.BUILD.po index ec9a5e7c9940b3d45c400c1bf1f30f5604a544c0..278ac30ff1bcf3e55939a51e6017b850d99460bf 100644 GIT binary patch delta 14601 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 delta 13495 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 Uf#1OI;1BR8IHx^I&ugdu5262^+yDRo diff --git a/.Tools/docgen.cmd b/.Tools/docgen.cmd index 239b83bb..ff45258a 100644 --- a/.Tools/docgen.cmd +++ b/.Tools/docgen.cmd @@ -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 diff --git a/BIN/HMACMD5.S.txt b/BIN/HMACMD5.S.txt index 65977503..fc632cfb 100644 --- a/BIN/HMACMD5.S.txt +++ b/BIN/HMACMD5.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 diff --git a/INC/KERNEL.I.txt b/INC/KERNEL.I.txt index 3d7088d2..b306d91b 100644 --- a/INC/KERNEL.I.txt +++ b/INC/KERNEL.I.txt @@ -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 diff --git a/INC/LIBCRYPT.I.txt b/INC/LIBCRYPT.I.txt index da6d9f30..3bd8016a 100644 --- a/INC/LIBCRYPT.I.txt +++ b/INC/LIBCRYPT.I.txt @@ -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 diff --git a/LIB/LIBCRYPT.S.txt b/LIB/LIBCRYPT.S.txt index 15305983..fd6a5f69 100644 --- a/LIB/LIBCRYPT.S.txt +++ b/LIB/LIBCRYPT.S.txt @@ -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