age: Add specification for the p256tag recipient type & stanza.#96
age: Add specification for the p256tag recipient type & stanza.#96
Conversation
4d98cc4 to
917beef
Compare
| The recipient is encoded as Bech32 with HRP `age1p256tag`. | ||
|
|
||
| age1p256tag1qf0l9gks6x65ha077wq3w3u8fy02tpg3cd9w5j0jlgpfgqkcut2lwpmkcwq |
There was a problem hiding this comment.
The plugin protocol requires that this recipient be handled by the age-plugin-p256tag plugin and not by the native app, which I don't think is the intention. If we want to define a new recipient encoding that all age implementations are required to understand, it likely needs to be separate from the plugin namespace.
| Age does not generate p256tag identities, but supports encrypting to | ||
| p256tag recipients. | ||
|
|
||
| The p256tag recipient is computed as | ||
|
|
||
| recipient = P256(identity, basepoint) |
There was a problem hiding this comment.
It might be worth clarifying that the “identity” here refers to the private scalar in the abstract, with no encoding specified, and that the recipient's computation is (typically) not handled in software, if the intent is to hold a key inextricably in hw.
| P256 is the scalar multiplication over P-256, with SEC 1 point decoding and | ||
| encoding. |
There was a problem hiding this comment.
| P256 is the scalar multiplication over P-256, with SEC 1 point decoding and | |
| encoding. | |
| P256 is the scalar multiplication over P-256, with SEC 1 point encoding. |
No curve point is being decoded in that computation; plus, “encoding” (as a noun) can encompass both operations. ^^
There was a problem hiding this comment.
Also it might be a good idea to specify if point compression should be used or not.
| type based on X25519, and a passphrase encryption type based on scrypt. | ||
| This document specifies three core age recipient types: an asymmetric encryption | ||
| type based on X25519, a passphrase encryption type based on scrypt, and a | ||
| tagged assymetric encryption type based on NIST P-256 for use with keys stored |
There was a problem hiding this comment.
typo, "assymetric" => "asymmetric"
|
I don't see Filippo tagged here for review, so friendly ping @FiloSottile |
Based on a previous proposal by @remko, with the tag design suggested by @erincandescent. Closes #96 Closes #31
Based on a previous proposal by @remko, with the tag design suggested by @erincandescent. Closes #96 Closes #31 Co-authored-by: Jack Grigg <thestr4d@gmail.com>
Based on a previous proposal by @remko, with the tag design suggested by @erincandescent. Closes #96 Closes #31 Co-authored-by: Jack Grigg <thestr4d@gmail.com>
Based on a previous proposal by @remko, with the tag design suggested by @erincandescent. Closes #96 Closes #31 Co-authored-by: Jack Grigg <thestr4d@gmail.com>
Based on a previous proposal by @remko, with the tag design suggested by @erincandescent. Closes #96 Closes #31 Co-authored-by: Jack Grigg <thestr4d@gmail.com>
As discussed in #31
The current version of the spec is implemented in the HEAD of
age-plugin-sebehind a hidden--recipient-type=p256tagflag. If you have a mac with a secure enclave, you can create an identity for testing: