From 9faba97d1b3224364ffa654b306609ac5deac527 Mon Sep 17 00:00:00 2001 From: divo <418@cryspace.space> Date: Sat, 27 Sep 2025 14:15:22 -0400 Subject: [PATCH] wrote a simple protobuf `sleep_proto.c` begin layout stack begin install instructions added info to manpage license readme --- .dat/content.bitfield | Bin 3616 -> 3616 bytes .dat/content.signatures | Bin 6240 -> 7392 bytes .dat/content.tree | Bin 7752 -> 9192 bytes .dat/metadata.bitfield | Bin 3616 -> 3616 bytes .dat/metadata.data | Bin 1977 -> 3637 bytes .dat/metadata.signatures | Bin 2464 -> 4128 bytes .dat/metadata.tree | Bin 3032 -> 5112 bytes INSTALL | 17 ++++++++++++++ LICENSE | 2 ++ README.txt | 42 +++++++++++++++++++++++++++++++--- dat.scm | 6 ++--- docs/dat.1 | 6 ++--- inc/cesspool.h | 14 ++++++++++++ inc/dat.h | 4 ++++ inc/meat.h | 1 + inc/sleep.h | 17 ++++++++++++++ src/cesspool.c | 1 + src/dat_net.c | 0 src/sleep.c | 0 src/sleep_crypto.c | 0 src/sleep_proto.c | 47 +++++++++++++++++++++++++++++++++++++++ src/sleep_tree.c | 0 src/sleep_utp.c | 0 23 files changed, 148 insertions(+), 9 deletions(-) create mode 100644 INSTALL create mode 100644 inc/meat.h create mode 100644 inc/sleep.h create mode 100644 src/cesspool.c create mode 100644 src/dat_net.c create mode 100644 src/sleep.c create mode 100644 src/sleep_crypto.c create mode 100644 src/sleep_proto.c create mode 100644 src/sleep_tree.c create mode 100644 src/sleep_utp.c diff --git a/.dat/content.bitfield b/.dat/content.bitfield index 263b0f418185dd81b571e1089b62a07f1b81d6ec..e8a027a1a555f3a9c6e8342b0c042d34219c122e 100644 GIT binary patch delta 53 zcmZ1=vp{Bo3ODs$nu$avI2_)BZzsQeWC-$WCb2prY{bg)p>q00stEB6Wss+ diff --git a/.dat/content.signatures b/.dat/content.signatures index dd35c2469eb2015711b329ce1c49248eab62e952..75ab232499d2b8d523af7c7e8be9e8f50533dba9 100644 GIT binary patch delta 1169 zcmV;C1aAA_FyJ|`U>JX@S+k<@MIiw=*i%V}!QL8KV@N9hUx-6sdm$E{Rv^l+xsWAauq@ zkvDv67x(Y6o_H805T%Hd$3z=fdk4Ee{|hxg7ik9m3L=&sr>}HQ&LOH^Cdo+a5v3-LG50-$ z{Z@ukAt5coNI=&rj^V;g@Sw08{dov44jZ8iS_Z$dQ*?r*tvW}RG;tXmKtnSwqZyGL z`^V!7Zd6FgAlxS)8FY);Q$!mJFF%0mD6AWXxQjayC8&Qn*#d35Q&3cAl#Q9R&tX<}sgx;u4DIWsw39qRz+D>i#OA0|}LZ&VE*^ zmq3gl_J!s9nmp*v9GF{ZKy5tty>*5DsI_!#LNtF$=?PQ=R4s1-eKyPX*4q&pRBY(~ zpSUF52Fz?Vp4sp~eVW%$gh%e(*Vp6t5V;N35OVSQAvZUHK+ZX2`bR}>pT;5!p2z$Z zoZ}Z2z>2;ihK#o}X@Ty>QTQo^43tV(%e_q!fIYei^h3XNy#<{t(ae<}^vTb3jJ0L{ zcsze;G+@%H0&Uu$@ZglEgcPDwtpfuj7mNGyF0<1{-rXKXe{r6l`=;h+9+{gmE+D}@ z?B}EVy8DwCsX{F8XGCp?s#RSh4;o$A-Ph*Z_6Mn_55ULEKK4+rdNv};M;k#O`8W{aLZIHt&B^%f5jEiV1uMMAW<4{N>#bb(ec<#gNad z)bP3!CBy=EZ*~PFvWs_t0D3DQ3!6kfMfm6 z^8p5E8TZ}KD?e(HQJwtO(k!aEJsLi*VGs&!V%VOuygAhXFPB4!kv-|uqF8>BdUAhp zzd@>k0$c`M>G5cXU2pa`88<$HoaDq_Je0bRqLDn|5$g#%Im diff --git a/.dat/content.tree b/.dat/content.tree index 68c4aedcbc4b4469bd27b1476638ce42a34575a0..691107137d5cb7e4465299916c64b8be9b44f92d 100644 GIT binary patch delta 1366 zcmajdYgE!_9Kdm47GBUiiH4ZeoF5_2Xq#G z3qwig#%}uWI2Ebq|72IV(?76gk8`Nz9XDUL^oTS^Q-BceCQ9D-vyS}oY|e|E+qVjL zX|`w;8l~2t3zi;fYSxE(Lr%c6x4{Dp>;yN#dwki|r3d(;%}t6WZ+-v04X7@cMT5|M zj`|shm(Nj8ZNyDIDJz^z8Sd^#e>57I=)k)8a5b^mr!8y;w+@;T?)K}57W?@K~O9PZe0#d;R9W0CS0mI`d*iK%?Wp? zgL{y99fYuYo}rE`XR*fNT{LpubmQy-*;eV;vX`}6BOhusdzOL@F$e|!x7XN%ywtO5 zs+0Ts2dh9Az?DN&?Z*yO3X#2VZQI@^&kkrpWDHRMBF-zt@u^v?-}=#aYR$lbj0+so z#CCO&;!Vc(K4?IuCeQSSAqX&APF&IBQSdsSJN8feTlGJ}BNFT4b97&U4!!L}Q?;}d zs195yDIeY-x1A@Sy|URG_@iY|Nqtl}J3dkl1vfHPbk2)D&fHnl91 z6?ytyz6&8yMVZU8*qmTHA$apZbD6cpW1;QIr8I2h&ZU`@DIsLxi$$-dB3xsqr)%Ahia2)SDxcNeVTr>*zB z$X#puguW;t8ORnW5t?{^sEC29y><=;g8`rHh8ahPE&J?Bm}rg6&EbJx!oup4{S-36 z*mL~#;gH4D0WfGwA*eB(YE<<4^Y_iFD^FtMgNJ3=G-i#^%@}3p+D;Tf2b&E1mS&Mq z8*PlFoyE-fWR#qEX?iYNnh(f~l?Hto2mKlN^*DDR9T~BwWaGCvMA*e6Jja~{)j{g1 zJIm>kmVhCfT1zN6VC^6Aa0xe$ss8@!12lX@m2J#Hw~v0y*n{1(4YJU?JkZ&QdSlZ# zr^j_-`V3c)oI)2UL!-XCTR=Mwf;SO3Kb8q)B^R-$FNwusMM zp02bctfSjEA$Em0d%&(rC;EUT(7~5U#yZ&&_l6{f)+r}9y!?SAD;WD{{Uyyab!S_? z(^~`7TM6wvOEl)w9Qa24TWM7gXG9YoSAnR)#9hrcQhgofH>I9zU76?E#s|Fx>0eRL BHfjI> delta 7 OcmaFie!^yhha3P8p94w& diff --git a/.dat/metadata.bitfield b/.dat/metadata.bitfield index a74c05042e14d2c1d6fa51b2fce344c2564f7741..62d0e7c4b2af2d15bfba031a037d2cf42027cf41 100644 GIT binary patch delta 50 zcmZ1=vp{Bo3d{fh|Nn0`Wck57S%HO}6T}07f13?i-m`Nu{Qv*|0|NuYfz28`KNtb2 CdKy6h delta 42 zcmV+_0M-AX9H1PKBmw-hF$DVqkst>H{{G;zF$C`ikw6Cs|MWo60000$vnUMs0dLe0 AhyVZp diff --git a/.dat/metadata.data b/.dat/metadata.data index 91d9ce0852cf4e0eef14463bb111dc40f4dad2fd..75dd91227f813b3a57fcd63e568fd37f70b1e93f 100644 GIT binary patch literal 3637 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 delta 7 OcmZ3Wut0dj0!{!6>;laI diff --git a/.dat/metadata.tree b/.dat/metadata.tree index 5c0d46d9cc339feea9ddb8108681675a0c05ee83..ae75f5d96ad75cfe6ab222253adc2eaa69adfff2 100644 GIT binary patch delta 2195 zcmXxkc|6qlAHeY$gK>;v8Alj{_&I)Ltm|jojlnnuNsdD0rj&7vk@;esMG4b3lRG!9 zLI{m3k(C~?%C7Fn$x*GBp@pGw zxiD%=WB$NkhlkKtw9rQy`Zdo_m<&{I+A4F;1=j`hQrMBNa$?*4Rg1>wc3bDrLPPpWCJILw z^4IMF(s$%Li_Jggd+yH>n>OITP`8?QNEP!_k#SY<3@{485#|$9J-Qt z%EVhm=ZKA;XV;8qf{H=czBVfB0O&x%7+y zLgPDv@pW>Y&CnNuRobHzS!Zow)P!O&(;!a2xJiNj0)FIRA7Vn;mpDFlDWy?#n$5SI z8crQdWMvz>MtE5<+;A%S3fRMrJ;uSf5TU?Z0aEvb4uAyRn`5FDk~bOG?*wy5|6kgb z0--B8+GlOKekH5;VTd39-l^1SzUh91*m#w9neEy{T4x&Qq*S_TWQ4{gfwo2CnGlwl z(nj?P9BHV=*xJcfe)cc~3OW`BXC4%Pk+}14pkBJ=-DXToko%k%5T3~jH>T)+@*3?0 zp>aE_MP)?rvj<6NB43lxyD4p|mwPJA*?s$?+rCj9APqXe-(#M%{%+|;K5%*k;%l!5mVO@O6id6F<(c_>iCY0qj7Q9&N&>GV$`pom$ zlKzce>;-di%{2j4RYC^nGIig(L+97KO~3gheK8kGW+Dc2;JHRItteMM(^_GxR}csU z_{ZXWw^AN1Vb!!uGSJ3Tf3gM&tU?ZbHCL#wAQFM<*x2DWOs--2vR*Y z&Veq?uM0>!=!(O5(j0%f8!#U4`rL-wpX@<{$RiP*BAr@f5aOZDp^~Z5`c`x3ZkL6Y z;#w}+E~4ueQleFSvtB#VP5j8gH%YE+@4>3CpWs^a(~St**X-HL7psfk(h=j~=5I(S zEwE=?@W+V48Gq@eSRhz(cmYs#It7XRP_&Bs_C!WjA8Z}sMb&MGFwJ`L4n#xqVkuc~uaP&P|M?x!mOcH(gk!<}1+ zssEfB0)aqzVTYbk>7Ff(v(!z?y10E_z*nd#cx6?-@cs%`r7xiS>~TvtmO{LtFLx%x?Qwe1z__H`4`Wym=*DmRID#*iO&?{&yV3W|ty)1OIv6#ccF zf&4|(P6%{(i!{fgJE{$5zBjxnGeoF}TyVM9YngomKx*#IHQb)<^gn{og+`>Vbk5`y zg!U)laVhm`G;6PoD1PAf|3GMF$nw8JP?8_` zD?{7u#~PEESz?WFOkSRs8hxZoUZ-yebhC$a%X~$HUq|6OfZ|8=NI1t5Ly4z2mj^Lv zM5PxN#|v7nTP`Ad2u1+=y}Ecg=_bkK+>9d`yD8{#kqNuGFs3(%Yf|3E3fB?rSx@4>@&do@ z#|jLzdkSn=v40LSCA1H=+39%2IQ&_$aBTvFnSJ*)*_q?36YV9L^VT=rP;NB$-o;q@s+JqsFVJLNW2>~TE<{CUbSB4GAA-s~>On;l&NGzl z$<2!G1qOh##3N|tmqf^N;T~^ha7*Fu=@OiFa4?Psy}OLTpB#FzJA7X6dJ=xtn-c%z zf_a9FNB7;Htfz;dOQ+=Lo!&_}i($X9RQb9F)48KYmPul&l~l7wvdbOMOoQ(1OSvok z9unUX>4GQ$%63;D)(2=7H@C5+5kqS;N=RY%jv$Yz)piJ@#)*qIgZv)47VSQD?u$bNOs0VEctO*N zr6wY!^qq%OX@u|P&9*2EWN&piK>br&7|M}bvZn*W2Un}-Mz;o;yaL11mG +#include +#include + +static size_t write_varint(uint64_t val, uint8_t *buf) { + size_t n = 0; + while (val >= 0x80) { + buf[n++] = (uint8_t)((val & 0x7F) | 0x80); + val >>= 7; + } + buf[n++] = (uint8_t)val; + return n; +} + +// write Header {type="hyperdrive", content=pubkey} +int sleep_write_metadata_header(const char *path, const uint8_t *content_pubkey, size_t pk_len) { + if (!content_pubkey || pk_len != 32) { + errno = EINVAL; + return -1; + } + + FILE *f = fopen(path, "wb"); + if (!f) return -1; + + uint8_t buf[128]; + size_t n = 0; +// 1st field + buf[n++] = 0x0A; + const char *type = "hyperdrive"; + size_t type_len = strlen(type); + n += write_varint(type_len, buf + n); + memcpy(buf + n, type, type_len); + n += type_len; +// 2nd field + buf[n++] = 0x12; + n += write_varing(pk_len, buf + n); + memcpy(buf + n, content_pubkey, pk_len); + n += pk_len; + + size_t written = fwrite(buf, 1, n, f); + fclose(f); + + return written == n ? 0 : -1; +} diff --git a/src/sleep_tree.c b/src/sleep_tree.c new file mode 100644 index 0000000..e69de29 diff --git a/src/sleep_utp.c b/src/sleep_utp.c new file mode 100644 index 0000000..e69de29