@@ -87,7 +87,7 @@ def __init__(
8787
8888 self ._default_stream_cls = Stream
8989 self ._sts_token_manager : StsTokenManager | None = None
90- self ._certificate_manager : Dict [ str , key_agreement_client ] | None = None
90+ self ._certificate_manager : E2ECertificateManager | None = None
9191
9292 self .chat = resources .Chat (self )
9393 self .bot_chat = resources .BotChat (self )
@@ -103,32 +103,11 @@ def _get_endpoint_sts_token(self, endpoint_id: str):
103103 return self ._sts_token_manager .get (endpoint_id )
104104
105105 def _get_endpoint_certificate (self , endpoint_id : str ) -> key_agreement_client :
106- seed_pem = """-----BEGIN CERTIFICATE-----
107- MIICxjCCAm2gAwIBAgIUG8YxEzdBJnYjBEYSc1j2diJ8/uMwCgYIKoZIzj0EAwIw
108- gYQxITAfBgNVBAMMGE1hYVMgU0RLIFN1YiBDQSBFQ0MgUDI1NjEbMBkGA1UECgwS
109- Vm9sY2FubyBFbmdpbmUgQXJrMREwDwYDVQQLDAhTZWN1cml0eTELMAkGA1UEBhMC
110- Q04xEDAOBgNVBAgMB0JlaWppbmcxEDAOBgNVBAcMB0JlaWppbmcwHhcNMjQwMTAz
111- MDY1MjM4WhcNMjkwMTAzMDY1MjM4WjCBgjELMAkGA1UEBhMCQ04xEDAOBgNVBAgT
112- B0JlaWppbmcxEDAOBgNVBAcTB0JlaWppbmcxGzAZBgNVBAoTElZvbGNhbm8gRW5n
113- aW5lIEFyazERMA8GA1UECxMIU2VjdXJpdHkxHzAdBgNVBAMTFk1hYVMgQ3J5cHRv
114- IFNESyBPbmxpbmUwWTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAATD7RyZC51FCwuK
115- xYKh2ZCwIvbNDvQfosUk3gKc0B/+euemDWDAaVazuBOm8okHsSmUrsEudeksRruG
116- LTGu1lBxo4G8MIG5MA4GA1UdDwEB/wQEAwIDiDBYBgNVHR8EUTBPME2gS6BJhkdo
117- dHRwOi8vY3JsLnZvbGNjYS5jb20vdm9sYzE/c249NURCNEUwNDNFRjQ3MEY3RDBB
118- REU0RDIyMTNBNTU1NTEzMjEyOEM3MzA4BggrBgEFBQcBAQQsMCowKAYIKwYBBQUH
119- MAGGHGh0dHA6Ly9vY3NwLnZvbGNjYS5jb20vdm9sYzEwEwYDVR0lBAwwCgYIKwYB
120- BQUHAwEwCgYIKoZIzj0EAwIDRwAwRAIgFSel9WBkyPmpdG6YzReb7ShCVKq3scT3
121- 9T2mfBgooPkCIHpRalKvIJX5S9oSyTf6iQiUcwzfUHd47Ew+PUV7O6aq
122- -----END CERTIFICATE-----"""
123106 if self ._certificate_manager is None :
124- self ._certificate_manager = {}
125- if endpoint_id not in self ._certificate_manager :
126107 if self .ak is None or self .sk is None :
127108 raise ArkAPIError ("must set ak and sk before get endpoint token." )
128- self ._certificate_manager [endpoint_id ] = key_agreement_client (
129- certificate_pem_string = seed_pem
130- )
131- return self ._certificate_manager [endpoint_id ]
109+ self ._certificate_manager = E2ECertificateManager (self .ak , self .sk , self .region )
110+ return self ._certificate_manager .get (endpoint_id )
132111
133112 def _get_bot_sts_token (self , bot_id : str ):
134113 if self ._sts_token_manager is None :
@@ -302,3 +281,37 @@ def _load_api_key(self, ep: str, duration_seconds: int,
302281 )
303282
304283 return resp .api_key , resp .expired_time
284+
285+ class E2ECertificateManager (object ):
286+ def __init__ (self , ak : str , sk : str , region : str ):
287+ self ._certificate_manager : Dict [str , key_agreement_client ] = {}
288+
289+ import volcenginesdkcore
290+
291+ configuration = volcenginesdkcore .Configuration ()
292+ configuration .ak = ak
293+ configuration .sk = sk
294+ configuration .region = region
295+ configuration .schema = "https"
296+
297+ volcenginesdkcore .Configuration .set_default (configuration )
298+ self .api_instance = volcenginesdkark .ARKApi ()
299+
300+ def _load_api_key (self , ep : str ) -> str :
301+ get_endpoint_certificate_request = volcenginesdkark .GetEndpointCertificateRequest (
302+ id = ep
303+ )
304+ try :
305+ resp : volcenginesdkark .GetEndpointCertificateResponse = self .api_instance .get_endpoint_certificate (get_endpoint_certificate_request )
306+ except ApiException as e :
307+ print ("Exception when calling api: %s\n " % e )
308+
309+ return resp .pca_instance_certificate
310+
311+ def get (self , ep : str ) -> str :
312+ if ep not in self ._certificate_manager :
313+ cert_pem = self ._load_api_key (ep )
314+ self ._certificate_manager [ep ] = key_agreement_client (
315+ certificate_pem_string = cert_pem
316+ )
317+ return self ._certificate_manager [ep ]
0 commit comments