예제 #1
0
 public SignatureBoxWrapper()
 {
     InitializeComponent();
     //allowTopaz=(Environment.OSVersion.Platform!=PlatformID.Unix && !CodeBase.ODEnvironment.Is64BitOperatingSystem());
     sigBox.SetTabletState(1);
     //if(!allowTopaz) {
     //  butTopazSign.Visible=false;
     //  sigBox.Visible=true;
     //}
     //else{
     //Add signature box for Topaz signatures.
     sigBoxTopaz          = TopazWrapper.GetTopaz();
     sigBoxTopaz.Location = sigBox.Location;          //this puts both boxes in the same spot.
     sigBoxTopaz.Name     = "sigBoxTopaz";
     sigBoxTopaz.Size     = sigBox.Size;              //new System.Drawing.Size(362,79);
     sigBox.Anchor        = (AnchorStyles)(AnchorStyles.Bottom | AnchorStyles.Left | AnchorStyles.Top | AnchorStyles.Right);
     sigBoxTopaz.TabIndex = 92;
     sigBoxTopaz.Text     = "sigPlusNET1";
     sigBoxTopaz.Visible  = false;
     sigBoxTopaz.Leave   += new EventHandler(sigBoxTopaz_Leave);
     Controls.Add(sigBoxTopaz);
     butTopazSign.BringToFront();
     butClearSig.BringToFront();
     //}
 }
예제 #2
0
 private void sigBoxTopaz_Leave(object sender, EventArgs e)
 {
     if (TopazWrapper.GetTopazState(sigBoxTopaz) == 1)           //if accepting input.
     {
         TopazWrapper.SetTopazState(sigBoxTopaz, 0);
     }
 }
예제 #3
0
 public int GetNumberOfTabletPoints(bool sigIsTopaz)
 {
     if (sigIsTopaz)
     {
         return(TopazWrapper.GetTopazNumberOfTabletPoints(sigBoxTopaz));
     }
     return(sigBox.NumberOfTabletPoints());
 }
예제 #4
0
        private void FillSignatureHelperTopaz(string keyData, string signature)
        {
            if (!CheckTopaz())
            {
                return;
            }
            //According to Jeff Robertson from Topaz, the method SetKeyString() should be used to clear out the key string before loading a signature.
            //For that reason, it should only be called with 16 zeros as its arguments. The actual data that the signature will be bound to should be passed
            //to the method SetAutoKeyData().
            sigBox.Visible          = false;
            sigBoxTopaz.Visible     = true;
            labelInvalidSig.Visible = false;
            TopazWrapper.ClearTopaz(sigBoxTopaz);
            TopazWrapper.SetTopazCompressionMode(sigBoxTopaz, 0);
            TopazWrapper.SetTopazEncryptionMode(sigBoxTopaz, 0);
            TopazWrapper.SetTopazKeyString(sigBoxTopaz, "0000000000000000"); //Clear out the key string
            TopazWrapper.SetTopazEncryptionMode(sigBoxTopaz, 2);             //high encryption
            TopazWrapper.SetTopazCompressionMode(sigBoxTopaz, 2);            //high compression
            string hashedKeyData;

            switch (_signatureMode)
            {
            case SigMode.TreatPlan:
                hashedKeyData = TreatPlans.GetHashStringForSignature(keyData);                      //Passed in key data has not been hashed yet.
                TopazWrapper.SetTopazAutoKeyData(sigBoxTopaz, hashedKeyData);
                break;

            case SigMode.OrthoChart:
                hashedKeyData = OrthoCharts.GetHashStringForSignature(keyData);                      //Passed in key data has not been hashed yet.
                TopazWrapper.SetTopazAutoKeyData(sigBoxTopaz, hashedKeyData);
                break;

            case SigMode.Document:
            case SigMode.Default:
            default:
                TopazWrapper.SetTopazAutoKeyData(sigBoxTopaz, keyData);
                break;
            }
            TopazWrapper.SetTopazSigString(sigBoxTopaz, signature);
            if (TopazWrapper.GetTopazNumberOfTabletPoints(sigBoxTopaz) == 0)
            {
                //Try reading in the signature using the old way that we used to handle signatures.
                FillSignatureTopazOld(keyData, signature);
            }
            //If sig still not showing it must be invalid.
            if (TopazWrapper.GetTopazNumberOfTabletPoints(sigBoxTopaz) == 0)
            {
                labelInvalidSig.Visible = true;
            }
            TopazWrapper.SetTopazState(sigBoxTopaz, 0);
        }
