26 lines
2 KiB
Text
26 lines
2 KiB
Text
Meta(
|
|
title: "An overview of Dory",
|
|
summary: Some("An overview look at Dory, a Misfin protocol library in Rust"),
|
|
published: None,
|
|
tags: [
|
|
"misfin",
|
|
"rust",
|
|
"programming",
|
|
],
|
|
)
|
|
---
|
|
This is a follow up to my previous post about Dory.
|
|
=> gemini://gemini.hitchhiker-linux.org/gemlog/dory_a_misfin_protocol_library_in_rust.gmi Dory announcement
|
|
=> gemini://misfin.org/
|
|
|
|
So Dory is a WIP Misfin protocol library. That means that Dory will implement the Misfin spec without actually providing a server binary (although I will likely add a rudimentary single threaded example server). I'm writing it in a fairly generic way so that the library user can choose for themselves how to handle storing certificates and messages, as well as how to set up a listener. I have some opinions on those things, but I'll leave that for a later project when I actually put Dory into production.
|
|
|
|
Dory is written in Rust, as are most of my projects these days. I'm not going to argue with anyone about the merits of Rust, but it works well for me. I particularly love the tooling. I've been able to write a lot of tests as I go so I can be pretty sure that things are working as intended before actually trying it all out. I'm usually pretty careful about dependencies when using Cargo, however, as adding one line to Cargo.toml can easily bring in a half dozen or more transitive deps. Even so, some things don't make sense to implement completely from scratch, so I'm using the following libraries.
|
|
|
|
* rustls - managing tls connections
|
|
* digest and sha2 - generating certificate fingerprints
|
|
* time - parsing time into the correct format (this one I may change)
|
|
* x509-parser - parsing and validating certificates
|
|
* serde(optional) - serializing certain datatypes
|
|
|
|
The serde dep is behind a feature gate. I've put that in so that someone could provide, say, a json api for Android or IOS apps. It would also be useful if one wanted to store things like client certificates and certificate fingerprints in text files.
|