Rethink the ArtiPath charset
The following discussion from !1722 (merged) should be addressed:
-
@Diziet started a discussion: (+1 comment) If an
ArtiPathComponent
can contain.
then I think the leafname can contain two (nonconsecutive) dots. Are we OK with that? I think it's undesirable. It might be misunderstood as nested file extensions along the lines of.tar.gz
.If we do keep
.
allowed inArtiPathComponent
, then: this restriction is, I think, strictly speaking, not necessary..
is MIDDLE_ONLY so cannot occur at the start of a path component (and we can rely on accurately identifying path components, because we forbid any of the non-canonical path separtors and unicode stuff that might confused broken systems like Windows).I was thinking about the allowed character set. If I want to
impl KeyDenotator for IptLocalId
(which I probably do) then ideally that would be a high-density encoding. The natural idea would be base64 but: 1. we might be running on a system with case-insensitive filenames 2. the characters available are rather odd: I need alphanumerics plus two punctuation and I have just suggested excluding.
.It's tempting to say that Unix users shouldn't be afflicted with longer filenames for the convenience of Windows and Mac users, but: that would involve the pathnames depending on the keystore's filesystem. And what if you copy a keystore via a vfat usb stick?
The case-insensitive filesystem issue is one we should probably think about before we commit to all this. One approach would be to declare that a
KeyDenotator
may only contain lowercase letters. I guess things like theIptLocalId
would use base32.