@@ -11,13 +11,14 @@ import kotlinx.cinterop.CPointer
1111import kotlinx.cinterop.ExperimentalForeignApi
1212import kotlinx.rpc.internal.utils.InternalRpcApi
1313import kotlinx.rpc.grpc.internal.cinterop.grpc_ssl_client_certificate_request_type
14+ import kotlinx.rpc.grpc.internal.cinterop.grpc_tls_certificate_provider_in_memory_create
15+ import kotlinx.rpc.grpc.internal.cinterop.grpc_tls_certificate_provider_in_memory_set_identity_certificate
16+ import kotlinx.rpc.grpc.internal.cinterop.grpc_tls_certificate_provider_in_memory_set_root_certificate
1417import kotlinx.rpc.grpc.internal.cinterop.grpc_tls_certificate_provider_release
15- import kotlinx.rpc.grpc.internal.cinterop.grpc_tls_certificate_provider_static_data_create
1618import kotlinx.rpc.grpc.internal.cinterop.grpc_tls_credentials_options_create
1719import kotlinx.rpc.grpc.internal.cinterop.grpc_tls_credentials_options_set_cert_request_type
18- import kotlinx.rpc.grpc.internal.cinterop.grpc_tls_credentials_options_set_certificate_provider
19- import kotlinx.rpc.grpc.internal.cinterop.grpc_tls_credentials_options_watch_identity_key_cert_pairs
20- import kotlinx.rpc.grpc.internal.cinterop.grpc_tls_credentials_options_watch_root_certs
20+ import kotlinx.rpc.grpc.internal.cinterop.grpc_tls_credentials_options_set_identity_certificate_provider
21+ import kotlinx.rpc.grpc.internal.cinterop.grpc_tls_credentials_options_set_root_certificate_provider
2122import kotlinx.rpc.grpc.internal.cinterop.grpc_tls_identity_pairs_add_pair
2223import kotlinx.rpc.grpc.internal.cinterop.grpc_tls_identity_pairs_create
2324import kotlinx.rpc.grpc.internal.shim.InternalNativeRpcApi
@@ -46,30 +47,28 @@ public class TlsCredentialsOptionsBuilder {
4647 public fun build (): CPointer <grpc_tls_credentials_options> {
4748 val opts = grpc_tls_credentials_options_create() ? : error(" alloc opts failed" )
4849
49- val pairs = if (cert != null && key != null ) {
50- val p = grpc_tls_identity_pairs_create() ? : error(" pairs alloc failed" )
51- grpc_tls_identity_pairs_add_pair(p, key, cert);
52- p
53- } else {
54- null
55- }
50+ val provider = grpc_tls_certificate_provider_in_memory_create()
51+ ? : error(" provider alloc failed" )
5652
57- if (roots != null || pairs != null ) {
58- val provider = grpc_tls_certificate_provider_static_data_create(
59- roots, pairs
60- ) ? : error(" provider alloc failed" )
61- grpc_tls_credentials_options_set_certificate_provider(opts, provider)
62- grpc_tls_certificate_provider_release(provider)
53+ if (roots != null ) {
54+ check(grpc_tls_certificate_provider_in_memory_set_root_certificate(provider, roots)) {
55+ " Failed to set root certificate on in-memory provider"
56+ }
57+ grpc_tls_credentials_options_set_root_certificate_provider(opts, provider)
6358 }
6459
65-
66- if (pairs != null ) {
67- grpc_tls_credentials_options_watch_identity_key_cert_pairs(opts)
68- }
69- if (roots != null ) {
70- grpc_tls_credentials_options_watch_root_certs(opts)
60+ if (cert != null && key != null ) {
61+ val pairs = grpc_tls_identity_pairs_create() ? : error(" pairs alloc failed" )
62+ grpc_tls_identity_pairs_add_pair(pairs, key, cert)
63+ check(grpc_tls_certificate_provider_in_memory_set_identity_certificate(provider, pairs)) {
64+ " Failed to set identity certificate on in-memory provider"
65+ }
66+ // pairs ownership is transferred to set_identity_certificate
67+ grpc_tls_credentials_options_set_identity_certificate_provider(opts, provider)
7168 }
7269
70+ grpc_tls_certificate_provider_release(provider)
71+
7372 val clientAuth = clientAuth
7473 if (clientAuth != null ) grpc_tls_credentials_options_set_cert_request_type(opts, clientAuth)
7574
0 commit comments