doc: add moar docs
This commit is contained in:
		
							parent
							
								
									9078742c29
								
							
						
					
					
						commit
						f20f1cc398
					
				
					 12 changed files with 226 additions and 43 deletions
				
			
		|  | @ -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…
	
	Add table
		
		Reference in a new issue