I made some significant progress on my CC65 C-Library bindings for FujiNet this weekend. Essentially, ALL of the core functions are now working correctly. What it bitch of a journey this has been. I continued the work on my HashServer which will take a username and password from the A8, then perform some SHA1/B64/JSON magic and send a result payload back that is suitable for an authentication payload for CubeSQL. Havign a bit of trouble with the base 64 part, but the process is working - but sending binary data for the password instead of ASCII. Working through this.
I ran into an issue transferring data back from my HashServer where byte 128 was getting altered when it hit the A8. I mentioned this on the FN discord. Thom had some insights which caused me to look at my code more, which is how I discovered the b64 issue. At any rate, I also found that my read and write library bindings had an error on setting the # of bytes to be read/written.
Heres a pic of the HashServer processing a request. It fails on the base64 encode, but thinks it worked. Note the username and password are truncated by 1. I changed the way it receives to chop off newline, but neglected to add newline on the A8 sending side (still works for testing):
Thom asked why I was doing all this, so I told him. Within 30m he and Mozz had a firmware upgrade ready that implemented base 64 encoding and decoding! It should be available to everyone in the next main release. I have a dev build and will be testing it by re-working my A8 code to use ALL FujiNet functions to create the CubeSQL authenication JSON payload. FN has encryption methods built in now to handle SHA1 and many others, and now of course Base64. I'll expand my C library to include functions to use them as I work through this over the coming weeks.
Here is a short video showing the bindings in use. It shows the status and connectivity tests. The status test just checks if FN is active. The connectivity test, connects to my HashServer, and uses a special command for Payload testing. The Payload test gets 3 different sized payloads (40 bytes, 140 bytes to cross the 128 byte barrier, and 560 bytes to cross both 256 and 512 byte barriers). Theoritcally you can receive and send up to 64K at a time. Also is a pic of the HashServer doing the Payload test processing.
HashServer payload pic:
Another day, another update. Thom got the SHA1/SHA256/SHA512 code in place for me, and Mozz build another early firmware. After install I built a test function in my demo program and had an issue where the length function caused a kernel panic (Guru Meditation error - lol) and rebooted the FN. Turns out length isnt needed for the hashes anyway as they are predictable in size. Modified my code that retrieves the hash and heres a quick demo showing it working.
Now I'll start wrting A8 code to build the JSON CubeSQL auth package!