Hacker News new | ask | show | jobs
by str4d 2362 days ago
Answering what I can. Where something is an implementation detail, I'm referring to rage (which I'm obviously more familiar with).

1. rage tests arguments for validity as filepaths, and uses the file preferentially over treating the argument itself as a recipient format.

2. The header uses normal Base64. This was changed recently, and the examples likely need updating.

3. rage currently rejects unknown formats; I haven't implemented this part of the spec yet.

4. Based on the current contents of the age specification, it looks like limiting to standard Base64 characters is consistent.

5. Additional lines all need to be standard Base64 characters (i.e. consistent with the format of current recipient lines) if implementations are going to be able to skip unknown formats.

(Recipient lines are currently under-specified in the spec. I opened https://github.com/FiloSottile/age/issues/9 a while back for addressing this.)

6. The normalization notes are an artifact of an earlier ASCII armoring format. Now that the armor is (a strict subset of) PEM, there is no need for CRLF normalization, as the age format solely uses LF, and PEM (which can tolerate either) is only a wrapper around the age format and thus does not affect the header.

8. rage signals this via an I/O error in the library that will bubble up through std::io::copy; this amounts to truncation on a chunk boundary and a non-zero exit value.