chore: sorry

This commit is contained in:
d0p1 🏳️‍⚧️ 2024-04-02 12:03:47 +02:00
parent 2386bcc417
commit 0cf565c93c
19 changed files with 163 additions and 36 deletions

View file

@ -1,6 +1,5 @@
;; File: bios.inc
;; Function: bios_print
;;
;; Parameters:

View file

@ -48,6 +48,8 @@ efimain:
section '.data' data readable writeable
hello_msg du 'StupidOS EFI Bootloader', 13, 10, 0
; Search path: / /boot /boot/efi
kernel_file du 'vmstupid.sys', 0
handle dd ?

View file

@ -2,6 +2,20 @@ File: Introduction
About: Legacy
>
> +------------+
> | bootsector |---+
> +------------+ | +-------------+ +--------------+
> +------>| stpdldr.sys |------>| vmstupid.sys |
> +-----------+ | +-------------+ +--------------+
> | multiboot |----+
> +-----------+
>
About: UEFI
>
> +--------------+ +--------------+
> | BOOTIA32.EFI |----->| vmstupid.sys |
> +--------------+ +--------------+
>

View file

@ -18,6 +18,7 @@ _start:
je multiboot
use16
align 2
; =========================================================================
; real mode code
@ -28,19 +29,34 @@ _start:
mov si, msg_stage2
call bios_print
; enable A20 line
call a20_enable
jc .error_a20
; detect memory
; fetch memory map from bios
call memory_get_map
jc .error_memory
; video information
call video_setup
xchg bx, bx
;cli
;lgdt [gdt_ptr]
;jmp 0x8:common32
;jmp $
; load GDT and enter Protected-Mode
lgdt [gdt_ptr]
; enable protected mode
mov eax, cr0
or al, 1
mov cr0, eax
; reload ds, es, fs, gs, ss
mov ax, 0x10
mov ds, ax
mov es, ax
mov fs, ax
mov gs, ax
mov ss, ax
jmp 0x8:common32
.error_memory:
mov si, msg_error_memory
@ -59,23 +75,26 @@ _start:
include 'video.inc'
include 'gdt.inc'
msg_stage2 db "StupidOS Bootloader (Stage 1)", CR, LF, 0
msg_stage2 db "StupidOS Loader", CR, LF, 0
msg_error_a20 db "ERROR: can't enable a20 line", CR, LF, 0
msg_error_memory db "ERROR: can't detect available memory", CR, LF, 0
;;
bi_screen_width: dw 0
bi_screen_height: dw 0
use32
; =========================================================================
; protected mode code
; =========================================================================
multiboot:
; https://www.gnu.org/software/grub/manual/multiboot/multiboot.html#Machine-state
; get screen information
; get memory map
; get kernel from module
common32:
;mov bx, 0x0f01
;mov word [eax], bx
mov dword [0xb8000], 0x07690748
; paging
; identity map first 1MB
; map kernel to 0xC0000000
@ -86,13 +105,12 @@ hang:
_edata:
boot_structure:
align 4096
boot_page_directory:
rb 4096
boot_0_page_table:
rb 4096
boot_768_page_table:
rb 4096

View file

