This patch aims to refactor some of our usage of PublicKey and Signer. The
motivation for this is to help make way for thinking about agent repositories – and, in the future, multi-device.
The main motivation is to help gain some separation when we want to think about a node (or device) signing artifacts, and when will want to think about an agent signing artifacts.
The reason for moving away from radicle_crypto::Signer and towards
signature::Signer is because the former ties itself very closely to the
PublicKey. In the future, we will want signers that are not necessarily a
single PublicKey – but may come from many device, for example.
However, there are places where we do want this association, and that is why the
Device type is introduced.
Furthermore, we also want to try help separate when a PublicKey is required
for verifying and when it used for namespacing in the Git repository. For now,
this separation is only done by abstracting away the namespacing for the COB
storage.
See the commits for more details on the changes.
This patch aims to refactor some of our usage of PublicKey and Signer. The
motivation for this is to help make way for thinking about agent repositories – and, in the future, multi-device.
The main motivation is to help gain some separation when we want to think about a node (or device) signing artifacts, and when will want to think about an agent signing artifacts.
The reason for moving away from radicle_crypto::Signer and towards
signature::Signer is because the former ties itself very closely to the
PublicKey. In the future, we will want signers that are not necessarily a
single PublicKey – but may come from many device, for example.
However, there are places where we do want this association, and that is why the
Device type is introduced.
Furthermore, we also want to try help separate when a PublicKey is required
for verifying and when it used for namespacing in the Git repository. For now,
this separation is only done by abstracting away the namespacing for the COB
storage.
See the commits for more details on the changes.
In general, this looks great! I think it could use where clauses more often, esp. when crypto::signature::Signer<crypto::Signature> or cob::Store<Namespace = NodeId> is involved.
Started a little discussion on the naming of the newly added associated type in cob::Store
Work in Erik’s feedback.
I rebased this and worked in Erik’s feedback. To get the correct range-diffs:
Rebase:
git range-diff d9c76893a144fd787654613f2bfb919613014a71..bf6c0da0787df5851f3272374a6ac735f4f241d4 f30760d6bb86d2978a5ed4df8ee45b9aa97778b4..6f8f3a9138e6c8ab65044600ec5c540c811c2055
Erik’s feedback
git range-diff f30760d6bb86d2978a5ed4df8ee45b9aa97778b4 6f8f3a9138e6c8ab65044600ec5c540c811c2055 10de6a74beb82db60d131895e4b43c152e1bb2c1
Changes:
- Rebased
- Removed rogue
stream/error.rsfile