77import grpc
88
99from db import get_session
10- from keys import get_keys_for_decryption
10+ from keys import KeyManager , KeyManagerError
1111from lib_relaysms_payload_specs .generated import relaysms_spec_payload as rrs
1212from logutils import get_logger
13- from models .server_identity_key import mark_key_used as mark_ss_key_used
1413from platforms .adapter_ipc_handler import AdapterIPCHandler
1514from protos .v3 import publisher_pb2
1615
@@ -26,7 +25,7 @@ def RevokeOAuth2Token(self, request, context):
2625 return auth_error
2726
2827 if not payload_bin :
29- logger .error ("missing token ciphertext in request payload " )
28+ logger .error ("Missing token ciphertext in revoke request " )
3029 return self .handle_create_grpc_error_response (
3130 context ,
3231 response ,
@@ -42,9 +41,10 @@ def RevokeOAuth2Token(self, request, context):
4241
4342 try :
4443 with get_session () as s :
44+ key_manager = KeyManager (s )
4545 token , token_hash_obj , ss_kid , es_kid , _ , ec_kid_pk = (
46- get_keys_for_decryption (
47- token_id = request .token_id , key_id = request .key_id , session = s
46+ key_manager . get_token_and_keys_for_decryption (
47+ token_id = request .token_id , key_id = request .key_id
4848 )
4949 )
5050
@@ -56,21 +56,23 @@ def RevokeOAuth2Token(self, request, context):
5656 key_id = request .key_id ,
5757 ciphertext = payload_bin ,
5858 )
59- except rrs .V1CryptographicError .FailedToDecrypt as e :
59+ except rrs .V1CryptographicError .FailedToDecrypt :
60+ logger .exception ("Token decryption failed: kid=%s" , request .key_id )
6061 return self .handle_create_grpc_error_response (
6162 context ,
6263 response ,
63- f"token decryption failed: { e } " ,
64+ "revocation failed" ,
6465 grpc .StatusCode .UNAUTHENTICATED ,
6566 )
6667
6768 if not secrets .compare_digest (
6869 hashlib .sha256 (decrypted_token ).digest (), token_hash_obj .token_hash
6970 ):
71+ logger .warning ("Token hash mismatch: kid=%s" , request .key_id )
7072 return self .handle_create_grpc_error_response (
7173 context ,
7274 response ,
73- "token hash mismatch " ,
75+ "revocation failed " ,
7476 grpc .StatusCode .UNAUTHENTICATED ,
7577 )
7678
@@ -87,21 +89,26 @@ def RevokeOAuth2Token(self, request, context):
8789 )
8890
8991 if pipe .get ("error" ):
90- logger .error ("adapter revocation failed: %s" , pipe ["error" ])
92+ logger .error (
93+ "Adapter revocation failed for platform %r: %s" ,
94+ token .platform ,
95+ pipe ["error" ],
96+ )
9197
9298 s .delete (token )
93- mark_ss_key_used (request .key_id , s )
99+ key_manager .mark_identity_key_used (request .key_id )
100+ logger .info ("Token revoked: platform=%r" , token .platform )
94101
95102 return response (success = True , message = "Successfully revoked and deleted token" )
96103
97- except ValueError as exc :
104+ except NotImplementedError as exc :
98105 return self .handle_create_grpc_error_response (
99- context , response , exc , grpc .StatusCode .NOT_FOUND
106+ context , response , exc , grpc .StatusCode .UNIMPLEMENTED
100107 )
101108
102- except NotImplementedError as exc :
109+ except KeyManagerError :
103110 return self .handle_create_grpc_error_response (
104- context , response , exc , grpc .StatusCode .UNIMPLEMENTED
111+ context , response , "revocation failed" , grpc .StatusCode .UNAUTHENTICATED
105112 )
106113
107114 except Exception as exc :
0 commit comments