Posts
4993
Following
329
Followers
496
Linux kernel hacker and maintainer etc.

OpenPGP: 3AB05486C7752FE1

Jarkko Sakkinen

Edited 3 months ago
Conventions I'm converged on tpm2_protocol (for lib.rs):

//! * `alloc` is disallowed.
//! * Dependencies are disallowed.
//! * Developer dependencies are disallowed.
//! * Panics are disallowed.
0
0
0
@Aissen ... because as we know linking tends to be more core consolidated drilling (there's been some excellent work to overcome this recently tho)
0
0
0
@Aissen i also migrated to json from serde_json for the sake of simplicity and clarity (for me that mainly simplicy and clarity of the binary). i'm constantly trying to find dependencies from tpm2sh that do less rather than more and have less recursive dependencies :-)

thinking more of the binary also improves productivity in long-term investment as linking times go much lower, which is like the main bottleneck when compiling rust. you can easily get a high-end ryzen workstation melt on that process if you are sloppy with deps :D (i've got my 9950X workstation OOM because of that on some projects).
2
0
0

Jarkko Sakkinen

Edited 3 months ago
the future of zmodem is async as I refined zmodem2 API as follows:

1. ZmodemSession holds the protocol state.
2. ZmodemEvent provides the interface for consuming next events.

I.e. it is to bind to the future (while being still decoupled from them). Also next version of protocol will be zero deps and can compile with rustc only.

#zmodem #rust
0
0
0

Jarkko Sakkinen

tpm2_protocol 0.6.1

0.6.0 and 0.6.1 are really the same, i just fucked up tpm2sh 0.6.0 so...

https://lore.kernel.org/tpm2/aKI-xQsBNNvjeBSk@kernel.org/T/#u
0
0
0
Pretty printer is maturizing too:
0
0
0

Jarkko Sakkinen

Edited 3 months ago
OK, learning Rust as I got but I was still missing Any implementation so here it is:

https://github.com/puavo-org/tpm2_library/commit/5066da1e529c2c6fc3667ae1e4f2be397836684b

This is a milestone commit given that the implementation is capable of empowering driver, which is a consequence of being able to dynamically interpret the protocol byte stream. I.e. starting from this commit ID it would it driver implementation ready.

It is proven by the test that builds a 100 element list of random objects, streams the list and parses from stream another list, and finally compares that the lists have equal amount of element and each element matches each other.

The test is here:

https://github.com/puavo-org/tpm2_library/blob/main/tpm2sh/tests/dynamic.rs
1
0
1
@Aissen I was looking for something where I get some robustness but fine-tune the cli usage for tpm2sh :-) It does the job for me.
1
0
0

Jarkko Sakkinen

My favorite command-line parser for Rust:

https://github.com/blyxxyz/lexopt

I.e. it does not create command-line for you and you can fully control of the user experience.
1
0
0

Jarkko Sakkinen

still in progress but this will be a nice debugging feature:
1
0
0
and if done correctly it improves security properties of any tool as the input layer is always an attack vector.
0
0
0

Jarkko Sakkinen

Edited 3 months ago
I mean cli is a gui of one form and usuall guis are not sprayed to the source code

https://github.com/puavo-org/tpm2_library/commit/ddbce9387119c77b618988cd875dcbec812d7b96
1
0
0
In some cases this could be the early phase also for new kernel code given that you can quite easily make parts of the code context independent, and by being part of kselftest it would get some stress testing before it is part of the actual kernel code.
0
0
0

Jarkko Sakkinen

I wonder if it either is or could be allowed kselftest to be written in Rust assuming that it requires only rustc and has at most std dependencies? Not talking a cargo build here.
1
0
0

Jarkko Sakkinen

Procedural macros in Rust:

- How to use them with plain rustc?
- Why they need to be in a lib crate?
0
0
0

Jarkko Sakkinen

Edited 3 months ago
The most important setting in fish shell:

set -g fish_autosuggestion_enabled 0

Fucking worst default in a shell that anyone has ever put to any shell (unless you are going epileptic seizure)
0
0
0

Jarkko Sakkinen

My tpm2_protocol crate could be useful also for e.g. some scenarios where you to format your crypto proofs in TPM2 structures wi/o having TPM.
0
0
0

Jarkko Sakkinen

Great, I've used before external crate for this:
https://doc.rust-lang.org/beta/std/io/trait.IsTerminal.html

Apparently std has had this for over two years already.
0
0
0
Show older