public void InitClientAndServer(bool clientAddKeyCertPair, SslClientCertificateRequestType clientCertRequestType, VerifyPeerCallback verifyPeerCallback = null) { rootCert = File.ReadAllText(TestCredentials.ClientCertAuthorityPath); keyCertPair = new KeyCertificatePair( File.ReadAllText(TestCredentials.ServerCertChainPath), File.ReadAllText(TestCredentials.ServerPrivateKeyPath)); var serverCredentials = new SslServerCredentials(new[] { keyCertPair }, rootCert, clientCertRequestType); var clientCredentials = new SslCredentials(rootCert, clientAddKeyCertPair ? keyCertPair : null, verifyPeerCallback); // Disable SO_REUSEPORT to prevent https://github.com/grpc/grpc/issues/10755 server = new Server(new[] { new ChannelOption(ChannelOptions.SoReuseport, 0) }) { Services = { TestService.BindService(new SslCredentialsTestServiceImpl()) }, Ports = { { Host, ServerPort.PickUnused, serverCredentials } } }; server.Start(); var options = new List <ChannelOption> { new ChannelOption(ChannelOptions.SslTargetNameOverride, TestCredentials.DefaultHostOverride) }; channel = new Channel(Host, server.Ports.Single().BoundPort, clientCredentials, options); client = new TestService.TestServiceClient(channel); }
public override void SetSslCredentials(object state, string rootCertificates, KeyCertificatePair keyCertificatePair, VerifyPeerCallback verifyPeerCallback) { if (!string.IsNullOrEmpty(rootCertificates) || keyCertificatePair != null || verifyPeerCallback != null) { throw new InvalidOperationException( $"{nameof(SslCredentials)} with non-null arguments is not supported by {nameof(GrpcChannel)}. " + $"{nameof(GrpcChannel)} uses HttpClient to make gRPC calls and HttpClient automatically loads root certificates from the operating system certificate store. " + $"Client certificates should be configured on HttpClient. See https://aka.ms/AA6we64 for details."); } IsSecure = true; }
public override void SetSslCredentials(object state, string rootCertificates, KeyCertificatePair keyCertificatePair, VerifyPeerCallback verifyPeerCallback) { if (!string.IsNullOrEmpty(rootCertificates) || keyCertificatePair != null || verifyPeerCallback != null) { throw new InvalidOperationException($"Using {nameof(SslCredentials)} with non-null arguments is not supported by {nameof(GrpcChannel)}."); } IsSecure = true; }
public VerifyPeerCallbackRegistration(VerifyPeerCallback verifyPeerCallback) { this.verifyPeerCallback = verifyPeerCallback; this.callbackRegistration = NativeCallbackDispatcher.RegisterCallback(HandleUniversalCallback); }
/// <summary> /// Creates client-side SSL credentials. /// </summary> /// <param name="rootCertificates">string containing PEM encoded server root certificates.</param> /// <param name="keyCertificatePair">a key certificate pair.</param> /// <param name="verifyPeerCallback">a callback to verify peer's target name and certificate.</param> /// Note: experimental API that can change or be removed without any prior notice. public SslCredentials(string rootCertificates, KeyCertificatePair keyCertificatePair, VerifyPeerCallback verifyPeerCallback) { this.rootCertificates = rootCertificates; this.keyCertificatePair = keyCertificatePair; this.verifyPeerCallback = verifyPeerCallback; }
private ChannelCredentialsSafeHandle CreateNativeSslCredentials(string rootCertificates, KeyCertificatePair keyCertificatePair, VerifyPeerCallback verifyPeerCallback) { IntPtr verifyPeerCallbackTag = IntPtr.Zero; if (verifyPeerCallback != null) { verifyPeerCallbackTag = new VerifyPeerCallbackRegistration(verifyPeerCallback).CallbackRegistration.Tag; } return(ChannelCredentialsSafeHandle.CreateSslCredentials(rootCertificates, keyCertificatePair, verifyPeerCallbackTag)); }
public override void SetSslCredentials(object state, string rootCertificates, KeyCertificatePair keyCertificatePair, VerifyPeerCallback verifyPeerCallback) { GrpcPreconditions.CheckState(!configured); configured = true; nativeCredentials = GetOrCreateNativeCredentials((ChannelCredentials)state, () => CreateNativeSslCredentials(rootCertificates, keyCertificatePair, verifyPeerCallback)); }
/// <summary> /// Configures the credentials to use <c>SslCredentials</c>. /// </summary> public abstract void SetSslCredentials(object state, string rootCertificates, KeyCertificatePair keyCertificatePair, VerifyPeerCallback verifyPeerCallback);
public override void SetSslCredentials(object state, string rootCertificates, KeyCertificatePair keyCertificatePair, VerifyPeerCallback verifyPeerCallback) { // No-op }