From 7edfb14890e5e4d34e613f22a5eacf4c138c6ed1 Mon Sep 17 00:00:00 2001 From: Kiel C Date: Mon, 15 Jun 2026 20:06:46 +0000 Subject: [PATCH 1/4] Add RevokeAuthorizations func to the SA gRPC service. --- sa/proto/sa.pb.go | 211 +++++++++++++++++++++-------------------- sa/proto/sa.proto | 1 + sa/proto/sa_grpc.pb.go | 38 ++++++++ sa/sa.go | 22 +++++ sa/sa_test.go | 48 ++++++++++ 5 files changed, 218 insertions(+), 102 deletions(-) diff --git a/sa/proto/sa.pb.go b/sa/proto/sa.pb.go index 3605e0e69e7..6c76718b621 100644 --- a/sa/proto/sa.pb.go +++ b/sa/proto/sa.pb.go @@ -3757,7 +3757,7 @@ var file_sa_proto_rawDesc = string([]byte{ 0x12, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x1a, 0x1d, 0x2e, 0x73, 0x61, 0x2e, 0x52, 0x61, 0x74, 0x65, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x4f, 0x76, 0x65, 0x72, 0x72, 0x69, 0x64, 0x65, 0x52, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x30, 0x01, 0x32, 0xb4, 0x1a, 0x0a, 0x10, + 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x30, 0x01, 0x32, 0xfb, 0x1a, 0x0a, 0x10, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x12, 0x37, 0x0a, 0x0d, 0x46, 0x51, 0x44, 0x4e, 0x53, 0x65, 0x74, 0x45, 0x78, 0x69, 0x73, 0x74, 0x73, 0x12, 0x18, 0x2e, 0x73, 0x61, 0x2e, 0x46, 0x51, 0x44, 0x4e, 0x53, 0x65, 0x74, 0x45, 0x78, @@ -3969,24 +3969,29 @@ var file_sa_proto_rawDesc = string([]byte{ 0x52, 0x61, 0x74, 0x65, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x4f, 0x76, 0x65, 0x72, 0x72, 0x69, 0x64, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, - 0x22, 0x00, 0x32, 0xe6, 0x01, 0x0a, 0x15, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x41, 0x75, - 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x41, 0x64, 0x6d, 0x69, 0x6e, 0x12, 0x3b, 0x0a, 0x0e, - 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x49, 0x6e, 0x63, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x12, 0x19, - 0x2e, 0x73, 0x61, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x49, 0x6e, 0x63, 0x69, 0x64, 0x65, - 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x0c, 0x2e, 0x73, 0x61, 0x2e, 0x49, - 0x6e, 0x63, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x22, 0x00, 0x12, 0x3b, 0x0a, 0x0e, 0x55, 0x70, 0x64, - 0x61, 0x74, 0x65, 0x49, 0x6e, 0x63, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x12, 0x19, 0x2e, 0x73, 0x61, - 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x49, 0x6e, 0x63, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x52, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x0c, 0x2e, 0x73, 0x61, 0x2e, 0x49, 0x6e, 0x63, 0x69, - 0x64, 0x65, 0x6e, 0x74, 0x22, 0x00, 0x12, 0x53, 0x0a, 0x14, 0x41, 0x64, 0x64, 0x53, 0x65, 0x72, - 0x69, 0x61, 0x6c, 0x73, 0x54, 0x6f, 0x49, 0x6e, 0x63, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x12, 0x1f, - 0x2e, 0x73, 0x61, 0x2e, 0x41, 0x64, 0x64, 0x53, 0x65, 0x72, 0x69, 0x61, 0x6c, 0x73, 0x54, 0x6f, - 0x49, 0x6e, 0x63, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, + 0x22, 0x00, 0x12, 0x45, 0x0a, 0x13, 0x52, 0x65, 0x76, 0x6f, 0x6b, 0x65, 0x41, 0x75, 0x74, 0x68, + 0x6f, 0x72, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x14, 0x2e, 0x73, 0x61, 0x2e, 0x41, + 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x44, 0x32, 0x1a, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, - 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x22, 0x00, 0x28, 0x01, 0x42, 0x29, 0x5a, 0x27, 0x67, - 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x6c, 0x65, 0x74, 0x73, 0x65, 0x6e, - 0x63, 0x72, 0x79, 0x70, 0x74, 0x2f, 0x62, 0x6f, 0x75, 0x6c, 0x64, 0x65, 0x72, 0x2f, 0x73, 0x61, - 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x22, 0x00, 0x32, 0xe6, 0x01, 0x0a, 0x15, 0x53, 0x74, + 0x6f, 0x72, 0x61, 0x67, 0x65, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x41, 0x64, + 0x6d, 0x69, 0x6e, 0x12, 0x3b, 0x0a, 0x0e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x49, 0x6e, 0x63, + 0x69, 0x64, 0x65, 0x6e, 0x74, 0x12, 0x19, 0x2e, 0x73, 0x61, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, + 0x65, 0x49, 0x6e, 0x63, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x1a, 0x0c, 0x2e, 0x73, 0x61, 0x2e, 0x49, 0x6e, 0x63, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x22, 0x00, + 0x12, 0x3b, 0x0a, 0x0e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x49, 0x6e, 0x63, 0x69, 0x64, 0x65, + 0x6e, 0x74, 0x12, 0x19, 0x2e, 0x73, 0x61, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x49, 0x6e, + 0x63, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x0c, 0x2e, + 0x73, 0x61, 0x2e, 0x49, 0x6e, 0x63, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x22, 0x00, 0x12, 0x53, 0x0a, + 0x14, 0x41, 0x64, 0x64, 0x53, 0x65, 0x72, 0x69, 0x61, 0x6c, 0x73, 0x54, 0x6f, 0x49, 0x6e, 0x63, + 0x69, 0x64, 0x65, 0x6e, 0x74, 0x12, 0x1f, 0x2e, 0x73, 0x61, 0x2e, 0x41, 0x64, 0x64, 0x53, 0x65, + 0x72, 0x69, 0x61, 0x6c, 0x73, 0x54, 0x6f, 0x49, 0x6e, 0x63, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x52, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x22, 0x00, + 0x28, 0x01, 0x42, 0x29, 0x5a, 0x27, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, + 0x2f, 0x6c, 0x65, 0x74, 0x73, 0x65, 0x6e, 0x63, 0x72, 0x79, 0x70, 0x74, 0x2f, 0x62, 0x6f, 0x75, + 0x6c, 0x64, 0x65, 0x72, 0x2f, 0x73, 0x61, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x06, 0x70, + 0x72, 0x6f, 0x74, 0x6f, 0x33, }) var ( @@ -4200,90 +4205,92 @@ var file_sa_proto_depIdxs = []int32{ 48, // 126: sa.StorageAuthority.AddRateLimitOverride:input_type -> sa.AddRateLimitOverrideRequest 51, // 127: sa.StorageAuthority.DisableRateLimitOverride:input_type -> sa.DisableRateLimitOverrideRequest 50, // 128: sa.StorageAuthority.EnableRateLimitOverride:input_type -> sa.EnableRateLimitOverrideRequest - 32, // 129: sa.StorageAuthorityAdmin.CreateIncident:input_type -> sa.CreateIncidentRequest - 33, // 130: sa.StorageAuthorityAdmin.UpdateIncident:input_type -> sa.UpdateIncidentRequest - 34, // 131: sa.StorageAuthorityAdmin.AddSerialsToIncident:input_type -> sa.AddSerialsToIncidentRequest - 11, // 132: sa.StorageAuthorityReadOnly.FQDNSetExists:output_type -> sa.Exists - 7, // 133: sa.StorageAuthorityReadOnly.FQDNSetTimestampsForWindow:output_type -> sa.Timestamps - 58, // 134: sa.StorageAuthorityReadOnly.GetAuthorization2:output_type -> core.Authorization - 62, // 135: sa.StorageAuthorityReadOnly.GetCertificate:output_type -> core.Certificate - 62, // 136: sa.StorageAuthorityReadOnly.GetLintPrecertificate:output_type -> core.Certificate - 63, // 137: sa.StorageAuthorityReadOnly.GetCertificateStatus:output_type -> core.CertificateStatus - 64, // 138: sa.StorageAuthorityReadOnly.GetOrder:output_type -> core.Order - 64, // 139: sa.StorageAuthorityReadOnly.GetOrderForNames:output_type -> core.Order - 61, // 140: sa.StorageAuthorityReadOnly.GetRegistration:output_type -> core.Registration - 61, // 141: sa.StorageAuthorityReadOnly.GetRegistrationByKey:output_type -> core.Registration - 39, // 142: sa.StorageAuthorityReadOnly.GetRevocationStatus:output_type -> sa.RevocationStatus - 65, // 143: sa.StorageAuthorityReadOnly.GetRevokedCertsByShard:output_type -> core.CRLEntry - 4, // 144: sa.StorageAuthorityReadOnly.GetSerialMetadata:output_type -> sa.SerialMetadata - 3, // 145: sa.StorageAuthorityReadOnly.GetSerialsByAccount:output_type -> sa.Serial - 3, // 146: sa.StorageAuthorityReadOnly.GetSerialsByKey:output_type -> sa.Serial - 23, // 147: sa.StorageAuthorityReadOnly.GetValidAuthorizations2:output_type -> sa.Authorizations - 23, // 148: sa.StorageAuthorityReadOnly.GetValidOrderAuthorizations2:output_type -> sa.Authorizations - 23, // 149: sa.StorageAuthorityReadOnly.GetOrderAuthorizations:output_type -> sa.Authorizations - 30, // 150: sa.StorageAuthorityReadOnly.IncidentsForSerial:output_type -> sa.Incidents - 11, // 151: sa.StorageAuthorityReadOnly.KeyBlocked:output_type -> sa.Exists - 30, // 152: sa.StorageAuthorityReadOnly.ListIncidents:output_type -> sa.Incidents - 11, // 153: sa.StorageAuthorityReadOnly.ReplacementOrderExists:output_type -> sa.Exists - 37, // 154: sa.StorageAuthorityReadOnly.SerialsForIncident:output_type -> sa.IncidentSerial - 43, // 155: sa.StorageAuthorityReadOnly.CheckIdentifiersPaused:output_type -> sa.Identifiers - 43, // 156: sa.StorageAuthorityReadOnly.GetPausedIdentifiers:output_type -> sa.Identifiers - 53, // 157: sa.StorageAuthorityReadOnly.GetRateLimitOverride:output_type -> sa.RateLimitOverrideResponse - 53, // 158: sa.StorageAuthorityReadOnly.GetEnabledRateLimitOverrides:output_type -> sa.RateLimitOverrideResponse - 11, // 159: sa.StorageAuthority.FQDNSetExists:output_type -> sa.Exists - 7, // 160: sa.StorageAuthority.FQDNSetTimestampsForWindow:output_type -> sa.Timestamps - 58, // 161: sa.StorageAuthority.GetAuthorization2:output_type -> core.Authorization - 62, // 162: sa.StorageAuthority.GetCertificate:output_type -> core.Certificate - 62, // 163: sa.StorageAuthority.GetLintPrecertificate:output_type -> core.Certificate - 63, // 164: sa.StorageAuthority.GetCertificateStatus:output_type -> core.CertificateStatus - 64, // 165: sa.StorageAuthority.GetOrder:output_type -> core.Order - 64, // 166: sa.StorageAuthority.GetOrderForNames:output_type -> core.Order - 61, // 167: sa.StorageAuthority.GetRegistration:output_type -> core.Registration - 61, // 168: sa.StorageAuthority.GetRegistrationByKey:output_type -> core.Registration - 39, // 169: sa.StorageAuthority.GetRevocationStatus:output_type -> sa.RevocationStatus - 65, // 170: sa.StorageAuthority.GetRevokedCertsByShard:output_type -> core.CRLEntry - 4, // 171: sa.StorageAuthority.GetSerialMetadata:output_type -> sa.SerialMetadata - 3, // 172: sa.StorageAuthority.GetSerialsByAccount:output_type -> sa.Serial - 3, // 173: sa.StorageAuthority.GetSerialsByKey:output_type -> sa.Serial - 23, // 174: sa.StorageAuthority.GetValidAuthorizations2:output_type -> sa.Authorizations - 23, // 175: sa.StorageAuthority.GetValidOrderAuthorizations2:output_type -> sa.Authorizations - 23, // 176: sa.StorageAuthority.GetOrderAuthorizations:output_type -> sa.Authorizations - 30, // 177: sa.StorageAuthority.IncidentsForSerial:output_type -> sa.Incidents - 11, // 178: sa.StorageAuthority.KeyBlocked:output_type -> sa.Exists - 30, // 179: sa.StorageAuthority.ListIncidents:output_type -> sa.Incidents - 11, // 180: sa.StorageAuthority.ReplacementOrderExists:output_type -> sa.Exists - 37, // 181: sa.StorageAuthority.SerialsForIncident:output_type -> sa.IncidentSerial - 43, // 182: sa.StorageAuthority.CheckIdentifiersPaused:output_type -> sa.Identifiers - 43, // 183: sa.StorageAuthority.GetPausedIdentifiers:output_type -> sa.Identifiers - 53, // 184: sa.StorageAuthority.GetRateLimitOverride:output_type -> sa.RateLimitOverrideResponse - 53, // 185: sa.StorageAuthority.GetEnabledRateLimitOverrides:output_type -> sa.RateLimitOverrideResponse - 60, // 186: sa.StorageAuthority.AddBlockedKey:output_type -> google.protobuf.Empty - 60, // 187: sa.StorageAuthority.AddCertificate:output_type -> google.protobuf.Empty - 60, // 188: sa.StorageAuthority.AddPrecertificate:output_type -> google.protobuf.Empty - 60, // 189: sa.StorageAuthority.AddSerial:output_type -> google.protobuf.Empty - 60, // 190: sa.StorageAuthority.DeactivateAuthorization2:output_type -> google.protobuf.Empty - 61, // 191: sa.StorageAuthority.DeactivateRegistration:output_type -> core.Registration - 60, // 192: sa.StorageAuthority.FinalizeAuthorization2:output_type -> google.protobuf.Empty - 60, // 193: sa.StorageAuthority.FinalizeOrder:output_type -> google.protobuf.Empty - 64, // 194: sa.StorageAuthority.NewOrderAndAuthzs:output_type -> core.Order - 61, // 195: sa.StorageAuthority.NewRegistration:output_type -> core.Registration - 60, // 196: sa.StorageAuthority.RevokeCertificate:output_type -> google.protobuf.Empty - 60, // 197: sa.StorageAuthority.SetOrderError:output_type -> google.protobuf.Empty - 60, // 198: sa.StorageAuthority.SetOrderProcessing:output_type -> google.protobuf.Empty - 61, // 199: sa.StorageAuthority.UpdateRegistrationKey:output_type -> core.Registration - 60, // 200: sa.StorageAuthority.UpdateRevokedCertificate:output_type -> google.protobuf.Empty - 41, // 201: sa.StorageAuthority.LeaseCRLShard:output_type -> sa.LeaseCRLShardResponse - 60, // 202: sa.StorageAuthority.UpdateCRLShard:output_type -> google.protobuf.Empty - 45, // 203: sa.StorageAuthority.PauseIdentifiers:output_type -> sa.PauseIdentifiersResponse - 6, // 204: sa.StorageAuthority.UnpauseAccount:output_type -> sa.Count - 49, // 205: sa.StorageAuthority.AddRateLimitOverride:output_type -> sa.AddRateLimitOverrideResponse - 60, // 206: sa.StorageAuthority.DisableRateLimitOverride:output_type -> google.protobuf.Empty - 60, // 207: sa.StorageAuthority.EnableRateLimitOverride:output_type -> google.protobuf.Empty - 29, // 208: sa.StorageAuthorityAdmin.CreateIncident:output_type -> sa.Incident - 29, // 209: sa.StorageAuthorityAdmin.UpdateIncident:output_type -> sa.Incident - 60, // 210: sa.StorageAuthorityAdmin.AddSerialsToIncident:output_type -> google.protobuf.Empty - 132, // [132:211] is the sub-list for method output_type - 53, // [53:132] is the sub-list for method input_type + 24, // 129: sa.StorageAuthority.RevokeAuthorization:input_type -> sa.AuthorizationID2 + 32, // 130: sa.StorageAuthorityAdmin.CreateIncident:input_type -> sa.CreateIncidentRequest + 33, // 131: sa.StorageAuthorityAdmin.UpdateIncident:input_type -> sa.UpdateIncidentRequest + 34, // 132: sa.StorageAuthorityAdmin.AddSerialsToIncident:input_type -> sa.AddSerialsToIncidentRequest + 11, // 133: sa.StorageAuthorityReadOnly.FQDNSetExists:output_type -> sa.Exists + 7, // 134: sa.StorageAuthorityReadOnly.FQDNSetTimestampsForWindow:output_type -> sa.Timestamps + 58, // 135: sa.StorageAuthorityReadOnly.GetAuthorization2:output_type -> core.Authorization + 62, // 136: sa.StorageAuthorityReadOnly.GetCertificate:output_type -> core.Certificate + 62, // 137: sa.StorageAuthorityReadOnly.GetLintPrecertificate:output_type -> core.Certificate + 63, // 138: sa.StorageAuthorityReadOnly.GetCertificateStatus:output_type -> core.CertificateStatus + 64, // 139: sa.StorageAuthorityReadOnly.GetOrder:output_type -> core.Order + 64, // 140: sa.StorageAuthorityReadOnly.GetOrderForNames:output_type -> core.Order + 61, // 141: sa.StorageAuthorityReadOnly.GetRegistration:output_type -> core.Registration + 61, // 142: sa.StorageAuthorityReadOnly.GetRegistrationByKey:output_type -> core.Registration + 39, // 143: sa.StorageAuthorityReadOnly.GetRevocationStatus:output_type -> sa.RevocationStatus + 65, // 144: sa.StorageAuthorityReadOnly.GetRevokedCertsByShard:output_type -> core.CRLEntry + 4, // 145: sa.StorageAuthorityReadOnly.GetSerialMetadata:output_type -> sa.SerialMetadata + 3, // 146: sa.StorageAuthorityReadOnly.GetSerialsByAccount:output_type -> sa.Serial + 3, // 147: sa.StorageAuthorityReadOnly.GetSerialsByKey:output_type -> sa.Serial + 23, // 148: sa.StorageAuthorityReadOnly.GetValidAuthorizations2:output_type -> sa.Authorizations + 23, // 149: sa.StorageAuthorityReadOnly.GetValidOrderAuthorizations2:output_type -> sa.Authorizations + 23, // 150: sa.StorageAuthorityReadOnly.GetOrderAuthorizations:output_type -> sa.Authorizations + 30, // 151: sa.StorageAuthorityReadOnly.IncidentsForSerial:output_type -> sa.Incidents + 11, // 152: sa.StorageAuthorityReadOnly.KeyBlocked:output_type -> sa.Exists + 30, // 153: sa.StorageAuthorityReadOnly.ListIncidents:output_type -> sa.Incidents + 11, // 154: sa.StorageAuthorityReadOnly.ReplacementOrderExists:output_type -> sa.Exists + 37, // 155: sa.StorageAuthorityReadOnly.SerialsForIncident:output_type -> sa.IncidentSerial + 43, // 156: sa.StorageAuthorityReadOnly.CheckIdentifiersPaused:output_type -> sa.Identifiers + 43, // 157: sa.StorageAuthorityReadOnly.GetPausedIdentifiers:output_type -> sa.Identifiers + 53, // 158: sa.StorageAuthorityReadOnly.GetRateLimitOverride:output_type -> sa.RateLimitOverrideResponse + 53, // 159: sa.StorageAuthorityReadOnly.GetEnabledRateLimitOverrides:output_type -> sa.RateLimitOverrideResponse + 11, // 160: sa.StorageAuthority.FQDNSetExists:output_type -> sa.Exists + 7, // 161: sa.StorageAuthority.FQDNSetTimestampsForWindow:output_type -> sa.Timestamps + 58, // 162: sa.StorageAuthority.GetAuthorization2:output_type -> core.Authorization + 62, // 163: sa.StorageAuthority.GetCertificate:output_type -> core.Certificate + 62, // 164: sa.StorageAuthority.GetLintPrecertificate:output_type -> core.Certificate + 63, // 165: sa.StorageAuthority.GetCertificateStatus:output_type -> core.CertificateStatus + 64, // 166: sa.StorageAuthority.GetOrder:output_type -> core.Order + 64, // 167: sa.StorageAuthority.GetOrderForNames:output_type -> core.Order + 61, // 168: sa.StorageAuthority.GetRegistration:output_type -> core.Registration + 61, // 169: sa.StorageAuthority.GetRegistrationByKey:output_type -> core.Registration + 39, // 170: sa.StorageAuthority.GetRevocationStatus:output_type -> sa.RevocationStatus + 65, // 171: sa.StorageAuthority.GetRevokedCertsByShard:output_type -> core.CRLEntry + 4, // 172: sa.StorageAuthority.GetSerialMetadata:output_type -> sa.SerialMetadata + 3, // 173: sa.StorageAuthority.GetSerialsByAccount:output_type -> sa.Serial + 3, // 174: sa.StorageAuthority.GetSerialsByKey:output_type -> sa.Serial + 23, // 175: sa.StorageAuthority.GetValidAuthorizations2:output_type -> sa.Authorizations + 23, // 176: sa.StorageAuthority.GetValidOrderAuthorizations2:output_type -> sa.Authorizations + 23, // 177: sa.StorageAuthority.GetOrderAuthorizations:output_type -> sa.Authorizations + 30, // 178: sa.StorageAuthority.IncidentsForSerial:output_type -> sa.Incidents + 11, // 179: sa.StorageAuthority.KeyBlocked:output_type -> sa.Exists + 30, // 180: sa.StorageAuthority.ListIncidents:output_type -> sa.Incidents + 11, // 181: sa.StorageAuthority.ReplacementOrderExists:output_type -> sa.Exists + 37, // 182: sa.StorageAuthority.SerialsForIncident:output_type -> sa.IncidentSerial + 43, // 183: sa.StorageAuthority.CheckIdentifiersPaused:output_type -> sa.Identifiers + 43, // 184: sa.StorageAuthority.GetPausedIdentifiers:output_type -> sa.Identifiers + 53, // 185: sa.StorageAuthority.GetRateLimitOverride:output_type -> sa.RateLimitOverrideResponse + 53, // 186: sa.StorageAuthority.GetEnabledRateLimitOverrides:output_type -> sa.RateLimitOverrideResponse + 60, // 187: sa.StorageAuthority.AddBlockedKey:output_type -> google.protobuf.Empty + 60, // 188: sa.StorageAuthority.AddCertificate:output_type -> google.protobuf.Empty + 60, // 189: sa.StorageAuthority.AddPrecertificate:output_type -> google.protobuf.Empty + 60, // 190: sa.StorageAuthority.AddSerial:output_type -> google.protobuf.Empty + 60, // 191: sa.StorageAuthority.DeactivateAuthorization2:output_type -> google.protobuf.Empty + 61, // 192: sa.StorageAuthority.DeactivateRegistration:output_type -> core.Registration + 60, // 193: sa.StorageAuthority.FinalizeAuthorization2:output_type -> google.protobuf.Empty + 60, // 194: sa.StorageAuthority.FinalizeOrder:output_type -> google.protobuf.Empty + 64, // 195: sa.StorageAuthority.NewOrderAndAuthzs:output_type -> core.Order + 61, // 196: sa.StorageAuthority.NewRegistration:output_type -> core.Registration + 60, // 197: sa.StorageAuthority.RevokeCertificate:output_type -> google.protobuf.Empty + 60, // 198: sa.StorageAuthority.SetOrderError:output_type -> google.protobuf.Empty + 60, // 199: sa.StorageAuthority.SetOrderProcessing:output_type -> google.protobuf.Empty + 61, // 200: sa.StorageAuthority.UpdateRegistrationKey:output_type -> core.Registration + 60, // 201: sa.StorageAuthority.UpdateRevokedCertificate:output_type -> google.protobuf.Empty + 41, // 202: sa.StorageAuthority.LeaseCRLShard:output_type -> sa.LeaseCRLShardResponse + 60, // 203: sa.StorageAuthority.UpdateCRLShard:output_type -> google.protobuf.Empty + 45, // 204: sa.StorageAuthority.PauseIdentifiers:output_type -> sa.PauseIdentifiersResponse + 6, // 205: sa.StorageAuthority.UnpauseAccount:output_type -> sa.Count + 49, // 206: sa.StorageAuthority.AddRateLimitOverride:output_type -> sa.AddRateLimitOverrideResponse + 60, // 207: sa.StorageAuthority.DisableRateLimitOverride:output_type -> google.protobuf.Empty + 60, // 208: sa.StorageAuthority.EnableRateLimitOverride:output_type -> google.protobuf.Empty + 60, // 209: sa.StorageAuthority.RevokeAuthorization:output_type -> google.protobuf.Empty + 29, // 210: sa.StorageAuthorityAdmin.CreateIncident:output_type -> sa.Incident + 29, // 211: sa.StorageAuthorityAdmin.UpdateIncident:output_type -> sa.Incident + 60, // 212: sa.StorageAuthorityAdmin.AddSerialsToIncident:output_type -> google.protobuf.Empty + 133, // [133:213] is the sub-list for method output_type + 53, // [53:133] is the sub-list for method input_type 53, // [53:53] is the sub-list for extension type_name 53, // [53:53] is the sub-list for extension extendee 0, // [0:53] is the sub-list for field type_name diff --git a/sa/proto/sa.proto b/sa/proto/sa.proto index 3122b98fb02..e2754eb3d2c 100644 --- a/sa/proto/sa.proto +++ b/sa/proto/sa.proto @@ -93,6 +93,7 @@ service StorageAuthority { rpc AddRateLimitOverride(AddRateLimitOverrideRequest) returns (AddRateLimitOverrideResponse) {} rpc DisableRateLimitOverride(DisableRateLimitOverrideRequest) returns (google.protobuf.Empty) {} rpc EnableRateLimitOverride(EnableRateLimitOverrideRequest) returns (google.protobuf.Empty) {} + rpc RevokeAuthorization(AuthorizationID2) returns (google.protobuf.Empty) {} } // StorageAuthorityAdmin exposes those SA methods exclusive to the admin tool. diff --git a/sa/proto/sa_grpc.pb.go b/sa/proto/sa_grpc.pb.go index 65de98b16c1..fa3fda53b8b 100644 --- a/sa/proto/sa_grpc.pb.go +++ b/sa/proto/sa_grpc.pb.go @@ -1181,6 +1181,7 @@ const ( StorageAuthority_AddRateLimitOverride_FullMethodName = "/sa.StorageAuthority/AddRateLimitOverride" StorageAuthority_DisableRateLimitOverride_FullMethodName = "/sa.StorageAuthority/DisableRateLimitOverride" StorageAuthority_EnableRateLimitOverride_FullMethodName = "/sa.StorageAuthority/EnableRateLimitOverride" + StorageAuthority_RevokeAuthorization_FullMethodName = "/sa.StorageAuthority/RevokeAuthorization" ) // StorageAuthorityClient is the client API for StorageAuthority service. @@ -1240,6 +1241,7 @@ type StorageAuthorityClient interface { AddRateLimitOverride(ctx context.Context, in *AddRateLimitOverrideRequest, opts ...grpc.CallOption) (*AddRateLimitOverrideResponse, error) DisableRateLimitOverride(ctx context.Context, in *DisableRateLimitOverrideRequest, opts ...grpc.CallOption) (*emptypb.Empty, error) EnableRateLimitOverride(ctx context.Context, in *EnableRateLimitOverrideRequest, opts ...grpc.CallOption) (*emptypb.Empty, error) + RevokeAuthorization(ctx context.Context, in *AuthorizationID2, opts ...grpc.CallOption) (*emptypb.Empty, error) } type storageAuthorityClient struct { @@ -1785,6 +1787,16 @@ func (c *storageAuthorityClient) EnableRateLimitOverride(ctx context.Context, in return out, nil } +func (c *storageAuthorityClient) RevokeAuthorization(ctx context.Context, in *AuthorizationID2, opts ...grpc.CallOption) (*emptypb.Empty, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) + out := new(emptypb.Empty) + err := c.cc.Invoke(ctx, StorageAuthority_RevokeAuthorization_FullMethodName, in, out, cOpts...) + if err != nil { + return nil, err + } + return out, nil +} + // StorageAuthorityServer is the server API for StorageAuthority service. // All implementations must embed UnimplementedStorageAuthorityServer // for forward compatibility. @@ -1842,6 +1854,7 @@ type StorageAuthorityServer interface { AddRateLimitOverride(context.Context, *AddRateLimitOverrideRequest) (*AddRateLimitOverrideResponse, error) DisableRateLimitOverride(context.Context, *DisableRateLimitOverrideRequest) (*emptypb.Empty, error) EnableRateLimitOverride(context.Context, *EnableRateLimitOverrideRequest) (*emptypb.Empty, error) + RevokeAuthorization(context.Context, *AuthorizationID2) (*emptypb.Empty, error) mustEmbedUnimplementedStorageAuthorityServer() } @@ -1999,6 +2012,9 @@ func (UnimplementedStorageAuthorityServer) DisableRateLimitOverride(context.Cont func (UnimplementedStorageAuthorityServer) EnableRateLimitOverride(context.Context, *EnableRateLimitOverrideRequest) (*emptypb.Empty, error) { return nil, status.Errorf(codes.Unimplemented, "method EnableRateLimitOverride not implemented") } +func (UnimplementedStorageAuthorityServer) RevokeAuthorization(context.Context, *AuthorizationID2) (*emptypb.Empty, error) { + return nil, status.Errorf(codes.Unimplemented, "method RevokeAuthorization not implemented") +} func (UnimplementedStorageAuthorityServer) mustEmbedUnimplementedStorageAuthorityServer() {} func (UnimplementedStorageAuthorityServer) testEmbeddedByValue() {} @@ -2867,6 +2883,24 @@ func _StorageAuthority_EnableRateLimitOverride_Handler(srv interface{}, ctx cont return interceptor(ctx, in, info, handler) } +func _StorageAuthority_RevokeAuthorization_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(AuthorizationID2) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(StorageAuthorityServer).RevokeAuthorization(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: StorageAuthority_RevokeAuthorization_FullMethodName, + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(StorageAuthorityServer).RevokeAuthorization(ctx, req.(*AuthorizationID2)) + } + return interceptor(ctx, in, info, handler) +} + // StorageAuthority_ServiceDesc is the grpc.ServiceDesc for StorageAuthority service. // It's only intended for direct use with grpc.RegisterService, // and not to be introspected or modified (even as a copy) @@ -3050,6 +3084,10 @@ var StorageAuthority_ServiceDesc = grpc.ServiceDesc{ MethodName: "EnableRateLimitOverride", Handler: _StorageAuthority_EnableRateLimitOverride_Handler, }, + { + MethodName: "RevokeAuthorization", + Handler: _StorageAuthority_RevokeAuthorization_Handler, + }, }, Streams: []grpc.StreamDesc{ { diff --git a/sa/sa.go b/sa/sa.go index 5d941030183..523e7ff3016 100644 --- a/sa/sa.go +++ b/sa/sa.go @@ -450,6 +450,28 @@ func (ssa *SQLStorageAuthority) DeactivateAuthorization2(ctx context.Context, re return &emptypb.Empty{}, nil } +// RevokeAuthorization revokes a currently unexpired authorization that is valid or pending +func (ssa *SQLStorageAuthority) RevokeAuthorization(ctx context.Context, req *sapb.AuthorizationID2) (*emptypb.Empty, error) { + if req.Id == 0 { + return nil, errIncompleteRequest + } + + _, err := ssa.dbMap.ExecContext(ctx, + `UPDATE authz2 SET status = :revoked WHERE id = :id AND :expirenow < expires AND status IN (:valid,:pending)`, + map[string]any{ + "revoked": statusUint(core.StatusRevoked), + "id": req.Id, + "expirenow": ssa.clk.Now(), + "valid": statusUint(core.StatusValid), + "pending": statusUint(core.StatusPending), + }, + ) + if err != nil { + return nil, err + } + return &emptypb.Empty{}, nil +} + // NewOrderAndAuthzs creates an order in the database. // // The order will include reused authorization IDs from the V2Authorizations slice diff --git a/sa/sa_test.go b/sa/sa_test.go index d9040e1de70..f258897d9f8 100644 --- a/sa/sa_test.go +++ b/sa/sa_test.go @@ -856,6 +856,54 @@ func TestDeactivateAuthorization2(t *testing.T) { authzID = createFinalizedAuthorization(t, sa, reg.Id, identifier.NewDNS("example.com"), expires, "valid", attemptedAt) _, err = sa.DeactivateAuthorization2(context.Background(), &sapb.AuthorizationID2{Id: authzID}) test.AssertNotError(t, err, "sa.DeactivateAuthorization2 failed") + + // test error case with zero-value authzID + _, err = sa.DeactivateAuthorization2(context.Background(), &sapb.AuthorizationID2{Id: 0}) + test.AssertError(t, err, "sa.DeactivateAuthorization2 unexpectedly succeeded") +} + +func TestRevokeAuthorization(t *testing.T) { + sa, fc := initSA(t) + + reg := createWorkingRegistration(t, sa) + + expires := fc.Now().Add(time.Hour).UTC() + attemptedAt := fc.Now() + + // revoke a pending authorization + authzID := createPendingAuthorization(t, sa, reg.Id, identifier.NewDNS("example.com"), expires) + _, err := sa.RevokeAuthorization(context.Background(), &sapb.AuthorizationID2{Id: authzID}) + test.AssertNotError(t, err, "sa.RevokeAuthorization failed") + authz, _ := sa.GetAuthorization2(ctx, &sapb.AuthorizationID2{Id: authzID}) + test.AssertEquals(t, core.AcmeStatus(authz.Status), core.StatusRevoked) + + // revoke a valid authorization + authzID = createFinalizedAuthorization(t, sa, reg.Id, identifier.NewDNS("example.com"), expires, "valid", attemptedAt) + _, err = sa.RevokeAuthorization(context.Background(), &sapb.AuthorizationID2{Id: authzID}) + test.AssertNotError(t, err, "sa.RevokeAuthorization failed") + authz, _ = sa.GetAuthorization2(ctx, &sapb.AuthorizationID2{Id: authzID}) + test.AssertEquals(t, core.AcmeStatus(authz.Status), core.StatusRevoked) + + // revoke an invalid authorization + authzID = createFinalizedAuthorization(t, sa, reg.Id, identifier.NewDNS("example.com"), expires, "invalid", attemptedAt) + _, err = sa.RevokeAuthorization(context.Background(), &sapb.AuthorizationID2{Id: authzID}) + test.AssertNotError(t, err, "sa.RevokeAuthorization failed") + authz, _ = sa.GetAuthorization2(ctx, &sapb.AuthorizationID2{Id: authzID}) + // revocation does NOT change invalid to revoked + test.AssertEquals(t, core.AcmeStatus(authz.Status), core.StatusInvalid) + + // revoke an expired authorization + expires = fc.Now().Add(-time.Hour).UTC() + authzID = createPendingAuthorization(t, sa, reg.Id, identifier.NewDNS("example.com"), expires) + _, err = sa.RevokeAuthorization(context.Background(), &sapb.AuthorizationID2{Id: authzID}) + test.AssertNotError(t, err, "sa.RevokeAuthorization failed") + authz, _ = sa.GetAuthorization2(ctx, &sapb.AuthorizationID2{Id: authzID}) + // revocation does NOT modify an expired authorization + test.AssertEquals(t, core.AcmeStatus(authz.Status), core.StatusPending) + + // test error case with zero-value authzID + _, err = sa.RevokeAuthorization(context.Background(), &sapb.AuthorizationID2{Id: 0}) + test.AssertError(t, err, "sa.RevokeAuthorization unexpectedly succeeded") } func TestDeactivateAccount(t *testing.T) { From 2d9af66cff9037cbc21fb25e44a4f2439defdd7d Mon Sep 17 00:00:00 2001 From: Kiel C Date: Tue, 23 Jun 2026 15:39:55 +0000 Subject: [PATCH 2/4] Add RevokeAuthzsUponRevokeCert feature to RA. --- features/features.go | 9 + ra/ra.go | 31 + ra/ra_test.go | 106 ++++ sa/proto/sa.pb.go | 1176 ++++++++++++++++++++------------------ sa/proto/sa.proto | 7 +- sa/proto/sa_grpc.pb.go | 28 +- sa/sa.go | 21 +- sa/sa_test.go | 17 +- test/config-next/ra.json | 3 +- test/config/ra.json | 3 +- 10 files changed, 810 insertions(+), 591 deletions(-) diff --git a/features/features.go b/features/features.go index 42dd6b7ebb0..1739306f8ff 100644 --- a/features/features.go +++ b/features/features.go @@ -68,6 +68,15 @@ type Config struct { // during certificate issuance. This flag must be set to true in the // RA and VA services for full functionality. DNSPersist01Enabled bool + + // RevokeAuthzsUponRevokeCert controls whether the RA will call for + // revocation of Authorizations for identifiers in a certificate that is + // successfully revoked by a requester that is DIFFERENT than the one that + // was originally granted the certificate. In this scenario, the new + // requester has demonstrated control over the requisite set of identifiers, + // so we can avoid the possibility of Authz re-use by the original + // requester via Authz revocation. + RevokeAuthzsUponRevokeCert bool } var fMu = new(sync.RWMutex) diff --git a/ra/ra.go b/ra/ra.go index eda313ee998..f016f4e748f 100644 --- a/ra/ra.go +++ b/ra/ra.go @@ -1720,6 +1720,10 @@ func (ra *RegistrationAuthorityImpl) RevokeCertByApplicant(ctx context.Context, Requester: req.RegID, } + // By default, do not revoke Authorizations held for the revoked-cert + // identifiers. + requestAuthzRevocation := false + // Below this point, do not re-declare `err` (i.e. type `err :=`) in a // nested scope. Doing so will create a new `err` variable that is not // captured by this closure. @@ -1772,6 +1776,14 @@ func (ra *RegistrationAuthorityImpl) RevokeCertByApplicant(ctx context.Context, // domain names in the certificate". Override the reason code to match. reasonCode = revocation.CessationOfOperation logEvent.Reason = reasonCode + + // We have confirmed that the requester RegistrationID is NOT the same + // as the original subscriber. Requester has demonstrated control over + // the set of identifiers sufficient for certificate revocation. Given + // BOTH, enable this boolean to signal that authorizations held by the + // original subscriber RegID should be revoked after certificate + // revocation. + requestAuthzRevocation = true } err = ra.revokeCertificate(ctx, cert, reasonCode) @@ -1779,6 +1791,25 @@ func (ra *RegistrationAuthorityImpl) RevokeCertByApplicant(ctx context.Context, return nil, err } + // Revoke authorizations held by a RegistrationID that has been confirmed to + // be different than the requester + if features.Get().RevokeAuthzsUponRevokeCert && requestAuthzRevocation { + // TODO(#8673): is this better as one RPC call with all idents, or as one RPC call per ident? + idents := identifier.FromCert(cert) + for _, ident := range idents { + _, err = ra.SA.RevokeAuthorizationFor(ctx, &sapb.RevokeAuthorizationForRequest{ + RegistrationID: metadata.RegistrationID, + Identifier: ident.ToProto(), + }) + // TODO(#8673): I do NOT think the revocation function should fail + // if authz revocation fails, but maybe there's an alternate way to + // surface this. Or maybe just log it? + // if err != nil { + // return nil, err + // } + } + } + return &emptypb.Empty{}, nil } diff --git a/ra/ra_test.go b/ra/ra_test.go index b7957db7316..ddf2b783bb7 100644 --- a/ra/ra_test.go +++ b/ra/ra_test.go @@ -3525,6 +3525,10 @@ func (msar *mockSARevocation) GetCertificate(_ context.Context, req *sapb.Serial }, nil } +func (msar *mockSARevocation) RevokeAuthorizationFor(_ context.Context, req *sapb.RevokeAuthorizationForRequest, _ ...grpc.CallOption) (*emptypb.Empty, error) { + return &emptypb.Empty{}, nil +} + func (msar *mockSARevocation) RevokeCertificate(_ context.Context, req *sapb.RevokeCertificateRequest, _ ...grpc.CallOption) (*emptypb.Empty, error) { if _, present := msar.revoked[req.Serial]; present { return nil, berrors.AlreadyRevokedError("already revoked") @@ -3670,6 +3674,108 @@ func TestRevokeCertByApplicant_Controller(t *testing.T) { test.AssertEquals(t, mockSA.revoked[core.SerialToString(cert.SerialNumber)].RevokedReason, int64(revocation.CessationOfOperation)) } +func TestRevokeAuthzsUponRevokeCert_FeatureDisabled(t *testing.T) { + _, _, ra, _, clk, _, cleanUp := initAuthorities(t) + defer cleanUp() + + // Specifically disable the feature which allows authz revocation + features.Set(features.Config{RevokeAuthzsUponRevokeCert: false}) + defer features.Reset() + + // Use the same self-signed cert as both issuer and issuee for revocation. + _, cert := test.ThrowAwayCert(t, clk) + cert.IsCA = true + ic, err := issuance.NewCertificate(cert) + test.AssertNotError(t, err, "failed to create issuer cert") + ra.issuersByNameID = map[issuance.NameID]*issuance.Certificate{ + ic.NameID(): ic, + } + mockSA := newMockSARevocation(cert) + ra.SA = &mockSARevocationWithAuthzs{mockSA, false} + + // Revoking with the correct regID should succeed. + _, err = ra.RevokeCertByApplicant(context.Background(), &rapb.RevokeCertByApplicantRequest{ + Cert: cert.Raw, + Code: int64(revocation.Unspecified), + RegID: 1, + }) + test.AssertNotError(t, err, "should have succeeded") + // And Authzs should NOT be revoked + // TODO(#8673): make assertions about the authorizations + + // Another unrevoked cert + ic, err = issuance.NewCertificate(cert) + test.AssertNotError(t, err, "failed to create issuer cert") + ra.issuersByNameID = map[issuance.NameID]*issuance.Certificate{ + ic.NameID(): ic, + } + mockSA = newMockSARevocation(cert) + ra.SA = &mockSARevocationWithAuthzs{mockSA, true} + + // Revoking when the account does have valid authzs for the name should succeed, + _, err = ra.RevokeCertByApplicant(context.Background(), &rapb.RevokeCertByApplicantRequest{ + Cert: cert.Raw, + Code: int64(revocation.Unspecified), + RegID: 2, + }) + test.AssertNotError(t, err, "should have succeeded") + test.AssertEquals(t, mockSA.revoked[core.SerialToString(cert.SerialNumber)].RevokedReason, int64(revocation.CessationOfOperation)) + // And Authzs should NOT be revoked + // TODO(#8673): make assertions about the authorizations + +} + +func TestRevokeAuthzsUponRevokeCert_FeatureEnabled(t *testing.T) { + _, _, ra, _, clk, _, cleanUp := initAuthorities(t) + defer cleanUp() + + // Enable the feature which allows authz revocation + features.Set(features.Config{RevokeAuthzsUponRevokeCert: true}) + defer features.Reset() + + // Use the same self-signed cert as both issuer and issuee for revocation. + _, cert := test.ThrowAwayCert(t, clk) + cert.IsCA = true + ic, err := issuance.NewCertificate(cert) + test.AssertNotError(t, err, "failed to create issuer cert") + ra.issuersByNameID = map[issuance.NameID]*issuance.Certificate{ + ic.NameID(): ic, + } + mockSA := newMockSARevocation(cert) + ra.SA = &mockSARevocationWithAuthzs{mockSA, false} + + // Revoking with the correct regID should succeed. + _, err = ra.RevokeCertByApplicant(context.Background(), &rapb.RevokeCertByApplicantRequest{ + Cert: cert.Raw, + Code: int64(revocation.Unspecified), + RegID: 1, + }) + test.AssertNotError(t, err, "should have succeeded") + // And Authzs should NOT be revoked + // TODO(#8673): make assertions about the authorizations + + // Another unrevoked cert + ic, err = issuance.NewCertificate(cert) + test.AssertNotError(t, err, "failed to create issuer cert") + ra.issuersByNameID = map[issuance.NameID]*issuance.Certificate{ + ic.NameID(): ic, + } + mockSA = newMockSARevocation(cert) + ra.SA = &mockSARevocationWithAuthzs{mockSA, true} + + // Revoking when the account does have valid authzs for the name should succeed, + _, err = ra.RevokeCertByApplicant(context.Background(), &rapb.RevokeCertByApplicantRequest{ + Cert: cert.Raw, + Code: int64(revocation.Unspecified), + RegID: 2, + }) + test.AssertNotError(t, err, "should have succeeded") + test.AssertEquals(t, mockSA.revoked[core.SerialToString(cert.SerialNumber)].RevokedReason, int64(revocation.CessationOfOperation)) + // And Authzs SHOULD be revoked + // TODO(#8673): make assertions about the authorizations + +} + func TestRevokeCertByKey(t *testing.T) { _, _, ra, _, clk, _, cleanUp := initAuthorities(t) defer cleanUp() diff --git a/sa/proto/sa.pb.go b/sa/proto/sa.pb.go index 6c76718b621..cbe986d7bdc 100644 --- a/sa/proto/sa.pb.go +++ b/sa/proto/sa.pb.go @@ -3196,6 +3196,58 @@ func (x *RateLimitOverrideResponse) GetUpdatedAt() *timestamppb.Timestamp { return nil } +type RevokeAuthorizationForRequest struct { + state protoimpl.MessageState `protogen:"open.v1"` + RegistrationID int64 `protobuf:"varint,1,opt,name=registrationID,proto3" json:"registrationID,omitempty"` + Identifier *proto.Identifier `protobuf:"bytes,2,opt,name=identifier,proto3" json:"identifier,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *RevokeAuthorizationForRequest) Reset() { + *x = RevokeAuthorizationForRequest{} + mi := &file_sa_proto_msgTypes[54] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *RevokeAuthorizationForRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*RevokeAuthorizationForRequest) ProtoMessage() {} + +func (x *RevokeAuthorizationForRequest) ProtoReflect() protoreflect.Message { + mi := &file_sa_proto_msgTypes[54] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use RevokeAuthorizationForRequest.ProtoReflect.Descriptor instead. +func (*RevokeAuthorizationForRequest) Descriptor() ([]byte, []int) { + return file_sa_proto_rawDescGZIP(), []int{54} +} + +func (x *RevokeAuthorizationForRequest) GetRegistrationID() int64 { + if x != nil { + return x.RegistrationID + } + return 0 +} + +func (x *RevokeAuthorizationForRequest) GetIdentifier() *proto.Identifier { + if x != nil { + return x.Identifier + } + return nil +} + var File_sa_proto protoreflect.FileDescriptor var file_sa_proto_rawDesc = string([]byte{ @@ -3646,352 +3698,360 @@ var file_sa_proto_rawDesc = string([]byte{ 0x64, 0x12, 0x38, 0x0a, 0x09, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, - 0x52, 0x09, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x32, 0xed, 0x0d, 0x0a, 0x18, - 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79, - 0x52, 0x65, 0x61, 0x64, 0x4f, 0x6e, 0x6c, 0x79, 0x12, 0x37, 0x0a, 0x0d, 0x46, 0x51, 0x44, 0x4e, - 0x53, 0x65, 0x74, 0x45, 0x78, 0x69, 0x73, 0x74, 0x73, 0x12, 0x18, 0x2e, 0x73, 0x61, 0x2e, 0x46, - 0x51, 0x44, 0x4e, 0x53, 0x65, 0x74, 0x45, 0x78, 0x69, 0x73, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x1a, 0x0a, 0x2e, 0x73, 0x61, 0x2e, 0x45, 0x78, 0x69, 0x73, 0x74, 0x73, 0x22, - 0x00, 0x12, 0x48, 0x0a, 0x1a, 0x46, 0x51, 0x44, 0x4e, 0x53, 0x65, 0x74, 0x54, 0x69, 0x6d, 0x65, - 0x73, 0x74, 0x61, 0x6d, 0x70, 0x73, 0x46, 0x6f, 0x72, 0x57, 0x69, 0x6e, 0x64, 0x6f, 0x77, 0x12, - 0x18, 0x2e, 0x73, 0x61, 0x2e, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x46, 0x51, 0x44, 0x4e, 0x53, 0x65, - 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x0e, 0x2e, 0x73, 0x61, 0x2e, 0x54, - 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x73, 0x22, 0x00, 0x12, 0x40, 0x0a, 0x11, 0x47, - 0x65, 0x74, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x32, - 0x12, 0x14, 0x2e, 0x73, 0x61, 0x2e, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x7a, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x49, 0x44, 0x32, 0x1a, 0x13, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x41, 0x75, - 0x74, 0x68, 0x6f, 0x72, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x00, 0x12, 0x31, 0x0a, - 0x0e, 0x47, 0x65, 0x74, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x12, - 0x0a, 0x2e, 0x73, 0x61, 0x2e, 0x53, 0x65, 0x72, 0x69, 0x61, 0x6c, 0x1a, 0x11, 0x2e, 0x63, 0x6f, - 0x72, 0x65, 0x2e, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x22, 0x00, - 0x12, 0x38, 0x0a, 0x15, 0x47, 0x65, 0x74, 0x4c, 0x69, 0x6e, 0x74, 0x50, 0x72, 0x65, 0x63, 0x65, - 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x12, 0x0a, 0x2e, 0x73, 0x61, 0x2e, 0x53, - 0x65, 0x72, 0x69, 0x61, 0x6c, 0x1a, 0x11, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x43, 0x65, 0x72, - 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x22, 0x00, 0x12, 0x3d, 0x0a, 0x14, 0x47, 0x65, - 0x74, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x53, 0x74, 0x61, 0x74, - 0x75, 0x73, 0x12, 0x0a, 0x2e, 0x73, 0x61, 0x2e, 0x53, 0x65, 0x72, 0x69, 0x61, 0x6c, 0x1a, 0x17, - 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, - 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x22, 0x00, 0x12, 0x2b, 0x0a, 0x08, 0x47, 0x65, 0x74, - 0x4f, 0x72, 0x64, 0x65, 0x72, 0x12, 0x10, 0x2e, 0x73, 0x61, 0x2e, 0x4f, 0x72, 0x64, 0x65, 0x72, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x0b, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x4f, - 0x72, 0x64, 0x65, 0x72, 0x22, 0x00, 0x12, 0x3e, 0x0a, 0x10, 0x47, 0x65, 0x74, 0x4f, 0x72, 0x64, - 0x65, 0x72, 0x46, 0x6f, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x12, 0x1b, 0x2e, 0x73, 0x61, 0x2e, - 0x47, 0x65, 0x74, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x46, 0x6f, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x73, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x0b, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x4f, - 0x72, 0x64, 0x65, 0x72, 0x22, 0x00, 0x12, 0x3b, 0x0a, 0x0f, 0x47, 0x65, 0x74, 0x52, 0x65, 0x67, - 0x69, 0x73, 0x74, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x12, 0x2e, 0x73, 0x61, 0x2e, 0x52, - 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x44, 0x1a, 0x12, 0x2e, - 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x22, 0x00, 0x12, 0x3c, 0x0a, 0x14, 0x47, 0x65, 0x74, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, - 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x79, 0x4b, 0x65, 0x79, 0x12, 0x0e, 0x2e, 0x73, 0x61, - 0x2e, 0x4a, 0x53, 0x4f, 0x4e, 0x57, 0x65, 0x62, 0x4b, 0x65, 0x79, 0x1a, 0x12, 0x2e, 0x63, 0x6f, - 0x72, 0x65, 0x2e, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, - 0x00, 0x12, 0x39, 0x0a, 0x13, 0x47, 0x65, 0x74, 0x52, 0x65, 0x76, 0x6f, 0x63, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x0a, 0x2e, 0x73, 0x61, 0x2e, 0x53, 0x65, - 0x72, 0x69, 0x61, 0x6c, 0x1a, 0x14, 0x2e, 0x73, 0x61, 0x2e, 0x52, 0x65, 0x76, 0x6f, 0x63, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x22, 0x00, 0x12, 0x4f, 0x0a, 0x16, - 0x47, 0x65, 0x74, 0x52, 0x65, 0x76, 0x6f, 0x6b, 0x65, 0x64, 0x43, 0x65, 0x72, 0x74, 0x73, 0x42, - 0x79, 0x53, 0x68, 0x61, 0x72, 0x64, 0x12, 0x21, 0x2e, 0x73, 0x61, 0x2e, 0x47, 0x65, 0x74, 0x52, - 0x65, 0x76, 0x6f, 0x6b, 0x65, 0x64, 0x43, 0x65, 0x72, 0x74, 0x73, 0x42, 0x79, 0x53, 0x68, 0x61, - 0x72, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x0e, 0x2e, 0x63, 0x6f, 0x72, 0x65, - 0x2e, 0x43, 0x52, 0x4c, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x22, 0x00, 0x30, 0x01, 0x12, 0x35, 0x0a, - 0x11, 0x47, 0x65, 0x74, 0x53, 0x65, 0x72, 0x69, 0x61, 0x6c, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, - 0x74, 0x61, 0x12, 0x0a, 0x2e, 0x73, 0x61, 0x2e, 0x53, 0x65, 0x72, 0x69, 0x61, 0x6c, 0x1a, 0x12, - 0x2e, 0x73, 0x61, 0x2e, 0x53, 0x65, 0x72, 0x69, 0x61, 0x6c, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, - 0x74, 0x61, 0x22, 0x00, 0x12, 0x39, 0x0a, 0x13, 0x47, 0x65, 0x74, 0x53, 0x65, 0x72, 0x69, 0x61, - 0x6c, 0x73, 0x42, 0x79, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x12, 0x2e, 0x73, 0x61, - 0x2e, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x44, 0x1a, - 0x0a, 0x2e, 0x73, 0x61, 0x2e, 0x53, 0x65, 0x72, 0x69, 0x61, 0x6c, 0x22, 0x00, 0x30, 0x01, 0x12, - 0x2f, 0x0a, 0x0f, 0x47, 0x65, 0x74, 0x53, 0x65, 0x72, 0x69, 0x61, 0x6c, 0x73, 0x42, 0x79, 0x4b, - 0x65, 0x79, 0x12, 0x0c, 0x2e, 0x73, 0x61, 0x2e, 0x53, 0x50, 0x4b, 0x49, 0x48, 0x61, 0x73, 0x68, - 0x1a, 0x0a, 0x2e, 0x73, 0x61, 0x2e, 0x53, 0x65, 0x72, 0x69, 0x61, 0x6c, 0x22, 0x00, 0x30, 0x01, - 0x12, 0x52, 0x0a, 0x17, 0x47, 0x65, 0x74, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x41, 0x75, 0x74, 0x68, - 0x6f, 0x72, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x32, 0x12, 0x21, 0x2e, 0x73, 0x61, - 0x2e, 0x47, 0x65, 0x74, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, - 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x12, - 0x2e, 0x73, 0x61, 0x2e, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x73, 0x22, 0x00, 0x12, 0x57, 0x0a, 0x1c, 0x47, 0x65, 0x74, 0x56, 0x61, 0x6c, 0x69, 0x64, - 0x4f, 0x72, 0x64, 0x65, 0x72, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x7a, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x73, 0x32, 0x12, 0x21, 0x2e, 0x73, 0x61, 0x2e, 0x47, 0x65, 0x74, 0x4f, 0x72, 0x64, - 0x65, 0x72, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x12, 0x2e, 0x73, 0x61, 0x2e, 0x41, 0x75, 0x74, - 0x68, 0x6f, 0x72, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x22, 0x00, 0x12, 0x51, 0x0a, - 0x16, 0x47, 0x65, 0x74, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, - 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x21, 0x2e, 0x73, 0x61, 0x2e, 0x47, 0x65, 0x74, - 0x4f, 0x72, 0x64, 0x65, 0x72, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x7a, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x12, 0x2e, 0x73, 0x61, 0x2e, - 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x22, 0x00, - 0x12, 0x31, 0x0a, 0x12, 0x49, 0x6e, 0x63, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x73, 0x46, 0x6f, 0x72, - 0x53, 0x65, 0x72, 0x69, 0x61, 0x6c, 0x12, 0x0a, 0x2e, 0x73, 0x61, 0x2e, 0x53, 0x65, 0x72, 0x69, - 0x61, 0x6c, 0x1a, 0x0d, 0x2e, 0x73, 0x61, 0x2e, 0x49, 0x6e, 0x63, 0x69, 0x64, 0x65, 0x6e, 0x74, - 0x73, 0x22, 0x00, 0x12, 0x28, 0x0a, 0x0a, 0x4b, 0x65, 0x79, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x65, - 0x64, 0x12, 0x0c, 0x2e, 0x73, 0x61, 0x2e, 0x53, 0x50, 0x4b, 0x49, 0x48, 0x61, 0x73, 0x68, 0x1a, - 0x0a, 0x2e, 0x73, 0x61, 0x2e, 0x45, 0x78, 0x69, 0x73, 0x74, 0x73, 0x22, 0x00, 0x12, 0x38, 0x0a, - 0x0d, 0x4c, 0x69, 0x73, 0x74, 0x49, 0x6e, 0x63, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x73, 0x12, 0x16, - 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, - 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x1a, 0x0d, 0x2e, 0x73, 0x61, 0x2e, 0x49, 0x6e, 0x63, 0x69, - 0x64, 0x65, 0x6e, 0x74, 0x73, 0x22, 0x00, 0x12, 0x32, 0x0a, 0x16, 0x52, 0x65, 0x70, 0x6c, 0x61, - 0x63, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x45, 0x78, 0x69, 0x73, 0x74, - 0x73, 0x12, 0x0a, 0x2e, 0x73, 0x61, 0x2e, 0x53, 0x65, 0x72, 0x69, 0x61, 0x6c, 0x1a, 0x0a, 0x2e, - 0x73, 0x61, 0x2e, 0x45, 0x78, 0x69, 0x73, 0x74, 0x73, 0x22, 0x00, 0x12, 0x4b, 0x0a, 0x12, 0x53, - 0x65, 0x72, 0x69, 0x61, 0x6c, 0x73, 0x46, 0x6f, 0x72, 0x49, 0x6e, 0x63, 0x69, 0x64, 0x65, 0x6e, - 0x74, 0x12, 0x1d, 0x2e, 0x73, 0x61, 0x2e, 0x53, 0x65, 0x72, 0x69, 0x61, 0x6c, 0x73, 0x46, 0x6f, - 0x72, 0x49, 0x6e, 0x63, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x1a, 0x12, 0x2e, 0x73, 0x61, 0x2e, 0x49, 0x6e, 0x63, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x53, 0x65, - 0x72, 0x69, 0x61, 0x6c, 0x22, 0x00, 0x30, 0x01, 0x12, 0x3d, 0x0a, 0x16, 0x43, 0x68, 0x65, 0x63, - 0x6b, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x50, 0x61, 0x75, 0x73, - 0x65, 0x64, 0x12, 0x10, 0x2e, 0x73, 0x61, 0x2e, 0x50, 0x61, 0x75, 0x73, 0x65, 0x52, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x1a, 0x0f, 0x2e, 0x73, 0x61, 0x2e, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, - 0x66, 0x69, 0x65, 0x72, 0x73, 0x22, 0x00, 0x12, 0x3d, 0x0a, 0x14, 0x47, 0x65, 0x74, 0x50, 0x61, - 0x75, 0x73, 0x65, 0x64, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x12, - 0x12, 0x2e, 0x73, 0x61, 0x2e, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x49, 0x44, 0x1a, 0x0f, 0x2e, 0x73, 0x61, 0x2e, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, - 0x69, 0x65, 0x72, 0x73, 0x22, 0x00, 0x12, 0x58, 0x0a, 0x14, 0x47, 0x65, 0x74, 0x52, 0x61, 0x74, - 0x65, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x4f, 0x76, 0x65, 0x72, 0x72, 0x69, 0x64, 0x65, 0x12, 0x1f, - 0x2e, 0x73, 0x61, 0x2e, 0x47, 0x65, 0x74, 0x52, 0x61, 0x74, 0x65, 0x4c, 0x69, 0x6d, 0x69, 0x74, - 0x4f, 0x76, 0x65, 0x72, 0x72, 0x69, 0x64, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, - 0x1d, 0x2e, 0x73, 0x61, 0x2e, 0x52, 0x61, 0x74, 0x65, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x4f, 0x76, - 0x65, 0x72, 0x72, 0x69, 0x64, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, - 0x12, 0x59, 0x0a, 0x1c, 0x47, 0x65, 0x74, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x52, 0x61, - 0x74, 0x65, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x4f, 0x76, 0x65, 0x72, 0x72, 0x69, 0x64, 0x65, 0x73, - 0x12, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, - 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x1a, 0x1d, 0x2e, 0x73, 0x61, 0x2e, 0x52, 0x61, - 0x74, 0x65, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x4f, 0x76, 0x65, 0x72, 0x72, 0x69, 0x64, 0x65, 0x52, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x30, 0x01, 0x32, 0xfb, 0x1a, 0x0a, 0x10, - 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79, - 0x12, 0x37, 0x0a, 0x0d, 0x46, 0x51, 0x44, 0x4e, 0x53, 0x65, 0x74, 0x45, 0x78, 0x69, 0x73, 0x74, - 0x73, 0x12, 0x18, 0x2e, 0x73, 0x61, 0x2e, 0x46, 0x51, 0x44, 0x4e, 0x53, 0x65, 0x74, 0x45, 0x78, - 0x69, 0x73, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x0a, 0x2e, 0x73, 0x61, - 0x2e, 0x45, 0x78, 0x69, 0x73, 0x74, 0x73, 0x22, 0x00, 0x12, 0x48, 0x0a, 0x1a, 0x46, 0x51, 0x44, - 0x4e, 0x53, 0x65, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x73, 0x46, 0x6f, - 0x72, 0x57, 0x69, 0x6e, 0x64, 0x6f, 0x77, 0x12, 0x18, 0x2e, 0x73, 0x61, 0x2e, 0x43, 0x6f, 0x75, - 0x6e, 0x74, 0x46, 0x51, 0x44, 0x4e, 0x53, 0x65, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x1a, 0x0e, 0x2e, 0x73, 0x61, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, - 0x73, 0x22, 0x00, 0x12, 0x40, 0x0a, 0x11, 0x47, 0x65, 0x74, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, - 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x32, 0x12, 0x14, 0x2e, 0x73, 0x61, 0x2e, 0x41, 0x75, - 0x74, 0x68, 0x6f, 0x72, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x44, 0x32, 0x1a, 0x13, - 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x7a, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x22, 0x00, 0x12, 0x31, 0x0a, 0x0e, 0x47, 0x65, 0x74, 0x43, 0x65, 0x72, 0x74, - 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x12, 0x0a, 0x2e, 0x73, 0x61, 0x2e, 0x53, 0x65, 0x72, - 0x69, 0x61, 0x6c, 0x1a, 0x11, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x43, 0x65, 0x72, 0x74, 0x69, - 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x22, 0x00, 0x12, 0x38, 0x0a, 0x15, 0x47, 0x65, 0x74, 0x4c, - 0x69, 0x6e, 0x74, 0x50, 0x72, 0x65, 0x63, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, - 0x65, 0x12, 0x0a, 0x2e, 0x73, 0x61, 0x2e, 0x53, 0x65, 0x72, 0x69, 0x61, 0x6c, 0x1a, 0x11, 0x2e, - 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, - 0x22, 0x00, 0x12, 0x3d, 0x0a, 0x14, 0x47, 0x65, 0x74, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, - 0x63, 0x61, 0x74, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x0a, 0x2e, 0x73, 0x61, 0x2e, - 0x53, 0x65, 0x72, 0x69, 0x61, 0x6c, 0x1a, 0x17, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x43, 0x65, - 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x22, - 0x00, 0x12, 0x2b, 0x0a, 0x08, 0x47, 0x65, 0x74, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x12, 0x10, 0x2e, - 0x73, 0x61, 0x2e, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, - 0x0b, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x22, 0x00, 0x12, 0x3e, - 0x0a, 0x10, 0x47, 0x65, 0x74, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x46, 0x6f, 0x72, 0x4e, 0x61, 0x6d, - 0x65, 0x73, 0x12, 0x1b, 0x2e, 0x73, 0x61, 0x2e, 0x47, 0x65, 0x74, 0x4f, 0x72, 0x64, 0x65, 0x72, - 0x46, 0x6f, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, - 0x0b, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x22, 0x00, 0x12, 0x3b, - 0x0a, 0x0f, 0x47, 0x65, 0x74, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x12, 0x12, 0x2e, 0x73, 0x61, 0x2e, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x49, 0x44, 0x1a, 0x12, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x52, 0x65, 0x67, - 0x69, 0x73, 0x74, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x00, 0x12, 0x3c, 0x0a, 0x14, 0x47, - 0x65, 0x74, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x79, - 0x4b, 0x65, 0x79, 0x12, 0x0e, 0x2e, 0x73, 0x61, 0x2e, 0x4a, 0x53, 0x4f, 0x4e, 0x57, 0x65, 0x62, - 0x4b, 0x65, 0x79, 0x1a, 0x12, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x52, 0x65, 0x67, 0x69, 0x73, - 0x74, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x00, 0x12, 0x39, 0x0a, 0x13, 0x47, 0x65, 0x74, - 0x52, 0x65, 0x76, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, - 0x12, 0x0a, 0x2e, 0x73, 0x61, 0x2e, 0x53, 0x65, 0x72, 0x69, 0x61, 0x6c, 0x1a, 0x14, 0x2e, 0x73, - 0x61, 0x2e, 0x52, 0x65, 0x76, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x74, 0x61, 0x74, - 0x75, 0x73, 0x22, 0x00, 0x12, 0x4f, 0x0a, 0x16, 0x47, 0x65, 0x74, 0x52, 0x65, 0x76, 0x6f, 0x6b, - 0x65, 0x64, 0x43, 0x65, 0x72, 0x74, 0x73, 0x42, 0x79, 0x53, 0x68, 0x61, 0x72, 0x64, 0x12, 0x21, - 0x2e, 0x73, 0x61, 0x2e, 0x47, 0x65, 0x74, 0x52, 0x65, 0x76, 0x6f, 0x6b, 0x65, 0x64, 0x43, 0x65, - 0x72, 0x74, 0x73, 0x42, 0x79, 0x53, 0x68, 0x61, 0x72, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x1a, 0x0e, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x43, 0x52, 0x4c, 0x45, 0x6e, 0x74, 0x72, - 0x79, 0x22, 0x00, 0x30, 0x01, 0x12, 0x35, 0x0a, 0x11, 0x47, 0x65, 0x74, 0x53, 0x65, 0x72, 0x69, - 0x61, 0x6c, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x0a, 0x2e, 0x73, 0x61, 0x2e, - 0x53, 0x65, 0x72, 0x69, 0x61, 0x6c, 0x1a, 0x12, 0x2e, 0x73, 0x61, 0x2e, 0x53, 0x65, 0x72, 0x69, - 0x61, 0x6c, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x22, 0x00, 0x12, 0x39, 0x0a, 0x13, - 0x47, 0x65, 0x74, 0x53, 0x65, 0x72, 0x69, 0x61, 0x6c, 0x73, 0x42, 0x79, 0x41, 0x63, 0x63, 0x6f, - 0x75, 0x6e, 0x74, 0x12, 0x12, 0x2e, 0x73, 0x61, 0x2e, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x44, 0x1a, 0x0a, 0x2e, 0x73, 0x61, 0x2e, 0x53, 0x65, 0x72, - 0x69, 0x61, 0x6c, 0x22, 0x00, 0x30, 0x01, 0x12, 0x2f, 0x0a, 0x0f, 0x47, 0x65, 0x74, 0x53, 0x65, - 0x72, 0x69, 0x61, 0x6c, 0x73, 0x42, 0x79, 0x4b, 0x65, 0x79, 0x12, 0x0c, 0x2e, 0x73, 0x61, 0x2e, - 0x53, 0x50, 0x4b, 0x49, 0x48, 0x61, 0x73, 0x68, 0x1a, 0x0a, 0x2e, 0x73, 0x61, 0x2e, 0x53, 0x65, - 0x72, 0x69, 0x61, 0x6c, 0x22, 0x00, 0x30, 0x01, 0x12, 0x52, 0x0a, 0x17, 0x47, 0x65, 0x74, 0x56, + 0x52, 0x09, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x22, 0x79, 0x0a, 0x1d, 0x52, + 0x65, 0x76, 0x6f, 0x6b, 0x65, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x7a, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x46, 0x6f, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x26, 0x0a, 0x0e, + 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x44, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x03, 0x52, 0x0e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x49, 0x44, 0x12, 0x30, 0x0a, 0x0a, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, + 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, + 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x52, 0x0a, 0x69, 0x64, 0x65, 0x6e, + 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x32, 0xed, 0x0d, 0x0a, 0x18, 0x53, 0x74, 0x6f, 0x72, 0x61, + 0x67, 0x65, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x52, 0x65, 0x61, 0x64, 0x4f, + 0x6e, 0x6c, 0x79, 0x12, 0x37, 0x0a, 0x0d, 0x46, 0x51, 0x44, 0x4e, 0x53, 0x65, 0x74, 0x45, 0x78, + 0x69, 0x73, 0x74, 0x73, 0x12, 0x18, 0x2e, 0x73, 0x61, 0x2e, 0x46, 0x51, 0x44, 0x4e, 0x53, 0x65, + 0x74, 0x45, 0x78, 0x69, 0x73, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x0a, + 0x2e, 0x73, 0x61, 0x2e, 0x45, 0x78, 0x69, 0x73, 0x74, 0x73, 0x22, 0x00, 0x12, 0x48, 0x0a, 0x1a, + 0x46, 0x51, 0x44, 0x4e, 0x53, 0x65, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, + 0x73, 0x46, 0x6f, 0x72, 0x57, 0x69, 0x6e, 0x64, 0x6f, 0x77, 0x12, 0x18, 0x2e, 0x73, 0x61, 0x2e, + 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x46, 0x51, 0x44, 0x4e, 0x53, 0x65, 0x74, 0x73, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x1a, 0x0e, 0x2e, 0x73, 0x61, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, + 0x61, 0x6d, 0x70, 0x73, 0x22, 0x00, 0x12, 0x40, 0x0a, 0x11, 0x47, 0x65, 0x74, 0x41, 0x75, 0x74, + 0x68, 0x6f, 0x72, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x32, 0x12, 0x14, 0x2e, 0x73, 0x61, + 0x2e, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x44, + 0x32, 0x1a, 0x13, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, + 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x00, 0x12, 0x31, 0x0a, 0x0e, 0x47, 0x65, 0x74, 0x43, + 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x12, 0x0a, 0x2e, 0x73, 0x61, 0x2e, + 0x53, 0x65, 0x72, 0x69, 0x61, 0x6c, 0x1a, 0x11, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x43, 0x65, + 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x22, 0x00, 0x12, 0x38, 0x0a, 0x15, 0x47, + 0x65, 0x74, 0x4c, 0x69, 0x6e, 0x74, 0x50, 0x72, 0x65, 0x63, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, + 0x63, 0x61, 0x74, 0x65, 0x12, 0x0a, 0x2e, 0x73, 0x61, 0x2e, 0x53, 0x65, 0x72, 0x69, 0x61, 0x6c, + 0x1a, 0x11, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, + 0x61, 0x74, 0x65, 0x22, 0x00, 0x12, 0x3d, 0x0a, 0x14, 0x47, 0x65, 0x74, 0x43, 0x65, 0x72, 0x74, + 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x0a, 0x2e, + 0x73, 0x61, 0x2e, 0x53, 0x65, 0x72, 0x69, 0x61, 0x6c, 0x1a, 0x17, 0x2e, 0x63, 0x6f, 0x72, 0x65, + 0x2e, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x53, 0x74, 0x61, 0x74, + 0x75, 0x73, 0x22, 0x00, 0x12, 0x2b, 0x0a, 0x08, 0x47, 0x65, 0x74, 0x4f, 0x72, 0x64, 0x65, 0x72, + 0x12, 0x10, 0x2e, 0x73, 0x61, 0x2e, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x1a, 0x0b, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x22, + 0x00, 0x12, 0x3e, 0x0a, 0x10, 0x47, 0x65, 0x74, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x46, 0x6f, 0x72, + 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x12, 0x1b, 0x2e, 0x73, 0x61, 0x2e, 0x47, 0x65, 0x74, 0x4f, 0x72, + 0x64, 0x65, 0x72, 0x46, 0x6f, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x1a, 0x0b, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x22, + 0x00, 0x12, 0x3b, 0x0a, 0x0f, 0x47, 0x65, 0x74, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x12, 0x2e, 0x73, 0x61, 0x2e, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, + 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x44, 0x1a, 0x12, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, + 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x00, 0x12, 0x3c, + 0x0a, 0x14, 0x47, 0x65, 0x74, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x42, 0x79, 0x4b, 0x65, 0x79, 0x12, 0x0e, 0x2e, 0x73, 0x61, 0x2e, 0x4a, 0x53, 0x4f, 0x4e, + 0x57, 0x65, 0x62, 0x4b, 0x65, 0x79, 0x1a, 0x12, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x52, 0x65, + 0x67, 0x69, 0x73, 0x74, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x00, 0x12, 0x39, 0x0a, 0x13, + 0x47, 0x65, 0x74, 0x52, 0x65, 0x76, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x74, 0x61, + 0x74, 0x75, 0x73, 0x12, 0x0a, 0x2e, 0x73, 0x61, 0x2e, 0x53, 0x65, 0x72, 0x69, 0x61, 0x6c, 0x1a, + 0x14, 0x2e, 0x73, 0x61, 0x2e, 0x52, 0x65, 0x76, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, + 0x74, 0x61, 0x74, 0x75, 0x73, 0x22, 0x00, 0x12, 0x4f, 0x0a, 0x16, 0x47, 0x65, 0x74, 0x52, 0x65, + 0x76, 0x6f, 0x6b, 0x65, 0x64, 0x43, 0x65, 0x72, 0x74, 0x73, 0x42, 0x79, 0x53, 0x68, 0x61, 0x72, + 0x64, 0x12, 0x21, 0x2e, 0x73, 0x61, 0x2e, 0x47, 0x65, 0x74, 0x52, 0x65, 0x76, 0x6f, 0x6b, 0x65, + 0x64, 0x43, 0x65, 0x72, 0x74, 0x73, 0x42, 0x79, 0x53, 0x68, 0x61, 0x72, 0x64, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x1a, 0x0e, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x43, 0x52, 0x4c, 0x45, + 0x6e, 0x74, 0x72, 0x79, 0x22, 0x00, 0x30, 0x01, 0x12, 0x35, 0x0a, 0x11, 0x47, 0x65, 0x74, 0x53, + 0x65, 0x72, 0x69, 0x61, 0x6c, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x0a, 0x2e, + 0x73, 0x61, 0x2e, 0x53, 0x65, 0x72, 0x69, 0x61, 0x6c, 0x1a, 0x12, 0x2e, 0x73, 0x61, 0x2e, 0x53, + 0x65, 0x72, 0x69, 0x61, 0x6c, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x22, 0x00, 0x12, + 0x39, 0x0a, 0x13, 0x47, 0x65, 0x74, 0x53, 0x65, 0x72, 0x69, 0x61, 0x6c, 0x73, 0x42, 0x79, 0x41, + 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x12, 0x2e, 0x73, 0x61, 0x2e, 0x52, 0x65, 0x67, 0x69, + 0x73, 0x74, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x44, 0x1a, 0x0a, 0x2e, 0x73, 0x61, 0x2e, + 0x53, 0x65, 0x72, 0x69, 0x61, 0x6c, 0x22, 0x00, 0x30, 0x01, 0x12, 0x2f, 0x0a, 0x0f, 0x47, 0x65, + 0x74, 0x53, 0x65, 0x72, 0x69, 0x61, 0x6c, 0x73, 0x42, 0x79, 0x4b, 0x65, 0x79, 0x12, 0x0c, 0x2e, + 0x73, 0x61, 0x2e, 0x53, 0x50, 0x4b, 0x49, 0x48, 0x61, 0x73, 0x68, 0x1a, 0x0a, 0x2e, 0x73, 0x61, + 0x2e, 0x53, 0x65, 0x72, 0x69, 0x61, 0x6c, 0x22, 0x00, 0x30, 0x01, 0x12, 0x52, 0x0a, 0x17, 0x47, + 0x65, 0x74, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x7a, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x32, 0x12, 0x21, 0x2e, 0x73, 0x61, 0x2e, 0x47, 0x65, 0x74, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x73, 0x32, 0x12, 0x21, 0x2e, 0x73, 0x61, 0x2e, 0x47, 0x65, 0x74, 0x56, 0x61, 0x6c, 0x69, - 0x64, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x12, 0x2e, 0x73, 0x61, 0x2e, 0x41, 0x75, 0x74, 0x68, - 0x6f, 0x72, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x22, 0x00, 0x12, 0x57, 0x0a, 0x1c, - 0x47, 0x65, 0x74, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x41, 0x75, 0x74, - 0x68, 0x6f, 0x72, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x32, 0x12, 0x21, 0x2e, 0x73, - 0x61, 0x2e, 0x47, 0x65, 0x74, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, - 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, - 0x12, 0x2e, 0x73, 0x61, 0x2e, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x7a, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x73, 0x22, 0x00, 0x12, 0x51, 0x0a, 0x16, 0x47, 0x65, 0x74, 0x4f, 0x72, 0x64, 0x65, - 0x72, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, + 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x12, 0x2e, 0x73, 0x61, 0x2e, 0x41, + 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x22, 0x00, 0x12, + 0x57, 0x0a, 0x1c, 0x47, 0x65, 0x74, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x4f, 0x72, 0x64, 0x65, 0x72, + 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x32, 0x12, 0x21, 0x2e, 0x73, 0x61, 0x2e, 0x47, 0x65, 0x74, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x12, 0x2e, 0x73, 0x61, 0x2e, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x7a, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x22, 0x00, 0x12, 0x31, 0x0a, 0x12, 0x49, 0x6e, 0x63, 0x69, - 0x64, 0x65, 0x6e, 0x74, 0x73, 0x46, 0x6f, 0x72, 0x53, 0x65, 0x72, 0x69, 0x61, 0x6c, 0x12, 0x0a, - 0x2e, 0x73, 0x61, 0x2e, 0x53, 0x65, 0x72, 0x69, 0x61, 0x6c, 0x1a, 0x0d, 0x2e, 0x73, 0x61, 0x2e, - 0x49, 0x6e, 0x63, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x73, 0x22, 0x00, 0x12, 0x28, 0x0a, 0x0a, 0x4b, - 0x65, 0x79, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x65, 0x64, 0x12, 0x0c, 0x2e, 0x73, 0x61, 0x2e, 0x53, - 0x50, 0x4b, 0x49, 0x48, 0x61, 0x73, 0x68, 0x1a, 0x0a, 0x2e, 0x73, 0x61, 0x2e, 0x45, 0x78, 0x69, - 0x73, 0x74, 0x73, 0x22, 0x00, 0x12, 0x38, 0x0a, 0x0d, 0x4c, 0x69, 0x73, 0x74, 0x49, 0x6e, 0x63, - 0x69, 0x64, 0x65, 0x6e, 0x74, 0x73, 0x12, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, - 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x1a, 0x0d, - 0x2e, 0x73, 0x61, 0x2e, 0x49, 0x6e, 0x63, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x73, 0x22, 0x00, 0x12, - 0x32, 0x0a, 0x16, 0x52, 0x65, 0x70, 0x6c, 0x61, 0x63, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x4f, 0x72, - 0x64, 0x65, 0x72, 0x45, 0x78, 0x69, 0x73, 0x74, 0x73, 0x12, 0x0a, 0x2e, 0x73, 0x61, 0x2e, 0x53, - 0x65, 0x72, 0x69, 0x61, 0x6c, 0x1a, 0x0a, 0x2e, 0x73, 0x61, 0x2e, 0x45, 0x78, 0x69, 0x73, 0x74, - 0x73, 0x22, 0x00, 0x12, 0x4b, 0x0a, 0x12, 0x53, 0x65, 0x72, 0x69, 0x61, 0x6c, 0x73, 0x46, 0x6f, - 0x72, 0x49, 0x6e, 0x63, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x12, 0x1d, 0x2e, 0x73, 0x61, 0x2e, 0x53, - 0x65, 0x72, 0x69, 0x61, 0x6c, 0x73, 0x46, 0x6f, 0x72, 0x49, 0x6e, 0x63, 0x69, 0x64, 0x65, 0x6e, - 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x12, 0x2e, 0x73, 0x61, 0x2e, 0x49, 0x6e, - 0x63, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x53, 0x65, 0x72, 0x69, 0x61, 0x6c, 0x22, 0x00, 0x30, 0x01, - 0x12, 0x3d, 0x0a, 0x16, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, - 0x69, 0x65, 0x72, 0x73, 0x50, 0x61, 0x75, 0x73, 0x65, 0x64, 0x12, 0x10, 0x2e, 0x73, 0x61, 0x2e, - 0x50, 0x61, 0x75, 0x73, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x0f, 0x2e, 0x73, - 0x61, 0x2e, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x22, 0x00, 0x12, - 0x3d, 0x0a, 0x14, 0x47, 0x65, 0x74, 0x50, 0x61, 0x75, 0x73, 0x65, 0x64, 0x49, 0x64, 0x65, 0x6e, - 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x12, 0x12, 0x2e, 0x73, 0x61, 0x2e, 0x52, 0x65, 0x67, - 0x69, 0x73, 0x74, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x44, 0x1a, 0x0f, 0x2e, 0x73, 0x61, - 0x2e, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x22, 0x00, 0x12, 0x58, - 0x0a, 0x14, 0x47, 0x65, 0x74, 0x52, 0x61, 0x74, 0x65, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x4f, 0x76, - 0x65, 0x72, 0x72, 0x69, 0x64, 0x65, 0x12, 0x1f, 0x2e, 0x73, 0x61, 0x2e, 0x47, 0x65, 0x74, 0x52, - 0x61, 0x74, 0x65, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x4f, 0x76, 0x65, 0x72, 0x72, 0x69, 0x64, 0x65, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1d, 0x2e, 0x73, 0x61, 0x2e, 0x52, 0x61, 0x74, - 0x65, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x4f, 0x76, 0x65, 0x72, 0x72, 0x69, 0x64, 0x65, 0x52, 0x65, - 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x59, 0x0a, 0x1c, 0x47, 0x65, 0x74, 0x45, - 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x52, 0x61, 0x74, 0x65, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x4f, - 0x76, 0x65, 0x72, 0x72, 0x69, 0x64, 0x65, 0x73, 0x12, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, - 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, - 0x1a, 0x1d, 0x2e, 0x73, 0x61, 0x2e, 0x52, 0x61, 0x74, 0x65, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x4f, - 0x76, 0x65, 0x72, 0x72, 0x69, 0x64, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, - 0x00, 0x30, 0x01, 0x12, 0x43, 0x0a, 0x0d, 0x41, 0x64, 0x64, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x65, - 0x64, 0x4b, 0x65, 0x79, 0x12, 0x18, 0x2e, 0x73, 0x61, 0x2e, 0x41, 0x64, 0x64, 0x42, 0x6c, 0x6f, - 0x63, 0x6b, 0x65, 0x64, 0x4b, 0x65, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x16, - 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, - 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x22, 0x00, 0x12, 0x45, 0x0a, 0x0e, 0x41, 0x64, 0x64, 0x43, - 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x12, 0x19, 0x2e, 0x73, 0x61, 0x2e, - 0x41, 0x64, 0x64, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, - 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x22, 0x00, 0x12, - 0x48, 0x0a, 0x11, 0x41, 0x64, 0x64, 0x50, 0x72, 0x65, 0x63, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, - 0x63, 0x61, 0x74, 0x65, 0x12, 0x19, 0x2e, 0x73, 0x61, 0x2e, 0x41, 0x64, 0x64, 0x43, 0x65, 0x72, - 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, - 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, - 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x22, 0x00, 0x12, 0x3b, 0x0a, 0x09, 0x41, 0x64, 0x64, - 0x53, 0x65, 0x72, 0x69, 0x61, 0x6c, 0x12, 0x14, 0x2e, 0x73, 0x61, 0x2e, 0x41, 0x64, 0x64, 0x53, - 0x65, 0x72, 0x69, 0x61, 0x6c, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x16, 0x2e, 0x67, - 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, - 0x6d, 0x70, 0x74, 0x79, 0x22, 0x00, 0x12, 0x4a, 0x0a, 0x18, 0x44, 0x65, 0x61, 0x63, 0x74, 0x69, - 0x76, 0x61, 0x74, 0x65, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x32, 0x12, 0x14, 0x2e, 0x73, 0x61, 0x2e, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x7a, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x44, 0x32, 0x1a, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, - 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, - 0x22, 0x00, 0x12, 0x42, 0x0a, 0x16, 0x44, 0x65, 0x61, 0x63, 0x74, 0x69, 0x76, 0x61, 0x74, 0x65, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x22, 0x00, 0x12, 0x51, 0x0a, 0x16, 0x47, 0x65, 0x74, 0x4f, + 0x72, 0x64, 0x65, 0x72, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x73, 0x12, 0x21, 0x2e, 0x73, 0x61, 0x2e, 0x47, 0x65, 0x74, 0x4f, 0x72, 0x64, 0x65, 0x72, + 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x12, 0x2e, 0x73, 0x61, 0x2e, 0x41, 0x75, 0x74, 0x68, 0x6f, + 0x72, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x22, 0x00, 0x12, 0x31, 0x0a, 0x12, 0x49, + 0x6e, 0x63, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x73, 0x46, 0x6f, 0x72, 0x53, 0x65, 0x72, 0x69, 0x61, + 0x6c, 0x12, 0x0a, 0x2e, 0x73, 0x61, 0x2e, 0x53, 0x65, 0x72, 0x69, 0x61, 0x6c, 0x1a, 0x0d, 0x2e, + 0x73, 0x61, 0x2e, 0x49, 0x6e, 0x63, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x73, 0x22, 0x00, 0x12, 0x28, + 0x0a, 0x0a, 0x4b, 0x65, 0x79, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x65, 0x64, 0x12, 0x0c, 0x2e, 0x73, + 0x61, 0x2e, 0x53, 0x50, 0x4b, 0x49, 0x48, 0x61, 0x73, 0x68, 0x1a, 0x0a, 0x2e, 0x73, 0x61, 0x2e, + 0x45, 0x78, 0x69, 0x73, 0x74, 0x73, 0x22, 0x00, 0x12, 0x38, 0x0a, 0x0d, 0x4c, 0x69, 0x73, 0x74, + 0x49, 0x6e, 0x63, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x73, 0x12, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, + 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, + 0x79, 0x1a, 0x0d, 0x2e, 0x73, 0x61, 0x2e, 0x49, 0x6e, 0x63, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x73, + 0x22, 0x00, 0x12, 0x32, 0x0a, 0x16, 0x52, 0x65, 0x70, 0x6c, 0x61, 0x63, 0x65, 0x6d, 0x65, 0x6e, + 0x74, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x45, 0x78, 0x69, 0x73, 0x74, 0x73, 0x12, 0x0a, 0x2e, 0x73, + 0x61, 0x2e, 0x53, 0x65, 0x72, 0x69, 0x61, 0x6c, 0x1a, 0x0a, 0x2e, 0x73, 0x61, 0x2e, 0x45, 0x78, + 0x69, 0x73, 0x74, 0x73, 0x22, 0x00, 0x12, 0x4b, 0x0a, 0x12, 0x53, 0x65, 0x72, 0x69, 0x61, 0x6c, + 0x73, 0x46, 0x6f, 0x72, 0x49, 0x6e, 0x63, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x12, 0x1d, 0x2e, 0x73, + 0x61, 0x2e, 0x53, 0x65, 0x72, 0x69, 0x61, 0x6c, 0x73, 0x46, 0x6f, 0x72, 0x49, 0x6e, 0x63, 0x69, + 0x64, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x12, 0x2e, 0x73, 0x61, + 0x2e, 0x49, 0x6e, 0x63, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x53, 0x65, 0x72, 0x69, 0x61, 0x6c, 0x22, + 0x00, 0x30, 0x01, 0x12, 0x3d, 0x0a, 0x16, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x49, 0x64, 0x65, 0x6e, + 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x50, 0x61, 0x75, 0x73, 0x65, 0x64, 0x12, 0x10, 0x2e, + 0x73, 0x61, 0x2e, 0x50, 0x61, 0x75, 0x73, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, + 0x0f, 0x2e, 0x73, 0x61, 0x2e, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, + 0x22, 0x00, 0x12, 0x3d, 0x0a, 0x14, 0x47, 0x65, 0x74, 0x50, 0x61, 0x75, 0x73, 0x65, 0x64, 0x49, + 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x12, 0x12, 0x2e, 0x73, 0x61, 0x2e, + 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x44, 0x1a, 0x0f, + 0x2e, 0x73, 0x61, 0x2e, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x22, + 0x00, 0x12, 0x58, 0x0a, 0x14, 0x47, 0x65, 0x74, 0x52, 0x61, 0x74, 0x65, 0x4c, 0x69, 0x6d, 0x69, + 0x74, 0x4f, 0x76, 0x65, 0x72, 0x72, 0x69, 0x64, 0x65, 0x12, 0x1f, 0x2e, 0x73, 0x61, 0x2e, 0x47, + 0x65, 0x74, 0x52, 0x61, 0x74, 0x65, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x4f, 0x76, 0x65, 0x72, 0x72, + 0x69, 0x64, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1d, 0x2e, 0x73, 0x61, 0x2e, + 0x52, 0x61, 0x74, 0x65, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x4f, 0x76, 0x65, 0x72, 0x72, 0x69, 0x64, + 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x59, 0x0a, 0x1c, 0x47, + 0x65, 0x74, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x52, 0x61, 0x74, 0x65, 0x4c, 0x69, 0x6d, + 0x69, 0x74, 0x4f, 0x76, 0x65, 0x72, 0x72, 0x69, 0x64, 0x65, 0x73, 0x12, 0x16, 0x2e, 0x67, 0x6f, + 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, + 0x70, 0x74, 0x79, 0x1a, 0x1d, 0x2e, 0x73, 0x61, 0x2e, 0x52, 0x61, 0x74, 0x65, 0x4c, 0x69, 0x6d, + 0x69, 0x74, 0x4f, 0x76, 0x65, 0x72, 0x72, 0x69, 0x64, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, + 0x73, 0x65, 0x22, 0x00, 0x30, 0x01, 0x32, 0x8b, 0x1b, 0x0a, 0x10, 0x53, 0x74, 0x6f, 0x72, 0x61, + 0x67, 0x65, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x12, 0x37, 0x0a, 0x0d, 0x46, + 0x51, 0x44, 0x4e, 0x53, 0x65, 0x74, 0x45, 0x78, 0x69, 0x73, 0x74, 0x73, 0x12, 0x18, 0x2e, 0x73, + 0x61, 0x2e, 0x46, 0x51, 0x44, 0x4e, 0x53, 0x65, 0x74, 0x45, 0x78, 0x69, 0x73, 0x74, 0x73, 0x52, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x0a, 0x2e, 0x73, 0x61, 0x2e, 0x45, 0x78, 0x69, 0x73, + 0x74, 0x73, 0x22, 0x00, 0x12, 0x48, 0x0a, 0x1a, 0x46, 0x51, 0x44, 0x4e, 0x53, 0x65, 0x74, 0x54, + 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x73, 0x46, 0x6f, 0x72, 0x57, 0x69, 0x6e, 0x64, + 0x6f, 0x77, 0x12, 0x18, 0x2e, 0x73, 0x61, 0x2e, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x46, 0x51, 0x44, + 0x4e, 0x53, 0x65, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x0e, 0x2e, 0x73, + 0x61, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x73, 0x22, 0x00, 0x12, 0x40, + 0x0a, 0x11, 0x47, 0x65, 0x74, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x7a, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x32, 0x12, 0x14, 0x2e, 0x73, 0x61, 0x2e, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, + 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x44, 0x32, 0x1a, 0x13, 0x2e, 0x63, 0x6f, 0x72, 0x65, + 0x2e, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x00, + 0x12, 0x31, 0x0a, 0x0e, 0x47, 0x65, 0x74, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, + 0x74, 0x65, 0x12, 0x0a, 0x2e, 0x73, 0x61, 0x2e, 0x53, 0x65, 0x72, 0x69, 0x61, 0x6c, 0x1a, 0x11, + 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, + 0x65, 0x22, 0x00, 0x12, 0x38, 0x0a, 0x15, 0x47, 0x65, 0x74, 0x4c, 0x69, 0x6e, 0x74, 0x50, 0x72, + 0x65, 0x63, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x12, 0x0a, 0x2e, 0x73, + 0x61, 0x2e, 0x53, 0x65, 0x72, 0x69, 0x61, 0x6c, 0x1a, 0x11, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, + 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x22, 0x00, 0x12, 0x3d, 0x0a, + 0x14, 0x47, 0x65, 0x74, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x53, + 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x0a, 0x2e, 0x73, 0x61, 0x2e, 0x53, 0x65, 0x72, 0x69, 0x61, + 0x6c, 0x1a, 0x17, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, + 0x63, 0x61, 0x74, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x22, 0x00, 0x12, 0x2b, 0x0a, 0x08, + 0x47, 0x65, 0x74, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x12, 0x10, 0x2e, 0x73, 0x61, 0x2e, 0x4f, 0x72, + 0x64, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x0b, 0x2e, 0x63, 0x6f, 0x72, + 0x65, 0x2e, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x22, 0x00, 0x12, 0x3e, 0x0a, 0x10, 0x47, 0x65, 0x74, + 0x4f, 0x72, 0x64, 0x65, 0x72, 0x46, 0x6f, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x12, 0x1b, 0x2e, + 0x73, 0x61, 0x2e, 0x47, 0x65, 0x74, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x46, 0x6f, 0x72, 0x4e, 0x61, + 0x6d, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x0b, 0x2e, 0x63, 0x6f, 0x72, + 0x65, 0x2e, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x22, 0x00, 0x12, 0x3b, 0x0a, 0x0f, 0x47, 0x65, 0x74, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x12, 0x2e, 0x73, 0x61, 0x2e, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x44, 0x1a, 0x12, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x00, 0x12, 0x54, 0x0a, 0x16, 0x46, 0x69, 0x6e, 0x61, 0x6c, 0x69, - 0x7a, 0x65, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x32, - 0x12, 0x20, 0x2e, 0x73, 0x61, 0x2e, 0x46, 0x69, 0x6e, 0x61, 0x6c, 0x69, 0x7a, 0x65, 0x41, 0x75, - 0x74, 0x68, 0x6f, 0x72, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x1a, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, - 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x22, 0x00, 0x12, 0x43, 0x0a, 0x0d, - 0x46, 0x69, 0x6e, 0x61, 0x6c, 0x69, 0x7a, 0x65, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x12, 0x18, 0x2e, - 0x73, 0x61, 0x2e, 0x46, 0x69, 0x6e, 0x61, 0x6c, 0x69, 0x7a, 0x65, 0x4f, 0x72, 0x64, 0x65, 0x72, + 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x00, 0x12, 0x3c, 0x0a, 0x14, 0x47, 0x65, 0x74, 0x52, 0x65, 0x67, + 0x69, 0x73, 0x74, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x79, 0x4b, 0x65, 0x79, 0x12, 0x0e, + 0x2e, 0x73, 0x61, 0x2e, 0x4a, 0x53, 0x4f, 0x4e, 0x57, 0x65, 0x62, 0x4b, 0x65, 0x79, 0x1a, 0x12, + 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x22, 0x00, 0x12, 0x39, 0x0a, 0x13, 0x47, 0x65, 0x74, 0x52, 0x65, 0x76, 0x6f, 0x63, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x0a, 0x2e, 0x73, 0x61, + 0x2e, 0x53, 0x65, 0x72, 0x69, 0x61, 0x6c, 0x1a, 0x14, 0x2e, 0x73, 0x61, 0x2e, 0x52, 0x65, 0x76, + 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x22, 0x00, 0x12, + 0x4f, 0x0a, 0x16, 0x47, 0x65, 0x74, 0x52, 0x65, 0x76, 0x6f, 0x6b, 0x65, 0x64, 0x43, 0x65, 0x72, + 0x74, 0x73, 0x42, 0x79, 0x53, 0x68, 0x61, 0x72, 0x64, 0x12, 0x21, 0x2e, 0x73, 0x61, 0x2e, 0x47, + 0x65, 0x74, 0x52, 0x65, 0x76, 0x6f, 0x6b, 0x65, 0x64, 0x43, 0x65, 0x72, 0x74, 0x73, 0x42, 0x79, + 0x53, 0x68, 0x61, 0x72, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x0e, 0x2e, 0x63, + 0x6f, 0x72, 0x65, 0x2e, 0x43, 0x52, 0x4c, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x22, 0x00, 0x30, 0x01, + 0x12, 0x35, 0x0a, 0x11, 0x47, 0x65, 0x74, 0x53, 0x65, 0x72, 0x69, 0x61, 0x6c, 0x4d, 0x65, 0x74, + 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x0a, 0x2e, 0x73, 0x61, 0x2e, 0x53, 0x65, 0x72, 0x69, 0x61, + 0x6c, 0x1a, 0x12, 0x2e, 0x73, 0x61, 0x2e, 0x53, 0x65, 0x72, 0x69, 0x61, 0x6c, 0x4d, 0x65, 0x74, + 0x61, 0x64, 0x61, 0x74, 0x61, 0x22, 0x00, 0x12, 0x39, 0x0a, 0x13, 0x47, 0x65, 0x74, 0x53, 0x65, + 0x72, 0x69, 0x61, 0x6c, 0x73, 0x42, 0x79, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x12, + 0x2e, 0x73, 0x61, 0x2e, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x49, 0x44, 0x1a, 0x0a, 0x2e, 0x73, 0x61, 0x2e, 0x53, 0x65, 0x72, 0x69, 0x61, 0x6c, 0x22, 0x00, + 0x30, 0x01, 0x12, 0x2f, 0x0a, 0x0f, 0x47, 0x65, 0x74, 0x53, 0x65, 0x72, 0x69, 0x61, 0x6c, 0x73, + 0x42, 0x79, 0x4b, 0x65, 0x79, 0x12, 0x0c, 0x2e, 0x73, 0x61, 0x2e, 0x53, 0x50, 0x4b, 0x49, 0x48, + 0x61, 0x73, 0x68, 0x1a, 0x0a, 0x2e, 0x73, 0x61, 0x2e, 0x53, 0x65, 0x72, 0x69, 0x61, 0x6c, 0x22, + 0x00, 0x30, 0x01, 0x12, 0x52, 0x0a, 0x17, 0x47, 0x65, 0x74, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x41, + 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x32, 0x12, 0x21, + 0x2e, 0x73, 0x61, 0x2e, 0x47, 0x65, 0x74, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x41, 0x75, 0x74, 0x68, + 0x6f, 0x72, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x1a, 0x12, 0x2e, 0x73, 0x61, 0x2e, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x7a, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x22, 0x00, 0x12, 0x57, 0x0a, 0x1c, 0x47, 0x65, 0x74, 0x56, 0x61, + 0x6c, 0x69, 0x64, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x7a, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x32, 0x12, 0x21, 0x2e, 0x73, 0x61, 0x2e, 0x47, 0x65, 0x74, + 0x4f, 0x72, 0x64, 0x65, 0x72, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x7a, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x12, 0x2e, 0x73, 0x61, 0x2e, + 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x22, 0x00, + 0x12, 0x51, 0x0a, 0x16, 0x47, 0x65, 0x74, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x41, 0x75, 0x74, 0x68, + 0x6f, 0x72, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x21, 0x2e, 0x73, 0x61, 0x2e, + 0x47, 0x65, 0x74, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x7a, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x12, 0x2e, + 0x73, 0x61, 0x2e, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x73, 0x22, 0x00, 0x12, 0x31, 0x0a, 0x12, 0x49, 0x6e, 0x63, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x73, + 0x46, 0x6f, 0x72, 0x53, 0x65, 0x72, 0x69, 0x61, 0x6c, 0x12, 0x0a, 0x2e, 0x73, 0x61, 0x2e, 0x53, + 0x65, 0x72, 0x69, 0x61, 0x6c, 0x1a, 0x0d, 0x2e, 0x73, 0x61, 0x2e, 0x49, 0x6e, 0x63, 0x69, 0x64, + 0x65, 0x6e, 0x74, 0x73, 0x22, 0x00, 0x12, 0x28, 0x0a, 0x0a, 0x4b, 0x65, 0x79, 0x42, 0x6c, 0x6f, + 0x63, 0x6b, 0x65, 0x64, 0x12, 0x0c, 0x2e, 0x73, 0x61, 0x2e, 0x53, 0x50, 0x4b, 0x49, 0x48, 0x61, + 0x73, 0x68, 0x1a, 0x0a, 0x2e, 0x73, 0x61, 0x2e, 0x45, 0x78, 0x69, 0x73, 0x74, 0x73, 0x22, 0x00, + 0x12, 0x38, 0x0a, 0x0d, 0x4c, 0x69, 0x73, 0x74, 0x49, 0x6e, 0x63, 0x69, 0x64, 0x65, 0x6e, 0x74, + 0x73, 0x12, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x1a, 0x0d, 0x2e, 0x73, 0x61, 0x2e, 0x49, + 0x6e, 0x63, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x73, 0x22, 0x00, 0x12, 0x32, 0x0a, 0x16, 0x52, 0x65, + 0x70, 0x6c, 0x61, 0x63, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x45, 0x78, + 0x69, 0x73, 0x74, 0x73, 0x12, 0x0a, 0x2e, 0x73, 0x61, 0x2e, 0x53, 0x65, 0x72, 0x69, 0x61, 0x6c, + 0x1a, 0x0a, 0x2e, 0x73, 0x61, 0x2e, 0x45, 0x78, 0x69, 0x73, 0x74, 0x73, 0x22, 0x00, 0x12, 0x4b, + 0x0a, 0x12, 0x53, 0x65, 0x72, 0x69, 0x61, 0x6c, 0x73, 0x46, 0x6f, 0x72, 0x49, 0x6e, 0x63, 0x69, + 0x64, 0x65, 0x6e, 0x74, 0x12, 0x1d, 0x2e, 0x73, 0x61, 0x2e, 0x53, 0x65, 0x72, 0x69, 0x61, 0x6c, + 0x73, 0x46, 0x6f, 0x72, 0x49, 0x6e, 0x63, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x1a, 0x12, 0x2e, 0x73, 0x61, 0x2e, 0x49, 0x6e, 0x63, 0x69, 0x64, 0x65, 0x6e, + 0x74, 0x53, 0x65, 0x72, 0x69, 0x61, 0x6c, 0x22, 0x00, 0x30, 0x01, 0x12, 0x3d, 0x0a, 0x16, 0x43, + 0x68, 0x65, 0x63, 0x6b, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x50, + 0x61, 0x75, 0x73, 0x65, 0x64, 0x12, 0x10, 0x2e, 0x73, 0x61, 0x2e, 0x50, 0x61, 0x75, 0x73, 0x65, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x0f, 0x2e, 0x73, 0x61, 0x2e, 0x49, 0x64, 0x65, + 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x22, 0x00, 0x12, 0x3d, 0x0a, 0x14, 0x47, 0x65, + 0x74, 0x50, 0x61, 0x75, 0x73, 0x65, 0x64, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, + 0x72, 0x73, 0x12, 0x12, 0x2e, 0x73, 0x61, 0x2e, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x44, 0x1a, 0x0f, 0x2e, 0x73, 0x61, 0x2e, 0x49, 0x64, 0x65, 0x6e, + 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x22, 0x00, 0x12, 0x58, 0x0a, 0x14, 0x47, 0x65, 0x74, + 0x52, 0x61, 0x74, 0x65, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x4f, 0x76, 0x65, 0x72, 0x72, 0x69, 0x64, + 0x65, 0x12, 0x1f, 0x2e, 0x73, 0x61, 0x2e, 0x47, 0x65, 0x74, 0x52, 0x61, 0x74, 0x65, 0x4c, 0x69, + 0x6d, 0x69, 0x74, 0x4f, 0x76, 0x65, 0x72, 0x72, 0x69, 0x64, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x1a, 0x1d, 0x2e, 0x73, 0x61, 0x2e, 0x52, 0x61, 0x74, 0x65, 0x4c, 0x69, 0x6d, 0x69, + 0x74, 0x4f, 0x76, 0x65, 0x72, 0x72, 0x69, 0x64, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, + 0x65, 0x22, 0x00, 0x12, 0x59, 0x0a, 0x1c, 0x47, 0x65, 0x74, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, + 0x64, 0x52, 0x61, 0x74, 0x65, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x4f, 0x76, 0x65, 0x72, 0x72, 0x69, + 0x64, 0x65, 0x73, 0x12, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x1a, 0x1d, 0x2e, 0x73, 0x61, + 0x2e, 0x52, 0x61, 0x74, 0x65, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x4f, 0x76, 0x65, 0x72, 0x72, 0x69, + 0x64, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x30, 0x01, 0x12, 0x43, + 0x0a, 0x0d, 0x41, 0x64, 0x64, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x65, 0x64, 0x4b, 0x65, 0x79, 0x12, + 0x18, 0x2e, 0x73, 0x61, 0x2e, 0x41, 0x64, 0x64, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x65, 0x64, 0x4b, + 0x65, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, + 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, + 0x79, 0x22, 0x00, 0x12, 0x45, 0x0a, 0x0e, 0x41, 0x64, 0x64, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, + 0x69, 0x63, 0x61, 0x74, 0x65, 0x12, 0x19, 0x2e, 0x73, 0x61, 0x2e, 0x41, 0x64, 0x64, 0x43, 0x65, + 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x1a, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, + 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x22, 0x00, 0x12, 0x48, 0x0a, 0x11, 0x41, 0x64, + 0x64, 0x50, 0x72, 0x65, 0x63, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x12, + 0x19, 0x2e, 0x73, 0x61, 0x2e, 0x41, 0x64, 0x64, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, + 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x16, 0x2e, 0x67, 0x6f, 0x6f, + 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, + 0x74, 0x79, 0x22, 0x00, 0x12, 0x3b, 0x0a, 0x09, 0x41, 0x64, 0x64, 0x53, 0x65, 0x72, 0x69, 0x61, + 0x6c, 0x12, 0x14, 0x2e, 0x73, 0x61, 0x2e, 0x41, 0x64, 0x64, 0x53, 0x65, 0x72, 0x69, 0x61, 0x6c, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x22, - 0x00, 0x12, 0x40, 0x0a, 0x11, 0x4e, 0x65, 0x77, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x41, 0x6e, 0x64, - 0x41, 0x75, 0x74, 0x68, 0x7a, 0x73, 0x12, 0x1c, 0x2e, 0x73, 0x61, 0x2e, 0x4e, 0x65, 0x77, 0x4f, - 0x72, 0x64, 0x65, 0x72, 0x41, 0x6e, 0x64, 0x41, 0x75, 0x74, 0x68, 0x7a, 0x73, 0x52, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x1a, 0x0b, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x4f, 0x72, 0x64, 0x65, - 0x72, 0x22, 0x00, 0x12, 0x3b, 0x0a, 0x0f, 0x4e, 0x65, 0x77, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, - 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x12, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x52, 0x65, - 0x67, 0x69, 0x73, 0x74, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x1a, 0x12, 0x2e, 0x63, 0x6f, 0x72, - 0x65, 0x2e, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x00, - 0x12, 0x4b, 0x0a, 0x11, 0x52, 0x65, 0x76, 0x6f, 0x6b, 0x65, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, - 0x69, 0x63, 0x61, 0x74, 0x65, 0x12, 0x1c, 0x2e, 0x73, 0x61, 0x2e, 0x52, 0x65, 0x76, 0x6f, 0x6b, - 0x65, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, + 0x00, 0x12, 0x4a, 0x0a, 0x18, 0x44, 0x65, 0x61, 0x63, 0x74, 0x69, 0x76, 0x61, 0x74, 0x65, 0x41, + 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x32, 0x12, 0x14, 0x2e, + 0x73, 0x61, 0x2e, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x49, 0x44, 0x32, 0x1a, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x22, 0x00, 0x12, 0x42, 0x0a, + 0x16, 0x44, 0x65, 0x61, 0x63, 0x74, 0x69, 0x76, 0x61, 0x74, 0x65, 0x52, 0x65, 0x67, 0x69, 0x73, + 0x74, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x12, 0x2e, 0x73, 0x61, 0x2e, 0x52, 0x65, 0x67, + 0x69, 0x73, 0x74, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x44, 0x1a, 0x12, 0x2e, 0x63, 0x6f, + 0x72, 0x65, 0x2e, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, + 0x00, 0x12, 0x54, 0x0a, 0x16, 0x46, 0x69, 0x6e, 0x61, 0x6c, 0x69, 0x7a, 0x65, 0x41, 0x75, 0x74, + 0x68, 0x6f, 0x72, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x32, 0x12, 0x20, 0x2e, 0x73, 0x61, + 0x2e, 0x46, 0x69, 0x6e, 0x61, 0x6c, 0x69, 0x7a, 0x65, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, + 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x16, 0x2e, + 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, + 0x45, 0x6d, 0x70, 0x74, 0x79, 0x22, 0x00, 0x12, 0x43, 0x0a, 0x0d, 0x46, 0x69, 0x6e, 0x61, 0x6c, + 0x69, 0x7a, 0x65, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x12, 0x18, 0x2e, 0x73, 0x61, 0x2e, 0x46, 0x69, + 0x6e, 0x61, 0x6c, 0x69, 0x7a, 0x65, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x1a, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, + 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x22, 0x00, 0x12, 0x40, 0x0a, 0x11, + 0x4e, 0x65, 0x77, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x41, 0x6e, 0x64, 0x41, 0x75, 0x74, 0x68, 0x7a, + 0x73, 0x12, 0x1c, 0x2e, 0x73, 0x61, 0x2e, 0x4e, 0x65, 0x77, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x41, + 0x6e, 0x64, 0x41, 0x75, 0x74, 0x68, 0x7a, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, + 0x0b, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x22, 0x00, 0x12, 0x3b, + 0x0a, 0x0f, 0x4e, 0x65, 0x77, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x12, 0x12, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x1a, 0x12, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x52, 0x65, 0x67, + 0x69, 0x73, 0x74, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x00, 0x12, 0x4b, 0x0a, 0x11, 0x52, + 0x65, 0x76, 0x6f, 0x6b, 0x65, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, + 0x12, 0x1c, 0x2e, 0x73, 0x61, 0x2e, 0x52, 0x65, 0x76, 0x6f, 0x6b, 0x65, 0x43, 0x65, 0x72, 0x74, + 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x16, + 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, + 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x22, 0x00, 0x12, 0x43, 0x0a, 0x0d, 0x53, 0x65, 0x74, 0x4f, + 0x72, 0x64, 0x65, 0x72, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x12, 0x18, 0x2e, 0x73, 0x61, 0x2e, 0x53, + 0x65, 0x74, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, - 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x22, 0x00, 0x12, 0x43, 0x0a, - 0x0d, 0x53, 0x65, 0x74, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x12, 0x18, - 0x2e, 0x73, 0x61, 0x2e, 0x53, 0x65, 0x74, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x45, 0x72, 0x72, 0x6f, - 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, - 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, - 0x22, 0x00, 0x12, 0x40, 0x0a, 0x12, 0x53, 0x65, 0x74, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x50, 0x72, - 0x6f, 0x63, 0x65, 0x73, 0x73, 0x69, 0x6e, 0x67, 0x12, 0x10, 0x2e, 0x73, 0x61, 0x2e, 0x4f, 0x72, - 0x64, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x16, 0x2e, 0x67, 0x6f, 0x6f, + 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x22, 0x00, 0x12, 0x40, 0x0a, + 0x12, 0x53, 0x65, 0x74, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x50, 0x72, 0x6f, 0x63, 0x65, 0x73, 0x73, + 0x69, 0x6e, 0x67, 0x12, 0x10, 0x2e, 0x73, 0x61, 0x2e, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, + 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x22, 0x00, 0x12, + 0x4f, 0x0a, 0x15, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4b, 0x65, 0x79, 0x12, 0x20, 0x2e, 0x73, 0x61, 0x2e, 0x55, 0x70, + 0x64, 0x61, 0x74, 0x65, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x4b, 0x65, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x12, 0x2e, 0x63, 0x6f, 0x72, + 0x65, 0x2e, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x00, + 0x12, 0x52, 0x0a, 0x18, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, 0x65, 0x76, 0x6f, 0x6b, 0x65, + 0x64, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x12, 0x1c, 0x2e, 0x73, + 0x61, 0x2e, 0x52, 0x65, 0x76, 0x6f, 0x6b, 0x65, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, + 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, - 0x74, 0x79, 0x22, 0x00, 0x12, 0x4f, 0x0a, 0x15, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, 0x65, - 0x67, 0x69, 0x73, 0x74, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4b, 0x65, 0x79, 0x12, 0x20, 0x2e, - 0x73, 0x61, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4b, 0x65, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, - 0x12, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x22, 0x00, 0x12, 0x52, 0x0a, 0x18, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, - 0x65, 0x76, 0x6f, 0x6b, 0x65, 0x64, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, - 0x65, 0x12, 0x1c, 0x2e, 0x73, 0x61, 0x2e, 0x52, 0x65, 0x76, 0x6f, 0x6b, 0x65, 0x43, 0x65, 0x72, - 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, - 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, - 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x22, 0x00, 0x12, 0x46, 0x0a, 0x0d, 0x4c, 0x65, 0x61, - 0x73, 0x65, 0x43, 0x52, 0x4c, 0x53, 0x68, 0x61, 0x72, 0x64, 0x12, 0x18, 0x2e, 0x73, 0x61, 0x2e, - 0x4c, 0x65, 0x61, 0x73, 0x65, 0x43, 0x52, 0x4c, 0x53, 0x68, 0x61, 0x72, 0x64, 0x52, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x1a, 0x19, 0x2e, 0x73, 0x61, 0x2e, 0x4c, 0x65, 0x61, 0x73, 0x65, 0x43, - 0x52, 0x4c, 0x53, 0x68, 0x61, 0x72, 0x64, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, - 0x00, 0x12, 0x45, 0x0a, 0x0e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x43, 0x52, 0x4c, 0x53, 0x68, - 0x61, 0x72, 0x64, 0x12, 0x19, 0x2e, 0x73, 0x61, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x43, - 0x52, 0x4c, 0x53, 0x68, 0x61, 0x72, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x16, - 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, - 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x22, 0x00, 0x12, 0x44, 0x0a, 0x10, 0x50, 0x61, 0x75, 0x73, - 0x65, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x12, 0x10, 0x2e, 0x73, - 0x61, 0x2e, 0x50, 0x61, 0x75, 0x73, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1c, - 0x2e, 0x73, 0x61, 0x2e, 0x50, 0x61, 0x75, 0x73, 0x65, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, - 0x69, 0x65, 0x72, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x31, - 0x0a, 0x0e, 0x55, 0x6e, 0x70, 0x61, 0x75, 0x73, 0x65, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, - 0x12, 0x12, 0x2e, 0x73, 0x61, 0x2e, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x49, 0x44, 0x1a, 0x09, 0x2e, 0x73, 0x61, 0x2e, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x22, - 0x00, 0x12, 0x5b, 0x0a, 0x14, 0x41, 0x64, 0x64, 0x52, 0x61, 0x74, 0x65, 0x4c, 0x69, 0x6d, 0x69, - 0x74, 0x4f, 0x76, 0x65, 0x72, 0x72, 0x69, 0x64, 0x65, 0x12, 0x1f, 0x2e, 0x73, 0x61, 0x2e, 0x41, - 0x64, 0x64, 0x52, 0x61, 0x74, 0x65, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x4f, 0x76, 0x65, 0x72, 0x72, - 0x69, 0x64, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x20, 0x2e, 0x73, 0x61, 0x2e, + 0x74, 0x79, 0x22, 0x00, 0x12, 0x46, 0x0a, 0x0d, 0x4c, 0x65, 0x61, 0x73, 0x65, 0x43, 0x52, 0x4c, + 0x53, 0x68, 0x61, 0x72, 0x64, 0x12, 0x18, 0x2e, 0x73, 0x61, 0x2e, 0x4c, 0x65, 0x61, 0x73, 0x65, + 0x43, 0x52, 0x4c, 0x53, 0x68, 0x61, 0x72, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, + 0x19, 0x2e, 0x73, 0x61, 0x2e, 0x4c, 0x65, 0x61, 0x73, 0x65, 0x43, 0x52, 0x4c, 0x53, 0x68, 0x61, + 0x72, 0x64, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x45, 0x0a, 0x0e, + 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x43, 0x52, 0x4c, 0x53, 0x68, 0x61, 0x72, 0x64, 0x12, 0x19, + 0x2e, 0x73, 0x61, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x43, 0x52, 0x4c, 0x53, 0x68, 0x61, + 0x72, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, + 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, + 0x79, 0x22, 0x00, 0x12, 0x44, 0x0a, 0x10, 0x50, 0x61, 0x75, 0x73, 0x65, 0x49, 0x64, 0x65, 0x6e, + 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x12, 0x10, 0x2e, 0x73, 0x61, 0x2e, 0x50, 0x61, 0x75, + 0x73, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1c, 0x2e, 0x73, 0x61, 0x2e, 0x50, + 0x61, 0x75, 0x73, 0x65, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x52, + 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x31, 0x0a, 0x0e, 0x55, 0x6e, 0x70, + 0x61, 0x75, 0x73, 0x65, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x12, 0x2e, 0x73, 0x61, + 0x2e, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x44, 0x1a, + 0x09, 0x2e, 0x73, 0x61, 0x2e, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x22, 0x00, 0x12, 0x5b, 0x0a, 0x14, 0x41, 0x64, 0x64, 0x52, 0x61, 0x74, 0x65, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x4f, 0x76, 0x65, 0x72, - 0x72, 0x69, 0x64, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x59, - 0x0a, 0x18, 0x44, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x52, 0x61, 0x74, 0x65, 0x4c, 0x69, 0x6d, - 0x69, 0x74, 0x4f, 0x76, 0x65, 0x72, 0x72, 0x69, 0x64, 0x65, 0x12, 0x23, 0x2e, 0x73, 0x61, 0x2e, - 0x44, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x52, 0x61, 0x74, 0x65, 0x4c, 0x69, 0x6d, 0x69, 0x74, - 0x4f, 0x76, 0x65, 0x72, 0x72, 0x69, 0x64, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, - 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, - 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x22, 0x00, 0x12, 0x57, 0x0a, 0x17, 0x45, 0x6e, 0x61, - 0x62, 0x6c, 0x65, 0x52, 0x61, 0x74, 0x65, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x4f, 0x76, 0x65, 0x72, - 0x72, 0x69, 0x64, 0x65, 0x12, 0x22, 0x2e, 0x73, 0x61, 0x2e, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, - 0x52, 0x61, 0x74, 0x65, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x4f, 0x76, 0x65, 0x72, 0x72, 0x69, 0x64, - 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, - 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, - 0x22, 0x00, 0x12, 0x45, 0x0a, 0x13, 0x52, 0x65, 0x76, 0x6f, 0x6b, 0x65, 0x41, 0x75, 0x74, 0x68, - 0x6f, 0x72, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x14, 0x2e, 0x73, 0x61, 0x2e, 0x41, - 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x44, 0x32, 0x1a, - 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, - 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x22, 0x00, 0x32, 0xe6, 0x01, 0x0a, 0x15, 0x53, 0x74, - 0x6f, 0x72, 0x61, 0x67, 0x65, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x41, 0x64, - 0x6d, 0x69, 0x6e, 0x12, 0x3b, 0x0a, 0x0e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x49, 0x6e, 0x63, - 0x69, 0x64, 0x65, 0x6e, 0x74, 0x12, 0x19, 0x2e, 0x73, 0x61, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, - 0x65, 0x49, 0x6e, 0x63, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x1a, 0x0c, 0x2e, 0x73, 0x61, 0x2e, 0x49, 0x6e, 0x63, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x22, 0x00, - 0x12, 0x3b, 0x0a, 0x0e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x49, 0x6e, 0x63, 0x69, 0x64, 0x65, - 0x6e, 0x74, 0x12, 0x19, 0x2e, 0x73, 0x61, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x49, 0x6e, - 0x63, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x0c, 0x2e, - 0x73, 0x61, 0x2e, 0x49, 0x6e, 0x63, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x22, 0x00, 0x12, 0x53, 0x0a, - 0x14, 0x41, 0x64, 0x64, 0x53, 0x65, 0x72, 0x69, 0x61, 0x6c, 0x73, 0x54, 0x6f, 0x49, 0x6e, 0x63, - 0x69, 0x64, 0x65, 0x6e, 0x74, 0x12, 0x1f, 0x2e, 0x73, 0x61, 0x2e, 0x41, 0x64, 0x64, 0x53, 0x65, - 0x72, 0x69, 0x61, 0x6c, 0x73, 0x54, 0x6f, 0x49, 0x6e, 0x63, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x52, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, - 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x22, 0x00, - 0x28, 0x01, 0x42, 0x29, 0x5a, 0x27, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, - 0x2f, 0x6c, 0x65, 0x74, 0x73, 0x65, 0x6e, 0x63, 0x72, 0x79, 0x70, 0x74, 0x2f, 0x62, 0x6f, 0x75, - 0x6c, 0x64, 0x65, 0x72, 0x2f, 0x73, 0x61, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x06, 0x70, - 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x72, 0x69, 0x64, 0x65, 0x12, 0x1f, 0x2e, 0x73, 0x61, 0x2e, 0x41, 0x64, 0x64, 0x52, 0x61, 0x74, + 0x65, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x4f, 0x76, 0x65, 0x72, 0x72, 0x69, 0x64, 0x65, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x20, 0x2e, 0x73, 0x61, 0x2e, 0x41, 0x64, 0x64, 0x52, 0x61, + 0x74, 0x65, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x4f, 0x76, 0x65, 0x72, 0x72, 0x69, 0x64, 0x65, 0x52, + 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x59, 0x0a, 0x18, 0x44, 0x69, 0x73, + 0x61, 0x62, 0x6c, 0x65, 0x52, 0x61, 0x74, 0x65, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x4f, 0x76, 0x65, + 0x72, 0x72, 0x69, 0x64, 0x65, 0x12, 0x23, 0x2e, 0x73, 0x61, 0x2e, 0x44, 0x69, 0x73, 0x61, 0x62, + 0x6c, 0x65, 0x52, 0x61, 0x74, 0x65, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x4f, 0x76, 0x65, 0x72, 0x72, + 0x69, 0x64, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x16, 0x2e, 0x67, 0x6f, 0x6f, + 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, + 0x74, 0x79, 0x22, 0x00, 0x12, 0x57, 0x0a, 0x17, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x52, 0x61, + 0x74, 0x65, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x4f, 0x76, 0x65, 0x72, 0x72, 0x69, 0x64, 0x65, 0x12, + 0x22, 0x2e, 0x73, 0x61, 0x2e, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x52, 0x61, 0x74, 0x65, 0x4c, + 0x69, 0x6d, 0x69, 0x74, 0x4f, 0x76, 0x65, 0x72, 0x72, 0x69, 0x64, 0x65, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x1a, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x22, 0x00, 0x12, 0x55, 0x0a, + 0x16, 0x52, 0x65, 0x76, 0x6f, 0x6b, 0x65, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x7a, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x46, 0x6f, 0x72, 0x12, 0x21, 0x2e, 0x73, 0x61, 0x2e, 0x52, 0x65, 0x76, + 0x6f, 0x6b, 0x65, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x46, 0x6f, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x16, 0x2e, 0x67, 0x6f, 0x6f, + 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, + 0x74, 0x79, 0x22, 0x00, 0x32, 0xe6, 0x01, 0x0a, 0x15, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, + 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x41, 0x64, 0x6d, 0x69, 0x6e, 0x12, 0x3b, + 0x0a, 0x0e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x49, 0x6e, 0x63, 0x69, 0x64, 0x65, 0x6e, 0x74, + 0x12, 0x19, 0x2e, 0x73, 0x61, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x49, 0x6e, 0x63, 0x69, + 0x64, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x0c, 0x2e, 0x73, 0x61, + 0x2e, 0x49, 0x6e, 0x63, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x22, 0x00, 0x12, 0x3b, 0x0a, 0x0e, 0x55, + 0x70, 0x64, 0x61, 0x74, 0x65, 0x49, 0x6e, 0x63, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x12, 0x19, 0x2e, + 0x73, 0x61, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x49, 0x6e, 0x63, 0x69, 0x64, 0x65, 0x6e, + 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x0c, 0x2e, 0x73, 0x61, 0x2e, 0x49, 0x6e, + 0x63, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x22, 0x00, 0x12, 0x53, 0x0a, 0x14, 0x41, 0x64, 0x64, 0x53, + 0x65, 0x72, 0x69, 0x61, 0x6c, 0x73, 0x54, 0x6f, 0x49, 0x6e, 0x63, 0x69, 0x64, 0x65, 0x6e, 0x74, + 0x12, 0x1f, 0x2e, 0x73, 0x61, 0x2e, 0x41, 0x64, 0x64, 0x53, 0x65, 0x72, 0x69, 0x61, 0x6c, 0x73, + 0x54, 0x6f, 0x49, 0x6e, 0x63, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x1a, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x22, 0x00, 0x28, 0x01, 0x42, 0x29, 0x5a, + 0x27, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x6c, 0x65, 0x74, 0x73, + 0x65, 0x6e, 0x63, 0x72, 0x79, 0x70, 0x74, 0x2f, 0x62, 0x6f, 0x75, 0x6c, 0x64, 0x65, 0x72, 0x2f, + 0x73, 0x61, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, }) var ( @@ -4006,7 +4066,7 @@ func file_sa_proto_rawDescGZIP() []byte { return file_sa_proto_rawDescData } -var file_sa_proto_msgTypes = make([]protoimpl.MessageInfo, 54) +var file_sa_proto_msgTypes = make([]protoimpl.MessageInfo, 55) var file_sa_proto_goTypes = []any{ (*RegistrationID)(nil), // 0: sa.RegistrationID (*JSONWebKey)(nil), // 1: sa.JSONWebKey @@ -4062,238 +4122,240 @@ var file_sa_proto_goTypes = []any{ (*DisableRateLimitOverrideRequest)(nil), // 51: sa.DisableRateLimitOverrideRequest (*GetRateLimitOverrideRequest)(nil), // 52: sa.GetRateLimitOverrideRequest (*RateLimitOverrideResponse)(nil), // 53: sa.RateLimitOverrideResponse - (*proto.Identifier)(nil), // 54: core.Identifier - (*timestamppb.Timestamp)(nil), // 55: google.protobuf.Timestamp - (*durationpb.Duration)(nil), // 56: google.protobuf.Duration - (*proto.ProblemDetails)(nil), // 57: core.ProblemDetails - (*proto.Authorization)(nil), // 58: core.Authorization - (*proto.ValidationRecord)(nil), // 59: core.ValidationRecord - (*emptypb.Empty)(nil), // 60: google.protobuf.Empty - (*proto.Registration)(nil), // 61: core.Registration - (*proto.Certificate)(nil), // 62: core.Certificate - (*proto.CertificateStatus)(nil), // 63: core.CertificateStatus - (*proto.Order)(nil), // 64: core.Order - (*proto.CRLEntry)(nil), // 65: core.CRLEntry + (*RevokeAuthorizationForRequest)(nil), // 54: sa.RevokeAuthorizationForRequest + (*proto.Identifier)(nil), // 55: core.Identifier + (*timestamppb.Timestamp)(nil), // 56: google.protobuf.Timestamp + (*durationpb.Duration)(nil), // 57: google.protobuf.Duration + (*proto.ProblemDetails)(nil), // 58: core.ProblemDetails + (*proto.Authorization)(nil), // 59: core.Authorization + (*proto.ValidationRecord)(nil), // 60: core.ValidationRecord + (*emptypb.Empty)(nil), // 61: google.protobuf.Empty + (*proto.Registration)(nil), // 62: core.Registration + (*proto.Certificate)(nil), // 63: core.Certificate + (*proto.CertificateStatus)(nil), // 64: core.CertificateStatus + (*proto.Order)(nil), // 65: core.Order + (*proto.CRLEntry)(nil), // 66: core.CRLEntry } var file_sa_proto_depIdxs = []int32{ - 54, // 0: sa.GetValidAuthorizationsRequest.identifiers:type_name -> core.Identifier - 55, // 1: sa.GetValidAuthorizationsRequest.validUntil:type_name -> google.protobuf.Timestamp - 55, // 2: sa.SerialMetadata.created:type_name -> google.protobuf.Timestamp - 55, // 3: sa.SerialMetadata.expires:type_name -> google.protobuf.Timestamp - 55, // 4: sa.Range.earliest:type_name -> google.protobuf.Timestamp - 55, // 5: sa.Range.latest:type_name -> google.protobuf.Timestamp - 55, // 6: sa.Timestamps.timestamps:type_name -> google.protobuf.Timestamp - 54, // 7: sa.CountInvalidAuthorizationsRequest.identifier:type_name -> core.Identifier + 55, // 0: sa.GetValidAuthorizationsRequest.identifiers:type_name -> core.Identifier + 56, // 1: sa.GetValidAuthorizationsRequest.validUntil:type_name -> google.protobuf.Timestamp + 56, // 2: sa.SerialMetadata.created:type_name -> google.protobuf.Timestamp + 56, // 3: sa.SerialMetadata.expires:type_name -> google.protobuf.Timestamp + 56, // 4: sa.Range.earliest:type_name -> google.protobuf.Timestamp + 56, // 5: sa.Range.latest:type_name -> google.protobuf.Timestamp + 56, // 6: sa.Timestamps.timestamps:type_name -> google.protobuf.Timestamp + 55, // 7: sa.CountInvalidAuthorizationsRequest.identifier:type_name -> core.Identifier 5, // 8: sa.CountInvalidAuthorizationsRequest.range:type_name -> sa.Range - 54, // 9: sa.CountFQDNSetsRequest.identifiers:type_name -> core.Identifier - 56, // 10: sa.CountFQDNSetsRequest.window:type_name -> google.protobuf.Duration - 54, // 11: sa.FQDNSetExistsRequest.identifiers:type_name -> core.Identifier - 55, // 12: sa.AddSerialRequest.created:type_name -> google.protobuf.Timestamp - 55, // 13: sa.AddSerialRequest.expires:type_name -> google.protobuf.Timestamp - 55, // 14: sa.AddCertificateRequest.issued:type_name -> google.protobuf.Timestamp - 55, // 15: sa.NewOrderRequest.expires:type_name -> google.protobuf.Timestamp - 54, // 16: sa.NewOrderRequest.identifiers:type_name -> core.Identifier - 54, // 17: sa.NewAuthzRequest.identifier:type_name -> core.Identifier - 55, // 18: sa.NewAuthzRequest.expires:type_name -> google.protobuf.Timestamp + 55, // 9: sa.CountFQDNSetsRequest.identifiers:type_name -> core.Identifier + 57, // 10: sa.CountFQDNSetsRequest.window:type_name -> google.protobuf.Duration + 55, // 11: sa.FQDNSetExistsRequest.identifiers:type_name -> core.Identifier + 56, // 12: sa.AddSerialRequest.created:type_name -> google.protobuf.Timestamp + 56, // 13: sa.AddSerialRequest.expires:type_name -> google.protobuf.Timestamp + 56, // 14: sa.AddCertificateRequest.issued:type_name -> google.protobuf.Timestamp + 56, // 15: sa.NewOrderRequest.expires:type_name -> google.protobuf.Timestamp + 55, // 16: sa.NewOrderRequest.identifiers:type_name -> core.Identifier + 55, // 17: sa.NewAuthzRequest.identifier:type_name -> core.Identifier + 56, // 18: sa.NewAuthzRequest.expires:type_name -> google.protobuf.Timestamp 15, // 19: sa.NewOrderAndAuthzsRequest.newOrder:type_name -> sa.NewOrderRequest 16, // 20: sa.NewOrderAndAuthzsRequest.newAuthzs:type_name -> sa.NewAuthzRequest - 57, // 21: sa.SetOrderErrorRequest.error:type_name -> core.ProblemDetails - 54, // 22: sa.GetOrderForNamesRequest.identifiers:type_name -> core.Identifier - 54, // 23: sa.GetAuthorizationsRequest.identifiers:type_name -> core.Identifier - 55, // 24: sa.GetAuthorizationsRequest.validUntil:type_name -> google.protobuf.Timestamp - 58, // 25: sa.Authorizations.authzs:type_name -> core.Authorization - 55, // 26: sa.RevokeCertificateRequest.date:type_name -> google.protobuf.Timestamp - 55, // 27: sa.RevokeCertificateRequest.backdate:type_name -> google.protobuf.Timestamp - 55, // 28: sa.FinalizeAuthorizationRequest.expires:type_name -> google.protobuf.Timestamp - 59, // 29: sa.FinalizeAuthorizationRequest.validationRecords:type_name -> core.ValidationRecord - 57, // 30: sa.FinalizeAuthorizationRequest.validationError:type_name -> core.ProblemDetails - 55, // 31: sa.FinalizeAuthorizationRequest.attemptedAt:type_name -> google.protobuf.Timestamp - 55, // 32: sa.AddBlockedKeyRequest.added:type_name -> google.protobuf.Timestamp - 55, // 33: sa.Incident.renewBy:type_name -> google.protobuf.Timestamp + 58, // 21: sa.SetOrderErrorRequest.error:type_name -> core.ProblemDetails + 55, // 22: sa.GetOrderForNamesRequest.identifiers:type_name -> core.Identifier + 55, // 23: sa.GetAuthorizationsRequest.identifiers:type_name -> core.Identifier + 56, // 24: sa.GetAuthorizationsRequest.validUntil:type_name -> google.protobuf.Timestamp + 59, // 25: sa.Authorizations.authzs:type_name -> core.Authorization + 56, // 26: sa.RevokeCertificateRequest.date:type_name -> google.protobuf.Timestamp + 56, // 27: sa.RevokeCertificateRequest.backdate:type_name -> google.protobuf.Timestamp + 56, // 28: sa.FinalizeAuthorizationRequest.expires:type_name -> google.protobuf.Timestamp + 60, // 29: sa.FinalizeAuthorizationRequest.validationRecords:type_name -> core.ValidationRecord + 58, // 30: sa.FinalizeAuthorizationRequest.validationError:type_name -> core.ProblemDetails + 56, // 31: sa.FinalizeAuthorizationRequest.attemptedAt:type_name -> google.protobuf.Timestamp + 56, // 32: sa.AddBlockedKeyRequest.added:type_name -> google.protobuf.Timestamp + 56, // 33: sa.Incident.renewBy:type_name -> google.protobuf.Timestamp 29, // 34: sa.Incidents.incidents:type_name -> sa.Incident - 55, // 35: sa.CreateIncidentRequest.renewBy:type_name -> google.protobuf.Timestamp - 55, // 36: sa.UpdateIncidentRequest.renewBy:type_name -> google.protobuf.Timestamp + 56, // 35: sa.CreateIncidentRequest.renewBy:type_name -> google.protobuf.Timestamp + 56, // 36: sa.UpdateIncidentRequest.renewBy:type_name -> google.protobuf.Timestamp 35, // 37: sa.AddSerialsToIncidentRequest.metadata:type_name -> sa.AddSerialsToIncidentMetadata 36, // 38: sa.AddSerialsToIncidentRequest.batch:type_name -> sa.AddSerialsToIncidentBatch - 55, // 39: sa.IncidentSerial.lastNoticeSent:type_name -> google.protobuf.Timestamp - 55, // 40: sa.GetRevokedCertsByShardRequest.revokedBefore:type_name -> google.protobuf.Timestamp - 55, // 41: sa.GetRevokedCertsByShardRequest.expiresAfter:type_name -> google.protobuf.Timestamp - 55, // 42: sa.RevocationStatus.revokedDate:type_name -> google.protobuf.Timestamp - 55, // 43: sa.LeaseCRLShardRequest.until:type_name -> google.protobuf.Timestamp - 55, // 44: sa.UpdateCRLShardRequest.thisUpdate:type_name -> google.protobuf.Timestamp - 55, // 45: sa.UpdateCRLShardRequest.nextUpdate:type_name -> google.protobuf.Timestamp - 54, // 46: sa.Identifiers.identifiers:type_name -> core.Identifier - 54, // 47: sa.PauseRequest.identifiers:type_name -> core.Identifier - 56, // 48: sa.RateLimitOverride.period:type_name -> google.protobuf.Duration + 56, // 39: sa.IncidentSerial.lastNoticeSent:type_name -> google.protobuf.Timestamp + 56, // 40: sa.GetRevokedCertsByShardRequest.revokedBefore:type_name -> google.protobuf.Timestamp + 56, // 41: sa.GetRevokedCertsByShardRequest.expiresAfter:type_name -> google.protobuf.Timestamp + 56, // 42: sa.RevocationStatus.revokedDate:type_name -> google.protobuf.Timestamp + 56, // 43: sa.LeaseCRLShardRequest.until:type_name -> google.protobuf.Timestamp + 56, // 44: sa.UpdateCRLShardRequest.thisUpdate:type_name -> google.protobuf.Timestamp + 56, // 45: sa.UpdateCRLShardRequest.nextUpdate:type_name -> google.protobuf.Timestamp + 55, // 46: sa.Identifiers.identifiers:type_name -> core.Identifier + 55, // 47: sa.PauseRequest.identifiers:type_name -> core.Identifier + 57, // 48: sa.RateLimitOverride.period:type_name -> google.protobuf.Duration 47, // 49: sa.AddRateLimitOverrideRequest.override:type_name -> sa.RateLimitOverride 47, // 50: sa.AddRateLimitOverrideResponse.existing:type_name -> sa.RateLimitOverride 47, // 51: sa.RateLimitOverrideResponse.override:type_name -> sa.RateLimitOverride - 55, // 52: sa.RateLimitOverrideResponse.updatedAt:type_name -> google.protobuf.Timestamp - 10, // 53: sa.StorageAuthorityReadOnly.FQDNSetExists:input_type -> sa.FQDNSetExistsRequest - 9, // 54: sa.StorageAuthorityReadOnly.FQDNSetTimestampsForWindow:input_type -> sa.CountFQDNSetsRequest - 24, // 55: sa.StorageAuthorityReadOnly.GetAuthorization2:input_type -> sa.AuthorizationID2 - 3, // 56: sa.StorageAuthorityReadOnly.GetCertificate:input_type -> sa.Serial - 3, // 57: sa.StorageAuthorityReadOnly.GetLintPrecertificate:input_type -> sa.Serial - 3, // 58: sa.StorageAuthorityReadOnly.GetCertificateStatus:input_type -> sa.Serial - 14, // 59: sa.StorageAuthorityReadOnly.GetOrder:input_type -> sa.OrderRequest - 20, // 60: sa.StorageAuthorityReadOnly.GetOrderForNames:input_type -> sa.GetOrderForNamesRequest - 0, // 61: sa.StorageAuthorityReadOnly.GetRegistration:input_type -> sa.RegistrationID - 1, // 62: sa.StorageAuthorityReadOnly.GetRegistrationByKey:input_type -> sa.JSONWebKey - 3, // 63: sa.StorageAuthorityReadOnly.GetRevocationStatus:input_type -> sa.Serial - 38, // 64: sa.StorageAuthorityReadOnly.GetRevokedCertsByShard:input_type -> sa.GetRevokedCertsByShardRequest - 3, // 65: sa.StorageAuthorityReadOnly.GetSerialMetadata:input_type -> sa.Serial - 0, // 66: sa.StorageAuthorityReadOnly.GetSerialsByAccount:input_type -> sa.RegistrationID - 28, // 67: sa.StorageAuthorityReadOnly.GetSerialsByKey:input_type -> sa.SPKIHash - 2, // 68: sa.StorageAuthorityReadOnly.GetValidAuthorizations2:input_type -> sa.GetValidAuthorizationsRequest - 19, // 69: sa.StorageAuthorityReadOnly.GetValidOrderAuthorizations2:input_type -> sa.GetOrderAuthorizationsRequest - 19, // 70: sa.StorageAuthorityReadOnly.GetOrderAuthorizations:input_type -> sa.GetOrderAuthorizationsRequest - 3, // 71: sa.StorageAuthorityReadOnly.IncidentsForSerial:input_type -> sa.Serial - 28, // 72: sa.StorageAuthorityReadOnly.KeyBlocked:input_type -> sa.SPKIHash - 60, // 73: sa.StorageAuthorityReadOnly.ListIncidents:input_type -> google.protobuf.Empty - 3, // 74: sa.StorageAuthorityReadOnly.ReplacementOrderExists:input_type -> sa.Serial - 31, // 75: sa.StorageAuthorityReadOnly.SerialsForIncident:input_type -> sa.SerialsForIncidentRequest - 44, // 76: sa.StorageAuthorityReadOnly.CheckIdentifiersPaused:input_type -> sa.PauseRequest - 0, // 77: sa.StorageAuthorityReadOnly.GetPausedIdentifiers:input_type -> sa.RegistrationID - 52, // 78: sa.StorageAuthorityReadOnly.GetRateLimitOverride:input_type -> sa.GetRateLimitOverrideRequest - 60, // 79: sa.StorageAuthorityReadOnly.GetEnabledRateLimitOverrides:input_type -> google.protobuf.Empty - 10, // 80: sa.StorageAuthority.FQDNSetExists:input_type -> sa.FQDNSetExistsRequest - 9, // 81: sa.StorageAuthority.FQDNSetTimestampsForWindow:input_type -> sa.CountFQDNSetsRequest - 24, // 82: sa.StorageAuthority.GetAuthorization2:input_type -> sa.AuthorizationID2 - 3, // 83: sa.StorageAuthority.GetCertificate:input_type -> sa.Serial - 3, // 84: sa.StorageAuthority.GetLintPrecertificate:input_type -> sa.Serial - 3, // 85: sa.StorageAuthority.GetCertificateStatus:input_type -> sa.Serial - 14, // 86: sa.StorageAuthority.GetOrder:input_type -> sa.OrderRequest - 20, // 87: sa.StorageAuthority.GetOrderForNames:input_type -> sa.GetOrderForNamesRequest - 0, // 88: sa.StorageAuthority.GetRegistration:input_type -> sa.RegistrationID - 1, // 89: sa.StorageAuthority.GetRegistrationByKey:input_type -> sa.JSONWebKey - 3, // 90: sa.StorageAuthority.GetRevocationStatus:input_type -> sa.Serial - 38, // 91: sa.StorageAuthority.GetRevokedCertsByShard:input_type -> sa.GetRevokedCertsByShardRequest - 3, // 92: sa.StorageAuthority.GetSerialMetadata:input_type -> sa.Serial - 0, // 93: sa.StorageAuthority.GetSerialsByAccount:input_type -> sa.RegistrationID - 28, // 94: sa.StorageAuthority.GetSerialsByKey:input_type -> sa.SPKIHash - 2, // 95: sa.StorageAuthority.GetValidAuthorizations2:input_type -> sa.GetValidAuthorizationsRequest - 19, // 96: sa.StorageAuthority.GetValidOrderAuthorizations2:input_type -> sa.GetOrderAuthorizationsRequest - 19, // 97: sa.StorageAuthority.GetOrderAuthorizations:input_type -> sa.GetOrderAuthorizationsRequest - 3, // 98: sa.StorageAuthority.IncidentsForSerial:input_type -> sa.Serial - 28, // 99: sa.StorageAuthority.KeyBlocked:input_type -> sa.SPKIHash - 60, // 100: sa.StorageAuthority.ListIncidents:input_type -> google.protobuf.Empty - 3, // 101: sa.StorageAuthority.ReplacementOrderExists:input_type -> sa.Serial - 31, // 102: sa.StorageAuthority.SerialsForIncident:input_type -> sa.SerialsForIncidentRequest - 44, // 103: sa.StorageAuthority.CheckIdentifiersPaused:input_type -> sa.PauseRequest - 0, // 104: sa.StorageAuthority.GetPausedIdentifiers:input_type -> sa.RegistrationID - 52, // 105: sa.StorageAuthority.GetRateLimitOverride:input_type -> sa.GetRateLimitOverrideRequest - 60, // 106: sa.StorageAuthority.GetEnabledRateLimitOverrides:input_type -> google.protobuf.Empty - 27, // 107: sa.StorageAuthority.AddBlockedKey:input_type -> sa.AddBlockedKeyRequest - 13, // 108: sa.StorageAuthority.AddCertificate:input_type -> sa.AddCertificateRequest - 13, // 109: sa.StorageAuthority.AddPrecertificate:input_type -> sa.AddCertificateRequest - 12, // 110: sa.StorageAuthority.AddSerial:input_type -> sa.AddSerialRequest - 24, // 111: sa.StorageAuthority.DeactivateAuthorization2:input_type -> sa.AuthorizationID2 - 0, // 112: sa.StorageAuthority.DeactivateRegistration:input_type -> sa.RegistrationID - 26, // 113: sa.StorageAuthority.FinalizeAuthorization2:input_type -> sa.FinalizeAuthorizationRequest - 21, // 114: sa.StorageAuthority.FinalizeOrder:input_type -> sa.FinalizeOrderRequest - 17, // 115: sa.StorageAuthority.NewOrderAndAuthzs:input_type -> sa.NewOrderAndAuthzsRequest - 61, // 116: sa.StorageAuthority.NewRegistration:input_type -> core.Registration - 25, // 117: sa.StorageAuthority.RevokeCertificate:input_type -> sa.RevokeCertificateRequest - 18, // 118: sa.StorageAuthority.SetOrderError:input_type -> sa.SetOrderErrorRequest - 14, // 119: sa.StorageAuthority.SetOrderProcessing:input_type -> sa.OrderRequest - 46, // 120: sa.StorageAuthority.UpdateRegistrationKey:input_type -> sa.UpdateRegistrationKeyRequest - 25, // 121: sa.StorageAuthority.UpdateRevokedCertificate:input_type -> sa.RevokeCertificateRequest - 40, // 122: sa.StorageAuthority.LeaseCRLShard:input_type -> sa.LeaseCRLShardRequest - 42, // 123: sa.StorageAuthority.UpdateCRLShard:input_type -> sa.UpdateCRLShardRequest - 44, // 124: sa.StorageAuthority.PauseIdentifiers:input_type -> sa.PauseRequest - 0, // 125: sa.StorageAuthority.UnpauseAccount:input_type -> sa.RegistrationID - 48, // 126: sa.StorageAuthority.AddRateLimitOverride:input_type -> sa.AddRateLimitOverrideRequest - 51, // 127: sa.StorageAuthority.DisableRateLimitOverride:input_type -> sa.DisableRateLimitOverrideRequest - 50, // 128: sa.StorageAuthority.EnableRateLimitOverride:input_type -> sa.EnableRateLimitOverrideRequest - 24, // 129: sa.StorageAuthority.RevokeAuthorization:input_type -> sa.AuthorizationID2 - 32, // 130: sa.StorageAuthorityAdmin.CreateIncident:input_type -> sa.CreateIncidentRequest - 33, // 131: sa.StorageAuthorityAdmin.UpdateIncident:input_type -> sa.UpdateIncidentRequest - 34, // 132: sa.StorageAuthorityAdmin.AddSerialsToIncident:input_type -> sa.AddSerialsToIncidentRequest - 11, // 133: sa.StorageAuthorityReadOnly.FQDNSetExists:output_type -> sa.Exists - 7, // 134: sa.StorageAuthorityReadOnly.FQDNSetTimestampsForWindow:output_type -> sa.Timestamps - 58, // 135: sa.StorageAuthorityReadOnly.GetAuthorization2:output_type -> core.Authorization - 62, // 136: sa.StorageAuthorityReadOnly.GetCertificate:output_type -> core.Certificate - 62, // 137: sa.StorageAuthorityReadOnly.GetLintPrecertificate:output_type -> core.Certificate - 63, // 138: sa.StorageAuthorityReadOnly.GetCertificateStatus:output_type -> core.CertificateStatus - 64, // 139: sa.StorageAuthorityReadOnly.GetOrder:output_type -> core.Order - 64, // 140: sa.StorageAuthorityReadOnly.GetOrderForNames:output_type -> core.Order - 61, // 141: sa.StorageAuthorityReadOnly.GetRegistration:output_type -> core.Registration - 61, // 142: sa.StorageAuthorityReadOnly.GetRegistrationByKey:output_type -> core.Registration - 39, // 143: sa.StorageAuthorityReadOnly.GetRevocationStatus:output_type -> sa.RevocationStatus - 65, // 144: sa.StorageAuthorityReadOnly.GetRevokedCertsByShard:output_type -> core.CRLEntry - 4, // 145: sa.StorageAuthorityReadOnly.GetSerialMetadata:output_type -> sa.SerialMetadata - 3, // 146: sa.StorageAuthorityReadOnly.GetSerialsByAccount:output_type -> sa.Serial - 3, // 147: sa.StorageAuthorityReadOnly.GetSerialsByKey:output_type -> sa.Serial - 23, // 148: sa.StorageAuthorityReadOnly.GetValidAuthorizations2:output_type -> sa.Authorizations - 23, // 149: sa.StorageAuthorityReadOnly.GetValidOrderAuthorizations2:output_type -> sa.Authorizations - 23, // 150: sa.StorageAuthorityReadOnly.GetOrderAuthorizations:output_type -> sa.Authorizations - 30, // 151: sa.StorageAuthorityReadOnly.IncidentsForSerial:output_type -> sa.Incidents - 11, // 152: sa.StorageAuthorityReadOnly.KeyBlocked:output_type -> sa.Exists - 30, // 153: sa.StorageAuthorityReadOnly.ListIncidents:output_type -> sa.Incidents - 11, // 154: sa.StorageAuthorityReadOnly.ReplacementOrderExists:output_type -> sa.Exists - 37, // 155: sa.StorageAuthorityReadOnly.SerialsForIncident:output_type -> sa.IncidentSerial - 43, // 156: sa.StorageAuthorityReadOnly.CheckIdentifiersPaused:output_type -> sa.Identifiers - 43, // 157: sa.StorageAuthorityReadOnly.GetPausedIdentifiers:output_type -> sa.Identifiers - 53, // 158: sa.StorageAuthorityReadOnly.GetRateLimitOverride:output_type -> sa.RateLimitOverrideResponse - 53, // 159: sa.StorageAuthorityReadOnly.GetEnabledRateLimitOverrides:output_type -> sa.RateLimitOverrideResponse - 11, // 160: sa.StorageAuthority.FQDNSetExists:output_type -> sa.Exists - 7, // 161: sa.StorageAuthority.FQDNSetTimestampsForWindow:output_type -> sa.Timestamps - 58, // 162: sa.StorageAuthority.GetAuthorization2:output_type -> core.Authorization - 62, // 163: sa.StorageAuthority.GetCertificate:output_type -> core.Certificate - 62, // 164: sa.StorageAuthority.GetLintPrecertificate:output_type -> core.Certificate - 63, // 165: sa.StorageAuthority.GetCertificateStatus:output_type -> core.CertificateStatus - 64, // 166: sa.StorageAuthority.GetOrder:output_type -> core.Order - 64, // 167: sa.StorageAuthority.GetOrderForNames:output_type -> core.Order - 61, // 168: sa.StorageAuthority.GetRegistration:output_type -> core.Registration - 61, // 169: sa.StorageAuthority.GetRegistrationByKey:output_type -> core.Registration - 39, // 170: sa.StorageAuthority.GetRevocationStatus:output_type -> sa.RevocationStatus - 65, // 171: sa.StorageAuthority.GetRevokedCertsByShard:output_type -> core.CRLEntry - 4, // 172: sa.StorageAuthority.GetSerialMetadata:output_type -> sa.SerialMetadata - 3, // 173: sa.StorageAuthority.GetSerialsByAccount:output_type -> sa.Serial - 3, // 174: sa.StorageAuthority.GetSerialsByKey:output_type -> sa.Serial - 23, // 175: sa.StorageAuthority.GetValidAuthorizations2:output_type -> sa.Authorizations - 23, // 176: sa.StorageAuthority.GetValidOrderAuthorizations2:output_type -> sa.Authorizations - 23, // 177: sa.StorageAuthority.GetOrderAuthorizations:output_type -> sa.Authorizations - 30, // 178: sa.StorageAuthority.IncidentsForSerial:output_type -> sa.Incidents - 11, // 179: sa.StorageAuthority.KeyBlocked:output_type -> sa.Exists - 30, // 180: sa.StorageAuthority.ListIncidents:output_type -> sa.Incidents - 11, // 181: sa.StorageAuthority.ReplacementOrderExists:output_type -> sa.Exists - 37, // 182: sa.StorageAuthority.SerialsForIncident:output_type -> sa.IncidentSerial - 43, // 183: sa.StorageAuthority.CheckIdentifiersPaused:output_type -> sa.Identifiers - 43, // 184: sa.StorageAuthority.GetPausedIdentifiers:output_type -> sa.Identifiers - 53, // 185: sa.StorageAuthority.GetRateLimitOverride:output_type -> sa.RateLimitOverrideResponse - 53, // 186: sa.StorageAuthority.GetEnabledRateLimitOverrides:output_type -> sa.RateLimitOverrideResponse - 60, // 187: sa.StorageAuthority.AddBlockedKey:output_type -> google.protobuf.Empty - 60, // 188: sa.StorageAuthority.AddCertificate:output_type -> google.protobuf.Empty - 60, // 189: sa.StorageAuthority.AddPrecertificate:output_type -> google.protobuf.Empty - 60, // 190: sa.StorageAuthority.AddSerial:output_type -> google.protobuf.Empty - 60, // 191: sa.StorageAuthority.DeactivateAuthorization2:output_type -> google.protobuf.Empty - 61, // 192: sa.StorageAuthority.DeactivateRegistration:output_type -> core.Registration - 60, // 193: sa.StorageAuthority.FinalizeAuthorization2:output_type -> google.protobuf.Empty - 60, // 194: sa.StorageAuthority.FinalizeOrder:output_type -> google.protobuf.Empty - 64, // 195: sa.StorageAuthority.NewOrderAndAuthzs:output_type -> core.Order - 61, // 196: sa.StorageAuthority.NewRegistration:output_type -> core.Registration - 60, // 197: sa.StorageAuthority.RevokeCertificate:output_type -> google.protobuf.Empty - 60, // 198: sa.StorageAuthority.SetOrderError:output_type -> google.protobuf.Empty - 60, // 199: sa.StorageAuthority.SetOrderProcessing:output_type -> google.protobuf.Empty - 61, // 200: sa.StorageAuthority.UpdateRegistrationKey:output_type -> core.Registration - 60, // 201: sa.StorageAuthority.UpdateRevokedCertificate:output_type -> google.protobuf.Empty - 41, // 202: sa.StorageAuthority.LeaseCRLShard:output_type -> sa.LeaseCRLShardResponse - 60, // 203: sa.StorageAuthority.UpdateCRLShard:output_type -> google.protobuf.Empty - 45, // 204: sa.StorageAuthority.PauseIdentifiers:output_type -> sa.PauseIdentifiersResponse - 6, // 205: sa.StorageAuthority.UnpauseAccount:output_type -> sa.Count - 49, // 206: sa.StorageAuthority.AddRateLimitOverride:output_type -> sa.AddRateLimitOverrideResponse - 60, // 207: sa.StorageAuthority.DisableRateLimitOverride:output_type -> google.protobuf.Empty - 60, // 208: sa.StorageAuthority.EnableRateLimitOverride:output_type -> google.protobuf.Empty - 60, // 209: sa.StorageAuthority.RevokeAuthorization:output_type -> google.protobuf.Empty - 29, // 210: sa.StorageAuthorityAdmin.CreateIncident:output_type -> sa.Incident - 29, // 211: sa.StorageAuthorityAdmin.UpdateIncident:output_type -> sa.Incident - 60, // 212: sa.StorageAuthorityAdmin.AddSerialsToIncident:output_type -> google.protobuf.Empty - 133, // [133:213] is the sub-list for method output_type - 53, // [53:133] is the sub-list for method input_type - 53, // [53:53] is the sub-list for extension type_name - 53, // [53:53] is the sub-list for extension extendee - 0, // [0:53] is the sub-list for field type_name + 56, // 52: sa.RateLimitOverrideResponse.updatedAt:type_name -> google.protobuf.Timestamp + 55, // 53: sa.RevokeAuthorizationForRequest.identifier:type_name -> core.Identifier + 10, // 54: sa.StorageAuthorityReadOnly.FQDNSetExists:input_type -> sa.FQDNSetExistsRequest + 9, // 55: sa.StorageAuthorityReadOnly.FQDNSetTimestampsForWindow:input_type -> sa.CountFQDNSetsRequest + 24, // 56: sa.StorageAuthorityReadOnly.GetAuthorization2:input_type -> sa.AuthorizationID2 + 3, // 57: sa.StorageAuthorityReadOnly.GetCertificate:input_type -> sa.Serial + 3, // 58: sa.StorageAuthorityReadOnly.GetLintPrecertificate:input_type -> sa.Serial + 3, // 59: sa.StorageAuthorityReadOnly.GetCertificateStatus:input_type -> sa.Serial + 14, // 60: sa.StorageAuthorityReadOnly.GetOrder:input_type -> sa.OrderRequest + 20, // 61: sa.StorageAuthorityReadOnly.GetOrderForNames:input_type -> sa.GetOrderForNamesRequest + 0, // 62: sa.StorageAuthorityReadOnly.GetRegistration:input_type -> sa.RegistrationID + 1, // 63: sa.StorageAuthorityReadOnly.GetRegistrationByKey:input_type -> sa.JSONWebKey + 3, // 64: sa.StorageAuthorityReadOnly.GetRevocationStatus:input_type -> sa.Serial + 38, // 65: sa.StorageAuthorityReadOnly.GetRevokedCertsByShard:input_type -> sa.GetRevokedCertsByShardRequest + 3, // 66: sa.StorageAuthorityReadOnly.GetSerialMetadata:input_type -> sa.Serial + 0, // 67: sa.StorageAuthorityReadOnly.GetSerialsByAccount:input_type -> sa.RegistrationID + 28, // 68: sa.StorageAuthorityReadOnly.GetSerialsByKey:input_type -> sa.SPKIHash + 2, // 69: sa.StorageAuthorityReadOnly.GetValidAuthorizations2:input_type -> sa.GetValidAuthorizationsRequest + 19, // 70: sa.StorageAuthorityReadOnly.GetValidOrderAuthorizations2:input_type -> sa.GetOrderAuthorizationsRequest + 19, // 71: sa.StorageAuthorityReadOnly.GetOrderAuthorizations:input_type -> sa.GetOrderAuthorizationsRequest + 3, // 72: sa.StorageAuthorityReadOnly.IncidentsForSerial:input_type -> sa.Serial + 28, // 73: sa.StorageAuthorityReadOnly.KeyBlocked:input_type -> sa.SPKIHash + 61, // 74: sa.StorageAuthorityReadOnly.ListIncidents:input_type -> google.protobuf.Empty + 3, // 75: sa.StorageAuthorityReadOnly.ReplacementOrderExists:input_type -> sa.Serial + 31, // 76: sa.StorageAuthorityReadOnly.SerialsForIncident:input_type -> sa.SerialsForIncidentRequest + 44, // 77: sa.StorageAuthorityReadOnly.CheckIdentifiersPaused:input_type -> sa.PauseRequest + 0, // 78: sa.StorageAuthorityReadOnly.GetPausedIdentifiers:input_type -> sa.RegistrationID + 52, // 79: sa.StorageAuthorityReadOnly.GetRateLimitOverride:input_type -> sa.GetRateLimitOverrideRequest + 61, // 80: sa.StorageAuthorityReadOnly.GetEnabledRateLimitOverrides:input_type -> google.protobuf.Empty + 10, // 81: sa.StorageAuthority.FQDNSetExists:input_type -> sa.FQDNSetExistsRequest + 9, // 82: sa.StorageAuthority.FQDNSetTimestampsForWindow:input_type -> sa.CountFQDNSetsRequest + 24, // 83: sa.StorageAuthority.GetAuthorization2:input_type -> sa.AuthorizationID2 + 3, // 84: sa.StorageAuthority.GetCertificate:input_type -> sa.Serial + 3, // 85: sa.StorageAuthority.GetLintPrecertificate:input_type -> sa.Serial + 3, // 86: sa.StorageAuthority.GetCertificateStatus:input_type -> sa.Serial + 14, // 87: sa.StorageAuthority.GetOrder:input_type -> sa.OrderRequest + 20, // 88: sa.StorageAuthority.GetOrderForNames:input_type -> sa.GetOrderForNamesRequest + 0, // 89: sa.StorageAuthority.GetRegistration:input_type -> sa.RegistrationID + 1, // 90: sa.StorageAuthority.GetRegistrationByKey:input_type -> sa.JSONWebKey + 3, // 91: sa.StorageAuthority.GetRevocationStatus:input_type -> sa.Serial + 38, // 92: sa.StorageAuthority.GetRevokedCertsByShard:input_type -> sa.GetRevokedCertsByShardRequest + 3, // 93: sa.StorageAuthority.GetSerialMetadata:input_type -> sa.Serial + 0, // 94: sa.StorageAuthority.GetSerialsByAccount:input_type -> sa.RegistrationID + 28, // 95: sa.StorageAuthority.GetSerialsByKey:input_type -> sa.SPKIHash + 2, // 96: sa.StorageAuthority.GetValidAuthorizations2:input_type -> sa.GetValidAuthorizationsRequest + 19, // 97: sa.StorageAuthority.GetValidOrderAuthorizations2:input_type -> sa.GetOrderAuthorizationsRequest + 19, // 98: sa.StorageAuthority.GetOrderAuthorizations:input_type -> sa.GetOrderAuthorizationsRequest + 3, // 99: sa.StorageAuthority.IncidentsForSerial:input_type -> sa.Serial + 28, // 100: sa.StorageAuthority.KeyBlocked:input_type -> sa.SPKIHash + 61, // 101: sa.StorageAuthority.ListIncidents:input_type -> google.protobuf.Empty + 3, // 102: sa.StorageAuthority.ReplacementOrderExists:input_type -> sa.Serial + 31, // 103: sa.StorageAuthority.SerialsForIncident:input_type -> sa.SerialsForIncidentRequest + 44, // 104: sa.StorageAuthority.CheckIdentifiersPaused:input_type -> sa.PauseRequest + 0, // 105: sa.StorageAuthority.GetPausedIdentifiers:input_type -> sa.RegistrationID + 52, // 106: sa.StorageAuthority.GetRateLimitOverride:input_type -> sa.GetRateLimitOverrideRequest + 61, // 107: sa.StorageAuthority.GetEnabledRateLimitOverrides:input_type -> google.protobuf.Empty + 27, // 108: sa.StorageAuthority.AddBlockedKey:input_type -> sa.AddBlockedKeyRequest + 13, // 109: sa.StorageAuthority.AddCertificate:input_type -> sa.AddCertificateRequest + 13, // 110: sa.StorageAuthority.AddPrecertificate:input_type -> sa.AddCertificateRequest + 12, // 111: sa.StorageAuthority.AddSerial:input_type -> sa.AddSerialRequest + 24, // 112: sa.StorageAuthority.DeactivateAuthorization2:input_type -> sa.AuthorizationID2 + 0, // 113: sa.StorageAuthority.DeactivateRegistration:input_type -> sa.RegistrationID + 26, // 114: sa.StorageAuthority.FinalizeAuthorization2:input_type -> sa.FinalizeAuthorizationRequest + 21, // 115: sa.StorageAuthority.FinalizeOrder:input_type -> sa.FinalizeOrderRequest + 17, // 116: sa.StorageAuthority.NewOrderAndAuthzs:input_type -> sa.NewOrderAndAuthzsRequest + 62, // 117: sa.StorageAuthority.NewRegistration:input_type -> core.Registration + 25, // 118: sa.StorageAuthority.RevokeCertificate:input_type -> sa.RevokeCertificateRequest + 18, // 119: sa.StorageAuthority.SetOrderError:input_type -> sa.SetOrderErrorRequest + 14, // 120: sa.StorageAuthority.SetOrderProcessing:input_type -> sa.OrderRequest + 46, // 121: sa.StorageAuthority.UpdateRegistrationKey:input_type -> sa.UpdateRegistrationKeyRequest + 25, // 122: sa.StorageAuthority.UpdateRevokedCertificate:input_type -> sa.RevokeCertificateRequest + 40, // 123: sa.StorageAuthority.LeaseCRLShard:input_type -> sa.LeaseCRLShardRequest + 42, // 124: sa.StorageAuthority.UpdateCRLShard:input_type -> sa.UpdateCRLShardRequest + 44, // 125: sa.StorageAuthority.PauseIdentifiers:input_type -> sa.PauseRequest + 0, // 126: sa.StorageAuthority.UnpauseAccount:input_type -> sa.RegistrationID + 48, // 127: sa.StorageAuthority.AddRateLimitOverride:input_type -> sa.AddRateLimitOverrideRequest + 51, // 128: sa.StorageAuthority.DisableRateLimitOverride:input_type -> sa.DisableRateLimitOverrideRequest + 50, // 129: sa.StorageAuthority.EnableRateLimitOverride:input_type -> sa.EnableRateLimitOverrideRequest + 54, // 130: sa.StorageAuthority.RevokeAuthorizationFor:input_type -> sa.RevokeAuthorizationForRequest + 32, // 131: sa.StorageAuthorityAdmin.CreateIncident:input_type -> sa.CreateIncidentRequest + 33, // 132: sa.StorageAuthorityAdmin.UpdateIncident:input_type -> sa.UpdateIncidentRequest + 34, // 133: sa.StorageAuthorityAdmin.AddSerialsToIncident:input_type -> sa.AddSerialsToIncidentRequest + 11, // 134: sa.StorageAuthorityReadOnly.FQDNSetExists:output_type -> sa.Exists + 7, // 135: sa.StorageAuthorityReadOnly.FQDNSetTimestampsForWindow:output_type -> sa.Timestamps + 59, // 136: sa.StorageAuthorityReadOnly.GetAuthorization2:output_type -> core.Authorization + 63, // 137: sa.StorageAuthorityReadOnly.GetCertificate:output_type -> core.Certificate + 63, // 138: sa.StorageAuthorityReadOnly.GetLintPrecertificate:output_type -> core.Certificate + 64, // 139: sa.StorageAuthorityReadOnly.GetCertificateStatus:output_type -> core.CertificateStatus + 65, // 140: sa.StorageAuthorityReadOnly.GetOrder:output_type -> core.Order + 65, // 141: sa.StorageAuthorityReadOnly.GetOrderForNames:output_type -> core.Order + 62, // 142: sa.StorageAuthorityReadOnly.GetRegistration:output_type -> core.Registration + 62, // 143: sa.StorageAuthorityReadOnly.GetRegistrationByKey:output_type -> core.Registration + 39, // 144: sa.StorageAuthorityReadOnly.GetRevocationStatus:output_type -> sa.RevocationStatus + 66, // 145: sa.StorageAuthorityReadOnly.GetRevokedCertsByShard:output_type -> core.CRLEntry + 4, // 146: sa.StorageAuthorityReadOnly.GetSerialMetadata:output_type -> sa.SerialMetadata + 3, // 147: sa.StorageAuthorityReadOnly.GetSerialsByAccount:output_type -> sa.Serial + 3, // 148: sa.StorageAuthorityReadOnly.GetSerialsByKey:output_type -> sa.Serial + 23, // 149: sa.StorageAuthorityReadOnly.GetValidAuthorizations2:output_type -> sa.Authorizations + 23, // 150: sa.StorageAuthorityReadOnly.GetValidOrderAuthorizations2:output_type -> sa.Authorizations + 23, // 151: sa.StorageAuthorityReadOnly.GetOrderAuthorizations:output_type -> sa.Authorizations + 30, // 152: sa.StorageAuthorityReadOnly.IncidentsForSerial:output_type -> sa.Incidents + 11, // 153: sa.StorageAuthorityReadOnly.KeyBlocked:output_type -> sa.Exists + 30, // 154: sa.StorageAuthorityReadOnly.ListIncidents:output_type -> sa.Incidents + 11, // 155: sa.StorageAuthorityReadOnly.ReplacementOrderExists:output_type -> sa.Exists + 37, // 156: sa.StorageAuthorityReadOnly.SerialsForIncident:output_type -> sa.IncidentSerial + 43, // 157: sa.StorageAuthorityReadOnly.CheckIdentifiersPaused:output_type -> sa.Identifiers + 43, // 158: sa.StorageAuthorityReadOnly.GetPausedIdentifiers:output_type -> sa.Identifiers + 53, // 159: sa.StorageAuthorityReadOnly.GetRateLimitOverride:output_type -> sa.RateLimitOverrideResponse + 53, // 160: sa.StorageAuthorityReadOnly.GetEnabledRateLimitOverrides:output_type -> sa.RateLimitOverrideResponse + 11, // 161: sa.StorageAuthority.FQDNSetExists:output_type -> sa.Exists + 7, // 162: sa.StorageAuthority.FQDNSetTimestampsForWindow:output_type -> sa.Timestamps + 59, // 163: sa.StorageAuthority.GetAuthorization2:output_type -> core.Authorization + 63, // 164: sa.StorageAuthority.GetCertificate:output_type -> core.Certificate + 63, // 165: sa.StorageAuthority.GetLintPrecertificate:output_type -> core.Certificate + 64, // 166: sa.StorageAuthority.GetCertificateStatus:output_type -> core.CertificateStatus + 65, // 167: sa.StorageAuthority.GetOrder:output_type -> core.Order + 65, // 168: sa.StorageAuthority.GetOrderForNames:output_type -> core.Order + 62, // 169: sa.StorageAuthority.GetRegistration:output_type -> core.Registration + 62, // 170: sa.StorageAuthority.GetRegistrationByKey:output_type -> core.Registration + 39, // 171: sa.StorageAuthority.GetRevocationStatus:output_type -> sa.RevocationStatus + 66, // 172: sa.StorageAuthority.GetRevokedCertsByShard:output_type -> core.CRLEntry + 4, // 173: sa.StorageAuthority.GetSerialMetadata:output_type -> sa.SerialMetadata + 3, // 174: sa.StorageAuthority.GetSerialsByAccount:output_type -> sa.Serial + 3, // 175: sa.StorageAuthority.GetSerialsByKey:output_type -> sa.Serial + 23, // 176: sa.StorageAuthority.GetValidAuthorizations2:output_type -> sa.Authorizations + 23, // 177: sa.StorageAuthority.GetValidOrderAuthorizations2:output_type -> sa.Authorizations + 23, // 178: sa.StorageAuthority.GetOrderAuthorizations:output_type -> sa.Authorizations + 30, // 179: sa.StorageAuthority.IncidentsForSerial:output_type -> sa.Incidents + 11, // 180: sa.StorageAuthority.KeyBlocked:output_type -> sa.Exists + 30, // 181: sa.StorageAuthority.ListIncidents:output_type -> sa.Incidents + 11, // 182: sa.StorageAuthority.ReplacementOrderExists:output_type -> sa.Exists + 37, // 183: sa.StorageAuthority.SerialsForIncident:output_type -> sa.IncidentSerial + 43, // 184: sa.StorageAuthority.CheckIdentifiersPaused:output_type -> sa.Identifiers + 43, // 185: sa.StorageAuthority.GetPausedIdentifiers:output_type -> sa.Identifiers + 53, // 186: sa.StorageAuthority.GetRateLimitOverride:output_type -> sa.RateLimitOverrideResponse + 53, // 187: sa.StorageAuthority.GetEnabledRateLimitOverrides:output_type -> sa.RateLimitOverrideResponse + 61, // 188: sa.StorageAuthority.AddBlockedKey:output_type -> google.protobuf.Empty + 61, // 189: sa.StorageAuthority.AddCertificate:output_type -> google.protobuf.Empty + 61, // 190: sa.StorageAuthority.AddPrecertificate:output_type -> google.protobuf.Empty + 61, // 191: sa.StorageAuthority.AddSerial:output_type -> google.protobuf.Empty + 61, // 192: sa.StorageAuthority.DeactivateAuthorization2:output_type -> google.protobuf.Empty + 62, // 193: sa.StorageAuthority.DeactivateRegistration:output_type -> core.Registration + 61, // 194: sa.StorageAuthority.FinalizeAuthorization2:output_type -> google.protobuf.Empty + 61, // 195: sa.StorageAuthority.FinalizeOrder:output_type -> google.protobuf.Empty + 65, // 196: sa.StorageAuthority.NewOrderAndAuthzs:output_type -> core.Order + 62, // 197: sa.StorageAuthority.NewRegistration:output_type -> core.Registration + 61, // 198: sa.StorageAuthority.RevokeCertificate:output_type -> google.protobuf.Empty + 61, // 199: sa.StorageAuthority.SetOrderError:output_type -> google.protobuf.Empty + 61, // 200: sa.StorageAuthority.SetOrderProcessing:output_type -> google.protobuf.Empty + 62, // 201: sa.StorageAuthority.UpdateRegistrationKey:output_type -> core.Registration + 61, // 202: sa.StorageAuthority.UpdateRevokedCertificate:output_type -> google.protobuf.Empty + 41, // 203: sa.StorageAuthority.LeaseCRLShard:output_type -> sa.LeaseCRLShardResponse + 61, // 204: sa.StorageAuthority.UpdateCRLShard:output_type -> google.protobuf.Empty + 45, // 205: sa.StorageAuthority.PauseIdentifiers:output_type -> sa.PauseIdentifiersResponse + 6, // 206: sa.StorageAuthority.UnpauseAccount:output_type -> sa.Count + 49, // 207: sa.StorageAuthority.AddRateLimitOverride:output_type -> sa.AddRateLimitOverrideResponse + 61, // 208: sa.StorageAuthority.DisableRateLimitOverride:output_type -> google.protobuf.Empty + 61, // 209: sa.StorageAuthority.EnableRateLimitOverride:output_type -> google.protobuf.Empty + 61, // 210: sa.StorageAuthority.RevokeAuthorizationFor:output_type -> google.protobuf.Empty + 29, // 211: sa.StorageAuthorityAdmin.CreateIncident:output_type -> sa.Incident + 29, // 212: sa.StorageAuthorityAdmin.UpdateIncident:output_type -> sa.Incident + 61, // 213: sa.StorageAuthorityAdmin.AddSerialsToIncident:output_type -> google.protobuf.Empty + 134, // [134:214] is the sub-list for method output_type + 54, // [54:134] is the sub-list for method input_type + 54, // [54:54] is the sub-list for extension type_name + 54, // [54:54] is the sub-list for extension extendee + 0, // [0:54] is the sub-list for field type_name } func init() { file_sa_proto_init() } @@ -4312,7 +4374,7 @@ func file_sa_proto_init() { GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: unsafe.Slice(unsafe.StringData(file_sa_proto_rawDesc), len(file_sa_proto_rawDesc)), NumEnums: 0, - NumMessages: 54, + NumMessages: 55, NumExtensions: 0, NumServices: 3, }, diff --git a/sa/proto/sa.proto b/sa/proto/sa.proto index e2754eb3d2c..8b063d159c8 100644 --- a/sa/proto/sa.proto +++ b/sa/proto/sa.proto @@ -93,7 +93,7 @@ service StorageAuthority { rpc AddRateLimitOverride(AddRateLimitOverrideRequest) returns (AddRateLimitOverrideResponse) {} rpc DisableRateLimitOverride(DisableRateLimitOverrideRequest) returns (google.protobuf.Empty) {} rpc EnableRateLimitOverride(EnableRateLimitOverrideRequest) returns (google.protobuf.Empty) {} - rpc RevokeAuthorization(AuthorizationID2) returns (google.protobuf.Empty) {} + rpc RevokeAuthorizationFor(RevokeAuthorizationForRequest) returns (google.protobuf.Empty) {} } // StorageAuthorityAdmin exposes those SA methods exclusive to the admin tool. @@ -484,3 +484,8 @@ message RateLimitOverrideResponse { bool enabled = 2; google.protobuf.Timestamp updatedAt = 3; } + +message RevokeAuthorizationForRequest { + int64 registrationID = 1; + core.Identifier identifier = 2; +} diff --git a/sa/proto/sa_grpc.pb.go b/sa/proto/sa_grpc.pb.go index fa3fda53b8b..e4c36a88291 100644 --- a/sa/proto/sa_grpc.pb.go +++ b/sa/proto/sa_grpc.pb.go @@ -1181,7 +1181,7 @@ const ( StorageAuthority_AddRateLimitOverride_FullMethodName = "/sa.StorageAuthority/AddRateLimitOverride" StorageAuthority_DisableRateLimitOverride_FullMethodName = "/sa.StorageAuthority/DisableRateLimitOverride" StorageAuthority_EnableRateLimitOverride_FullMethodName = "/sa.StorageAuthority/EnableRateLimitOverride" - StorageAuthority_RevokeAuthorization_FullMethodName = "/sa.StorageAuthority/RevokeAuthorization" + StorageAuthority_RevokeAuthorizationFor_FullMethodName = "/sa.StorageAuthority/RevokeAuthorizationFor" ) // StorageAuthorityClient is the client API for StorageAuthority service. @@ -1241,7 +1241,7 @@ type StorageAuthorityClient interface { AddRateLimitOverride(ctx context.Context, in *AddRateLimitOverrideRequest, opts ...grpc.CallOption) (*AddRateLimitOverrideResponse, error) DisableRateLimitOverride(ctx context.Context, in *DisableRateLimitOverrideRequest, opts ...grpc.CallOption) (*emptypb.Empty, error) EnableRateLimitOverride(ctx context.Context, in *EnableRateLimitOverrideRequest, opts ...grpc.CallOption) (*emptypb.Empty, error) - RevokeAuthorization(ctx context.Context, in *AuthorizationID2, opts ...grpc.CallOption) (*emptypb.Empty, error) + RevokeAuthorizationFor(ctx context.Context, in *RevokeAuthorizationForRequest, opts ...grpc.CallOption) (*emptypb.Empty, error) } type storageAuthorityClient struct { @@ -1787,10 +1787,10 @@ func (c *storageAuthorityClient) EnableRateLimitOverride(ctx context.Context, in return out, nil } -func (c *storageAuthorityClient) RevokeAuthorization(ctx context.Context, in *AuthorizationID2, opts ...grpc.CallOption) (*emptypb.Empty, error) { +func (c *storageAuthorityClient) RevokeAuthorizationFor(ctx context.Context, in *RevokeAuthorizationForRequest, opts ...grpc.CallOption) (*emptypb.Empty, error) { cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) out := new(emptypb.Empty) - err := c.cc.Invoke(ctx, StorageAuthority_RevokeAuthorization_FullMethodName, in, out, cOpts...) + err := c.cc.Invoke(ctx, StorageAuthority_RevokeAuthorizationFor_FullMethodName, in, out, cOpts...) if err != nil { return nil, err } @@ -1854,7 +1854,7 @@ type StorageAuthorityServer interface { AddRateLimitOverride(context.Context, *AddRateLimitOverrideRequest) (*AddRateLimitOverrideResponse, error) DisableRateLimitOverride(context.Context, *DisableRateLimitOverrideRequest) (*emptypb.Empty, error) EnableRateLimitOverride(context.Context, *EnableRateLimitOverrideRequest) (*emptypb.Empty, error) - RevokeAuthorization(context.Context, *AuthorizationID2) (*emptypb.Empty, error) + RevokeAuthorizationFor(context.Context, *RevokeAuthorizationForRequest) (*emptypb.Empty, error) mustEmbedUnimplementedStorageAuthorityServer() } @@ -2012,8 +2012,8 @@ func (UnimplementedStorageAuthorityServer) DisableRateLimitOverride(context.Cont func (UnimplementedStorageAuthorityServer) EnableRateLimitOverride(context.Context, *EnableRateLimitOverrideRequest) (*emptypb.Empty, error) { return nil, status.Errorf(codes.Unimplemented, "method EnableRateLimitOverride not implemented") } -func (UnimplementedStorageAuthorityServer) RevokeAuthorization(context.Context, *AuthorizationID2) (*emptypb.Empty, error) { - return nil, status.Errorf(codes.Unimplemented, "method RevokeAuthorization not implemented") +func (UnimplementedStorageAuthorityServer) RevokeAuthorizationFor(context.Context, *RevokeAuthorizationForRequest) (*emptypb.Empty, error) { + return nil, status.Errorf(codes.Unimplemented, "method RevokeAuthorizationFor not implemented") } func (UnimplementedStorageAuthorityServer) mustEmbedUnimplementedStorageAuthorityServer() {} func (UnimplementedStorageAuthorityServer) testEmbeddedByValue() {} @@ -2883,20 +2883,20 @@ func _StorageAuthority_EnableRateLimitOverride_Handler(srv interface{}, ctx cont return interceptor(ctx, in, info, handler) } -func _StorageAuthority_RevokeAuthorization_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(AuthorizationID2) +func _StorageAuthority_RevokeAuthorizationFor_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(RevokeAuthorizationForRequest) if err := dec(in); err != nil { return nil, err } if interceptor == nil { - return srv.(StorageAuthorityServer).RevokeAuthorization(ctx, in) + return srv.(StorageAuthorityServer).RevokeAuthorizationFor(ctx, in) } info := &grpc.UnaryServerInfo{ Server: srv, - FullMethod: StorageAuthority_RevokeAuthorization_FullMethodName, + FullMethod: StorageAuthority_RevokeAuthorizationFor_FullMethodName, } handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(StorageAuthorityServer).RevokeAuthorization(ctx, req.(*AuthorizationID2)) + return srv.(StorageAuthorityServer).RevokeAuthorizationFor(ctx, req.(*RevokeAuthorizationForRequest)) } return interceptor(ctx, in, info, handler) } @@ -3085,8 +3085,8 @@ var StorageAuthority_ServiceDesc = grpc.ServiceDesc{ Handler: _StorageAuthority_EnableRateLimitOverride_Handler, }, { - MethodName: "RevokeAuthorization", - Handler: _StorageAuthority_RevokeAuthorization_Handler, + MethodName: "RevokeAuthorizationFor", + Handler: _StorageAuthority_RevokeAuthorizationFor_Handler, }, }, Streams: []grpc.StreamDesc{ diff --git a/sa/sa.go b/sa/sa.go index 523e7ff3016..8d5f4f1745d 100644 --- a/sa/sa.go +++ b/sa/sa.go @@ -450,20 +450,23 @@ func (ssa *SQLStorageAuthority) DeactivateAuthorization2(ctx context.Context, re return &emptypb.Empty{}, nil } -// RevokeAuthorization revokes a currently unexpired authorization that is valid or pending -func (ssa *SQLStorageAuthority) RevokeAuthorization(ctx context.Context, req *sapb.AuthorizationID2) (*emptypb.Empty, error) { - if req.Id == 0 { +// RevokeAuthorizationFor revokes a valid or pending authorization by Registraton ID and Identifier so long as it is currently unexpired +func (ssa *SQLStorageAuthority) RevokeAuthorizationFor(ctx context.Context, req *sapb.RevokeAuthorizationForRequest) (*emptypb.Empty, error) { + if core.IsAnyNilOrZero(req.RegistrationID, req.Identifier.Type, req.Identifier.Value) { return nil, errIncompleteRequest } + // Aim to leverage the `regID_identifier_status_expires_idx` index on the Authz2 table _, err := ssa.dbMap.ExecContext(ctx, - `UPDATE authz2 SET status = :revoked WHERE id = :id AND :expirenow < expires AND status IN (:valid,:pending)`, + `UPDATE authz2 SET status = :revoked WHERE registrationID = :registrationID AND identifierType = :identifierType AND identifierValue = :identifierValue AND status IN (:valid,:pending) AND :expirenow < expires`, map[string]any{ - "revoked": statusUint(core.StatusRevoked), - "id": req.Id, - "expirenow": ssa.clk.Now(), - "valid": statusUint(core.StatusValid), - "pending": statusUint(core.StatusPending), + "revoked": statusUint(core.StatusRevoked), + "registrationID": req.RegistrationID, + "identifierType": identifierTypeToUint[req.Identifier.Type], + "identifierValue": req.Identifier.Value, + "expirenow": ssa.clk.Now(), + "valid": statusUint(core.StatusValid), + "pending": statusUint(core.StatusPending), }, ) if err != nil { diff --git a/sa/sa_test.go b/sa/sa_test.go index f258897d9f8..08308a6e88a 100644 --- a/sa/sa_test.go +++ b/sa/sa_test.go @@ -862,31 +862,32 @@ func TestDeactivateAuthorization2(t *testing.T) { test.AssertError(t, err, "sa.DeactivateAuthorization2 unexpectedly succeeded") } -func TestRevokeAuthorization(t *testing.T) { +func TestRevokeAuthorizationFor(t *testing.T) { sa, fc := initSA(t) reg := createWorkingRegistration(t, sa) expires := fc.Now().Add(time.Hour).UTC() attemptedAt := fc.Now() + ident := identifier.NewDNS("example.com") // revoke a pending authorization - authzID := createPendingAuthorization(t, sa, reg.Id, identifier.NewDNS("example.com"), expires) - _, err := sa.RevokeAuthorization(context.Background(), &sapb.AuthorizationID2{Id: authzID}) + authzID := createPendingAuthorization(t, sa, reg.Id, ident, expires) + _, err := sa.RevokeAuthorizationFor(context.Background(), &sapb.RevokeAuthorizationForRequest{RegistrationID: reg.Id, Identifier: ident.ToProto()}) test.AssertNotError(t, err, "sa.RevokeAuthorization failed") authz, _ := sa.GetAuthorization2(ctx, &sapb.AuthorizationID2{Id: authzID}) test.AssertEquals(t, core.AcmeStatus(authz.Status), core.StatusRevoked) // revoke a valid authorization authzID = createFinalizedAuthorization(t, sa, reg.Id, identifier.NewDNS("example.com"), expires, "valid", attemptedAt) - _, err = sa.RevokeAuthorization(context.Background(), &sapb.AuthorizationID2{Id: authzID}) + _, err = sa.RevokeAuthorizationFor(context.Background(), &sapb.RevokeAuthorizationForRequest{RegistrationID: reg.Id, Identifier: ident.ToProto()}) test.AssertNotError(t, err, "sa.RevokeAuthorization failed") authz, _ = sa.GetAuthorization2(ctx, &sapb.AuthorizationID2{Id: authzID}) test.AssertEquals(t, core.AcmeStatus(authz.Status), core.StatusRevoked) // revoke an invalid authorization authzID = createFinalizedAuthorization(t, sa, reg.Id, identifier.NewDNS("example.com"), expires, "invalid", attemptedAt) - _, err = sa.RevokeAuthorization(context.Background(), &sapb.AuthorizationID2{Id: authzID}) + _, err = sa.RevokeAuthorizationFor(context.Background(), &sapb.RevokeAuthorizationForRequest{RegistrationID: reg.Id, Identifier: ident.ToProto()}) test.AssertNotError(t, err, "sa.RevokeAuthorization failed") authz, _ = sa.GetAuthorization2(ctx, &sapb.AuthorizationID2{Id: authzID}) // revocation does NOT change invalid to revoked @@ -895,14 +896,14 @@ func TestRevokeAuthorization(t *testing.T) { // revoke an expired authorization expires = fc.Now().Add(-time.Hour).UTC() authzID = createPendingAuthorization(t, sa, reg.Id, identifier.NewDNS("example.com"), expires) - _, err = sa.RevokeAuthorization(context.Background(), &sapb.AuthorizationID2{Id: authzID}) + _, err = sa.RevokeAuthorizationFor(context.Background(), &sapb.RevokeAuthorizationForRequest{RegistrationID: reg.Id, Identifier: ident.ToProto()}) test.AssertNotError(t, err, "sa.RevokeAuthorization failed") authz, _ = sa.GetAuthorization2(ctx, &sapb.AuthorizationID2{Id: authzID}) // revocation does NOT modify an expired authorization test.AssertEquals(t, core.AcmeStatus(authz.Status), core.StatusPending) - // test error case with zero-value authzID - _, err = sa.RevokeAuthorization(context.Background(), &sapb.AuthorizationID2{Id: 0}) + // test error case with zero-values in request + _, err = sa.RevokeAuthorizationFor(context.Background(), &sapb.RevokeAuthorizationForRequest{RegistrationID: 0, Identifier: &corepb.Identifier{Type: "", Value: ""}}) test.AssertError(t, err, "sa.RevokeAuthorization unexpectedly succeeded") } diff --git a/test/config-next/ra.json b/test/config-next/ra.json index 50813bf4713..6a656b2c419 100644 --- a/test/config-next/ra.json +++ b/test/config-next/ra.json @@ -186,7 +186,8 @@ "CAARechecksFailOrder": true, "AutomaticallyPauseZombieClients": true, "DNSAccount01Enabled": true, - "DNSPersist01Enabled": true + "DNSPersist01Enabled": true, + "RevokeAuthzsUponRevokeCert": true } }, "pa": { diff --git a/test/config/ra.json b/test/config/ra.json index a9358e4c045..3fe692e5556 100644 --- a/test/config/ra.json +++ b/test/config/ra.json @@ -136,7 +136,8 @@ } }, "features": { - "AutomaticallyPauseZombieClients": true + "AutomaticallyPauseZombieClients": true, + "RevokeAuthzsUponRevokeCert": false }, "ctLogs": { "stagger": "500ms", From 6177a2f45ae30eeb2f2bb4f7559c35d44f8254c0 Mon Sep 17 00:00:00 2001 From: Kiel C Date: Fri, 26 Jun 2026 14:57:51 +0000 Subject: [PATCH 3/4] Move authz revocation into async helper. Revise tests. --- ra/ra.go | 36 +++++++------- ra/ra_test.go | 117 +++++++++++++------------------------------- sa/sa_test.go | 28 ++++++----- test/config/ra.json | 3 +- 4 files changed, 69 insertions(+), 115 deletions(-) diff --git a/ra/ra.go b/ra/ra.go index f016f4e748f..70c9838361a 100644 --- a/ra/ra.go +++ b/ra/ra.go @@ -1685,6 +1685,21 @@ func (ra *RegistrationAuthorityImpl) updateRevocationForKeyCompromise(ctx contex return nil } +func (ra *RegistrationAuthorityImpl) revokeAuthorizations(ctx context.Context, cert *x509.Certificate, smeta *sapb.SerialMetadata) { + if features.Get().RevokeAuthzsUponRevokeCert { + idents := identifier.FromCert(cert) + for _, ident := range idents { + _, err := ra.SA.RevokeAuthorizationFor(ctx, &sapb.RevokeAuthorizationForRequest{ + RegistrationID: smeta.RegistrationID, + Identifier: ident.ToProto(), + }) + if err != nil { + ra.log.Infof("Authz revocation failed: %s", err) + } + } + } +} + // RevokeCertByApplicant revokes the certificate in question. It allows any // revocation reason from (0, 1, 3, 4, 5, 9), because Subscribers are allowed to // request any revocation reason for their own certificates. However, if the @@ -1791,23 +1806,10 @@ func (ra *RegistrationAuthorityImpl) RevokeCertByApplicant(ctx context.Context, return nil, err } - // Revoke authorizations held by a RegistrationID that has been confirmed to - // be different than the requester - if features.Get().RevokeAuthzsUponRevokeCert && requestAuthzRevocation { - // TODO(#8673): is this better as one RPC call with all idents, or as one RPC call per ident? - idents := identifier.FromCert(cert) - for _, ident := range idents { - _, err = ra.SA.RevokeAuthorizationFor(ctx, &sapb.RevokeAuthorizationForRequest{ - RegistrationID: metadata.RegistrationID, - Identifier: ident.ToProto(), - }) - // TODO(#8673): I do NOT think the revocation function should fail - // if authz revocation fails, but maybe there's an alternate way to - // surface this. Or maybe just log it? - // if err != nil { - // return nil, err - // } - } + // Asyncronously request to revoke authorizations held by the RegID from + // cert metadata, confirmed above to be different than requester ID. + if requestAuthzRevocation { + go ra.revokeAuthorizations(ctx, cert, metadata) } return &emptypb.Empty{}, nil diff --git a/ra/ra_test.go b/ra/ra_test.go index ddf2b783bb7..8e11f11a32a 100644 --- a/ra/ra_test.go +++ b/ra/ra_test.go @@ -3525,10 +3525,6 @@ func (msar *mockSARevocation) GetCertificate(_ context.Context, req *sapb.Serial }, nil } -func (msar *mockSARevocation) RevokeAuthorizationFor(_ context.Context, req *sapb.RevokeAuthorizationForRequest, _ ...grpc.CallOption) (*emptypb.Empty, error) { - return &emptypb.Empty{}, nil -} - func (msar *mockSARevocation) RevokeCertificate(_ context.Context, req *sapb.RevokeCertificateRequest, _ ...grpc.CallOption) (*emptypb.Empty, error) { if _, present := msar.revoked[req.Serial]; present { return nil, berrors.AlreadyRevokedError("already revoked") @@ -3674,106 +3670,59 @@ func TestRevokeCertByApplicant_Controller(t *testing.T) { test.AssertEquals(t, mockSA.revoked[core.SerialToString(cert.SerialNumber)].RevokedReason, int64(revocation.CessationOfOperation)) } -func TestRevokeAuthzsUponRevokeCert_FeatureDisabled(t *testing.T) { +// mockSARecordAuthzRevocation is a mock sapb.StorageAuthorityClient that simply +// maps identifier strings to RegistrationIDs for received RevokeAuthorizationFor +// requests. +type mockSARecordAuthzRevocation struct { + sapb.StorageAuthorityClient + recv map[string]int64 +} + +func (msa *mockSARecordAuthzRevocation) RevokeAuthorizationFor(ctx context.Context, req *sapb.RevokeAuthorizationForRequest, _ ...grpc.CallOption) (*emptypb.Empty, error) { + msa.recv[req.Identifier.Value] = req.RegistrationID + return &emptypb.Empty{}, nil +} + +func TestRevokeAuthorizations_FeatureDisabled(t *testing.T) { _, _, ra, _, clk, _, cleanUp := initAuthorities(t) defer cleanUp() - // Specifically disable the feature which allows authz revocation features.Set(features.Config{RevokeAuthzsUponRevokeCert: false}) defer features.Reset() - // Use the same self-signed cert as both issuer and issuee for revocation. - _, cert := test.ThrowAwayCert(t, clk) - cert.IsCA = true - ic, err := issuance.NewCertificate(cert) - test.AssertNotError(t, err, "failed to create issuer cert") - ra.issuersByNameID = map[issuance.NameID]*issuance.Certificate{ - ic.NameID(): ic, - } - mockSA := newMockSARevocation(cert) - ra.SA = &mockSARevocationWithAuthzs{mockSA, false} - - // Revoking with the correct regID should succeed. - _, err = ra.RevokeCertByApplicant(context.Background(), &rapb.RevokeCertByApplicantRequest{ - Cert: cert.Raw, - Code: int64(revocation.Unspecified), - RegID: 1, - }) - test.AssertNotError(t, err, "should have succeeded") - // And Authzs should NOT be revoked - // TODO(#8673): make assertions about the authorizations + mockSA := mockSARecordAuthzRevocation{} + mockSA.recv = make(map[string]int64) + ra.SA = &mockSA - // Another unrevoked cert - ic, err = issuance.NewCertificate(cert) - test.AssertNotError(t, err, "failed to create issuer cert") - ra.issuersByNameID = map[issuance.NameID]*issuance.Certificate{ - ic.NameID(): ic, - } - mockSA = newMockSARevocation(cert) - ra.SA = &mockSARevocationWithAuthzs{mockSA, true} + _, cert := test.ThrowAwayCert(t, clk) - // Revoking when the account does have valid authzs for the name should succeed, - _, err = ra.RevokeCertByApplicant(context.Background(), &rapb.RevokeCertByApplicantRequest{ - Cert: cert.Raw, - Code: int64(revocation.Unspecified), - RegID: 2, - }) - test.AssertNotError(t, err, "should have succeeded") - test.AssertEquals(t, mockSA.revoked[core.SerialToString(cert.SerialNumber)].RevokedReason, int64(revocation.CessationOfOperation)) - // And Authzs should NOT be revoked - // TODO(#8673): make assertions about the authorizations + meta := &sapb.SerialMetadata{RegistrationID: 333} + ra.revokeAuthorizations(context.Background(), cert, meta) + // mockSA should not have received ANY requests + test.AssertEquals(t, len(mockSA.recv), 0) } - -func TestRevokeAuthzsUponRevokeCert_FeatureEnabled(t *testing.T) { +func TestRevokeAuthorizations_FeatureEnabled(t *testing.T) { _, _, ra, _, clk, _, cleanUp := initAuthorities(t) defer cleanUp() - // Enable the feature which allows authz revocation features.Set(features.Config{RevokeAuthzsUponRevokeCert: true}) defer features.Reset() - // Use the same self-signed cert as both issuer and issuee for revocation. + mockSA := mockSARecordAuthzRevocation{} + mockSA.recv = make(map[string]int64) + ra.SA = &mockSA + _, cert := test.ThrowAwayCert(t, clk) - cert.IsCA = true - ic, err := issuance.NewCertificate(cert) - test.AssertNotError(t, err, "failed to create issuer cert") - ra.issuersByNameID = map[issuance.NameID]*issuance.Certificate{ - ic.NameID(): ic, - } - mockSA := newMockSARevocation(cert) - ra.SA = &mockSARevocationWithAuthzs{mockSA, false} + idents := identifier.FromCert(cert) - // Revoking with the correct regID should succeed. - _, err = ra.RevokeCertByApplicant(context.Background(), &rapb.RevokeCertByApplicantRequest{ - Cert: cert.Raw, - Code: int64(revocation.Unspecified), - RegID: 1, - }) - test.AssertNotError(t, err, "should have succeeded") - // And Authzs should NOT be revoked - // TODO(#8673): make assertions about the authorizations + meta := &sapb.SerialMetadata{RegistrationID: 333} - // Another unrevoked cert - ic, err = issuance.NewCertificate(cert) - test.AssertNotError(t, err, "failed to create issuer cert") - ra.issuersByNameID = map[issuance.NameID]*issuance.Certificate{ - ic.NameID(): ic, + ra.revokeAuthorizations(context.Background(), cert, meta) + // mockSA should have received requests for each of the certificate identifiers + for _, ident := range idents { + test.AssertEquals(t, mockSA.recv[ident.Value], meta.RegistrationID) } - mockSA = newMockSARevocation(cert) - ra.SA = &mockSARevocationWithAuthzs{mockSA, true} - - // Revoking when the account does have valid authzs for the name should succeed, - _, err = ra.RevokeCertByApplicant(context.Background(), &rapb.RevokeCertByApplicantRequest{ - Cert: cert.Raw, - Code: int64(revocation.Unspecified), - RegID: 2, - }) - test.AssertNotError(t, err, "should have succeeded") - test.AssertEquals(t, mockSA.revoked[core.SerialToString(cert.SerialNumber)].RevokedReason, int64(revocation.CessationOfOperation)) - // And Authzs SHOULD be revoked - // TODO(#8673): make assertions about the authorizations - } func TestRevokeCertByKey(t *testing.T) { diff --git a/sa/sa_test.go b/sa/sa_test.go index 08308a6e88a..37735726acc 100644 --- a/sa/sa_test.go +++ b/sa/sa_test.go @@ -864,46 +864,50 @@ func TestDeactivateAuthorization2(t *testing.T) { func TestRevokeAuthorizationFor(t *testing.T) { sa, fc := initSA(t) - reg := createWorkingRegistration(t, sa) - expires := fc.Now().Add(time.Hour).UTC() attemptedAt := fc.Now() ident := identifier.NewDNS("example.com") - // revoke a pending authorization + // create a pending authz authzID := createPendingAuthorization(t, sa, reg.Id, ident, expires) + // revoke a pending authz _, err := sa.RevokeAuthorizationFor(context.Background(), &sapb.RevokeAuthorizationForRequest{RegistrationID: reg.Id, Identifier: ident.ToProto()}) test.AssertNotError(t, err, "sa.RevokeAuthorization failed") authz, _ := sa.GetAuthorization2(ctx, &sapb.AuthorizationID2{Id: authzID}) + // revoking a pending authz should result in revoked status test.AssertEquals(t, core.AcmeStatus(authz.Status), core.StatusRevoked) - // revoke a valid authorization - authzID = createFinalizedAuthorization(t, sa, reg.Id, identifier.NewDNS("example.com"), expires, "valid", attemptedAt) + // create a valid authz + authzID = createFinalizedAuthorization(t, sa, reg.Id, ident, expires, "valid", attemptedAt) + // revoke a valid authz _, err = sa.RevokeAuthorizationFor(context.Background(), &sapb.RevokeAuthorizationForRequest{RegistrationID: reg.Id, Identifier: ident.ToProto()}) test.AssertNotError(t, err, "sa.RevokeAuthorization failed") authz, _ = sa.GetAuthorization2(ctx, &sapb.AuthorizationID2{Id: authzID}) + // revoking a valid authz should result in revoked status test.AssertEquals(t, core.AcmeStatus(authz.Status), core.StatusRevoked) - // revoke an invalid authorization - authzID = createFinalizedAuthorization(t, sa, reg.Id, identifier.NewDNS("example.com"), expires, "invalid", attemptedAt) + // create an invalid authz + authzID = createFinalizedAuthorization(t, sa, reg.Id, ident, expires, "invalid", attemptedAt) + // revoke an invalid authz _, err = sa.RevokeAuthorizationFor(context.Background(), &sapb.RevokeAuthorizationForRequest{RegistrationID: reg.Id, Identifier: ident.ToProto()}) test.AssertNotError(t, err, "sa.RevokeAuthorization failed") authz, _ = sa.GetAuthorization2(ctx, &sapb.AuthorizationID2{Id: authzID}) - // revocation does NOT change invalid to revoked + // revoking an invalid authz should NOT change status from invalid test.AssertEquals(t, core.AcmeStatus(authz.Status), core.StatusInvalid) - // revoke an expired authorization + // create an expired authz expires = fc.Now().Add(-time.Hour).UTC() - authzID = createPendingAuthorization(t, sa, reg.Id, identifier.NewDNS("example.com"), expires) + authzID = createPendingAuthorization(t, sa, reg.Id, ident, expires) + // revoke an expired authz _, err = sa.RevokeAuthorizationFor(context.Background(), &sapb.RevokeAuthorizationForRequest{RegistrationID: reg.Id, Identifier: ident.ToProto()}) test.AssertNotError(t, err, "sa.RevokeAuthorization failed") authz, _ = sa.GetAuthorization2(ctx, &sapb.AuthorizationID2{Id: authzID}) - // revocation does NOT modify an expired authorization + // revoking an expired authz should NOT change status from expired test.AssertEquals(t, core.AcmeStatus(authz.Status), core.StatusPending) // test error case with zero-values in request - _, err = sa.RevokeAuthorizationFor(context.Background(), &sapb.RevokeAuthorizationForRequest{RegistrationID: 0, Identifier: &corepb.Identifier{Type: "", Value: ""}}) + _, err = sa.RevokeAuthorizationFor(context.Background(), &sapb.RevokeAuthorizationForRequest{RegistrationID: reg.Id, Identifier: &corepb.Identifier{Type: "", Value: ""}}) test.AssertError(t, err, "sa.RevokeAuthorization unexpectedly succeeded") } diff --git a/test/config/ra.json b/test/config/ra.json index 3fe692e5556..a9358e4c045 100644 --- a/test/config/ra.json +++ b/test/config/ra.json @@ -136,8 +136,7 @@ } }, "features": { - "AutomaticallyPauseZombieClients": true, - "RevokeAuthzsUponRevokeCert": false + "AutomaticallyPauseZombieClients": true }, "ctLogs": { "stagger": "500ms", From 4007fb1143906ed21711b438acce0a90a4c30357 Mon Sep 17 00:00:00 2001 From: Kiel C Date: Fri, 26 Jun 2026 15:03:50 +0000 Subject: [PATCH 4/4] ra: Fix typo in comment --- ra/ra.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ra/ra.go b/ra/ra.go index 70c9838361a..db71d130237 100644 --- a/ra/ra.go +++ b/ra/ra.go @@ -1806,7 +1806,7 @@ func (ra *RegistrationAuthorityImpl) RevokeCertByApplicant(ctx context.Context, return nil, err } - // Asyncronously request to revoke authorizations held by the RegID from + // Asynchronously request to revoke authorizations held by the RegID from // cert metadata, confirmed above to be different than requester ID. if requestAuthzRevocation { go ra.revokeAuthorizations(ctx, cert, metadata)