コード例 #1
0
ファイル: SignatureProvider.cs プロジェクト: nagyist/mono-tls
        public virtual SignatureAndHashAlgorithm SelectClientSignatureAlgorithm(ITlsContext ctx)
        {
            if (ctx.IsServer)
            {
                throw new InvalidOperationException();
            }

            AssertTls12(ctx);

            SignatureParameters parameters;

            if (ctx.HasClientCertificateParameters)
            {
                parameters = ctx.ClientCertificateParameters.SignatureParameters;
            }
            else if (ctx.HasCurrentSignatureParameters)
            {
                parameters = ctx.CurrentSignatureParameters;
            }
            else
            {
                parameters = GetClientSignatureParameters(ctx);
            }

            if (parameters == null || parameters.IsEmpty)
            {
                parameters = SignatureParameters.GetDefaultServerParameters();
            }

            return(SelectSignatureAlgorithm(ctx, parameters));
        }
コード例 #2
0
        public static SignatureParameters GetDefaultServerParameters()
        {
            var parameters = new SignatureParameters();

            parameters.Add(HashAlgorithmType.Sha1);
            return(parameters);
        }
コード例 #3
0
        public static SignatureParameters GetDefaultClientParameters()
        {
            var parameters = new SignatureParameters();

            parameters.EnsureDefaultValues();
            return(parameters);
        }
コード例 #4
0
		public static SignatureParameters Create (params HashAlgorithmType[] hashTypes)
		{
			var parameters = new SignatureParameters ();
			foreach (var hash in hashTypes)
				parameters.Add (hash);
			return parameters;
		}
コード例 #5
0
		public static SignatureParameters Create (params SignatureAndHashAlgorithm[] algorithms)
		{
			var parameters = new SignatureParameters ();
			foreach (var algorithm in algorithms)
				parameters.Add (algorithm);
			return parameters;
		}
コード例 #6
0
ファイル: Session.cs プロジェクト: VimalKumarS/mono-tls
 protected override void Clear()
 {
     base.Clear();
     PendingRead              = false;
     PendingWrite             = false;
     signatureParameters      = null;
     hasSignatureParameters   = false;
     serverSignatureAlgorithm = null;
 }
コード例 #7
0
        public static SignatureParameters Create(params SignatureAndHashAlgorithm[] algorithms)
        {
            var parameters = new SignatureParameters();

            foreach (var algorithm in algorithms)
            {
                parameters.Add(algorithm);
            }
            return(parameters);
        }
コード例 #8
0
        public static SignatureParameters Create(params HashAlgorithmType[] hashTypes)
        {
            var parameters = new SignatureParameters();

            foreach (var hash in hashTypes)
            {
                parameters.Add(hash);
            }
            return(parameters);
        }
コード例 #9
0
ファイル: SignatureProvider.cs プロジェクト: nagyist/mono-tls
 public void VerifySignatureParameters(ITlsContext ctx, SignatureParameters parameters)
 {
     foreach (var algorithm in parameters.SignatureAndHashAlgorithms)
     {
         if (!ctx.IsAlgorithmSupported(algorithm))
         {
             throw new TlsException(AlertDescription.IlegalParameter);
         }
     }
 }
コード例 #10
0
ファイル: SignatureProvider.cs プロジェクト: nagyist/mono-tls
        public SignatureAndHashAlgorithm SelectSignatureAlgorithm(ITlsContext ctx, SignatureParameters parameters)
        {
            AssertTls12(ctx);

            foreach (var algorithm in parameters.SignatureAndHashAlgorithms)
            {
                if (ctx.IsAlgorithmSupported(algorithm))
                {
                    return(algorithm);
                }
            }

            throw new TlsException(AlertDescription.IlegalParameter, "No supported signature type available.");
        }
コード例 #11
0
ファイル: SignatureProvider.cs プロジェクト: nagyist/mono-tls
        public virtual SignatureParameters GetServerSignatureParameters(ITlsContext ctx)
        {
            if (!ctx.IsServer)
            {
                throw new InvalidOperationException();
            }

            AssertTls12(ctx);

            if (ctx.HasCurrentSignatureParameters)
            {
                return(ctx.CurrentSignatureParameters);
            }

            return(SignatureParameters.GetDefaultServerParameters());
        }
コード例 #12
0
ファイル: SignatureProvider.cs プロジェクト: nagyist/mono-tls
        public virtual SignatureParameters GetClientSignatureParameters(ITlsContext ctx)
        {
            if (ctx.IsServer)
            {
                throw new InvalidOperationException();
            }

            SignatureParameters parameters = null;

            if (ctx.SettingsProvider.HasClientSignatureParameters)
            {
                parameters = ctx.SettingsProvider.ClientSignatureParameters;
            }

            if (parameters == null || parameters.IsEmpty)
            {
                parameters = SignatureParameters.GetDefaultClientParameters();
            }

            VerifySignatureParameters(ctx, parameters);

            return(parameters);
        }
コード例 #13
0
		public void VerifySignatureParameters (ITlsContext ctx, SignatureParameters parameters)
		{
			foreach (var algorithm in parameters.SignatureAndHashAlgorithms) {
				if (!ctx.IsAlgorithmSupported (algorithm))
					throw new TlsException (AlertDescription.IlegalParameter);
			}
		}
コード例 #14
0
		public SignatureAndHashAlgorithm SelectSignatureAlgorithm (ITlsContext ctx, SignatureParameters parameters)
		{
			AssertTls12 (ctx);

			foreach (var algorithm in parameters.SignatureAndHashAlgorithms) {
				if (ctx.IsAlgorithmSupported (algorithm))
					return algorithm;
			}

			throw new TlsException (AlertDescription.IlegalParameter, "No supported signature type available.");
		}
コード例 #15
0
ファイル: Session.cs プロジェクト: peterdocter/mono-tls
		protected override void Clear ()
		{
			base.Clear ();
			PendingRead = false;
			PendingWrite = false;
			signatureParameters = null;
			hasSignatureParameters = false;
			serverSignatureAlgorithm = null;
		}
コード例 #16
0
		public static SignatureParameters GetDefaultServerParameters ()
		{
			var parameters = new SignatureParameters ();
			parameters.Add (HashAlgorithmType.Sha1);
			return parameters;
		}
コード例 #17
0
		public static SignatureParameters GetDefaultClientParameters ()
		{
			var parameters = new SignatureParameters ();
			parameters.EnsureDefaultValues ();
			return parameters;
		}