Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add signature package for signing events and verifying signatures #91

Merged
merged 2 commits into from
Jun 25, 2024

Conversation

magnusbaeck
Copy link
Member

Applicable Issues

#9

Description of the Change

The new package basically contains two types, Signer and Verifier, which, unsurprisingly, sign events and verifies signatures of existing events.

Signer instances are configured with an identity and a private key and signs events into byte slices. Verifier instance require you to pass something that implements the PublicKeyLocator interface. That interface looks up which public key(s) can be used to verify the signature of an event with a given meta.security.authorIdentity. Because public key lookups are expected to be application-dependent we don't include a type that implements PublicKeyLocator, but that might change over time once we understand typical usage patterns.

Alternate Designs

None.

Possible Drawbacks

None. Event signing is optional and we're not adding complexity or anything to code that doesn't deal with signatures.

Sign-off

Developer's Certificate of Origin 1.1

By making a contribution to this project, I certify that:

(a) The contribution was created in whole or in part by me and I have the right to submit it under the open source license indicated in the file; or

(b) The contribution is based upon previous work that, to the best of my knowledge, is covered under an appropriate open source license and I have the right under that license to submit that work with modifications, whether created in whole or in part by me, under the same open source license (unless I am permitted to submit under a different license), as indicated in the file; or

(c) The contribution was provided directly to me by some other person who certified (a), (b) or (c) and I have not modified it.

(d) I understand and agree that this project and the contribution are public and that a record of the contribution (including all personal information I submit with it, including my sign-off) is maintained indefinitely and may be redistributed consistent with this project or the open source license(s) involved.

Signed-off-by: Magnus Bäck <[email protected]>

@magnusbaeck magnusbaeck added enhancement New feature or request dependencies Pull requests that update a dependency file labels Jun 20, 2024
@magnusbaeck magnusbaeck requested a review from a team as a code owner June 20, 2024 14:44
The new package basically contains two types, Signer and Verifier,
which, unsurprisingly, sign events and verifies signatures of existing
events.

Signer instances are configured with an identity and a private key
and signs events into byte slices. Verifier instance require you
to pass something that implements the PublicKeyLocator interface.
That interface looks up which public key(s) can be used to verify
the signature of an event with a given meta.security.authorIdentity.
Because public key lookups are expected to be application-dependent
we don't include a type that implements PublicKeyLocator, but that
might change over time once we understand typical usage patterns.

Since we wanted to use the errors.Join function, introduced in
Go 1.20, we stepped the Go version requirement in go.mod to 1.21.
That's the currently oldest supported version so it's a totally
reasonable requirement.

The compiler upgrade triggered a new linter violation because of
the deprecation of strings.Title in Go 1.18, so we had to address
that too.
internal/cmd/eventgen/capitalization.go Show resolved Hide resolved
signature/errors.go Outdated Show resolved Hide resolved
signature/signer.go Show resolved Hide resolved
signature/signer.go Outdated Show resolved Hide resolved
signature/signer_example_test.go Show resolved Hide resolved
signature/signer_test.go Outdated Show resolved Hide resolved
signature/verifier.go Show resolved Hide resolved
signature/verifier.go Show resolved Hide resolved
signature/verifier_test.go Outdated Show resolved Hide resolved
signature/verifier_test.go Outdated Show resolved Hide resolved
@magnusbaeck magnusbaeck merged commit ad92e77 into eiffel-community:master Jun 25, 2024
1 check passed
@magnusbaeck magnusbaeck deleted the sign branch June 25, 2024 06:25
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
dependencies Pull requests that update a dependency file enhancement New feature or request
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants