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

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