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

Cleaner method of setting valid signature schemes per version #1686

Closed
lrstewart opened this issue Mar 16, 2020 · 1 comment
Closed

Cleaner method of setting valid signature schemes per version #1686

lrstewart opened this issue Mar 16, 2020 · 1 comment
Assignees
Labels

Comments

@lrstewart
Copy link
Contributor

Problem:

#1624 is a cheap, easy solution to making sure we use the right signature schemes per version. However, it requires manually setting min/max version, and correctness is enforced with a unit test.

Proposed Solution:

Possibilities:

  • Add an additional check in CertVerify to make sure we're using a valid scheme. This theoretically shouldn't be necessary, but it would give a nice line of code to point at to prove we're definitely never signing with pkcs1 or sha1.
  • Set min/max protocol version on signature schemes programmatically via s2n_init with the same rules the unit test in Do not use pkcs1 or sha1 with tls1.3 #1624 uses. Essentially, write a function that loops through all signature schemes and evaluates what tls protocol versions can use them. The downsides are less transparency and that the signature schemes could no longer be marked const (since we would need to update them at runtime with the allowed versions).
  • Stop listing min/max protocol version on the sig schemes altogether and move the logic from the unit test in Do not use pkcs1 or sha1 with tls1.3 #1624 to here. That would check a signature alg is valid before we accept / choose it. The downside is less transparency and that we would need to do the checks at runtime, but they are very cheap checks.
@harrisonkaiser
Copy link
Contributor

#3728 closes this issue.

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

No branches or pull requests

3 participants