@ -1,4 +1,4 @@
Format: 1.51
Format: 1.52
Title: StupidOS
@ -17,6 +17,11 @@ Timestamp: Updated yyyy/mm/dd
# yyyy - Four digit year. 2006 is "2006"
# year - Four digit year. 2006 is "2006"
# These are indexes you deleted, so Natural Docs will not add them again
# unless you remove them from this line.
Don't Index: Macros, Variables, Classes
# --------------------------------------------------------------------------
#
@ -62,10 +67,10 @@ Group: BootLoader {
File: bios.inc (boot/common/bios.inc)
} # Group: Common
Group: EFI {
File: bootia32.asm (boot/efi/bootia32.asm)
File: uefi.inc (boot/efi/uefi.inc)
} # Group: EFI
} # Group: BootLoader
@ -84,6 +89,16 @@ Group: Lib {
Group: Crypto {
Group: chacha20 {
File: chacha20.asm (lib/crypto/chacha20/chacha20.asm)
} # Group: chacha20
Group: Dilithium {
File: ntt.asm (lib/crypto/dilithium/ntt.asm)
} # Group: Dilithium
Group: SHA2 {
File: sha256.asm (lib/crypto/sha2/sha256.asm)

View file

@ -4,8 +4,3 @@ mm_init:
ret
kernel_page_directory:
dd 0x1000 dup 0x0
kernel_page_table:
dd 0x1000 dup 0x0

4
kernel/vfs.inc Normal file
View file

@ -0,0 +1,4 @@
vfs_init:
ret

View file

@ -2,7 +2,10 @@ TARGET = libcrypto.a
OBJS = sha2/sha256.o sha2/sha512.o \
chacha20/chacha20.o
INCS = sha2/sha2.h \
chacha20/chacha20.h
chacha20/chacha20.h \
dilithium/dilithium.h \
falcon/falcon.h \
keccak/keccak.h
ASMS = sha2/sha2.inc \
chacha20/chacha20.inc

View file

@ -1,3 +1,5 @@
;; File: chacha20.asm
; https://en.wikipedia.org/wiki/Salsa20#ChaCha_variant
; https://datatracker.ietf.org/doc/html/rfc7539
; https://cr.yp.to/chacha/chacha-20080120.pdf

View file

@ -0,0 +1,13 @@
#ifndef CRYPTO_DILITHIUM_H
# define CRYPTO_DILITHIUM_H 1
# define DILITHIUM2_PUBLICKEY_BYTES 1312
# define DILITHIUM2_PRIVATEKEY_BYTES 2560
# define DILITHIUM3_PUBLICKEY_BYTES 1952
# define DILITHIUM3_PRIVATEKEY_BYTES 4032
# define DILITHIUM5_PUBLICKEY_BYTES 2592
# define DILITHIUM5_PRIVATEKEY_BYTES 4896
#endif /* !CRYPTO_DILITHIUM_H */

View file

@ -0,0 +1,40 @@
;; File: ntt.asm
format COFF
use32
section '.data' data
;; Constant: zetas
zetas:
dd 0, 25847, -2608894, -518909, 237124, -777960, -876248, 466468,
dd 1826347, 2353451, -359251, -2091905, 3119733, -2884855, 3111497, 2680103,
dd 2725464, 1024112, -1079900, 3585928, -549488, -1119584, 2619752, -2108549,
dd -2118186, -3859737, -1399561, -3277672, 1757237, -19422, 4010497, 280005,
dd 2706023, 95776, 3077325, 3530437, -1661693, -3592148, -2537516, 3915439,
dd -3861115, -3043716, 3574422, -2867647, 3539968, -300467, 2348700, -539299,
dd -1699267, -1643818, 3505694, -3821735, 3507263, -2140649, -1600420, 3699596,
dd 811944, 531354, 954230, 3881043, 3900724, -2556880, 2071892, -2797779,
dd -3930395, -1528703, -3677745, -3041255, -1452451, 3475950, 2176455, -1585221,
dd -1257611, 1939314, -4083598, -1000202, -3190144, -3157330, -3632928, 126922,
dd 3412210, -983419, 2147896, 2715295, -2967645, -3693493, -411027, -2477047,
dd -671102, -1228525, -22981, -1308169, -381987, 1349076, 1852771, -1430430,
dd -3343383, 264944, 508951, 3097992, 44288, -1100098, 904516, 3958618,
dd -3724342, -8578, 1653064, -3249728, 2389356, -210977, 759969, -1316856,
dd 189548, -3553272, 3159746, -1851402, -2409325, -177440, 1315589, 1341330,
dd 1285669, -1584928, -812732, -1439742, -3019102, -3881060, -3628969, 3839961,
dd 2091667, 3407706, 2316500, 3817976, -3342478, 2244091, -2446433, -3562462,
dd 266997, 2434439, -1235728, 3513181, -3520352, -3759364, -1197226, -3193378,
dd 900702, 1859098, 909542, 819034, 495491, -1613174, -43260, -522500,
dd -655327, -3122442, 2031748, 3207046, -3556995, -525098, -768622, -3595838,
dd 342297, 286988, -2437823, 4108315, 3437287, -3342277, 1735879, 203044,
dd 2842341, 2691481, -2590150, 1265009, 4055324, 1247620, 2486353, 1595974,
dd -3767016, 1250494, 2635921, -3548272, -2994039, 1869119, 1903435, -1050970,
dd -1333058, 1237275, -3318210, -1430225, -451100, 1312455, 3306115, -1962642,
dd -1279661, 1917081, -2546312, -1374803, 1500165, 777191, 2235880, 3406031,
dd -542412, -2831860, -1671176, -1846953, -2584293, -3724270, 594136, -3776993,
dd -2013608, 2432395, 2454455, -164721, 1957272, 3369112, 185531, -1207385,
dd -3183426, 162844, 1616392, 3014001, 810149, 1652634, -3694233, -1799107,
dd -3038916, 3523897, 3866901, 269760, 2213111, -975884, 1717735, 472078,
dd -426683, 1723600, -1803090, 1910376, -1667432, -1104333, -260646, -3833893,
dd -2939036, -2235985, -420899, -2286327, 183443, -976891, 1612842, -3545687,
dd -554416, 3919660, -48306, -1362209, 3937738, 1400424, -846154, 1976782

View file

@ -0,0 +1,10 @@
#ifndef CRYPTO_FALCON_H
# define CRYPTO_FALCON_H 1
# define FALCON512_PUBLICKEY_BYTES 897
# define FALCON512_PRIVATEKEY_BYTES 1281
# define FALCON1024_PUBLICKEY_BYTES 1793
# define FALCON1024_PRIVATEKEY_BYTES 2305
#endif /* !CRYPTO_FALCON_H */

View file

@ -0,0 +1,6 @@
#ifndef CRYPTO_KECCAK_H
# define CRYPTO_KECCAK_H 1
#endif /* !CRYPTO_KECCAK_H */

View file

@ -1,6 +1,5 @@
;; File: lzp.asm
; Lempel-Ziv + Prediction (a fast, efficient, and memory-use
; conservative compression algorithm)
; (paper: https://ieeexplore.ieee.org/document/488353)
@ -9,10 +8,11 @@
;; https://hugi.scene.org/online/coding/hugi%2012%20-%20colzp.htm
include 'lzp.inc'
LZP_HASH_ORDER = 16
LZP_HASH_SIZE = (1 shl LZP_HASH_ORDER)
LZP_HASH_ORDER = 16
LZP_HASH_SIZE = (1 shl LZP_HASH_ORDER)
public lzp_compress
public lzp_decompress
; hash(h, x) (h = (h << 4) ^ x)

View file

@ -1,2 +1,2 @@
public lzp_compress
public lzp_decompress
extrn lzp_compress
extrn lzp_decompress

4
tests/Makefile Normal file
View file

@ -0,0 +1,4 @@
TOPGOALS = all clean install
.PHONY: $(TOPGOALS)
$(TOPGOALS):

View file

@ -7,6 +7,7 @@ static char *outfile = "a.out";
typedef struct section
{
} Section;
@ -45,6 +46,7 @@ main(int argc, char **argv)
SCNHDR shdr;
uint8_t *buffer;
SYM entry;
RELOC reloc;
int idx;
prg_name = argv[0];