Example #1
0
        public static PasswordRecord Decode(byte[] encodedRecord)
        {
            var sequence = ASN1Sequence.Decode(encodedRecord);

            var version = sequence.GetIntegerFromElementAt(0);
            var nS      = sequence.GetOctetStringFromElementAt(1);
            var nC      = sequence.GetOctetStringFromElementAt(2);
            var t0      = sequence.GetOctetStringFromElementAt(3);
            var t1      = sequence.GetOctetStringFromElementAt(4);

            return(new PasswordRecord(nS, nC, t0, t1, version));
        }
        public void Should_DecodeFromPasswordRecordValues()
        {
            var asn1Bytes    = Bytes.FromString("MEQEIF9FaIoBlwvyV1HuIYw1cEL0GF6TyjJqYpO/b/uzsg88BCB0Cx2dnG8QKFyHr/nTOjQr7qeWgrM7T9CAg0D8p+EvVQ==", StringEncoding.BASE64);
            var asn1Sequence = ASN1Sequence.Decode(asn1Bytes);

            Assert.Equal(2, asn1Sequence.Elements.Count());

            var arr1Hex = "5F45688A01970BF25751EE218C357042F4185E93CA326A6293BF6FFBB3B20F3C";
            var arr2Hex = "740B1D9D9C6F10285C87AFF9D33A342BEEA79682B33B4FD0808340FCA7E12F55";

            Assert.Equal(Bytes.ToString(asn1Sequence.GetOctetStringFromElementAt(0), StringEncoding.HEX).ToUpper(), arr1Hex);
            Assert.Equal(Bytes.ToString(asn1Sequence.GetOctetStringFromElementAt(1), StringEncoding.HEX).ToUpper(), arr2Hex);
        }
Example #3
0
        /// <summary>
        /// Decodes an <see cref="UpdateToken"/> form specified string.
        /// </summary>
        public static UpdateToken Decode(string updateToken)
        {
            var tokenParts = updateToken.Split(".");

            if (tokenParts.Length != 3 ||
                !Int32.TryParse(tokenParts[1], out int version) ||
                !tokenParts[0].ToUpper().Equals("UT"))
            {
                throw new ArgumentException("has incorrect format", nameof(updateToken));
            }

            var asn1Bytes    = Bytes.FromString(tokenParts[2], StringEncoding.BASE64);
            var asn1Sequence = ASN1Sequence.Decode(asn1Bytes);

            return(new UpdateToken
            {
                A = asn1Sequence.GetOctetStringFromElementAt(0),
                B = asn1Sequence.GetOctetStringFromElementAt(1),
                Version = version
            });
        }
        public void Should_EncodeToAsn1_When_TwoByteArraysArePassed()
        {
            var resultBase64 = "MEQEIF9FaIoBlwvyV1HuIYw1cEL0GF6TyjJqYpO/b/uzsg88BCB0Cx2dnG8QKFyHr/nTOjQr7qeWgrM7T9CAg0D8p+EvVQ==";

            var arr1 = Bytes.FromString("5F45688A01970BF25751EE218C357042F4185E93CA326A6293BF6FFBB3B20F3C", StringEncoding.HEX);
            var arr2 = Bytes.FromString("740B1D9D9C6F10285C87AFF9D33A342BEEA79682B33B4FD0808340FCA7E12F55", StringEncoding.HEX);

            var sequence = new ASN1Sequence
            {
                Elements = new List <IASN1Object>
                {
                    new ASN1OctetString(arr1),
                    new ASN1OctetString(arr2),
                },
            };

            var encodedBytes  = sequence.Encode();
            var encodedBase64 = Bytes.ToString(encodedBytes, StringEncoding.BASE64);

            var decoded = ASN1Sequence.Decode(encodedBytes);

            Assert.Equal(resultBase64, encodedBase64);
        }