A2osX/SYS/KERNEL.S.MD5.txt

113 lines
2.2 KiB
Plaintext
Raw Normal View History

2020-01-24 07:00:30 +00:00
NEW
AUTO 3,1
*/--------------------------------------
* ## MD5
* Return MD5 Hash for input String
* # C
* `void md5 (const char* str, char* digest);`
* # ASM
* `>PUSHW str`
* `>PUSHW digest`
* `>SYSCALL md5`
* ## RETURN VALUE
* CC
*\--------------------------------------
K.MD5 >PULLW FORPNT
>PULLYA
>STYA TXTPTR
>SYSCALL2 strlen
>STYA ZPDataLen
sta SETREADAUX
sta SETWRITEAUX
.1 jsr K.MD5Init.I
bcs .9
pha save MD5 Context hMem
jsr MD5Update.I
jsr MD5Finalize.I
pla
>SYSCALL2 FreeMem Free MD5 Context
clc
.9 sta CLRREADAUX
sta CLRWRITEAUX
rts
*/--------------------------------------
* ## MD5Init
* Initialize a MD5 computation
* # C
* `hMD5 md5init ();`
* # ASM
* `>SYSCALL MD5Init`
* ## RETURN VALUE
* A = hMem To S.MD5
*\--------------------------------------
K.MD5Init sta SETREADAUX
sta SETWRITEAUX
jsr K.MD5Init.I
sta CLRREADAUX
sta CLRWRITEAUX
rts
*/--------------------------------------
* ## MD5Update
* Add Data to MD5 computation
* # C
* `void md5update (hMD5 md5, char* data, int len);`
* # ASM
* `>PUSHB md5`
* `>PUSHW data`
* `>PUSHW len`
* `>SYSCALL MD5Update`
* ## RETURN VALUE
*\--------------------------------------
K.MD5Update >PULLW ZPDataLen get LEN
>PULLW TXTPTR get DATA
>PULLA
>SYSCALL2 GetMemPtr get MD5 Context
>STYA ZPCtxPtr
sta SETREADAUX
sta SETWRITEAUX
jsr K.MD5Update.I
sta CLRREADAUX
sta CLRWRITEAUX
rts
*/--------------------------------------
* ## MD5Finalize
* # C
* `void md5finalize (hMD5 md5, char* digest);`
* # ASM
* `>PUSHB md5`
* `>PUSHW digest`
* `>SYSCALL MD5Finalize`
* ## RETURN VALUE
*\--------------------------------------
K.MD5Finalize >PULLW FORPNT
>PULLA
sta .8+1
>SYSCALL2 GetMemPtr
>STYA ZPCtxPtr get MD5 Context
sta SETREADAUX
sta SETWRITEAUX
jsr MD5Finalize.I
.8 lda #$ff SELF MODIFIED
>SYSCALL2 FreeMem
sta CLRREADAUX
sta CLRWRITEAUX
rts
*--------------------------------------
MAN
SAVE USR/SRC/SYS/KERNEL.S.MD5
LOAD USR/SRC/SYS/KERNEL.S
ASM