doc: add moar docs
This commit is contained in:
parent
9078742c29
commit
f20f1cc398
|
@ -20,7 +20,7 @@ Timestamp: Updated yyyy/mm/dd
|
||||||
# These are indexes you deleted, so Natural Docs will not add them again
|
# These are indexes you deleted, so Natural Docs will not add them again
|
||||||
# unless you remove them from this line.
|
# unless you remove them from this line.
|
||||||
|
|
||||||
Don't Index: Classes, Macros, Variables
|
Don't Index: Classes, Variables, Macros
|
||||||
|
|
||||||
|
|
||||||
# --------------------------------------------------------------------------
|
# --------------------------------------------------------------------------
|
||||||
|
@ -47,8 +47,8 @@ File: Introduction (docs/intro.txt)
|
||||||
Link: Source Code (https://git.cute.engineering/d0p1/StupidOS)
|
Link: Source Code (https://git.cute.engineering/d0p1/StupidOS)
|
||||||
File: Coding Style (docs/coding-style.txt)
|
File: Coding Style (docs/coding-style.txt)
|
||||||
File: FAQ (docs/faq.txt)
|
File: FAQ (docs/faq.txt)
|
||||||
Link: StupidFS (https://stupidfs.d0p1.eu/)
|
|
||||||
File: Common Object File Format &lparen;COFF&rparen; (docs/COFF.txt)
|
File: Common Object File Format &lparen;COFF&rparen; (docs/COFF.txt)
|
||||||
|
Link: StupidFS (https://stupidfs.d0p1.eu/)
|
||||||
|
|
||||||
Group: BootLoader {
|
Group: BootLoader {
|
||||||
|
|
||||||
|
@ -153,11 +153,6 @@ Group: Lib {
|
||||||
|
|
||||||
File: rc4.asm (no auto-title, lib/crypto/rc4/rc4.asm)
|
File: rc4.asm (no auto-title, lib/crypto/rc4/rc4.asm)
|
||||||
|
|
||||||
Group: chacha20 {
|
|
||||||
|
|
||||||
File: chacha20.asm (lib/crypto/chacha20/chacha20.asm)
|
|
||||||
} # Group: chacha20
|
|
||||||
|
|
||||||
Group: Dilithium {
|
Group: Dilithium {
|
||||||
|
|
||||||
File: ntt.asm (lib/crypto/dilithium/ntt.asm)
|
File: ntt.asm (lib/crypto/dilithium/ntt.asm)
|
||||||
|
@ -168,6 +163,9 @@ Group: Lib {
|
||||||
File: sha256.asm (lib/crypto/sha2/sha256.asm)
|
File: sha256.asm (lib/crypto/sha2/sha256.asm)
|
||||||
} # Group: SHA2
|
} # Group: SHA2
|
||||||
|
|
||||||
|
File: xchacha.asm (lib/crypto/xchacha/xchacha.asm)
|
||||||
|
File: chacha.asm (lib/crypto/chacha/chacha.asm)
|
||||||
|
File: hchacha.asm (lib/crypto/hchacha/hchacha.asm)
|
||||||
} # Group: Crypto
|
} # Group: Crypto
|
||||||
|
|
||||||
File: ctype (no auto-title, lib/c/ctype.asm)
|
File: ctype (no auto-title, lib/c/ctype.asm)
|
||||||
|
|
|
@ -1,4 +1,6 @@
|
||||||
;; File: stpdfs.inc
|
;; File: stpdfs.inc
|
||||||
|
|
||||||
|
;; Section: Stupid Filesystem
|
||||||
;;
|
;;
|
||||||
;; > ┌──────────┬───────────┬──────┬───┬──────┬────┬───┬────┐
|
;; > ┌──────────┬───────────┬──────┬───┬──────┬────┬───┬────┐
|
||||||
;; > │Boot block│Super block│Inodes│...│Inodes│Data│...│Data│
|
;; > │Boot block│Super block│Inodes│...│Inodes│Data│...│Data│
|
||||||
|
@ -15,12 +17,16 @@ STPDFS_SB_REV = 1
|
||||||
STPDFS_BSIZE = 512
|
STPDFS_BSIZE = 512
|
||||||
;; Constant: STPDFS_BADINO
|
;; Constant: STPDFS_BADINO
|
||||||
;; StupidFS bad inode
|
;; StupidFS bad inode
|
||||||
STPDBOOT_BADINO = 0
|
STPDFS_BADINO = 0
|
||||||
;; Constant: STPDFS_ROOTINO
|
;; Constant: STPDFS_ROOTINO
|
||||||
;; StupidFS root inode
|
;; StupidFS root inode number
|
||||||
STPDFS_ROOTINO = 1
|
STPDFS_ROOTINO = 1
|
||||||
;; Constant: STPDFS_NDIRECT
|
;; Constant: STPDFS_NDIRECT
|
||||||
|
;; Number of direct block (7)
|
||||||
STPDFS_NDIRECT = 7
|
STPDFS_NDIRECT = 7
|
||||||
|
;; Constant: STPDFS_INDIRECT_PER_BLOCK
|
||||||
|
STPDFS_INDIRECT_PER_BLOCK = STPDFS_BSIZE / 4
|
||||||
|
|
||||||
;; Constant: STPDFS_NAME_MAX
|
;; Constant: STPDFS_NAME_MAX
|
||||||
;; Max file name length (28)
|
;; Max file name length (28)
|
||||||
STPDFS_NAME_MAX = 28
|
STPDFS_NAME_MAX = 28
|
||||||
|
@ -33,8 +39,28 @@ STPDFS_CLEANLY_UNMOUNTED = 0
|
||||||
STPDFS_ERROR = 1
|
STPDFS_ERROR = 1
|
||||||
STPDFS_DIRTY = 1
|
STPDFS_DIRTY = 1
|
||||||
|
|
||||||
|
;; Enum: StupidFS i-node flags
|
||||||
|
;; STPDFS_INO_FLAG_ALOC - I-node is allocated
|
||||||
|
;; STPDFS_INO_FLAG_LZP - I-node data is compressed using LZP algorithm (see <lzp.asm>)
|
||||||
|
;; STPDFS_INO_FLAG_ENC - I-node data is encrypted with XChaCha12 (see <xchacha.asm>)
|
||||||
|
STPDFS_INO_FLAG_ALOC = 0x8000
|
||||||
|
STPDFS_INO_FLAG_LZP = 0x0001
|
||||||
|
STPDFS_INO_FLAG_ENC = 0x0002
|
||||||
|
|
||||||
|
;; Constant: STPDFS_INODE_PER_BLOCK
|
||||||
|
;; I-node per block
|
||||||
|
STPDFS_INODE_PER_BLOCK = sizeof.StpdFS_Inode / STPDFS_BSIZE
|
||||||
|
|
||||||
|
;; Constant: STPDFS_DIRENT_PER_BLOCK
|
||||||
|
;; Directory entry per block
|
||||||
|
STPDFS_DIRENT_PER_BLOCK = sizeof.StpdFS_Dirent / STPDFS_BSIZE
|
||||||
|
|
||||||
|
|
||||||
;; Struc: StpdFS_FreeList
|
;; Struc: StpdFS_FreeList
|
||||||
;;
|
;;
|
||||||
|
;; .free - List of free block (0-99), index 0 point to next freelist
|
||||||
|
;; .nfree - Index
|
||||||
|
;;
|
||||||
;; > ┌──────────┐
|
;; > ┌──────────┐
|
||||||
;; > │ block 99 │
|
;; > │ block 99 │
|
||||||
;; > ├──────────┤
|
;; > ├──────────┤
|
||||||
|
@ -84,15 +110,15 @@ DEFN StpdFS_Sb
|
||||||
;; Struc: StpdFS_Inode
|
;; Struc: StpdFS_Inode
|
||||||
;; StupidFS on disk i-node
|
;; StupidFS on disk i-node
|
||||||
;;
|
;;
|
||||||
;; .mode - TODO
|
;; .mode - File mode
|
||||||
;; .nlink - TODO
|
;; .nlink - Links count
|
||||||
;; .uid - TODO
|
;; .uid - Owner Uid
|
||||||
;; .gid - TODO
|
;; .gid - Group Id
|
||||||
;; .flags - TODO
|
;; .flags - File flags, see <StupidFS i-node flags>
|
||||||
;; .size - Date size in byte
|
;; .size - Data size in byte
|
||||||
;; .zone - TODO
|
;; .zone - See bellow
|
||||||
;; .actime - TODO
|
;; .actime - Access time (64-bit UNIX timestamp)
|
||||||
;; .modtime - TODO
|
;; .modtime - Modification time (64-bit UNIX timestamp)
|
||||||
;;
|
;;
|
||||||
;;
|
;;
|
||||||
;; Zone 0-6 are direct, zone 7 indirect, zone 8 double indirect, zone 9 triple indirect
|
;; Zone 0-6 are direct, zone 7 indirect, zone 8 double indirect, zone 9 triple indirect
|
||||||
|
@ -110,17 +136,17 @@ DEFN StpdFS_Sb
|
||||||
;; > │zone 7├─────────►│ │ │ │
|
;; > │zone 7├─────────►│ │ │ │
|
||||||
;; > ├──────┤ └────────┘ └────────┘
|
;; > ├──────┤ └────────┘ └────────┘
|
||||||
;; > │zone 8├───────┐
|
;; > │zone 8├───────┐
|
||||||
;; > ├──────┤ │Double indirect┌─────────┐ ┌────────┐ ┌─────────┐
|
;; > ├──────┤ │Double indirect┌────────┐ ┌────────┐ ┌────────┐
|
||||||
;; > │zone 9│ └──────────────►│ ├───►│ ├───►│ │
|
;; > │zone 9│ └──────────────►│ ├───►│ ├───►│ │
|
||||||
;; > └──┬───┘ │ │ │ │ │ Data │
|
;; > └──┬───┘ │ │ │ │ │ Data │
|
||||||
;; > │ │ │ │ │ │ │
|
;; > │ │ │ │ │ │ │
|
||||||
;; > │ └─────────┘ └────────┘ └─────────┘
|
;; > │ └────────┘ └────────┘ └────────┘
|
||||||
;; > │ Triple indirect ┌────────┐
|
;; > │ Triple indirect ┌────────┐
|
||||||
;; > └────────────────►│ │ ┌──────────┐ ┌─────────┐ ┌──────────┐
|
;; > └────────────────►│ │ ┌────────┐ ┌────────┐ ┌────────┐
|
||||||
;; > │ ├───►│ │ │ │ │ │
|
;; > │ ├───►│ │ │ │ │ │
|
||||||
;; > │ │ │ ├─────►│ ├─────►│ Data │
|
;; > │ │ │ ├─────►│ ├─────►│ Data │
|
||||||
;; > └────────┘ │ │ │ │ │ │
|
;; > └────────┘ │ │ │ │ │ │
|
||||||
;; > └──────────┘ └─────────┘ └──────────┘
|
;; > └────────┘ └────────┘ └────────┘
|
||||||
struc StpdFS_Inode {
|
struc StpdFS_Inode {
|
||||||
.mode dw ?
|
.mode dw ?
|
||||||
.nlink dw ?
|
.nlink dw ?
|
||||||
|
@ -134,8 +160,9 @@ struc StpdFS_Inode {
|
||||||
}
|
}
|
||||||
DEFN StpdFS_Inode
|
DEFN StpdFS_Inode
|
||||||
|
|
||||||
|
|
||||||
;; Struc: StpdFS_Dirent
|
;; Struc: StpdFS_Dirent
|
||||||
;; StupidFS dir entry
|
;; StupidFS directory entry
|
||||||
;;
|
;;
|
||||||
;; .inode - address of i-node
|
;; .inode - address of i-node
|
||||||
;; .name - null terminated file name (see <STPDFS_NAME_MAX>)
|
;; .name - null terminated file name (see <STPDFS_NAME_MAX>)
|
||||||
|
@ -145,8 +172,6 @@ struc StpdFS_Dirent {
|
||||||
}
|
}
|
||||||
DEFN StpdFS_Dirent
|
DEFN StpdFS_Dirent
|
||||||
|
|
||||||
STPDFS_DIRENT_PER_BLOCK = sizeof.StpdFS_Dirent / STPDFS_BSIZE
|
|
||||||
|
|
||||||
; ------------------------------------------------------------------------
|
; ------------------------------------------------------------------------
|
||||||
|
|
||||||
;; Section: Implementation
|
;; Section: Implementation
|
||||||
|
|
|
@ -1,18 +1,27 @@
|
||||||
;; File: xv6fs.inc
|
;; File: xv6fs.inc
|
||||||
;;
|
;;
|
||||||
|
;; Usefull links:
|
||||||
|
;; - <https://github.com/mit-pdos/xv6-riscv/blob/riscv/kernel/fs.h>
|
||||||
|
;; - <xv6 book at https://pdos.csail.mit.edu/6.1810/2023/xv6/book-riscv-rev3.pdf>
|
||||||
|
;;
|
||||||
|
;; Section: xv6 Filesystem
|
||||||
|
;;
|
||||||
;; > ┌──────────┬───────────┬───┬───┬───┬──────┬───┬──────┬──────┬───┬──────┬────┬───┬────┐
|
;; > ┌──────────┬───────────┬───┬───┬───┬──────┬───┬──────┬──────┬───┬──────┬────┬───┬────┐
|
||||||
;; > │Boot block│Super block│Log│...│Log│Inodes│...│Inodes│Bitmap│...│Bitmap│Data│...│Data│
|
;; > │Boot block│Super block│Log│...│Log│Inodes│...│Inodes│Bitmap│...│Bitmap│Data│...│Data│
|
||||||
;; > └──────────┴───────────┴───┴───┴───┴──────┴───┴──────┴──────┴───┴──────┴────┴───┴────┘
|
;; > └──────────┴───────────┴───┴───┴───┴──────┴───┴──────┴──────┴───┴──────┴────┴───┴────┘
|
||||||
;;
|
;;
|
||||||
;; Usefull links:
|
|
||||||
;; - <https://github.com/mit-pdos/xv6-riscv/blob/riscv/kernel/fs.h>
|
|
||||||
;; - <xv6 book at https://pdos.csail.mit.edu/6.1810/2023/xv6/book-riscv-rev3.pdf>
|
|
||||||
|
|
||||||
;; Constant: XV6FS_BSIZE
|
;; Constant: XV6FS_BSIZE
|
||||||
;; xv6 Filesystem block size (1024)
|
;; xv6 Filesystem block size (1024)
|
||||||
XV6FS_BSIZE = 1024
|
XV6FS_BSIZE = 1024
|
||||||
|
;; Constant: XV6FS_ROOTINO
|
||||||
|
;; root inode number
|
||||||
XV6FS_ROOTINO = 1
|
XV6FS_ROOTINO = 1
|
||||||
|
;; Constant: XV6FS_MAGIC
|
||||||
|
;; Superblock magic number, MUST BE `0x10203040`
|
||||||
XV6FS_MAGIC = 0x10203040
|
XV6FS_MAGIC = 0x10203040
|
||||||
|
;; Constant: XV6FS_NDIRECT
|
||||||
|
;; Number of direct block (12)
|
||||||
XV6FS_NDIRECT = 12
|
XV6FS_NDIRECT = 12
|
||||||
XV6FS_NINDIRECT = (XV6FS_BSIZE / 4)
|
XV6FS_NINDIRECT = (XV6FS_BSIZE / 4)
|
||||||
XV6FS_MAXFILE = (XV6FS_NDIRECT + XV6FS_NINDIRECT)
|
XV6FS_MAXFILE = (XV6FS_NDIRECT + XV6FS_NINDIRECT)
|
||||||
|
@ -20,6 +29,16 @@ XV6FS_IPB = (XV6FS_BSIZE / 64)
|
||||||
XV6FS_DIRSIZE = 14
|
XV6FS_DIRSIZE = 14
|
||||||
|
|
||||||
;; Struc: Xv6FS_Sb
|
;; Struc: Xv6FS_Sb
|
||||||
|
;; xv6FS superblock
|
||||||
|
;;
|
||||||
|
;; .magic - See <XV6FS_MAGIC>
|
||||||
|
;; .size - TODO
|
||||||
|
;; .nblock - TODO
|
||||||
|
;; .ninodes - TODO
|
||||||
|
;; .nlog - TODO
|
||||||
|
;; .nlogstart - TODO
|
||||||
|
;; .inodestart - TODO
|
||||||
|
;; .bmapstart - TODO
|
||||||
struc Xv6FS_Sb {
|
struc Xv6FS_Sb {
|
||||||
.magic dd ?
|
.magic dd ?
|
||||||
.size dd ?
|
.size dd ?
|
||||||
|
@ -33,6 +52,14 @@ struc Xv6FS_Sb {
|
||||||
DEFN Xv6FS_Sb
|
DEFN Xv6FS_Sb
|
||||||
|
|
||||||
;; Struc: Xv6FS_Inode
|
;; Struc: Xv6FS_Inode
|
||||||
|
;; xv6FS on disk i-node
|
||||||
|
;;
|
||||||
|
;; .type - TODO
|
||||||
|
;; .major - TODO
|
||||||
|
;; .minor - TODO
|
||||||
|
;; .nlink - TODO
|
||||||
|
;; .size - TODO
|
||||||
|
;; .addrs - TODO
|
||||||
struc Xv6FS_Inode {
|
struc Xv6FS_Inode {
|
||||||
.type dw ?
|
.type dw ?
|
||||||
.major dw ?
|
.major dw ?
|
||||||
|
@ -44,6 +71,7 @@ struc Xv6FS_Inode {
|
||||||
DEFN Xv6FS_Inode
|
DEFN Xv6FS_Inode
|
||||||
|
|
||||||
;; Struc: Xv6FS_Dirent
|
;; Struc: Xv6FS_Dirent
|
||||||
|
;; xv6FS directory entry
|
||||||
struc Xv6FS_Dirent {
|
struc Xv6FS_Dirent {
|
||||||
.inum dw ?
|
.inum dw ?
|
||||||
.name db XV6FS_DIRSIZE dup(?)
|
.name db XV6FS_DIRSIZE dup(?)
|
||||||
|
|
|
@ -1,13 +1,16 @@
|
||||||
TARGET = libcrypto.a
|
TARGET = libcrypto.a
|
||||||
OBJS = sha2/sha256.o sha2/sha512.o \
|
OBJS = sha2/sha256.o sha2/sha512.o \
|
||||||
chacha20/chacha20.o
|
chacha/chacha.o \
|
||||||
|
hchacha/hchacha.o
|
||||||
INCS = sha2/sha2.h \
|
INCS = sha2/sha2.h \
|
||||||
chacha20/chacha20.h \
|
chacha/chacha.h \
|
||||||
|
hchacha/hchacha.h \
|
||||||
dilithium/dilithium.h \
|
dilithium/dilithium.h \
|
||||||
falcon/falcon.h \
|
falcon/falcon.h \
|
||||||
keccak/keccak.h
|
keccak/keccak.h
|
||||||
ASMS = sha2/sha2.inc \
|
ASMS = sha2/sha2.inc \
|
||||||
chacha20/chacha20.inc
|
chacha/chacha.inc \
|
||||||
|
hchacha/hchacha.inc
|
||||||
|
|
||||||
INCCRYPOTDIR = $(INCDIR)/crypto
|
INCCRYPOTDIR = $(INCDIR)/crypto
|
||||||
ASMCRYPTODIR = $(ASMDIR)/crypto
|
ASMCRYPTODIR = $(ASMDIR)/crypto
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
;; File: chacha20.asm
|
;; File: chacha.asm
|
||||||
|
|
||||||
; https://en.wikipedia.org/wiki/Salsa20#ChaCha_variant
|
; https://en.wikipedia.org/wiki/Salsa20#ChaCha_variant
|
||||||
; https://datatracker.ietf.org/doc/html/rfc7539
|
; https://datatracker.ietf.org/doc/html/rfc7539
|
||||||
|
@ -6,7 +6,7 @@
|
||||||
format COFF
|
format COFF
|
||||||
use32
|
use32
|
||||||
|
|
||||||
include 'chacha20.inc'
|
include 'chacha.inc'
|
||||||
virtual at 0
|
virtual at 0
|
||||||
ctx ChaCha20Ctx
|
ctx ChaCha20Ctx
|
||||||
end virtual
|
end virtual
|
96
lib/crypto/hchacha/hchacha.asm
Normal file
96
lib/crypto/hchacha/hchacha.asm
Normal file
|
@ -0,0 +1,96 @@
|
||||||
|
;; File: hchacha.asm
|
||||||
|
|
||||||
|
CHACHA_CONST1 = 0x61707865
|
||||||
|
CHACHA_CONST2 = 0x3320646e
|
||||||
|
CHACHA_CONST3 = 0x3320646e
|
||||||
|
CHACHA_CONST4 = 0x6b206574
|
||||||
|
|
||||||
|
macro TO_LE32 {
|
||||||
|
movzx ecx, byte [eax+1]
|
||||||
|
sal ecx, 8
|
||||||
|
movzx edx, byte [eax+2]
|
||||||
|
sal edx, 16
|
||||||
|
or edx, ecx
|
||||||
|
movzx ecx, byte [eax]
|
||||||
|
or edx, ecx
|
||||||
|
movzx ecx, byte [eax+3]
|
||||||
|
sal ecx, 24
|
||||||
|
or ecx, edx
|
||||||
|
}
|
||||||
|
|
||||||
|
hchacha:
|
||||||
|
push ebp
|
||||||
|
mov ebp, esp
|
||||||
|
sub esp, 4*4*4
|
||||||
|
|
||||||
|
mov [ebp-64], dword CHACHA_CONST1
|
||||||
|
mov [ebp-60], dword CHACHA_CONST2
|
||||||
|
mov [ebp-56], dword CHACHA_CONST3
|
||||||
|
mov [ebp-52], dword CHACHA_CONST4
|
||||||
|
|
||||||
|
mov eax, [ebp+12]
|
||||||
|
|
||||||
|
; key
|
||||||
|
TO_LE32
|
||||||
|
mov [ebp-48], ecx
|
||||||
|
|
||||||
|
; key + 4
|
||||||
|
add eax, 4
|
||||||
|
TO_LE32
|
||||||
|
mov [ebp-44], ecx
|
||||||
|
|
||||||
|
; key + 4 * 2
|
||||||
|
add eax, 4
|
||||||
|
TO_LE32
|
||||||
|
mov [ebp-40], ecx
|
||||||
|
|
||||||
|
; key + 4 * 3
|
||||||
|
add eax, 4
|
||||||
|
TO_LE32
|
||||||
|
mov [ebp-36], ecx
|
||||||
|
|
||||||
|
; key + 16
|
||||||
|
add eax, 4
|
||||||
|
TO_LE32
|
||||||
|
mov [ebp-32], ecx
|
||||||
|
|
||||||
|
; key + 16 + 4
|
||||||
|
add eax, 4
|
||||||
|
TO_LE32
|
||||||
|
mov [ebp-28], ecx
|
||||||
|
|
||||||
|
; key + 16 + 4 * 2
|
||||||
|
add eax, 4
|
||||||
|
TO_LE32
|
||||||
|
mov [ebp-24], ecx
|
||||||
|
|
||||||
|
; key + 16 + 4 * 3
|
||||||
|
add eax, 4
|
||||||
|
TO_LE32
|
||||||
|
mov [ebp-20], ecx
|
||||||
|
|
||||||
|
; nonce
|
||||||
|
mov eax, [ebp+16]
|
||||||
|
TO_LE32
|
||||||
|
mov [ebp-16], ecx
|
||||||
|
|
||||||
|
; nonce + 4
|
||||||
|
add eax, 4
|
||||||
|
TO_LE32
|
||||||
|
mov [ebp-12], ecx
|
||||||
|
|
||||||
|
; nonce + 8
|
||||||
|
add eax, 4
|
||||||
|
TO_LE32
|
||||||
|
mov [ebp-8], ecx
|
||||||
|
|
||||||
|
add eax, 4
|
||||||
|
TO_LE32
|
||||||
|
mov [ebp-4], ecx
|
||||||
|
|
||||||
|
;; round
|
||||||
|
|
||||||
|
;; out
|
||||||
|
|
||||||
|
leave
|
||||||
|
ret
|
22
lib/crypto/hchacha/hchacha.h
Normal file
22
lib/crypto/hchacha/hchacha.h
Normal file
|
@ -0,0 +1,22 @@
|
||||||
|
#ifndef CRYPTO_HCHACHA_H
|
||||||
|
# define CRYPTO_HCHACHA_H 1
|
||||||
|
|
||||||
|
# include <stdint.h>
|
||||||
|
|
||||||
|
# define HCHACHA_OUT_BYTES 32
|
||||||
|
# define HCHACHA_KEY_BYTES 32
|
||||||
|
# define HCHACHA_NONCE_BYTES 16
|
||||||
|
|
||||||
|
void hchacha(uint8_t out[HCHACHA_OUT_BYTES],
|
||||||
|
const uint8_t key[HCHACHA_KEY_BYTES],
|
||||||
|
const uint8_t nonce[HCHACHA_NONCE_BYTES], int round);
|
||||||
|
|
||||||
|
void hchacha12(uint8_t out[HCHACHA_OUT_BYTES],
|
||||||
|
const uint8_t key[HCHACHA_KEY_BYTES],
|
||||||
|
const uint8_t nonce[HCHACHA_NONCE_BYTES]);
|
||||||
|
|
||||||
|
void hchacha20(uint8_t out[HCHACHA_OUT_BYTES],
|
||||||
|
const uint8_t key[HCHACHA_KEY_BYTES],
|
||||||
|
const uint8_t nonce[HCHACHA_NONCE_BYTES]);
|
||||||
|
|
||||||
|
#endif /* !CRYPTO_HCHACHA_H */
|
7
lib/crypto/hchacha/hchacha.inc
Normal file
7
lib/crypto/hchacha/hchacha.inc
Normal file
|
@ -0,0 +1,7 @@
|
||||||
|
HCHACHA_OUT_BYTES = 32
|
||||||
|
HCHACHA_KEY_BYTES = 32
|
||||||
|
HCHACHA_NONCE_BYTES = 16
|
||||||
|
|
||||||
|
public hchacha
|
||||||
|
public hchacha12
|
||||||
|
public hchacha20
|
3
lib/crypto/xchacha/xchacha.asm
Normal file
3
lib/crypto/xchacha/xchacha.asm
Normal file
|
@ -0,0 +1,3 @@
|
||||||
|
;; File: xchacha.asm
|
||||||
|
;; eXtended-nonce ChaCha cipher
|
||||||
|
;;
|
|
@ -1,8 +1,9 @@
|
||||||
;; File: lzp.asm
|
;; File: lzp.asm
|
||||||
|
;; *Lempel-Ziv + Prediction* (a fast, efficient, and memory-use
|
||||||
; Lempel-Ziv + Prediction (a fast, efficient, and memory-use
|
;; conservative compression algorithm)
|
||||||
; conservative compression algorithm)
|
;;
|
||||||
; (paper: https://ieeexplore.ieee.org/document/488353)
|
;; (paper: https://ieeexplore.ieee.org/document/488353)
|
||||||
|
|
||||||
format COFF
|
format COFF
|
||||||
use32
|
use32
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue