ikskuh/gurl
A curl-like cli application to interact with Gemini sites.
bb2eced8ddf28114b3a1ff761c2d80b90b1a61e2.tar.gz
fa75e1bc672952efa0cf06160bbd942b47f6d59b.tar.gz
830821a8736ca1bf7662b9c5fec9bfe9f0066ad3.tar.gz
42cac648593ce784944769dba52343871ac7824c.tar.gz
A Gemini command line interface similar to curl written in Zig.
Successful TLS 1.2 handshake
Successful GET request header exchange
Successful body download
header parsing
URL parser
DNS resolving
MIME parsing
All of the correct heading handling
Follow absolute redirects
Follow relative redirects
Pretty-printing and guidance messages for failed requests
TOFU (trust on first use) for SSL connections
Implement primitive TOFU (store public key, not certificate)
Implement correct TOFU (trust on first use) for SSL connections
Client certificates
temporary cert
permanent cert
Use XDG directories
Implement windows port
Port zig-network
to windows
Implement correct config directory locating for windows
Trust Anchor support for windows
git submodule init
, git submodule update
)zig build
)./zig-cache/bin/gurl
Give the user control over their system and make configuration easy.
Correctly adhere to XDG standards and use xdg-open
Current implementation just stores the public key of the server and not the certificate with fingerprint and everything
That certificate's fingerprint and expiry date are saved in a persistent database (like the .known_hosts file for SSH), associated with the server's hostname.
Connect with OpenSSL:
openssl s_client --connect domain.name -quiet -verify_quiet
Dump DER certificate information:
openssl x509 -in trust-store/mozz.us/cert-1.der -inform der -text
Convert DER to PEM:
openssl x509 -inform der -in trust-store/gemini.conman.org/cert-0.der -out conman.pem