ZK proof interfaces
parent
ed28e2eb1b
commit
aa7dd779e1
|
@ -0,0 +1,18 @@
|
||||||
|
package meerkat.crypto.mixnet;
|
||||||
|
|
||||||
|
import meerkat.protobuf.Crypto;
|
||||||
|
import meerkat.protobuf.Mixing;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Prove in zero knowledge that two ciphertexts are a mix of two original ciphertexts.
|
||||||
|
*/
|
||||||
|
public interface Mix2ZeroKnowledgeProver {
|
||||||
|
public Mixing.ZeroKnowledgeProof prove(Crypto.RerandomizableEncryptedMessage in1,
|
||||||
|
Crypto.RerandomizableEncryptedMessage in2,
|
||||||
|
Crypto.RerandomizableEncryptedMessage out1,
|
||||||
|
Crypto.RerandomizableEncryptedMessage out2,
|
||||||
|
boolean switched,
|
||||||
|
Crypto.EncryptionRandomness r1,
|
||||||
|
Crypto.EncryptionRandomness r2);
|
||||||
|
|
||||||
|
}
|
|
@ -0,0 +1,23 @@
|
||||||
|
package meerkat.crypto.mixnet;
|
||||||
|
|
||||||
|
import meerkat.protobuf.Crypto;
|
||||||
|
import meerkat.protobuf.Mixing;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Verify the two-ciphertext mix proof
|
||||||
|
*/
|
||||||
|
public interface Mix2ZeroKnowledgeVerifier {
|
||||||
|
/**
|
||||||
|
* Return true iff the proof is valid.
|
||||||
|
* @param in1
|
||||||
|
* @param in2
|
||||||
|
* @param out1
|
||||||
|
* @param out2
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
boolean verify(Crypto.RerandomizableEncryptedMessage in1,
|
||||||
|
Crypto.RerandomizableEncryptedMessage in2,
|
||||||
|
Crypto.RerandomizableEncryptedMessage out1,
|
||||||
|
Crypto.RerandomizableEncryptedMessage out2,
|
||||||
|
Mixing.ZeroKnowledgeProof proof);
|
||||||
|
}
|
|
@ -0,0 +1,12 @@
|
||||||
|
syntax = "proto3";
|
||||||
|
|
||||||
|
package meerkat;
|
||||||
|
|
||||||
|
option java_package = "meerkat.protobuf";
|
||||||
|
|
||||||
|
import 'meerkat/crypto.proto';
|
||||||
|
|
||||||
|
// TODO:
|
||||||
|
message ZeroKnowledgeProof {
|
||||||
|
bytes data = 1;
|
||||||
|
}
|
Loading…
Reference in New Issue