Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

identity: acme #128

Closed
wants to merge 121 commits into from
Closed

identity: acme #128

wants to merge 121 commits into from

Conversation

TheButlah
Copy link
Contributor

No description provided.

MalekiRe and others added 30 commits September 29, 2023 15:41
* Added memcpy benchmark

* Added clone assign benchmark

* Added Source and Dest traits with Vec<u8>

* Added benchmarks for in-memory capture

* Fixed platform specific dependency

* Added swap

* use tabs

* Mark vaporware
* Added dxcapture source

* foo
WIP, still need to finish parsing logic and handle asset loads properly
wasm broken on bevy_oxr level
This PR clarifies some contribution guidelines and general philosophy.
Have not finished yet, still need to actually check the vrm stuff. Will
merge in this state though.
TheButlah added 28 commits May 19, 2024 23:13
Implements varint encoding in a const fn.
… all possible varints (#101)

As @lyuma pointed out in #100, we needed to check to make sure that no
bits were truncated during the left shift. It was not sufficient to just
rely on checked_shl for this.
also upgrades rust toolchain, improves docs, and fixes clippy
Includes validation logic for the pubkey.

Disclaimer, I consulted with a friend who is a security researcher on
how to validate the pubkey. But any additional feedback is appreciated.
Implements the ed25519ph algorithm for message signing and verification.
Introduces a bevy resource for the datamodel, and reads/writes to it in
the NetcodePlugin. This ensures that the simulation state gets synced.

Note that the datamodel is only ever `Local`, for now.
The previous DID stuff in the replicate crates were unecessary and too
application specific. Its more useful to use a general bearer token, and
leave how to validate that token and what its contents are up to the
application.

A did-signed authentication attestation could just be a base64 signed
message, and use that as the bearer token.
I've updated the code to properly spawn a future that will start the
tokio runtime and perform the necessary steps to connect to the
replicate manager.

Next step will be to use the newly connected manager resource to spawn
an instance. The video showcases the UI flows and how connecting to a
server that doesn't exist fails, but connecting to the one I start from
the command line with a valid url succeeds.

Rebased on #111 



https://github.com/NexusSocial/nexus-vr/assets/6969415/c2d1ee2f-593a-4ee4-a3a7-bd39ccdcc569
Taking &self is important for being able to use an Arc<Manager> for
spawned async tasks.

Special thanks to @SafariMonkey for pair programming with me.
Implements the last bits of functionality in the title screen. Nothing
is faked anymore. Both connections (Manager, Instance) are actually
done. 🥳


https://github.com/NexusSocial/nexus-vr/assets/6969415/a6f6518f-71a4-465d-bc49-96c4392891e9




Next step will be to implement the background task that syncs from
client to server for the instance. In other words, I think the entire
demo is done now, and we can just focus on implementing the state sync
in the networking crate.
Handles serverbound messages and stores state in the server's data
model.
Does not implement the clientside sync task, or the serverside sync
task.
Does not attempt to use datagrams yet.
* Adds create POST method (accepts pub key, redirects to new URL)
* Adds read GET method (retrieves JWK from user's url)
* Handles serialization of JWK
* Testable/mockable UUID generation.

Known issues:
* Not actually compliant with did:web yet. We are supposed to return a
did:document, but right now we return a Json Web Key
* We don't do any auth on the endpoints yet
* We don't use any persistent storage (no db)
* We totally fake the returned pub key. I.e. we actually don't use the
pub key from the POST at all yet.
This PR un-stubs the `/create` and `/users/:id/did.json` endpoints by
implementing a database via sqlx + sqlite.

In particular, I implemented:
* SQL schema migration, including validation that all migrations on the
db are up to date
* Automatic db file creation if it doesn't exist
* No need for hosting a db yourself, since sqlite is statically linked
and runs on same node
* support for controlling db file path via CLI or env var
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

5 participants