Giter VIP home page Giter VIP logo

fido-device-onboard-rs's People

Contributors

7flying avatar avielyo10 avatar ben-krieger avatar bert-r avatar dependabot[bot] avatar djach7 avatar henrywang avatar mangelajo avatar mergify[bot] avatar miabbott avatar miles170 avatar mmartinv avatar muvarov avatar nak3 avatar nullr0ute avatar pcdubs avatar plangowski avatar puiterwijk avatar rdotjain avatar runcom avatar sarmahaj avatar say-paul avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

fido-device-onboard-rs's Issues

Change default loglevel to `info`

Right now, the default log level is unset.
We should make sure that this by default is set to info, so that informative things are logged.

types: Nonce (/GUID) can be deserialized from an invalid length bstr

The Nonce (and thus GUID) type assumes that the data always holds the invariant that it is exactly 16 bytes long.
This is checked by creation, but not by the Deserialize function.
So it is possible for a client to send an invalid length nonce or guid, and cause a panic! to our code.

Client: TO2 retries

At this moment, the client only ever uses the first URL returned in the TO1d data.
It should retry this with the different URLs retrieved from TO1d.

add RPM spec

As the title says, for tracking purposes - building in RHEL is the target here to begin with

Implement EtM crypto

We should implement Encrypt-then-MAC cryptography.
This will require support for it to be added to the COSE library.

Implement metadata

We should get a general Metadata layer on the Store, with capabilities to Query on the metadata values.
We can also make TTL a specific Metadata field.

client: TO2 ServiceInfo Keep Alive

The client does not do anything during the TO2 serviceinfo while it's processing.
At this moment, we don't have long-taking processes (yet), but this could change, so we should consider that.

Integration tests: force rebuild of binary crates

Because our integration tests just call out to the binaries, cargo doesn't know that we actually use their output.
This leads to cases where one makes a change to the system under test, and re-runs the integration test, but they still fail, because the user forgot to run cargo build.
We should figure out if it's possible to tell Rust that we use the binaries produced by the other builds.

I guess worst case we can just have the integration test common module run cargo build on start...

package libfdo_data

As a follow up of #70 we need to also ship some sort of fido-device-onboard-devel subpkg that contains libfdo_data.so (with both %version and %soversion I guess) plus a pkgconfig config (I think). Leving this out of #70 for now.

paths in config should be absolute (and checked)

Running the servers with systemd and having relative paths in configs (for things like the OV folder or sessions or keys) doesn't error out, we need to check that and mandate absolute paths

Client: TO1/TO2: send errors

At this moment, the client just errors out locally when it encounters an error.
We should make it send the error back as per the spec.

cborparser should store how the length was encoded

In order to make sure that we encode exactly the same bytes on serialization as we did on deserialization, we should store the exact bytes that were used to store the tag and array size.
After this, it should be relatively easy to reproduce this.

Client: implement retry logic for TO1

At this moment, the client attempts TO1 once, with the very first client URL retrieved from the rendezvous info.
It should perform the constant retries on the different entries, taking the delays into account.

DIUN: parse root certs

Right now we allow insecure and hash - root cert is another option which is there but not implemented

Support config dropins

Add support for configuring dropins and allow them to override a base config (pretty much how systemd works). This makes it easier to upgrade a system (especially ostree) with a conf.d directory and 00-something.toml conf files.

owner_tool: follow clippy's warning for enum names

#[derive(Debug, Deserialize)]
#[allow(clippy::upper_case_acronyms)]
enum RemoteTransport {
    TCP,
    TLS,
    HTTP,
    CoAP,
    HTTPS,
    CoAPS,
}

Fix the clippy warning and remember to compare against lowercase text from the configuration file when matching otherwise:

    .[0].transport: unknown variant HTTP`, expected one of Tcp, Tls, Http, CoAP, Https, CoAPS at line 2 column 14

client: implement interop token serviceinfo

For interop dashboard integration, the client should receive its token via the fido_alliance:dev_conformance serviceinfo key.
After this is received, it should then trigger the dashboard API client (#90), and check in.

The URL should probably come from an environment variable.
I think that the client should only announce that it supports this module if that environment variable was found.

Support Parsec for Owner Tool interactions

At this moment, the owner tool only uses keys (in der format) on the file system.
We should also add support for Parsec stored keys, so we can actually use keys that are for example in secure storage.

CI: Check if we can use the standard images for CI and devcontainer

We should check, now that we do our own KDF and no longer depend on Fedora/RHEL patches in OpenSSL, whether we can use the standard images for GitHub actions and devcontainer.
This would probably speed up CI and devcontainer building significantly.

Fedora/CentOS tests should arrive as part of Packit.

Support Parsec for server key storage

At this moment, we only use file-based keys for the servers.
We should consider also supporting keys stored by Parsec, to support many different key storage backends.

Check for panic and todo

We should go over the code, and make sure to clean up any panic! and todo! macro calls throughout.

Directory store: Key might need sanitizing

Some of the keys (specifically the Session one) may include a / (because it's base64-encoded), which doesn't work on a file system.
We should make sure we use urlsafe base64 for this (or just a string replace).

Manufacturing Service: Allow UUID type 5 with namespace from config file

We should consider using UUID type 5 (namespace-name), with namespace given in config file, and name maybe hash of public key.
This would enable us to enforce some UUID scoping from untrusted mfg servers, to avoid an attack where someone creates an ownership voucher for a UUID of someone else's device, which would lead to a Denial of Service.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.