Exemplo n.º 1
0
        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);
        }
Exemplo n.º 2
0
            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;
            }
Exemplo n.º 3
0
            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;
            }
Exemplo n.º 4
0
 public VerifyPeerCallbackRegistration(VerifyPeerCallback verifyPeerCallback)
 {
     this.verifyPeerCallback   = verifyPeerCallback;
     this.callbackRegistration = NativeCallbackDispatcher.RegisterCallback(HandleUniversalCallback);
 }
Exemplo n.º 5
0
 /// <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;
 }
Exemplo n.º 6
0
        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));
        }
Exemplo n.º 7
0
 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
 }