Skip to content

Commit 52cfa5d

Browse files
committed
grpc-native: Make TlsCredentials build() method internal
Signed-off-by: Johannes Zottele <[email protected]>
1 parent c28fc96 commit 52cfa5d

File tree

3 files changed

+81
-58
lines changed

3 files changed

+81
-58
lines changed

grpc/grpc-core/src/commonMain/kotlin/kotlinx/rpc/grpc/credentials.kt

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,6 @@ public fun TlsServerCredentials(
3434
public interface TlsClientCredentialsBuilder {
3535
public fun trustManager(rootCertsPem: String): TlsClientCredentialsBuilder
3636
public fun keyManager(certChainPem: String, privateKeyPem: String): TlsClientCredentialsBuilder
37-
public fun build(): ClientCredentials
3837
}
3938

4039
public enum class TlsClientAuth {
@@ -59,11 +58,13 @@ public enum class TlsClientAuth {
5958
public interface TlsServerCredentialsBuilder {
6059
public fun trustManager(rootCertsPem: String): TlsServerCredentialsBuilder
6160
public fun clientAuth(clientAuth: TlsClientAuth): TlsServerCredentialsBuilder
62-
public fun build(): ServerCredentials
6361
}
6462

6563
internal expect fun TlsClientCredentialsBuilder(): TlsClientCredentialsBuilder
6664
internal expect fun TlsServerCredentialsBuilder(
6765
certChain: String,
6866
privateKey: String,
6967
): TlsServerCredentialsBuilder
68+
69+
internal expect fun TlsClientCredentialsBuilder.build(): ClientCredentials
70+
internal expect fun TlsServerCredentialsBuilder.build(): ServerCredentials

grpc/grpc-core/src/jvmMain/kotlin/kotlinx/rpc/grpc/credentials.jvm.kt

Lines changed: 40 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -16,35 +16,49 @@ public actual typealias InsecureServerCredentials = io.grpc.InsecureServerCreden
1616
public actual typealias TlsClientCredentials = io.grpc.TlsChannelCredentials
1717
public actual typealias TlsServerCredentials = io.grpc.TlsServerCredentials
1818

19-
internal actual fun TlsClientCredentialsBuilder(): TlsClientCredentialsBuilder =
20-
object : TlsClientCredentialsBuilder {
21-
private var cb = TlsClientCredentials.newBuilder()
22-
23-
24-
override fun trustManager(rootCertsPem: String): TlsClientCredentialsBuilder {
25-
cb.trustManager(rootCertsPem.byteInputStream())
26-
return this
27-
}
28-
29-
override fun keyManager(
30-
certChainPem: String,
31-
privateKeyPem: String,
32-
): TlsClientCredentialsBuilder {
33-
cb.keyManager(certChainPem.byteInputStream(), privateKeyPem.byteInputStream())
34-
return this
35-
}
36-
37-
override fun build(): ClientCredentials {
38-
return cb.build()
39-
}
40-
}
41-
19+
internal actual fun TlsClientCredentialsBuilder(): TlsClientCredentialsBuilder = JvmTlsCLientCredentialBuilder()
4220
internal actual fun TlsServerCredentialsBuilder(
4321
certChain: String,
4422
privateKey: String,
45-
): TlsServerCredentialsBuilder = object : TlsServerCredentialsBuilder {
23+
): TlsServerCredentialsBuilder = JvmTlsServerCredentialBuilder(certChain, privateKey)
24+
25+
internal actual fun TlsClientCredentialsBuilder.build(): ClientCredentials {
26+
return (this as JvmTlsCLientCredentialBuilder).build()
27+
}
28+
29+
internal actual fun TlsServerCredentialsBuilder.build(): ServerCredentials {
30+
return (this as JvmTlsServerCredentialBuilder).build()
31+
}
32+
33+
private class JvmTlsCLientCredentialBuilder : TlsClientCredentialsBuilder {
34+
private var cb = TlsClientCredentials.newBuilder()
35+
36+
37+
override fun trustManager(rootCertsPem: String): TlsClientCredentialsBuilder {
38+
cb.trustManager(rootCertsPem.byteInputStream())
39+
return this
40+
}
41+
42+
override fun keyManager(
43+
certChainPem: String,
44+
privateKeyPem: String,
45+
): TlsClientCredentialsBuilder {
46+
cb.keyManager(certChainPem.byteInputStream(), privateKeyPem.byteInputStream())
47+
return this
48+
}
49+
50+
fun build(): ClientCredentials {
51+
return cb.build()
52+
}
53+
}
54+
55+
private class JvmTlsServerCredentialBuilder(certChain: String, privateKey: String) : TlsServerCredentialsBuilder {
4656
private var sb = TlsServerCredentials.newBuilder()
4757

58+
init {
59+
sb.keyManager(certChain.byteInputStream(), privateKey.byteInputStream())
60+
}
61+
4862
override fun trustManager(rootCertsPem: String): TlsServerCredentialsBuilder {
4963
sb.trustManager(rootCertsPem.byteInputStream())
5064
return this
@@ -55,15 +69,13 @@ internal actual fun TlsServerCredentialsBuilder(
5569
return this
5670
}
5771

58-
init {
59-
sb.keyManager(certChain.byteInputStream(), privateKey.byteInputStream())
60-
}
6172

62-
override fun build(): ServerCredentials {
73+
fun build(): ServerCredentials {
6374
return sb.build()
6475
}
6576
}
6677

78+
6779
private fun TlsClientAuth.toJava(): io.grpc.TlsServerCredentials.ClientAuth = when (this) {
6880
TlsClientAuth.NONE -> io.grpc.TlsServerCredentials.ClientAuth.NONE
6981
TlsClientAuth.OPTIONAL -> io.grpc.TlsServerCredentials.ClientAuth.OPTIONAL

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

Lines changed: 38 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -78,38 +78,48 @@ public fun InsecureServerCredentials(): ServerCredentials {
7878
)
7979
}
8080

81-
internal actual fun TlsClientCredentialsBuilder(): TlsClientCredentialsBuilder =
82-
object : TlsClientCredentialsBuilder {
83-
var optionsBuilder = TlsCredentialsOptionsBuilder()
81+
internal actual fun TlsClientCredentialsBuilder(): TlsClientCredentialsBuilder = NativeTlsClientCredentialsBuilder()
82+
internal actual fun TlsServerCredentialsBuilder(
83+
certChain: String,
84+
privateKey: String,
85+
): TlsServerCredentialsBuilder = NativeTlsServerCredentialsBuilder(certChain, privateKey)
8486

85-
override fun trustManager(rootCertsPem: String): TlsClientCredentialsBuilder {
86-
optionsBuilder.trustManager(rootCertsPem)
87-
return this
88-
}
87+
internal actual fun TlsClientCredentialsBuilder.build(): ClientCredentials {
88+
return (this as NativeTlsClientCredentialsBuilder).build()
89+
}
8990

90-
override fun keyManager(
91-
certChainPem: String,
92-
privateKeyPem: String,
93-
): TlsClientCredentialsBuilder {
94-
optionsBuilder.keyManager(certChainPem, privateKeyPem)
95-
return this
96-
}
91+
internal actual fun TlsServerCredentialsBuilder.build(): ServerCredentials {
92+
return (this as NativeTlsServerCredentialsBuilder).build()
93+
}
9794

98-
override fun build(): ClientCredentials {
99-
val opts = optionsBuilder.build()
100-
val creds = grpc_tls_credentials_create(opts)
101-
?: run {
102-
grpc_tls_credentials_options_destroy(opts);
103-
error("TLS channel credential creation failed")
104-
}
105-
return TlsClientCredentials(creds)
106-
}
95+
private class NativeTlsClientCredentialsBuilder : TlsClientCredentialsBuilder {
96+
var optionsBuilder = TlsCredentialsOptionsBuilder()
97+
98+
override fun trustManager(rootCertsPem: String): TlsClientCredentialsBuilder {
99+
optionsBuilder.trustManager(rootCertsPem)
100+
return this
107101
}
108102

109-
internal actual fun TlsServerCredentialsBuilder(
110-
certChain: String,
111-
privateKey: String,
112-
): TlsServerCredentialsBuilder = object : TlsServerCredentialsBuilder {
103+
override fun keyManager(
104+
certChainPem: String,
105+
privateKeyPem: String,
106+
): TlsClientCredentialsBuilder {
107+
optionsBuilder.keyManager(certChainPem, privateKeyPem)
108+
return this
109+
}
110+
111+
fun build(): ClientCredentials {
112+
val opts = optionsBuilder.build()
113+
val creds = grpc_tls_credentials_create(opts)
114+
?: run {
115+
grpc_tls_credentials_options_destroy(opts);
116+
error("TLS channel credential creation failed")
117+
}
118+
return TlsClientCredentials(creds)
119+
}
120+
}
121+
122+
private class NativeTlsServerCredentialsBuilder(certChain: String, privateKey: String) : TlsServerCredentialsBuilder {
113123
var optionsBuilder = TlsCredentialsOptionsBuilder()
114124

115125
init {
@@ -126,7 +136,7 @@ internal actual fun TlsServerCredentialsBuilder(
126136
return this
127137
}
128138

129-
override fun build(): TlsServerCredentials {
139+
fun build(): TlsServerCredentials {
130140
val opts = optionsBuilder.build()
131141
val creds = grpc_tls_server_credentials_create(opts)
132142
?: run {

0 commit comments

Comments
 (0)