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

advancedTLS: Swap to DenyUndetermined from AllowUndetermined in revocation settings #7179

Merged
merged 2 commits into from
May 6, 2024

Conversation

gtcooke94
Copy link
Contributor

@gtcooke94 gtcooke94 commented May 2, 2024

Swap AllowUndetermined to DenyUndetermined in our revocation settings.
We want the default for this setting to be to allow RevocationUndetermined to pass revocation checks, so the boolean needs to be DenyUndetermined (default false) for this behavior.

RELEASE NOTES: none

@gtcooke94 gtcooke94 requested a review from erm-g May 2, 2024 18:28
@gtcooke94 gtcooke94 added the Type: Internal Cleanup Refactors, etc label May 2, 2024
@gtcooke94 gtcooke94 added this to the 1.64 Release milestone May 2, 2024
@@ -61,8 +61,13 @@ type RevocationOptions struct {
// Directory format must match OpenSSL X509_LOOKUP_hash_dir(3).
// Deprecated: use CRLProvider instead.
RootDir string
// DenyUndetermined controls if certificate chains with RevocationUndetermined
// revocation status are allowed to complete.
DenyUndetermined bool
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I'd prefer to keep the current 'positive boolean' approach, potentially with 'default true' mechanism like
`
type MyConfig struct {
AllowChanges bool
}

func NewMyConfig() MyConfig {
return MyConfig{
AllowChanges: true,
}
}`
Leaving it to you&Doug to decide.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I don't like this because it requires adding a constructor layer for a relatively simple struct - in this case IMO the positive boolean approach isn't worth the complexity

@dfawley WDYT?

Copy link
Member

@dfawley dfawley May 6, 2024

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yeah there's unfortunately some conflict between having positive booleans and having default behavior = zero value.

Maybe DenyUndetermined is not too negative? It states what you will be doing, not what you will not be doing. Or we could go with something more verbose that removes the double-negative like RequireDetermined[Revocation]Status?

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

BTW I'm fine either way. Another option could also be to replace with an "enum" (dumb Go doesn't actually have them, but):

type RevocationStatusRequirement int

const (
    DenyUndetermined RevocationStatusRequirement = 0
    AllowUndetermined
)

(Names are just for illustrative purposes; probably pick better names.)

@gtcooke94 gtcooke94 requested a review from dfawley May 2, 2024 20:13
@gtcooke94 gtcooke94 assigned dfawley and unassigned erm-g May 3, 2024
@dfawley dfawley assigned gtcooke94 and unassigned dfawley May 6, 2024
@gtcooke94 gtcooke94 merged commit 4879d51 into grpc:master May 6, 2024
12 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants