Example #1
0
        /// <summary>
        /// 构造一个 <see cref="SecurityToken"/>。
        /// </summary>
        /// <param name="token">给定的令牌字符串。</param>
        /// <param name="converter">给定的 <see cref="IAlgorithmConverter"/>(可选;默认使用 <see cref="HexStringConverter"/>)。</param>
        public SecurityToken(string token, IAlgorithmConverter converter = null)
        {
            if (!TryParseToken(EnsureConverter(converter), token, out var buffer))
            {
                throw new ArgumentException($"The token '{token}' is not a valid security token.");
            }

            _buffer = buffer;
        }
Example #2
0
        private static bool TryParseToken(IAlgorithmConverter converter, string token, out byte[] buffer)
        {
            if (TryParseSignedToken(token, out var result))
            {
                buffer = converter.ConvertFrom(result.DataSegments[0]);
                return(true);
            }

            buffer = null;
            return(false);
        }
Example #3
0
        /// <summary>
        /// 尝试获取安全令牌。
        /// </summary>
        /// <param name="token">给定的令牌字符串。</param>
        /// <param name="result">输出 <see cref="SecurityToken"/>。</param>
        /// <param name="converter">给定的 <see cref="IAlgorithmConverter"/>(可选;默认使用 <see cref="HexStringConverter"/>)。</param>
        /// <returns>返回布尔值。</returns>
        public static bool TryGetToken(string token,
                                       out SecurityToken result, IAlgorithmConverter converter = null)
        {
            if (TryParseSignedToken(token, out _))
            {
                result = new SecurityToken(token, converter);
                return(true);
            }

            result = null;
            return(false);
        }
Example #4
0
        public void AllTest()
        {
            var buffer = nameof(ConverterManagerTests).FromEncodingString();

            IAlgorithmConverter converter = ConverterManager.GetAlgorithm <Base32StringConverter>();
            var algorithm = converter.ConvertTo(buffer);

            Assert.True(buffer.SequenceEqual(converter.ConvertFrom(algorithm)));

            converter = ConverterManager.GetAlgorithm <Base64StringConverter>();
            algorithm = converter.ConvertTo(buffer);
            Assert.True(buffer.SequenceEqual(converter.ConvertFrom(algorithm)));

            converter = ConverterManager.GetAlgorithm <HexStringConverter>();
            algorithm = converter.ConvertTo(buffer);
            Assert.True(buffer.SequenceEqual(converter.ConvertFrom(algorithm)));
        }
Example #5
0
 private IAlgorithmConverter EnsureConverter(IAlgorithmConverter converter = null)
 {
     Converter = converter ?? ConverterManager.GetAlgorithm <HexStringConverter>();
     return(Converter);
 }
Example #6
0
 /// <summary>
 /// 构造一个 <see cref="SecurityToken"/>。
 /// </summary>
 /// <param name="g">给定的 <see cref="Guid"/>。</param>
 /// <param name="converter">给定的 <see cref="IAlgorithmConverter"/>(可选;默认使用 <see cref="HexStringConverter"/>)。</param>
 public SecurityToken(Guid g, IAlgorithmConverter converter = null)
     : this(g.ToByteArray())
 {
     EnsureConverter(converter);
 }