source: trunk/CrypPlugins/PKCS1/Library/Signature.cs @ 1765

Last change on this file since 1765 was 1742, checked in by schomburg, 11 years ago

fixed some bugs
enhanced the GUI
file input possible now

File size: 2.5 KB
Line 
1using System;
2using System.Collections.Generic;
3using System.Linq;
4using System.Text;
5using Org.BouncyCastle.Utilities.Encoders;
6using Org.BouncyCastle.Math;
7
8namespace PKCS1.Library
9{
10    public abstract class Signature
11    {
12        protected Signature()
13        {
14            Datablock.getInstance().RaiseParamChangedEvent += handleParamChanged;
15        }
16
17        protected byte[] m_Signature = null;
18        protected int m_KeyLength = 0;
19
20        protected bool m_bSigGenerated = false;
21        public bool isSigGenerated()
22        {
23            return this.m_bSigGenerated;
24        }       
25
26        #region Getter
27
28        public byte[] GetSignature()
29        {
30            return this.m_Signature;
31        }
32
33        public string GetSignatureToHexString()
34        {
35            return Encoding.ASCII.GetString(Hex.Encode(GetSignature() ) );
36        }
37
38        public byte[] GetSignatureDec()
39        {
40            return this.decryptedSig();
41        }
42
43        public string GetSignatureDecToHexString()
44        {
45            return Encoding.ASCII.GetString(Hex.Encode(this.decryptedSig()));
46        }
47
48        #endregion
49
50        #region Eventhandling
51
52        public event SigGenerated RaiseSigGenEvent;
53
54        // trigger
55        protected void OnRaiseSigGenEvent(SignatureType type)
56        {
57            if (null != RaiseSigGenEvent)
58            {
59                RaiseSigGenEvent(type);
60            }
61        }
62
63        // listen
64        private void handleParamChanged(ParameterChangeType type)
65        {
66            if (ParameterChangeType.Message == type)
67            {
68                this.m_bSigGenerated = false;
69            }
70            if (ParameterChangeType.HashfunctionType == type)
71            {
72                this.m_bSigGenerated = false;
73            }
74        }
75
76        #endregion
77
78        private byte[] decryptedSig()       
79        {
80            BigInteger SigInBigInt = new BigInteger(1,this.GetSignature());
81            BigInteger returnBigInt = SigInBigInt.ModPow(RSAKeyManager.Instance.getPubKeyToBigInt(), RSAKeyManager.Instance.getModulusToBigInt());
82            byte[] returnByteArray = new byte[ this.m_KeyLength/8 ]; // KeyLength is in bit
83            Array.Copy(returnBigInt.ToByteArray(), 0, returnByteArray, returnByteArray.Length - returnBigInt.ToByteArray().Length, returnBigInt.ToByteArray().Length);
84            return returnByteArray;
85        }
86
87        public abstract bool GenerateSignature();
88
89    }
90}
Note: See TracBrowser for help on using the repository browser.