예제 #5
0
 ///<summary>If this is called externally, then the event SignatureChanged will also fire.</summary>
 public void ClearSignature()
 {
     sigBox.Enabled = true;
     sigBox.ClearTablet();
     sigBox.Visible = true;
     //if(allowTopaz) {
     TopazWrapper.ClearTopaz(sigBoxTopaz);
     sigBoxTopaz.Visible = false;         //until user explicitly starts it.
     //}
     sigBox.SetTabletState(1);            //on-screen box is now accepting input.
     sigChanged = true;
     labelInvalidSig.Visible = false;
     OnSignatureChanged();
 }
예제 #6
0
 private void InitializeTopaz()
 {
     //Add signature box for Topaz signatures.
     sigBoxTopaz          = TopazWrapper.GetTopaz();
     sigBoxTopaz.Location = sigBox.Location;  //this puts both boxes in the same spot.
     sigBoxTopaz.Name     = "sigBoxTopaz";
     sigBoxTopaz.Size     = sigBox.Size;      //new System.Drawing.Size(362,79);
     sigBox.Anchor        = (AnchorStyles)(AnchorStyles.Bottom | AnchorStyles.Left | AnchorStyles.Top | AnchorStyles.Right);
     sigBoxTopaz.TabIndex = 92;
     sigBoxTopaz.Text     = "sigPlusNET1";
     sigBoxTopaz.Visible  = false;
     sigBoxTopaz.Leave   += new EventHandler(sigBoxTopaz_Leave);
     Controls.Add(sigBoxTopaz);
 }
예제 #7
0
 private void butTopazSign_Click(object sender, EventArgs e)
 {
     //this button is not even visible if Topaz is not allowed
     if (SignTopazClicked != null)
     {
         SignTopazClicked(this, new EventArgs());
     }
     sigBox.Visible      = false;
     sigBoxTopaz.Visible = true;
     //if(allowTopaz){
     TopazWrapper.ClearTopaz(sigBoxTopaz);
     TopazWrapper.SetTopazEncryptionMode(sigBoxTopaz, 0);
     TopazWrapper.SetTopazState(sigBoxTopaz, 1);
     //}
     labelInvalidSig.Visible = false;
     sigBoxTopaz.Focus();
     OnSignatureChanged();
 }
예제 #8
0
 ///<summary>If this is called externally, then the event SignatureChanged will also fire.</summary>
 public void ClearSignature(bool clearTopazTablet = true)
 {
     sigBox.Enabled = true;
     sigBox.ClearTablet();
     sigBox.Visible = true;
     if (sigBoxTopaz != null)
     {
         if (clearTopazTablet)
         {
             TopazWrapper.ClearTopaz(sigBoxTopaz);
         }
         sigBoxTopaz.Visible = false;     //until user explicitly starts it.
     }
     sigBox.SetTabletState(1);            //on-screen box is now accepting input.
     SigChanged = true;
     labelInvalidSig.Visible = false;
     OnSignatureChanged();
 }
예제 #9
0
        ///<summary>This should NOT be used unless GetSigChanged returns true.</summary>
        public string GetSignature(string keyData)
        {
            //Topaz boxes are written in Windows native code.
            if (sigBoxTopaz.Visible)
            {
                if (TopazWrapper.GetTopazNumberOfTabletPoints(sigBoxTopaz) == 0)
                {
                    return("");
                }
                TopazWrapper.SetTopazKeyString(sigBoxTopaz, "0000000000000000");               //Clear out key string
                TopazWrapper.SetTopazAutoKeyData(sigBoxTopaz, keyData);
                TopazWrapper.SetTopazEncryptionMode(sigBoxTopaz, 2);
                TopazWrapper.SetTopazCompressionMode(sigBoxTopaz, 2);
                return(TopazWrapper.GetTopazString(sigBoxTopaz));
            }
            else
            {
                //ProcCur.SigIsTopaz=false;
                if (sigBox.NumberOfTabletPoints() == 0)
                {
                    return("");
                }
                //sigBox.SetSigCompressionMode(0);
                //sigBox.SetEncryptionMode(0);
                //Some places used different logic for keystring and autokeydata in the past.  This must be maintained to keep signatures valid.
                switch (_signatureMode)
                {
                case SigMode.Document:
                case SigMode.TreatPlan:
                case SigMode.OrthoChart:
                    //No auto key data set, only key string.
                    sigBox.SetKeyString(keyData);
                    break;

                case SigMode.Default:
                    sigBox.SetKeyString("0000000000000000");
                    sigBox.SetAutoKeyData(keyData);
                    break;
                }
                //sigBox.SetEncryptionMode(2);
                //sigBox.SetSigCompressionMode(2);
                return(sigBox.GetSigString());
            }
        }
