https://github.com/EasyCrypt/easycrypt
Raw File
Tip revision: 644ddc2e7f7b1bab87c4775250c430104c7d9f69 authored by Pierre-Yves Strub on 09 August 2022, 07:51:07 UTC
Fix a typing annotation bug in distribution tags' axioms
Tip revision: 644ddc2
CPA.eca
require import Bool Core.
require (*--*) DBool NewSKE.

clone include NewSKE.

module type CPA = {
  proc enc(p: plain): cipher option
}.

module type Adv_CPA (O : CPA) = {
  proc choose(): plain * plain
  proc guess(c: cipher): bool
}.

module IND_CPA ( S : SKE, A : Adv_CPA) = {
  module O = Wrap(S)
  module A = A(O)

  proc main(): bool = {
    var b, b', c, p0, p1, p;

    O.init();
    (p0,p1) <@ A.choose();
    b       <$ {0,1};
    p       <- b ? p1 : p0; (* FIXME: need to check whether plaintexts are both valid or both invalid *)
    c       <@ O.enc(p);
    b'      <@ A.guess(oget c);
    return b = b';
  }
}.
back to top