Пример #1
0
        public void CalculateCheckDigit_With_Valid_Data_Returns_Valid_CheckDigit()
        {
            //all less than's will be turned into 0s
            string input = "586479869<<<";

            /* Math below
             * 5 = 5 * 7 = 35
             * 8 = 8 * 3 = 24
             * 6 = 6 * 1 = 6
             * 4 = 4 * 7 = 28
             * 7 = 7 * 3 = 21
             * 9 = 9 * 1 = 9
             * 8 = 8 * 7 = 56
             * 6 = 6 * 3 = 18
             * 9 = 9 * 1 = 9
             * 0 = 0 * 7 = 0
             * 0 = 0 * 3 = 0
             * 0 = 0 * 1 = 0
             * 35 + 24 + 6 + 28 + 21 + 9 + 56 + 18 + 9 + 0 + 0 + 0  = 206 % 10 = 6 */
            string expectedCheckDigit = "6";

            string returnedCheckDigit = CheckDigitHelper.CalculateCheckDigit(input);

            Assert.AreEqual(expectedCheckDigit, returnedCheckDigit);
        }
Пример #2
0
        public ValidationResults ValidateMrzAndBaseData(PassportBaseData baseData, MrzLine2 mrzLine2)
        {
            ValidationResults results = new ValidationResults();

            //Check digits against what was passed into mrzline2
            results.PassportNumberCheckDigit         = CheckDigitHelper.CalculateCheckDigit(mrzLine2.PassportNumber) == mrzLine2.CheckDigitPassportNumber ? true : false;
            results.DateOfBirthCheckDigit            = CheckDigitHelper.CalculateCheckDigit(mrzLine2.DateOfBirth.ToString("yyMMdd")) == mrzLine2.CheckDigitDateOfBirth ? true : false;
            results.PassportExpirationDateCheckDigit = CheckDigitHelper.CalculateCheckDigit(mrzLine2.DateOfExpiry.ToString("yyMMdd")) == mrzLine2.CheckDigitDateOfExpiry ? true : false;
            results.PersonalNumberCheckDigit         = CheckDigitHelper.CalculateCheckDigit(mrzLine2.PersonalNumber) == mrzLine2.CheckDigitPersonalNumber ? true : false;

            //Composite check digit is all fields on line 2 minus nationality and gender
            string compositeCheckDigit = mrzLine2.PassportNumber +
                                         mrzLine2.CheckDigitPassportNumber +
                                         mrzLine2.DateOfBirth.ToString("yyMMdd") +
                                         mrzLine2.CheckDigitDateOfBirth +
                                         mrzLine2.DateOfExpiry.ToString("yyMMdd") +
                                         mrzLine2.CheckDigitDateOfExpiry +
                                         mrzLine2.PersonalNumber +
                                         mrzLine2.CheckDigitPersonalNumber;

            results.FinalCheckDigit = CheckDigitHelper.CalculateCheckDigit(compositeCheckDigit) == mrzLine2.CheckDigitOverall ? true : false;

            //Do a cross check between what the user entered vs what's on mrzline2
            results.GenderCrossCheck         = baseData.Gender == mrzLine2.Gender ? true : false;
            results.DateOfBirthCrossCheck    = baseData.DateOfBirth.ToString(DateMask) == mrzLine2.DateOfBirth.ToString(DateMask) ? true : false;
            results.ExpirationDateCrossCheck = baseData.DateOfExpiry.ToString(DateMask) == mrzLine2.DateOfExpiry.ToString(DateMask) ? true : false;
            results.NationalityCrossCheck    = baseData.Nationality == mrzLine2.Nationality ? true : false;
            results.PassportNumberCrossCheck = baseData.PassportNumber.ZeroFillerChars() == mrzLine2.PassportNumber ? true : false;

            return(results);
        }