2727)
2828from ._streaming import Stream
2929
30+ from ._utils ._key_agreement import key_agreement_client
31+
3032__all__ = ["Ark" , "AsyncArk" ]
3133
3234
@@ -85,6 +87,7 @@ def __init__(
8587
8688 self ._default_stream_cls = Stream
8789 self ._sts_token_manager : StsTokenManager | None = None
90+ self ._certificate_manager : Dict [str , key_agreement_client ] | None = None
8891
8992 self .chat = resources .Chat (self )
9093 self .bot_chat = resources .BotChat (self )
@@ -99,6 +102,34 @@ def _get_endpoint_sts_token(self, endpoint_id: str):
99102 self ._sts_token_manager = StsTokenManager (self .ak , self .sk , self .region )
100103 return self ._sts_token_manager .get (endpoint_id )
101104
105+ 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-----"""
123+ if self ._certificate_manager is None :
124+ self ._certificate_manager = {}
125+ if endpoint_id not in self ._certificate_manager :
126+ if self .ak is None or self .sk is None :
127+ 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 ]
132+
102133 def _get_bot_sts_token (self , bot_id : str ):
103134 if self ._sts_token_manager is None :
104135 if self .ak is None or self .sk is None :
0 commit comments