예제 #1
0
        public bool CheckSignature([FromBody] SignatureDTO aSig)
        {
            SignatureData lSignatureData = SignatureUtils.SignatureUtils.GetSignatureFromBase64String(aSig.Signature, aSig.Email);

            Signature lSigWithCharacteristics = SignatureUtils.SignatureUtils.CalculateCharacteristics(lSignatureData.Signature);

            lSigWithCharacteristics = SignatureUtils.SignatureUtils.StandardizeSignature(lSigWithCharacteristics);

            var lDirectory = "d:\\Signatures\\" + lSignatureData.Email + "\\";

            //Get all signatures from folder. True flag indicates, that all characteristics we are working with are stored in the file, these will be loaded too
            List <Signature> lSignatures = SignatureFileUtils.GetAllSignaturesFromFolder(lDirectory, true);

            DTWConfiguration lDTWConfig = new DTWConfiguration()
                                          .UseXY()
                                          .UseX1Y1()
                                          .UseX2Y2()
                                          .UseForce()
                                          .UseForce1()
                                          .UsePathVelocity();

            //Check for NaN values at Force and Force1 characrteristics.
            SignatureUtils.SignatureUtils.CheckForNaN(lSigWithCharacteristics, ref lDTWConfig);

            return(SignatureQualityEvaluation.Authenticate(lDirectory, lSigWithCharacteristics, lDTWConfig, 0.05));
        }
예제 #2
0
        public int SaveSignature([FromBody] SignatureDTO aSig)
        {
            //Get signature from the Base64Encoded string
            SignatureData lSignatureData = SignatureUtils.SignatureUtils.GetSignatureFromBase64String(aSig.Signature, aSig.Email);

            var lDirectory = "d:\\Signatures\\" + lSignatureData.Email + "\\";

            if (!System.IO.Directory.Exists(lDirectory))
            {
                System.IO.Directory.CreateDirectory(lDirectory);
            }

            var fileName          = lDirectory + DateTime.Now.Ticks.ToString() + ".csv";
            var lFeaturesFileName = lDirectory + "\\SignatureFeatures\\" + "SignatureFeatures.csv";

            //Calculate characteristics of the received signature and standardize it
            Signature lSigWithCharacteristics = SignatureUtils.SignatureUtils.CalculateCharacteristics(lSignatureData.Signature);

            lSigWithCharacteristics = SignatureUtils.SignatureUtils.StandardizeSignature(lSigWithCharacteristics);

            //Create DTW configuration for the quality evaluation
            DTWConfiguration lDTWConfig = new DTWConfiguration()
                                          .UseXY()
                                          .UseX1Y1();

            //Check the quality of the signature. If it is a poor quality signature, request it once again
            bool lResult = SignatureQualityEvaluation.CheckQuality(lDirectory, lSigWithCharacteristics, lDTWConfig);

            if (lResult)
            {
                //Save function based data to csv file
                SignatureFileUtils.SaveSignatureWithCharacteristicsToFile(lSigWithCharacteristics, fileName);

                try
                {
                    //Save feature based data to csv file
                    SignatureFeatures lFEatures = FeatureCalculator.CalculateFeatures(lSigWithCharacteristics);

                    if (!System.IO.Directory.Exists(lDirectory + "\\SignatureFeatures\\"))
                    {
                        System.IO.Directory.CreateDirectory(lDirectory + "\\SignatureFeatures\\");
                    }

                    SignatureFileUtils.SaveFeatureSetToFile(lFEatures, lFeaturesFileName);
                }
                catch (Exception ex)
                {
                    //If an error occurs, do nothing
                    //An error can occur in case of the pressure related features, beacause some devices don't return the pressure value
                }

                return(1);
            }
            else
            {
                return(0);
            }
        }
예제 #3
0
 public void tblSignature_insert(SignatureDTO dt)
 {
     string sql = "INSERT INTO tblSignature(UserId, SignatureContent, SignatureName) " +
                  "VALUES(@UserId, @SignatureContent, @SignatureName)";
     SqlCommand cmd = new SqlCommand(sql, ConnectionData._MyConnection);
     cmd.CommandType = CommandType.Text;
     cmd.Parameters.Add("@UserId", SqlDbType.Int).Value = dt.userId;
     cmd.Parameters.Add("@SignatureContent", SqlDbType.NVarChar).Value = dt.signatureContent;
     cmd.Parameters.Add("@SignatureName", SqlDbType.NVarChar).Value = dt.SignatureName;
     cmd.ExecuteNonQuery();
     cmd.Dispose();
 }
예제 #4
0
 public void tblSignature_Update(SignatureDTO dt)
 {
     string sql = "UPDATE tblSignature SET " +
                 "SignatureContent = @SignatureContent, "+
                 "SignatureName = @SignatureName, " +
                 "UserId = @UserId " +
                 " WHERE id = @id";
     SqlCommand cmd = new SqlCommand(sql, ConnectionData._MyConnection);
     cmd.CommandType = CommandType.Text;
     cmd.Parameters.Add("@id", SqlDbType.Int).Value = dt.id;
     cmd.Parameters.Add("@UserId", SqlDbType.Int).Value = dt.userId;
     cmd.Parameters.Add("@SignatureContent", SqlDbType.NVarChar).Value = dt.signatureContent;
     cmd.Parameters.Add("@SignatureName", SqlDbType.NVarChar).Value = dt.SignatureName;
     cmd.ExecuteNonQuery();
     cmd.Dispose();
 }
예제 #5
0
 public void tblSignature_Update(SignatureDTO dt)
 {
     sign.tblSignature_Update(dt);
 }
예제 #6
0
 public void tblSignature_insert(SignatureDTO dt)
 {
     sign.tblSignature_insert(dt);
 }
예제 #7
0
 private SignatureDTO getSignatureDTO()
 {
     SignatureDTO sign = new SignatureDTO();
     UserLoginDTO userLogin = getUserLogin();
     if (userLogin != null)
     {
         sign.userId = userLogin.UserId;
         sign.signatureContent = txtBody.Text;
         sign.SignatureName = txtSignatureName.Text;
         if (hdfId.Value != null&&hdfId.Value!="")
             sign.id = int.Parse(hdfId.Value);
     }
     else
     {
         Response.Redirect("login.aspx");
     }
     return sign;
 }