logoalt Hacker News

alexjurkiewiczlast Saturday at 10:50 PM8 repliesview on HN

(2024)

My favourite part of these tools is the zany use of numbered file descriptors. `keypair` outputs the public key on fd 5 and secret key on fd 9. But signing reads the secret key on fd 8, while verification reads the public key on fd 4! Why aren't they the same?? I have to read the manpage every time.


Replies

gnullyesterday at 6:21 AM

That's such a user-hostile design decision. I can't fathom what justifies it (other than kinky taste).

Makes your commands unreadable without a manual, leaves a lot of room for errors that are quietly ignored. And forces you into using a shell that comes with its own set of gotchas, bash is not known to be a particularly good tool for security.

And to those who stay this adds flexibility: it doesn't. Those file descriptors are available under/dev/fd on linux, with named options you can do --pk /dev/fd/5. Or make a named pipe.

show 2 replies
Retr0idlast Saturday at 10:55 PM

I'm curious, what do you actually use it for?

I'd have otherwise guessed that this tool mainly exists just to test lib25519. Personally I'd only ever want a library, or some higher-level tool. A CLI tool that just does raw signing feels like a weird (and footgun-shaped) middle ground.

show 3 replies
jedahanyesterday at 1:20 AM

I was wondering the same thing. My best guess is that is to guard against operator misuse. Like usb-a only plugging in one way. Anything that is secret will never accidentally print to stdout. String interpolation in bash with `—option $empty` might be safer than `8<$empty`. Have to explore more but yeah, this is a new pattern for me as well.

chuckadamsyesterday at 1:33 AM

What a strange convention. I'm partial to minisign, which works on plain old files.

show 1 reply
alfiedotwtfyesterday at 8:11 AM

I’m guessing it’s to support the test framework it’s built with?

show 1 reply
pamcakeyesterday at 1:51 AM

[dead]

pseudohadamardyesterday at 7:40 AM

It's djb's web site so it's a djb design. With great genius comes great different thinking.