示例#1
0
        /// <summary>
        /// Decodes meta information of authentication data according to Aadhaar API specification.
        /// </summary>
        /// <returns>The current instance of <see cref="OtpInfo"/>.</returns>
        /// <exception cref="ArgumentException"><see cref="InfoValue"/> is empty.</exception>
        public OtpInfo Decode()
        {
            ValidateEmptyString(InfoValue, nameof(InfoValue));

            /*
             * <Version>
             * [00]: SHA-256 of Aadhaar Number  [01]: request-type          [02]: timestamp
             * [03]: OTP_api_ver                [04]: SHA-256 of ASA code   [05]: SHA-256 of AUA code
             * [06]: Sub-AUA code               [07]: masked-mobile         [08]: masked-email
             */

            var start = InfoValue.IndexOf('{');
            var end   = InfoValue.LastIndexOf('}');

            if (start != -1 && end != -1)
            {
                var infoArray = InfoValue.Substring(start + 1, end - (start + 1)).Split(',');

                AadhaarNumberHash = infoArray[0];
                RequestType       = (OtpRequestType)infoArray[1][0];
                // Timestamp = DateTimeOffset.ParseExact(infoArray[2], TimestampFormat, CultureInfo.InvariantCulture);
                AuaCodeHash    = infoArray[5];
                SubAuaCodeHash = infoArray[6];
            }

            return(this);
        }
示例#2
0
        /// <summary>
        /// Decodes meta information of authentication data according to Aadhaar API specification.
        /// </summary>
        public void Decode()
        {
            ValidateEmptyString(InfoValue, nameof(InfoValue));

            /*
             * <Version>
             * [00]: SHA-256 of Aadhaar Number      [01]: SHA-256 of Demo element       [02]: Encoded Usage Data
             * [03]: pid_version                    [04]: timestamp                     [05]: fmrcount
             * [06]: fircount                       [07]: iircount                      [08]: auth_api_ver
             * [09]: SHA-256 of ASA code            [10]: SHA-256 of AUA code           [11]: SUB AUA code
             * [12]: lot                            [13]: lov                           [14]: lang
             * [15]: pi-ms                          [16]: pi-mv                         [17]: pi-lmv
             * [18]: pa-ms                          [19]: pa-mv                         [20]: pa-lmv
             * [21]: pfa-ms                         [22]: pfa-mv                        [23]: pfa-lmv
             * [24]: SHA-256 of tid
             */

            var start = InfoValue.IndexOf('{');
            var end   = InfoValue.LastIndexOf('}');

            if (start != -1 && end != -1)
            {
                var infoArray = InfoValue.Substring(start + 1, end - (start + 1)).Split(',');

                AadhaarNumberHash = infoArray[0];
                DemographicHash   = infoArray[1];
                UsageData         = infoArray[2];
                Timestamp         = DateTimeOffset.ParseExact(infoArray[4], TimestampFormat, CultureInfo.InvariantCulture);
                AuaCodeHash       = infoArray[10];
                SubAuaCode        = infoArray[11];
                TerminalHash      = infoArray[24];
            }
        }
示例#3
0
        /// <summary>
        /// Decodes meta information of authentication data according to Aadhaar API specification.
        /// </summary>
        public void Decode()
        {
            ValidateEmptyString(InfoValue, nameof(InfoValue));

            /*
             * <Version>
             * [00]: SHA-256 of Aadhaar Number      [01]: timestamp                     [02]: OTP_api_ver,
             * [03]: SHA-256 of ASA code            [04]: SHA-256 of AUA code           [05]: Sub-AUA code,
             * [06]: masked-mobile                  [07]: masked-email
             */

            var start = InfoValue.IndexOf('{');
            var end   = InfoValue.LastIndexOf('}');

            if (start != -1 && end != -1)
            {
                var infoArray = InfoValue.Substring(start + 1, end - (start + 1)).Split(',');

                AadhaarNumberHash = infoArray[0];
                Timestamp         = DateTimeOffset.ParseExact(infoArray[1], TimestampFormat, CultureInfo.InvariantCulture);
                AuaCodeHash       = infoArray[4];
                SubAuaCode        = infoArray[5];
                MaskedMobile      = infoArray[6];
                MaskedEmail       = infoArray[7];
            }
        }