/// <returns>unblinded signature</returns> public byte[] UnblindSignature(byte[] blindedSignature, BigInteger blindingFactor) { var blindingEngine = new RsaBlindingEngine(); var blindingParams = new RsaBlindingParameters(KeyParameters, blindingFactor); blindingEngine.Init(forEncryption: false, param: blindingParams); return(blindingEngine.ProcessBlock(blindedSignature, 0, blindedSignature.Length)); }
public ContentBlinder(RsaKeyParameters publicKey, string groupName) { RsaBlindingFactorGenerator blindingFactorGenerator = new RsaBlindingFactorGenerator(); blindingFactorGenerator.Init(publicKey); BigInteger blindingFactor = blindingFactorGenerator.GenerateBlindingFactor(); blindingParams = new RsaBlindingParameters(publicKey, blindingFactor); SaveBlindFactor(groupName, blindingFactor); }
public PcGame(byte[] gameData, RsaKeyParameters pub) { this.gameData = gameData; var blindingFactorGenerator = new RsaBlindingFactorGenerator(); blindingFactorGenerator.Init(pub); var blindingFactor = blindingFactorGenerator.GenerateBlindingFactor(); blindingParams = new RsaBlindingParameters(pub, blindingFactor); }
public FooImplementing(string message) { inputMessage = getBytes(message); aliceRsaKeyGenerator.Init(new KeyGenerationParameters(new SecureRandom(), 1024)); aliceKeyPair = aliceRsaKeyGenerator.GenerateKeyPair(); //****************************************************************************** bobRsaKeyGenerator.Init(new KeyGenerationParameters(new SecureRandom(), 1024)); bobKeyPair = bobRsaKeyGenerator.GenerateKeyPair(); //****************************************************************************** blindingFactorGenerator.Init(bobKeyPair.Public); blindingParameteres = new RsaBlindingParameters((RsaKeyParameters)bobKeyPair.Public, blindingFactorGenerator.GenerateBlindingFactor()); }
private void testSig( int id, RsaKeyParameters pub, RsaKeyParameters prv, byte[] slt, byte[] msg, byte[] sig) { RsaBlindingFactorGenerator blindFactorGen = new RsaBlindingFactorGenerator(); RsaBlindingEngine blindingEngine = new RsaBlindingEngine(); PssSigner blindSigner = new PssSigner(blindingEngine, new Sha1Digest(), 20); PssSigner signer = new PssSigner(new RsaEngine(), new Sha1Digest(), 20); blindFactorGen.Init(pub); BigInteger blindFactor = blindFactorGen.GenerateBlindingFactor(); RsaBlindingParameters parameters = new RsaBlindingParameters(pub, blindFactor); // generate a blind signature blindSigner.Init(true, new ParametersWithRandom(parameters, new FixedRandom(slt))); blindSigner.BlockUpdate(msg, 0, msg.Length); byte[] blindedData = blindSigner.GenerateSignature(); RsaEngine signerEngine = new RsaEngine(); signerEngine.Init(true, prv); byte[] blindedSig = signerEngine.ProcessBlock(blindedData, 0, blindedData.Length); // unblind the signature blindingEngine.Init(false, parameters); byte[] s = blindingEngine.ProcessBlock(blindedSig, 0, blindedSig.Length); //signature verification if (!AreEqual(s, sig)) { Fail("test " + id + " failed generation"); } //verify signature with PssSigner signer.Init(false, pub); signer.BlockUpdate(msg, 0, msg.Length); if (!signer.VerifySignature(s)) { Fail("test " + id + " failed PssSigner verification"); } }
public Protocoin(RsaKeyParameters pub) { // Create a 128-bit globally unique ID for the coin. coinID = Util.GetRandomBytes(16); // Generate a blinding factor using the bank's public key. RsaBlindingFactorGenerator blindingFactorGenerator = new RsaBlindingFactorGenerator(); blindingFactorGenerator.Init(pub); BigInteger blindingFactor = blindingFactorGenerator.GenerateBlindingFactor(); blindingParams = new RsaBlindingParameters(pub, blindingFactor); }
private bool isProcessingOkay( RsaKeyParameters pub, RsaKeyParameters prv, byte[] data, SecureRandom random) { RsaBlindingFactorGenerator blindFactorGen = new RsaBlindingFactorGenerator(); RsaBlindingEngine blindingEngine = new RsaBlindingEngine(); PssSigner blindSigner = new PssSigner(blindingEngine, new Sha1Digest(), 20); PssSigner pssEng = new PssSigner(new RsaEngine(), new Sha1Digest(), 20); random.NextBytes(data); blindFactorGen.Init(pub); BigInteger blindFactor = blindFactorGen.GenerateBlindingFactor(); RsaBlindingParameters parameters = new RsaBlindingParameters(pub, blindFactor); // generate a blind signature blindSigner.Init(true, new ParametersWithRandom(parameters, random)); blindSigner.BlockUpdate(data, 0, data.Length); byte[] blindedData = blindSigner.GenerateSignature(); RsaEngine signerEngine = new RsaEngine(); signerEngine.Init(true, prv); byte[] blindedSig = signerEngine.ProcessBlock(blindedData, 0, blindedData.Length); // unblind the signature blindingEngine.Init(false, parameters); byte[] s = blindingEngine.ProcessBlock(blindedSig, 0, blindedSig.Length); //verify signature with PssSigner pssEng.Init(false, pub); pssEng.BlockUpdate(data, 0, data.Length); return(pssEng.VerifySignature(s)); }
public (BigInteger BlindingFactor, byte[] BlindedData) Blind(byte[] data) { // generate blinding factor with pubkey var blindingFactorGenerator = new RsaBlindingFactorGenerator(); blindingFactorGenerator.Init(KeyParameters); BigInteger blindingFactor = blindingFactorGenerator.GenerateBlindingFactor(); // blind data var blindingParams = new RsaBlindingParameters(KeyParameters, blindingFactor); var blinder = new PssSigner( cipher: new RsaBlindingEngine(), digest: new Sha256Digest(), saltLen: 32); blinder.Init(forSigning: true, parameters: blindingParams); blinder.BlockUpdate(data, 0, data.Length); byte[] blindedData = blinder.GenerateSignature(); return(blindingFactor, blindedData); }
public ContentBlinder(RsaKeyParameters publicKey, BigInteger blindingFactor) { blindingParams = new RsaBlindingParameters(publicKey, blindingFactor); }