yeah, wrote docs, thats it bye lol
golang docs system is nice at first i was writing everything in another docs readme but it was so damn boring and i started looking around for automated docs like its in fastapi of python, then i found out i can write comments and stuff and people can use go doc command and there are also crawlers by pkg.go.dev which can show my go docs on the website
so yeah that
dont focus on screenshot, i am waiting for it to detect the license so it can show docs 
yes, added a page for ALL details you made need about it, PLEASE READ IT 
i have put so much efforts into that so you better read
it includes this table of contents:
1.Overview
2.Packet Format
3.Message Types
4.Handshake Protocol
5.Key Derivation
6.Data Phase
7.Cryptographic Primitives
8.Wire Format Reference
so not just that, i also changed the folder structure a bit, and some other very small things which i couldnt dev log cuz they were too small
but yes the main thing i did was making a visualize backend, it uses websockets and simulates an entire handshake and data transfer, all the crypto work is real in the server but no packet is being sent, so its just steps one by one explaining the work that is being done.
been a bit busy for a while so couldnt code properly :(
completed the entire bomboclat visualizer
so its a website with go backend which is running a totally real handshake sequence, which is a simulation ofc but the crypto stuff is real, no packets are being sent tho
after asking multiple people in #stardance i decided to go with monotone default colors of tailwind, and someone suggested CRT line effect so i added that too which made it hella cool.
it features a 26 step sequence showing everything from keypair generation to data phase, shows from both client and server sides with cool cards, i love this so much
yes i did it all in one devlog, its a just a small dev log server and not the main thing of this project, the main is still the protocol and the package so i will do on that with some documentations and specs page.
will be hosted soon on my nest container 
completed the entire bomboclat visualizer
so its a website with go backend which is running a totally real handshake sequence, which is a simulation ofc but the crypto stuff is real, no packets are being sent tho
after asking multiple people in #stardance i decided to go with monotone default colors of tailwind, and someone suggested CRT line effect so i added that too which made it hella cool.
it features a 26 step sequence showing everything from keypair generation to data phase, shows from both client and server sides with cool cards, i love this so much
yes i did it all in one devlog, its a just a small dev log server and not the main thing of this project, the main is still the protocol and the package so i will do on that with some documentations and specs page.
will be hosted soon on my nest container 
so not just that, i also changed the folder structure a bit, and some other very small things which i couldnt dev log cuz they were too small
but yes the main thing i did was making a visualize backend, it uses websockets and simulates an entire handshake and data transfer, all the crypto work is real in the server but no packet is being sent, so its just steps one by one explaining the work that is being done.
been a bit busy for a while so couldnt code properly :(
i am so happy, i have wrote the FIRST thingy on top of secure channel protocol!!! my own damn lil TLS.
this is a very basic client server chat, server listens on a port and client connects, they it reads input from stdin
the server connects using command:
./scp listen --port 2008 --psk test
the client connects using command:
./scp connect --host localhost:2008 --psk test
the PSK is pre-shared (well, duh) using the --psk flag
well this is a very basic terminal chat app, i can ship the project as it is rn as its a nice MVP but i want to make a visualizer cuz i know damn well NO one gonna run it like this lol, and i want to make a cool visualizer that shows every step of handshake
the first screenshot shows the chat, top one is the server and bottom is client
the second screenshot shows the wireshark capture of this beautiful exchange, ofc its encrypted hehe i love this
wow this made it complete on a function definition level, like i just have to make some wrappers around it
so, i made 3 functions for the Session struct
Send() -> takes plaintext, encrypts it with the session key and nonce from session, sends itReceive() -> decodes MsgData packet, decrypts using session key and nonce received FROM the packet (so nonces dont go out of sync) and returns plaintextClose() -> what do you think lmaoin the screenshot you can see the plaintext and ciphertext being logged, thats an exchange between client and server!
so i made the handshake sequence
its the same one from SPEC.md where i decided first, didnt change anything
for some reason cant paste here pls check SPEC.md on github lmao
but in short it goes like this:
client and server exchange hello messages with their PSK Proof, Public Key, Nonce (16 bytes) and then key exchange and some session key derivation happens, then Done messages are exchanged which is encrypted with the session key, so it proves both party derived same session key
at the end the handshake functions returns the session (which i have to work on)
there are some things left to do like cleaning up the code, its a bit messy right now i will make it a bit more modular and easy to read later
for testing i used net.Pipe, it gives nice two mock connections type shit, i thought of using real tcp connection first but found this better thing while going through GoLang net library docs
not much to see in image tbh, it just shows the debug print statements i added, those are exchanges between client and server
hiii 
SPEC.md
so at first i made SPEC.md where i have decided on everything that it will have, all structures, handshake sequence, etc (please read it :3)
then i made a basic packet envelop struct
[1 byte: msg type] [4 bytes: payload length] [N bytes: payload]
that will be the structure, and i wrote WritePacket() and ReadPacket() functions for it, and also some tests
and i decided on payload structures for each message type and wrote encoder and decoder for all those types, except Done message type because its just one thing in payload
you can check in SPEC.md the payload structures
since i dont have anything ready to show, i will show the test output
so i wrote all the crypto functions or helpers whatever you want to call it.
i did that because see for me TLS or even this project is just a group of cipher suites and we are using them to perform a handshake, so the cipher suite is the most important part, and ofc my project will only have one cipher suite, so i first implemented those functions
GenerateKeypair() -> generates an X25519 public and private key pairSharedSecret() -> takes private key and peer public key and performs ECDH using those keysComputePSKProof() -> outputs the HMAC result of a psk and the given dataDeriveSessionKey() -> the final function which uses HKDF and outputs a session key, which will be used to encrypt/decryptEncrypt() -> encrypts using the given session key, it uses ChaCha20-Poly1305 to encrypt plaintextDecrypt() -> decrypts the ciphertext from given keyand i also wrote tests for them, writing tests for me is an uncommon thing i wont lie lol but this time i am testing these functions from tests is because this is a protocol library, if another project wants to use my protocol to build on they can easily import and thats why i dont wanna test in random cmd and build things like it is intended for my planned project only, so i am treating it as a proper library and writing function and their tests, and so far things are doing really good.
had some problems in ECDH because i was messing up the output parameters order but i fixed it after a while.
ignore the weird ahhh numbers output, thats the nonce counter helper function i made i forgot to remove the debug prints lol
so i wrote all the crypto functions or helpers whatever you want to call it.
i did that because see for me TLS or even this project is just a group of cipher suites and we are using them to perform a handshake, so the cipher suite is the most important part, and ofc my project will only have one cipher suite, so i first implemented those functions
GenerateKeypair() -> generates an X25519 public and private key pairSharedSecret() -> takes private key and peer public key and performs ECDH using those keysComputePSKProof() -> outputs the HMAC result of a psk and the given dataDeriveSessionKey() -> the final function which uses HKDF and outputs a session key, which will be used to encrypt/decryptEncrypt() -> encrypts using the given session key, it uses ChaCha20-Poly1305 to encrypt plaintextDecrypt() -> decrypts the ciphertext from given keyand i also wrote tests for them, writing tests for me is an uncommon thing i wont lie lol but this time i am testing these functions from tests is because this is a protocol library, if another project wants to use my protocol to build on they can easily import and thats why i dont wanna test in random cmd and build things like it is intended for my planned project only, so i am treating it as a proper library and writing function and their tests, and so far things are doing really good.
had some problems in ECDH because i was messing up the output parameters order but i fixed it after a while.
ignore the weird ahhh numbers output, thats the nonce counter helper function i made i forgot to remove the debug prints lol
hiii 
SPEC.md
so at first i made SPEC.md where i have decided on everything that it will have, all structures, handshake sequence, etc (please read it :3)
then i made a basic packet envelop struct
[1 byte: msg type] [4 bytes: payload length] [N bytes: payload]
that will be the structure, and i wrote WritePacket() and ReadPacket() functions for it, and also some tests
and i decided on payload structures for each message type and wrote encoder and decoder for all those types, except Done message type because its just one thing in payload
you can check in SPEC.md the payload structures
since i dont have anything ready to show, i will show the test output
so i already had this but it was a bit stupid so i improved it, its still stupid but less stupid lol
__
so right now it has bigger and more lists of stuff to ignore and it also checks for parent-child relation like kitty -> zsh and other terminals opening a shell cuz thats common, and it also ignores the processes fired by kernel for small things, and many other stuff, you check a list of stuff it ignores in lilbro/internal/collectors/processes/filter.go
__
umm i dont have anyting to show as its a filtering a function i implement and wtf i am supposed to show, so have a look at this snapperd process lol