1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30
| RSABlindingParameters params = new RSABlindingParameters(pub, blindFactor);
// creer le blindingE
RSABlindingEngine rsaBlindingEngine = new RSABlindingEngine();
//creer le blindingSigner
PSSSigner blindingSigner = new PSSSigner(rsaBlindingEngine, new SHA1Digest(), 1);
// creer le rsaSigner
PSSSigner rsaSigner = new PSSSigner(new RSAEngine(), new SHA1Digest(), 1);
// initialiser blindingSigner
blindingSigner.init(true, new ParametersWithRandom(params,new SecureRandom()));
blindingSigner.update(msg, 0, msg.length);
// blinding Signature
byte[] blindingSignature = blindingSigner.generateSignature();
System.out.println("Signature masquée: " + emsa.arrayToString(blindingSignature));
// creer le rsaEngine
RSAEngine rsaEngine = new RSAEngine();
// initialiser le rsaEngine
rsaEngine.init(true, prv);
byte[] blindedData = rsaEngine.processBlock(blindingSignature, 0, blindingSignature.length);
//initialiser le rsaBlindingE pour demasquer la signature
rsaBlindingEngine.init(false, params);
byte[] signature = rsaBlindingEngine.processBlock(blindedData, 0, blindedData.length);
System.out.println("Signature demasquée: " + emsa.arrayToString(signature));
RSABlindedEngine rsaBlindedEngine = new RSABlindedEngine();
rsaBlindedEngine.init(true, pub);
byte[] dbMask = rsaBlindedEngine.processBlock(signature, 0, signature.length);
System.out.println("Le dbMask : " + emsa.arrayToString(dbMask));
rsaSigner.init(false, pub);
rsaSigner.update(msg, 0, msg.length);
boolean verif = rsaSigner.verifySignature(signature);
Assert.assertTrue(verif); |
Partager