예제 #10
0
 public void FillSignature(bool sigIsTopaz, string keyData, string signature)
 {
     if (signature == null || signature == "")
     {
         return;
     }
     //This does 3 checks for both topaz and normal signatures.  These keyData replacements are due to MiddleTier & RichTextBox newline issues.
     //Most cases will not get past check 1.  Some of the following checks are taken care of by things like POut.StringNote().
     //Check 1:  keyData.Replace("\r\n","\n").  This reverts any changes middle tier made to the keydata.
     //					Middle tier converts "\r\n" -> "\n" -> "\r\n" so we change it back to "normal".
     //Check 2:  Normal keydata.  This is for cases that had "\r\n" as the original note.  These are keydata that were captured with a textbox.
     //Check 3:  keyData.Replace("\r\n","\n").Replace("\n","\r\n").  This is for cases where the original note was captured with a textbox, and then
     //					was filled into an ODTextBox(richtextbox) and the "\r\n" was changed to "\n" then the user clicked ok changing the note.
     //Note that if the keydata was hashed before this point, these replacements have to be dealt with outside of this function.
     if (sigIsTopaz)
     {
         if (!CheckTopaz())
         {
             labelInvalidSig.Visible = true;
             return;
         }
         FillSignatureHelperTopaz(keyData.Replace("\r\n", "\n"), signature);
         if (TopazWrapper.GetTopazNumberOfTabletPoints(sigBoxTopaz) == 0)
         {
             FillSignatureHelperTopaz(keyData, signature);
         }
         if (TopazWrapper.GetTopazNumberOfTabletPoints(sigBoxTopaz) == 0)
         {
             FillSignatureHelperTopaz(keyData.Replace("\r\n", "\n").Replace("\n", "\r\n"), signature);
         }
     }
     else
     {
         FillSignatureHelper(keyData.Replace("\r\n", "\n"), signature);
         if (sigBox.NumberOfTabletPoints() == 0)
         {
             FillSignatureHelper(keyData, signature);
         }
         if (sigBox.NumberOfTabletPoints() == 0)
         {
             FillSignatureHelper(keyData.Replace("\r\n", "\n").Replace("\n", "\r\n"), signature);
         }
     }
 }
예제 #11
0
        /*
         * ///<summary></summary>
         * public bool GetSigIsValid(){
         *      if(labelInvalidSig.Visible){
         *              return false;
         *      }
         *      return true;
         * }*/

        ///<summary>This should happen a lot before the box is signed.  Once it's signed, if this happens, then the signature will be invalidated.  The user would have to clear the invalidation manually.  This "invalidation" is just a visual cue; nothing actually happens to the data.</summary>
        public void SetInvalid()
        {
            if (sigBoxTopaz != null && sigBoxTopaz.Visible)
            {
                if (TopazWrapper.GetTopazNumberOfTabletPoints(sigBoxTopaz) == 0)
                {
                    return;                    //no need to do anything because no signature
                }
            }
            else
            {
                if (sigBox.NumberOfTabletPoints() == 0)
                {
                    return;                    //no need to do anything because no signature
                }
            }
            labelInvalidSig.Visible = true;
            labelInvalidSig.BringToFront();
        }
