コード例 #1
0
 public TlsPskKeyExchange(int keyExchange, IList supportedSignatureAlgorithms, TlsPskIdentity pskIdentity,
                          TlsPskIdentityManager pskIdentityManager, DHParameters dhParameters, int[] namedCurves,
                          byte[] clientECPointFormats, byte[] serverECPointFormats)
     :   this(keyExchange, supportedSignatureAlgorithms, pskIdentity, pskIdentityManager, new DefaultTlsDHVerifier(),
              dhParameters, namedCurves, clientECPointFormats, serverECPointFormats)
 {
 }
コード例 #2
0
        public TlsPskKeyExchange(int keyExchange, IList supportedSignatureAlgorithms, TlsPskIdentity pskIdentity,
                                 TlsPskIdentityManager pskIdentityManager, TlsDHVerifier dhVerifier, DHParameters dhParameters, int[] namedCurves,
                                 byte[] clientECPointFormats, byte[] serverECPointFormats)
            :   base(keyExchange, supportedSignatureAlgorithms)
        {
            switch (keyExchange)
            {
            case KeyExchangeAlgorithm.DHE_PSK:
            case KeyExchangeAlgorithm.ECDHE_PSK:
            case KeyExchangeAlgorithm.PSK:
            case KeyExchangeAlgorithm.RSA_PSK:
                break;

            default:
                throw new InvalidOperationException("unsupported key exchange algorithm");
            }

            this.mPskIdentity          = pskIdentity;
            this.mPskIdentityManager   = pskIdentityManager;
            this.mDHVerifier           = dhVerifier;
            this.mDHParameters         = dhParameters;
            this.mNamedCurves          = namedCurves;
            this.mClientECPointFormats = clientECPointFormats;
            this.mServerECPointFormats = serverECPointFormats;
        }
コード例 #3
0
ファイル: TcpChannel.cs プロジェクト: lulzzz/piraeus-2
        public static TcpChannel Create(bool usePrefixLength, TcpClient client, TlsPskIdentityManager pskManager,
                                        int blockSize = 0x4000, int maxBufferSize = 0x400000, CancellationToken token = default)
        {
            if (usePrefixLength)
            {
                return(new TcpServerChannel(client, pskManager, maxBufferSize, token));
            }

            return(new TcpServerChannel2(client, pskManager, blockSize, maxBufferSize, token));
        }
コード例 #4
0
ファイル: TcpServerChannel.cs プロジェクト: lulzzz/piraeus-1
 public TcpServerChannel(TcpClient client, TlsPskIdentityManager pskManager, int maxBufferSize, CancellationToken token)
 {
     this.client        = client;
     this.pskManager    = pskManager;
     this.token         = token;
     this.maxBufferSize = maxBufferSize;
     this.token.Register(async() => await CloseAsync());
     Id         = "tcp-" + Guid.NewGuid().ToString();
     Port       = ((IPEndPoint)client.Client.LocalEndPoint).Port;
     this.queue = new Queue <byte[]>();
 }
コード例 #5
0
        public static ProtocolAdapter Create(PiraeusConfig config, GraphManager graphManager,
                                             IAuthenticator authenticator, TcpClient client, ILog logger = null, CancellationToken token = default)
        {
            TlsPskIdentityManager pskManager = null;

            if (!string.IsNullOrEmpty(config.PskStorageType))
            {
                if (config.PskStorageType.ToLowerInvariant() == "redis")
                {
                    pskManager = TlsPskIdentityManagerFactory.Create(config.PskRedisConnectionString);
                }

                if (config.PskStorageType.ToLowerInvariant() == "keyvault")
                {
                    pskManager = TlsPskIdentityManagerFactory.Create(config.PskKeyVaultAuthority,
                                                                     config.PskKeyVaultClientId, config.PskKeyVaultClientSecret);
                }

                if (config.PskStorageType.ToLowerInvariant() == "environmentvariable")
                {
                    pskManager = TlsPskIdentityManagerFactory.Create(config.PskIdentities, config.PskKeys);
                }
            }

            IChannel channel;

            if (pskManager != null)
            {
                channel = ChannelFactory.Create(config.UsePrefixLength, client, pskManager, config.BlockSize,
                                                config.MaxBufferSize, token);
            }
            else
            {
                channel = ChannelFactory.Create(config.UsePrefixLength, client, config.BlockSize, config.MaxBufferSize,
                                                token);
            }

            IPEndPoint localEP = (IPEndPoint)client.Client.LocalEndPoint;
            int        port    = localEP.Port;

            if (port == 5684)
            {
                return(new CoapProtocolAdapter(config, graphManager, authenticator, channel, logger));
            }

            if (port == 1883 || port == 8883)
            {
                return(new MqttProtocolAdapter(config, graphManager, authenticator, channel, logger));
            }

            throw new ProtocolAdapterPortException("TcpClient port does not map to a supported protocol.");
        }
コード例 #6
0
ファイル: TlsClientUtil.cs プロジェクト: lulzzz/piraeus-2
 public static TlsServerProtocol ConnectPskTlsServer(TlsPskIdentityManager pskManager, Stream stream)
 {
     try
     {
         PskTlsServer      server   = new PskTlsServer2(pskManager);
         TlsServerProtocol protocol = new TlsServerProtocol(stream, new SecureRandom());
         protocol.Accept(server);
         return(protocol);
     }
     catch (Exception ex)
     {
         Console.WriteLine("Exception in TLS protocol connnection '{0}'", ex.Message);
         throw ex;
     }
 }
