diff --git a/api/src/main/java/io/grpc/ServerCall.java b/api/src/main/java/io/grpc/ServerCall.java index d391cb5c79af..5d009b720b50 100644 --- a/api/src/main/java/io/grpc/ServerCall.java +++ b/api/src/main/java/io/grpc/ServerCall.java @@ -208,7 +208,21 @@ public void setMessageCompression(boolean enabled) { */ @ExperimentalApi("https://github.com/grpc/grpc-java/issues/1704") public void setCompression(String compressor) { - // noop + } + + /** + * Returns the level of security guarantee in communications + * + *
Determining the level of security offered by the transport for RPCs on server-side.
+ * This can be approximated by looking for the SSLSession, but that doesn't work for ALTS and
+ * maybe some future TLS approaches. May return a lower security level when it cannot be
+ * determined precisely.
+ *
+ * @return non-{@code null} SecurityLevel enum
+ */
+ @ExperimentalApi("https://github.com/grpc/grpc-java/issues/4692")
+ public SecurityLevel getSecurityLevel() {
+ return SecurityLevel.NONE;
}
/**
diff --git a/core/src/main/java/io/grpc/internal/ServerCallImpl.java b/core/src/main/java/io/grpc/internal/ServerCallImpl.java
index b31aadd08a9f..fc218bcb37b9 100644
--- a/core/src/main/java/io/grpc/internal/ServerCallImpl.java
+++ b/core/src/main/java/io/grpc/internal/ServerCallImpl.java
@@ -19,6 +19,7 @@
import static com.google.common.base.Preconditions.checkArgument;
import static com.google.common.base.Preconditions.checkNotNull;
import static com.google.common.base.Preconditions.checkState;
+import static io.grpc.internal.GrpcAttributes.ATTR_SECURITY_LEVEL;
import static io.grpc.internal.GrpcUtil.ACCEPT_ENCODING_SPLITTER;
import static io.grpc.internal.GrpcUtil.CONTENT_LENGTH_KEY;
import static io.grpc.internal.GrpcUtil.MESSAGE_ACCEPT_ENCODING_KEY;
@@ -36,6 +37,7 @@
import io.grpc.InternalDecompressorRegistry;
import io.grpc.Metadata;
import io.grpc.MethodDescriptor;
+import io.grpc.SecurityLevel;
import io.grpc.ServerCall;
import io.grpc.Status;
import io.perfmark.PerfMark;
@@ -250,6 +252,16 @@ public MethodDescriptor