예제 #12
0
        ///<summary>Some places used different logic for keystring and autokeydata in the past.  This must be maintained to keep signatures valid.
        ///</summary>
        private void FillSignatureTopazOld(string keyData, string signature)
        {
            string hashedKeyData;

            switch (_signatureMode)
            {
            case SigMode.Document:
                TopazWrapper.SetTopazKeyString(sigBoxTopaz, keyData);
                TopazWrapper.SetTopazEncryptionMode(sigBoxTopaz, 2);                       //high encryption
                TopazWrapper.SetTopazCompressionMode(sigBoxTopaz, 2);                      //high compression
                TopazWrapper.SetTopazSigString(sigBoxTopaz, signature);
                break;

            case SigMode.TreatPlan:
                hashedKeyData = OpenDentBusiness.TreatPlans.GetHashStringForSignature(keyData); //Passed in KeyData still needs to be hashed.
                TopazWrapper.SetTopazKeyString(sigBoxTopaz, hashedKeyData);
                TopazWrapper.SetTopazEncryptionMode(sigBoxTopaz, 2);                            //high encryption
                TopazWrapper.SetTopazCompressionMode(sigBoxTopaz, 2);                           //high encryption
                TopazWrapper.SetTopazSigString(sigBoxTopaz, signature);
                sigBoxTopaz.Refresh();
                //If sig is not showing, then try encryption mode 3 for signatures signed with old SigPlusNet.dll.
                if (TopazWrapper.GetTopazNumberOfTabletPoints(sigBoxTopaz) == 0)
                {
                    TopazWrapper.SetTopazEncryptionMode(sigBoxTopaz, 3);                           //Unknown mode (told to use via TopazSystems)
                    TopazWrapper.SetTopazSigString(sigBoxTopaz, signature);
                }
                break;

            case SigMode.OrthoChart:
                hashedKeyData = OpenDentBusiness.OrthoCharts.GetHashStringForSignature(keyData); //Passed in KeyData still needs to be hashed.
                TopazWrapper.SetTopazKeyString(sigBoxTopaz, hashedKeyData);
                TopazWrapper.SetTopazEncryptionMode(sigBoxTopaz, 2);                             //high encryption
                TopazWrapper.SetTopazCompressionMode(sigBoxTopaz, 2);                            //high compression
                TopazWrapper.SetTopazSigString(sigBoxTopaz, signature);
                //older items may have been signed with zeros due to a bug.  We still want to show the sig in that case.
                //but if a sig is not showing, then set the key string to try to get it to show.
                if (TopazWrapper.GetTopazNumberOfTabletPoints(sigBoxTopaz) == 0)
                {
                    TopazWrapper.SetTopazAutoKeyData(sigBoxTopaz, hashedKeyData);
                    TopazWrapper.SetTopazSigString(sigBoxTopaz, signature);
                }
                //If sig is not showing, then try encryption mode 3 for signatures signed with old SigPlusNet.dll.
                if (TopazWrapper.GetTopazNumberOfTabletPoints(sigBoxTopaz) == 0)
                {
                    TopazWrapper.SetTopazEncryptionMode(sigBoxTopaz, 3);                           //Unknown mode (told to use via TopazSystems)
                    TopazWrapper.SetTopazSigString(sigBoxTopaz, signature);
                }
                break;

            case SigMode.Default:
                TopazWrapper.SetTopazKeyString(sigBoxTopaz, "0000000000000000");
                TopazWrapper.SetTopazEncryptionMode(sigBoxTopaz, 2);                       //high encryption
                TopazWrapper.SetTopazCompressionMode(sigBoxTopaz, 2);                      //high compression
                TopazWrapper.SetTopazSigString(sigBoxTopaz, signature);
                //older items may have been signed with zeros due to a bug.  We still want to show the sig in that case.
                //but if a sig is not showing, then set the key string to try to get it to show.
                if (TopazWrapper.GetTopazNumberOfTabletPoints(sigBoxTopaz) == 0)
                {
                    TopazWrapper.SetTopazAutoKeyData(sigBoxTopaz, keyData);
                    TopazWrapper.SetTopazSigString(sigBoxTopaz, signature);
                }
                //If sig is not showing, then try encryption mode 3 for signatures signed with old SigPlusNet.dll.
                if (TopazWrapper.GetTopazNumberOfTabletPoints(sigBoxTopaz) == 0)
                {
                    TopazWrapper.SetTopazEncryptionMode(sigBoxTopaz, 3);                           //Unknown mode (told to use via TopazSystems)
                    TopazWrapper.SetTopazSigString(sigBoxTopaz, signature);
                }
                break;
            }
        }