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

Client Implementation in Go #17

Open
dhaavi opened this issue Oct 28, 2021 · 5 comments
Open

Client Implementation in Go #17

dhaavi opened this issue Oct 28, 2021 · 5 comments

Comments

@dhaavi
Copy link

dhaavi commented Oct 28, 2021

Hello 👋

We are thinking about using Privacy Pass for anonymized authorization for a VPN-like service.

Currently we are getting to learn Privacy Pass and the server code a little closer. If we end up choosing Privacy Pass, we would start implementing the client functionality in Go. Here is where I have a couple questions:

  • Is a client implementation in Go something you would also be interested in?
  • Would you like a PR for it?
  • Is there anything you would like us to know before starting? Pitfalls, dragons or the like...

We are naturally not expecting you to help us; we would do the implementation ourselves and have it audited by a cryptographer. Just wanted to communicate and ask beforehand.

@armfazh
Copy link
Member

armfazh commented Nov 3, 2021

Hi @dhaavi , a Go implementation of Privacy Pass is something really useful.
We recommend to keep track on the changes happening on VOPRF draft and PrivacyPass working group, so the implementation remain compliant with the latest version.

@dhaavi
Copy link
Author

dhaavi commented Nov 4, 2021

Hey @armfazh, thanks for chiming in.

We're not actually creating a new implementation, but just adding some client functionality to what this repo already offers.

Adding client side functions wasn't as difficult as expected, as most of the logic was already in the tests. It just threw me off when the "client" in the tests started to use the server's private key.

I would like to create a PR for this (and a couple other) changes. Can a maintainer comment on that?
(I assume that you, @armfazh, don't have merge rights, correct?)

Also, would you prefer a bigger PR with more changes or many little ones?

@chris-wood
Copy link

@dhaavi can you say more about your use case? In particular:

  • What sort of requirements do you have for key rotation?
  • How will you ensure clients get the expected public key needed to verify tokens?
  • Do tokens need to carry any additional attributes beyond a single bit?
  • Do the tokens need to be verifiable by parties without the issuance private key?

@dhaavi
Copy link
Author

dhaavi commented Nov 5, 2021

Hey @chris-wood, thank you for your reply!

@dhaavi can you say more about your use case?

Of course! Here you go:

  • What sort of requirements do you have for key rotation?

For now, none. The parent system is versioned, which we can use for manual key rotation or breaking changes.

  • How will you ensure clients get the expected public key needed to verify tokens?

We ship it in the binary of the client.

  • Do tokens need to carry any additional attributes beyond a single bit?

For now, no. But it would be nice to have some additional attributes in the future.

  • Do the tokens need to be verifiable by parties without the issuance private key?

Yes, this would be very helpful.


I just realized that I somehow managed to mistake @armfazh for an external contributor. 🤦 Sorry about that!
Thanks a lot both of you!

@skyken9966
Copy link

skyken9966 commented Nov 6, 2021 via email

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

4 participants