示例#1
0
        public static async Task KnowYourCustomerAsync()
        {
            #region Device Level

            // Set Personal Info
            Console.Write("Enter OTP sent to mobile: ");
            var otp          = Console.ReadLine();
            var personalInfo = new PersonalInfo
            {
                AadhaarNumber = "999999990019",
                PinValue      = new PinValue {
                    Otp = otp
                }
            };

            // Set Device Info
            var kycContext = new KycContext
            {
                DeviceInfo         = Configuration.Current.DeviceInfo.Create(),
                HasResidentConsent = true
            };

            // Ask for Resident Consent
            Console.Write("Does user have consent to access personal data? (y/n)\t");
            kycContext.HasResidentConsent = Console.ReadLine() == "y";

            // Encrypt Data
            var sessionKey = new SessionKey(Configuration.Current.UidaiEncryption, false);
            await kycContext.EncryptAsync(personalInfo, sessionKey);

            #endregion

            #region Device To Agency
            // TODO: Wrap DeviceContext{T} into AUA specific protocol and send it to AUA.
            // On Device Side:
            // var deviceXml = deviceContext.ToXml();
            // var wrapped = WrapIntoAuaProtocol(deviceXml);

            // On Agency Side:
            // var auaXml = UnwrapFromAuaProtocol(wrapped);
            // var auaContext = new KycContext();
            // auaContext.FromXml(auaXml);
            #endregion

            #region Agency Level

            // Perform e-Know Your Customer
            var kycClient = new KycClient
            {
                AgencyInfo = Configuration.Current.AgencyInfo,
                Request    = new KycRequest(kycContext)
                {
                    Signer = XmlSignature
                },
                Response = new KycResponse {
                    Verifier = XmlSignature
                },
                Decrypter = new KycDecrypter {
                    AuaKey = Configuration.Current.AuaKey
                }
            };
            await kycClient.GetResponseAsync();

            Console.WriteLine(string.IsNullOrEmpty(kycClient.Response.ErrorCode)
                ? $"Is the user authentic: {kycClient.Response.Resident.Demographic.Identity.Name}"
                : $"Error Code: {kycClient.Response.ErrorCode}");

            #endregion

            #region Agency To Device
            // TODO: Wrap KycResponse into AUA specific protocol and send it to device.
            #endregion
        }
示例#2
0
        public static async Task KnowYourCustomerAsync()
        {
            // A workaround to support version 1.0. Can be removed once v1.0 becomes obsolete.
            KycRequest.KycVersion = "1.0";

            #region Device Level

            // Generate OTP
            await Otp.GenerateOtpAsync("999999990019");

            // Set Personal Info
            Console.Write("Enter OTP sent to mobile: ");
            var personalInfo = new PersonalInfo
            {
                AadhaarNumber = "999999990019",
                PinValue      = new PinValue {
                    Otp = Console.ReadLine()
                }
            };

            // Set Device Info
            var kycContext = new KycContext
            {
                DeviceInfo = Configuration.DeviceInfo.Create()
            };

            // Ask for Resident Consent
            Console.Write("Access personal information? (y/n)\t\t");
            kycContext.HasResidentConsent = Console.ReadLine() == "y";

            Console.Write("Access information in Indian language? (y/n)\t");
            kycContext.AccessILInfo = Console.ReadLine() == "y";

            Console.Write("Access mobile and email information? (y/n)\t");
            kycContext.AccessMobileAndEmail = Console.ReadLine() == "y";

            // Encrypt Data
            using (var sessionKey = new SessionKey(Configuration.UidaiEncryptionKeyPath, true))
                await kycContext.EncryptAsync(personalInfo, sessionKey);

            #endregion

            #region Device To Agency
            // TODO: Wrap DeviceContext{T} into AUA specific protocol and send it to AUA.
            // On Device Side:
            // var deviceXml = deviceContext.ToXml();
            // var wrapped = WrapIntoAuaProtocol(deviceXml);

            // On Agency Side:
            // var auaXml = UnwrapFromAuaProtocol(wrapped);
            // var auaContext = new KycContext();
            // auaContext.FromXml(auaXml);
            #endregion

            #region Agency Level

            // Perform e-Know Your Customer
            var apiClient = new KycClient
            {
                AgencyInfo = Configuration.AgencyInfo,
                Request    = new KycRequest(kycContext)
                {
                    Signer = Signer
                },
                Response = new KycResponse {
                    Decryptor = Decryptor, Verifier = Verifier
                }
            };
            await apiClient.GetResponseAsync();

            Console.WriteLine(string.IsNullOrEmpty(apiClient.Response.ErrorCode)
                ? $"Customer Name: {apiClient.Response.Resident.Demographic.Identity.Name}"
                : $"Error Code: {apiClient.Response.ErrorCode}");

            #endregion

            #region Agency To Device
            // TODO: Wrap KycResponse into AUA specific protocol and send it to device.
            #endregion
        }
示例#3
0
        public static async Task KnowYourCustomerAsync()
        {
            #region Device Level

            // Generate OTP 999999990019
            await Otp.GenerateOtpAsync("999999990019");

            // Set Personal Info
            Console.Write("Enter OTP sent to mobile: ");
            var personalInfo = new PersonalInfo
            {
                AadhaarNumber = "999999990019",
                PinValue      = new PinValue {
                    Otp = Console.ReadLine()
                }
            };

            // Set Device Info
            var kycContext = new KycContext
            {
                DeviceInfo = Options.DeviceInfo.Create(),

                // Should not be hardcoded in production environment.
                HasResidentConsent   = true,
                AccessILInfo         = true,
                AccessMobileAndEmail = true,
            };

            // Encrypt Data
            using (var sessionKey = new SessionKey(Options.UidaiEncryptionKeyPath, true))
                await kycContext.EncryptAsync(personalInfo, sessionKey);

            #endregion

            #region Device To Agency
            // TODO: Wrap DeviceContext{T} into AUA specific protocol and send it to AUA.
            // On Device Side:
            // var deviceXml = deviceContext.ToXml();
            // var wrapped = WrapIntoAuaProtocol(deviceXml);

            // On Agency Side:
            // var auaXml = UnwrapFromAuaProtocol(wrapped);
            // var auaContext = new KycContext();
            // auaContext.FromXml(auaXml);
            #endregion

            #region Agency Level

            // Perform e-Know Your Customer
            var apiClient = new KycClient
            {
                AgencyInfo = Options.AgencyInfo,
                Request    = new KycRequest(kycContext)
                {
                    Signer = Signer
                },
                Response = new KycResponse {
                    Decryptor = Decryptor, Verifier = Verifier
                }
            };
            await apiClient.GetResponseAsync(null, b =>
            {
                return(b);
            });

            Console.WriteLine(string.IsNullOrEmpty(apiClient.Response.ErrorCode)
                ? $"Customer Name: {apiClient.Response.Resident.Demographic.Identity.Name}"
                : $"Error Code: {apiClient.Response.ErrorCode}");

            #endregion

            #region Agency To Device
            // TODO: Wrap KycResponse into AUA specific protocol and send it to device.
            #endregion
        }