- Niagree claim seems to be working fine now.
This commit is contained in:
parent
2decf44bd2
commit
21b2c27320
@ -1329,7 +1329,7 @@ prune_claim_specifics ()
|
|||||||
{
|
{
|
||||||
if (current_claim->type == CLAIM_Niagree)
|
if (current_claim->type == CLAIM_Niagree)
|
||||||
{
|
{
|
||||||
if (arachne_claim_niagree (sys, current_claim->r, current_claim->ev))
|
if (arachne_claim_niagree (sys, 0, current_claim->ev))
|
||||||
{
|
{
|
||||||
current_claim->count = statesIncrease (current_claim->count);
|
current_claim->count = statesIncrease (current_claim->count);
|
||||||
if (sys->output == PROOF)
|
if (sys->output == PROOF)
|
||||||
@ -1342,7 +1342,7 @@ prune_claim_specifics ()
|
|||||||
}
|
}
|
||||||
if (current_claim->type == CLAIM_Nisynch)
|
if (current_claim->type == CLAIM_Nisynch)
|
||||||
{
|
{
|
||||||
if (arachne_claim_nisynch (sys, current_claim->r, current_claim->ev))
|
if (arachne_claim_nisynch (sys, 0, current_claim->ev))
|
||||||
{
|
{
|
||||||
current_claim->count = statesIncrease (current_claim->count);
|
current_claim->count = statesIncrease (current_claim->count);
|
||||||
if (sys->output == PROOF)
|
if (sys->output == PROOF)
|
||||||
@ -1402,16 +1402,14 @@ property_check ()
|
|||||||
int flag;
|
int flag;
|
||||||
|
|
||||||
flag = 1;
|
flag = 1;
|
||||||
if (current_claim->type == CLAIM_Secret)
|
|
||||||
{
|
/**
|
||||||
// Secrecy claim
|
* By the way the claim is handled, this automatically means a flaw.
|
||||||
/**
|
*/
|
||||||
* By the way the claim is handled, this automatically means a flaw.
|
count_false ();
|
||||||
*/
|
if (sys->output == ATTACK)
|
||||||
count_false ();
|
printSemiState ();
|
||||||
if (sys->output == ATTACK)
|
|
||||||
printSemiState ();
|
|
||||||
}
|
|
||||||
return flag;
|
return flag;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
46
src/claim.c
46
src/claim.c
@ -3,6 +3,7 @@
|
|||||||
#include "system.h"
|
#include "system.h"
|
||||||
#include "label.h"
|
#include "label.h"
|
||||||
#include "error.h"
|
#include "error.h"
|
||||||
|
#include "debug.h"
|
||||||
|
|
||||||
#define MATCH_NONE 0
|
#define MATCH_NONE 0
|
||||||
#define MATCH_ORDER 1
|
#define MATCH_ORDER 1
|
||||||
@ -12,6 +13,8 @@
|
|||||||
#define LABEL_GOOD -3
|
#define LABEL_GOOD -3
|
||||||
#define LABEL_TODO -2
|
#define LABEL_TODO -2
|
||||||
|
|
||||||
|
extern int globalError;
|
||||||
|
|
||||||
// Debugging the NI-SYNCH checks
|
// Debugging the NI-SYNCH checks
|
||||||
//#define OKIDEBUG
|
//#define OKIDEBUG
|
||||||
|
|
||||||
@ -477,6 +480,15 @@ int arachne_runs_agree (const System sys, const Claimlist cl, const Termmap runs
|
|||||||
Termlist labels;
|
Termlist labels;
|
||||||
int flag;
|
int flag;
|
||||||
|
|
||||||
|
#ifdef DEBUG
|
||||||
|
if (DEBUGL (5))
|
||||||
|
{
|
||||||
|
eprintf ("Checking runs agreement for Arachne.\n");
|
||||||
|
termmapPrint (runs);
|
||||||
|
eprintf ("\n");
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
flag = 1;
|
flag = 1;
|
||||||
labels = cl->prec;
|
labels = cl->prec;
|
||||||
while (flag && labels != NULL)
|
while (flag && labels != NULL)
|
||||||
@ -492,7 +504,25 @@ int arachne_runs_agree (const System sys, const Claimlist cl, const Termmap runs
|
|||||||
int i;
|
int i;
|
||||||
int run;
|
int run;
|
||||||
|
|
||||||
run = termmapGet (runs, label);
|
run = termmapGet (runs, role);
|
||||||
|
#ifdef DEBUG
|
||||||
|
if (run < 0 || run >= sys->maxruns )
|
||||||
|
{
|
||||||
|
globalError++;
|
||||||
|
eprintf ("Run mapping %i out of bounds for role ", run);
|
||||||
|
termPrint (role);
|
||||||
|
eprintf (" and label ");
|
||||||
|
termPrint (label);
|
||||||
|
eprintf ("\n");
|
||||||
|
eprintf ("This label has sendrole ");
|
||||||
|
termPrint (linfo->sendrole);
|
||||||
|
eprintf (" and readrole ");
|
||||||
|
termPrint (linfo->readrole);
|
||||||
|
eprintf ("\n");
|
||||||
|
globalError--;
|
||||||
|
error ("Run mapping is out of bounds.");
|
||||||
|
}
|
||||||
|
#endif
|
||||||
rd = sys->runs[run].start;
|
rd = sys->runs[run].start;
|
||||||
rd_res = NULL;
|
rd_res = NULL;
|
||||||
i = 0;
|
i = 0;
|
||||||
@ -559,11 +589,12 @@ int arachne_claim_niagree (const System sys, const int claim_run, const int clai
|
|||||||
else
|
else
|
||||||
{
|
{
|
||||||
// Choose a run for this role, if possible
|
// Choose a run for this role, if possible
|
||||||
|
// Note that any will do
|
||||||
int run, flag;
|
int run, flag;
|
||||||
|
|
||||||
run = 0;
|
run = 0;
|
||||||
flag = 1;
|
flag = 0;
|
||||||
while (flag && run < sys->maxruns)
|
while (run < sys->maxruns)
|
||||||
{
|
{
|
||||||
// Has to be from the right protocol
|
// Has to be from the right protocol
|
||||||
if (sys->runs[run].protocol == cl->protocol)
|
if (sys->runs[run].protocol == cl->protocol)
|
||||||
@ -573,7 +604,7 @@ int arachne_claim_niagree (const System sys, const int claim_run, const int clai
|
|||||||
{
|
{
|
||||||
// Choose, iterate
|
// Choose, iterate
|
||||||
runs_involved = termmapSet (runs_involved, roles_tofill->term, run);
|
runs_involved = termmapSet (runs_involved, roles_tofill->term, run);
|
||||||
flag = flag && fill_roles (roles_tofill->next);
|
flag = flag || fill_roles (roles_tofill->next);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
run++;
|
run++;
|
||||||
@ -582,6 +613,13 @@ int arachne_claim_niagree (const System sys, const int claim_run, const int clai
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#ifdef DEBUG
|
||||||
|
if (DEBUGL (5))
|
||||||
|
{
|
||||||
|
eprintf ("Testing for Niagree claim with any sort of runs.\n");
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
rd = roledef_shift (sys->runs[claim_run].start, claim_index);
|
rd = roledef_shift (sys->runs[claim_run].start, claim_index);
|
||||||
#ifdef DEBUG
|
#ifdef DEBUG
|
||||||
if (rd == NULL)
|
if (rd == NULL)
|
||||||
|
Loading…
Reference in New Issue
Block a user