Skip to content

Commit 6e4cde9

Browse files
committed
KRPC-541: Migrate TLS credentials to gRPC 1.80.0 in-memory provider API
The old static_data_create / set_certificate_provider / watch_* APIs were removed in gRPC 1.80.0. Use the in-memory provider with explicit root and identity certificate setters instead.
1 parent c3889f2 commit 6e4cde9

1 file changed

Lines changed: 22 additions & 23 deletions

File tree

  • grpc/grpc-core/src/nativeMain/kotlin/kotlinx/rpc/grpc/internal

grpc/grpc-core/src/nativeMain/kotlin/kotlinx/rpc/grpc/internal/credentials.kt

Lines changed: 22 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -11,13 +11,14 @@ import kotlinx.cinterop.CPointer
1111
import kotlinx.cinterop.ExperimentalForeignApi
1212
import kotlinx.rpc.internal.utils.InternalRpcApi
1313
import 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
1417
import kotlinx.rpc.grpc.internal.cinterop.grpc_tls_certificate_provider_release
15-
import kotlinx.rpc.grpc.internal.cinterop.grpc_tls_certificate_provider_static_data_create
1618
import kotlinx.rpc.grpc.internal.cinterop.grpc_tls_credentials_options_create
1719
import 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
2122
import kotlinx.rpc.grpc.internal.cinterop.grpc_tls_identity_pairs_add_pair
2223
import kotlinx.rpc.grpc.internal.cinterop.grpc_tls_identity_pairs_create
2324
import 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

Comments
 (0)