@@ -8,19 +8,18 @@ namespace EccSDK.Services;
88
99public class ChameleonHashService : IChameleonHashService
1010{
11- private readonly KeyPairDomain _keyPairDomain ;
1211 private readonly ChameleonHash _chameleonHash ;
12+ private readonly KeyPairDomain _keyPairDomain ;
1313
1414 // Kn = public key
1515 // kn = private key
1616 public ChameleonHashService ( KeyPairDomain keyPairDomain )
1717 {
1818 _keyPairDomain = keyPairDomain ;
19- _chameleonHash = InitChameleonHash ( keyPairDomain ) ;
19+ _chameleonHash = GetChameleonHash ( "init chameleon hash" ) ;
2020 }
2121
2222
23-
2423 public ChameleonSignature Sign ( string message )
2524 {
2625 // sign = (sessionKey - dn) mod n
@@ -38,46 +37,40 @@ public ChameleonSignature Sign(string message)
3837
3938 public bool Verify ( ChameleonHashVerifyRequest verifyRequest )
4039 {
41- var chameleonHashRequest = new ChameleonHashRequest ( )
40+ var chameleonHashRequest = new ChameleonHashRequest
4241 {
4342 Message = verifyRequest . Message ,
4443 KeyPairDomain = verifyRequest . KeyPairDomain ,
45- Signature = new BigInteger ( verifyRequest . StrSignature , 16 )
44+ Signature = new BigInteger ( verifyRequest . StrSignature , 16 )
4645 } ;
47-
46+
4847 var chameleonHashCalculated = CalculateChameleonHashBy ( chameleonHashRequest ) ;
49-
48+
5049 return chameleonHashCalculated . Value . Equals ( _chameleonHash . Value ) ;
5150 }
5251
53- public ChameleonHash CalculateChameleonHashBy ( ChameleonHashRequest request )
52+ public ChameleonHash GetChameleonHash ( string message )
53+ {
54+ var signature = Sign ( message ) ;
55+ return CalculateChameleonHashBy ( new ChameleonHashRequest
56+ {
57+ Message = message ,
58+ KeyPairDomain = _keyPairDomain ,
59+ Signature = new BigInteger ( signature . Value , 16 )
60+ } ) ;
61+ }
62+
63+ private ChameleonHash CalculateChameleonHashBy ( ChameleonHashRequest request )
5464 {
5565 // chameleonHash = [Kn x H(m)] + [P x signature]
5666 var hashedMessage = HashHelper . Sha256 ( request . Message ) ;
5767 var knHash = request . KeyPairDomain . PublicKey . Q . Multiply ( hashedMessage ) ;
58- var pSignature = request . KeyPairDomain . PublicKey . Parameters . G . Multiply ( request . Signature ) ;
68+ var pSignature = request . KeyPairDomain . PublicKey . Parameters . G . Multiply ( request . Signature ) ;
5969
60- return new ChameleonHash ( )
70+ return new ChameleonHash
6171 {
6272 Value = knHash . Add ( pSignature )
6373 } ;
6474 }
65-
66- public ChameleonHash GetChameleonHash ( )
67- {
68- return _chameleonHash ;
69- }
70-
71- private ChameleonHash InitChameleonHash ( KeyPairDomain keyPairDomain )
72- {
73- var signature = Sign ( "init chameleon hash" ) ;
74- return CalculateChameleonHashBy ( new ChameleonHashRequest ( )
75- {
76- Message = "init chameleon hash" ,
77- KeyPairDomain = keyPairDomain ,
78- Signature = new BigInteger ( signature . Value , 16 )
79- } ) ;
80- }
81-
82-
75+
8376}
0 commit comments