コード例 #7
0
    public TlsPskKeyExchange(int keyExchange, IList supportedSignatureAlgorithms, TlsPskIdentity pskIdentity, TlsPskIdentityManager pskIdentityManager, DHParameters dhParameters, int[] namedCurves, byte[] clientECPointFormats, byte[] serverECPointFormats)
        : base(keyExchange, supportedSignatureAlgorithms)
    {
        switch (keyExchange)
        {
        default:
            throw new InvalidOperationException("unsupported key exchange algorithm");

        case 13:
        case 14:
        case 15:
        case 24:
            mPskIdentity          = pskIdentity;
            mPskIdentityManager   = pskIdentityManager;
            mDHParameters         = dhParameters;
            mNamedCurves          = namedCurves;
            mClientECPointFormats = clientECPointFormats;
            mServerECPointFormats = serverECPointFormats;
            break;
        }
    }
コード例 #8
0
 public static TlsServerProtocol ConnectPskTlsServer(this TcpClient client, TlsPskIdentityManager pskManager, Stream stream)
 {
     try
     {
         PskTlsServer      server   = new PskTlsServer2(pskManager);
         TlsServerProtocol protocol = new TlsServerProtocol(stream, new SecureRandom());
         protocol.Accept(server);
         return(protocol);
     }
     catch (AggregateException ae)
     {
         string msg = String.Format("AggregateException in TLS protocol connnection '{0}'", ae.Flatten().InnerException.Message);
         Console.WriteLine(msg);
         throw new Exception(msg, ae.Flatten().InnerException);
     }
     catch (Exception ex)
     {
         Console.WriteLine("Exception in TLS protocol connnection '{0}'", ex.Message);
         throw ex;
     }
 }
コード例 #9
0
        public TlsPskKeyExchange(int keyExchange, global::System.Collections.IList supportedSignatureAlgorithms, TlsPskIdentity pskIdentity, TlsPskIdentityManager pskIdentityManager, DHParameters dhParameters, int[] namedCurves, byte[] clientECPointFormats, byte[] serverECPointFormats)
            : base(keyExchange, supportedSignatureAlgorithms)
        {
            //IL_0068: Unknown result type (might be due to invalid IL or missing references)
            switch (keyExchange)
            {
            default:
                throw new InvalidOperationException("unsupported key exchange algorithm");

            case 13:
            case 14:
            case 15:
            case 24:
                mPskIdentity          = pskIdentity;
                mPskIdentityManager   = pskIdentityManager;
                mDHParameters         = dhParameters;
                mNamedCurves          = namedCurves;
                mClientECPointFormats = clientECPointFormats;
                mServerECPointFormats = serverECPointFormats;
                break;
            }
        }
コード例 #10
0
        public TlsPskKeyExchange(int keyExchange, IList supportedSignatureAlgorithms, TlsPskIdentity pskIdentity,
            TlsPskIdentityManager pskIdentityManager, DHParameters dhParameters, int[] namedCurves,
            byte[] clientECPointFormats, byte[] serverECPointFormats)
            :   base(keyExchange, supportedSignatureAlgorithms)
        {
            switch (keyExchange)
            {
            case KeyExchangeAlgorithm.DHE_PSK:
            case KeyExchangeAlgorithm.ECDHE_PSK:
            case KeyExchangeAlgorithm.PSK:
            case KeyExchangeAlgorithm.RSA_PSK:
                break;
            default:
                throw new InvalidOperationException("unsupported key exchange algorithm");
            }

            this.mPskIdentity = pskIdentity;
            this.mPskIdentityManager = pskIdentityManager;
            this.mDHParameters = dhParameters;
            this.mNamedCurves = namedCurves;
            this.mClientECPointFormats = clientECPointFormats;
            this.mServerECPointFormats = serverECPointFormats;
        }
コード例 #11
0
ファイル: PskTlsServer.cs プロジェクト: nikodz/bc-csharp
 public PskTlsServer(TlsCipherFactory cipherFactory, TlsPskIdentityManager pskIdentityManager)
     :   base(cipherFactory)
 {
     this.mPskIdentityManager = pskIdentityManager;
 }
コード例 #12
0
ファイル: PskTlsServer.cs プロジェクト: nikodz/bc-csharp
 public PskTlsServer(TlsPskIdentityManager pskIdentityManager)
     :   this(new DefaultTlsCipherFactory(), pskIdentityManager)
 {
 }
コード例 #13
0
 public PskTlsServer(TlsCipherFactory cipherFactory, TlsPskIdentityManager pskIdentityManager)
     :   base(cipherFactory)
 {
     this.mPskIdentityManager = pskIdentityManager;
 }
コード例 #14
0
 public PskTlsServer(TlsPskIdentityManager pskIdentityManager)
     :   this(new DefaultTlsCipherFactory(), pskIdentityManager)
 {
 }
コード例 #15
0
 public static IChannel Create(bool usePrefixLength, TcpClient client, TlsPskIdentityManager pskManager,
                               int blockSize = 0x4000, int maxBufferSize = 0x400000, CancellationToken token = default)
 {
     return(TcpChannel.Create(usePrefixLength, client, pskManager, blockSize, maxBufferSize, token));
 }
コード例 #16
0
 public PskTlsServer2(TlsCipherFactory cipherFactory, TlsPskIdentityManager pskIdentityManager) : base(cipherFactory, pskIdentityManager)
 {
 }
コード例 #17
0
 public PskTlsServer2(TlsPskIdentityManager pskIdentityManager) : base(pskIdentityManager)
 {
 }