NEW: Added SID & SKR dummy claims.
This allows for input file reuse among branches (i.e. compromise).
This commit is contained in:
parent
04787e5516
commit
6afcfe1d10
@ -2368,10 +2368,13 @@ arachneClaimTest (Claimlist cl)
|
|||||||
|
|
||||||
//! Arachne single claim inspection
|
//! Arachne single claim inspection
|
||||||
int
|
int
|
||||||
arachneClaim (Claimlist cl)
|
arachneClaim ()
|
||||||
{
|
{
|
||||||
// Skip the dummy claims
|
Claimlist cl;
|
||||||
if (!isTermEqual (cl->type, CLAIM_Empty))
|
|
||||||
|
// Skip the dummy claims or SID markers
|
||||||
|
cl = sys->current_claim;
|
||||||
|
if (!isClaimSignal (cl))
|
||||||
{
|
{
|
||||||
// Some claims are always true!
|
// Some claims are always true!
|
||||||
if (!cl->alwaystrue)
|
if (!cl->alwaystrue)
|
||||||
@ -2472,10 +2475,14 @@ arachne ()
|
|||||||
/**
|
/**
|
||||||
* Check each claim
|
* Check each claim
|
||||||
*/
|
*/
|
||||||
if (arachneClaim (cl))
|
sys->current_claim = cl;
|
||||||
|
if (isClaimRelevant (cl)) // check for any filtered claims (switch)
|
||||||
|
{
|
||||||
|
if (arachneClaim ())
|
||||||
{
|
{
|
||||||
count++;
|
count++;
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// next
|
// next
|
||||||
cl = cl->next;
|
cl = cl->next;
|
||||||
|
68
src/claim.c
68
src/claim.c
@ -39,6 +39,7 @@
|
|||||||
#include "color.h"
|
#include "color.h"
|
||||||
#include "cost.h"
|
#include "cost.h"
|
||||||
#include "timer.h"
|
#include "timer.h"
|
||||||
|
#include "compiler.h"
|
||||||
|
|
||||||
//! When none of the runs match
|
//! When none of the runs match
|
||||||
#define MATCH_NONE 0
|
#define MATCH_NONE 0
|
||||||
@ -816,7 +817,7 @@ add_claim_specifics (const System sys, const Claimlist cl, const Roledef rd,
|
|||||||
// per default, all agents are trusted
|
// per default, all agents are trusted
|
||||||
sys->trustedRoles = NULL;
|
sys->trustedRoles = NULL;
|
||||||
|
|
||||||
if (cl->type == CLAIM_Secret)
|
if (cl->type == CLAIM_Secret || cl->type == CLAIM_SKR)
|
||||||
{
|
{
|
||||||
int newgoals;
|
int newgoals;
|
||||||
int flag;
|
int flag;
|
||||||
@ -1153,3 +1154,68 @@ claimStatusReport (const System sys, Claimlist cl)
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//! Check whether this claim needs to be verified according to filter settings
|
||||||
|
int
|
||||||
|
isClaimRelevant (const Claimlist cl)
|
||||||
|
{
|
||||||
|
// Is there something to filter?
|
||||||
|
if (switches.filterProtocol == NULL)
|
||||||
|
{
|
||||||
|
// No: consider all claims
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
// only this protocol
|
||||||
|
if (!isStringEqual
|
||||||
|
(switches.filterProtocol,
|
||||||
|
TermSymb (((Protocol) cl->protocol)->nameterm)->text))
|
||||||
|
{
|
||||||
|
// not this protocol; return
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
// and maybe also a specific cl->label?
|
||||||
|
if (switches.filterLabel != NULL)
|
||||||
|
{
|
||||||
|
if (cl->label == NULL)
|
||||||
|
{
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
Term t;
|
||||||
|
|
||||||
|
t = cl->label;
|
||||||
|
while (isTermTuple (t))
|
||||||
|
{
|
||||||
|
t = TermOp2 (t);
|
||||||
|
}
|
||||||
|
if (!isStringEqual (switches.filterLabel, TermSymb (t)->text))
|
||||||
|
{
|
||||||
|
// not this label; return
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
//! Check whether a claim is really just a signal, and not a claim
|
||||||
|
/**
|
||||||
|
* This piece of code effectively decides what is a signal and what not
|
||||||
|
*/
|
||||||
|
int
|
||||||
|
isClaimSignal (const Claimlist cl)
|
||||||
|
{
|
||||||
|
if (isTermEqual (cl->type, CLAIM_Empty))
|
||||||
|
{
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
if (isTermEqual (cl->type, CLAIM_SID))
|
||||||
|
{
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
@ -40,5 +40,7 @@ int add_claim_specifics (const System sys, const Claimlist cl, const
|
|||||||
void count_false_claim (const System sys);
|
void count_false_claim (const System sys);
|
||||||
int property_check (const System sys);
|
int property_check (const System sys);
|
||||||
int claimStatusReport (const System sys, Claimlist cl);
|
int claimStatusReport (const System sys, Claimlist cl);
|
||||||
|
int isClaimRelevant (const Claimlist cl);
|
||||||
|
int isClaimSignal (const Claimlist cl);
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
@ -42,4 +42,6 @@ void levelTacDeclaration (Tac tc, int isVar);
|
|||||||
#define levelVar(s) symbolDeclare(s,1)
|
#define levelVar(s) symbolDeclare(s,1)
|
||||||
#define levelConst(s) symbolDeclare(s,0)
|
#define levelConst(s) symbolDeclare(s,0)
|
||||||
|
|
||||||
|
int isStringEqual (const char *s1, const char *s2);
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
@ -48,6 +48,8 @@ Term CLAIM_Nisynch;
|
|||||||
Term CLAIM_Niagree;
|
Term CLAIM_Niagree;
|
||||||
Term CLAIM_Empty;
|
Term CLAIM_Empty;
|
||||||
Term CLAIM_Reachable;
|
Term CLAIM_Reachable;
|
||||||
|
Term CLAIM_SID;
|
||||||
|
Term CLAIM_SKR;
|
||||||
|
|
||||||
Term AGENT_Alice;
|
Term AGENT_Alice;
|
||||||
Term AGENT_Bob;
|
Term AGENT_Bob;
|
||||||
@ -85,6 +87,9 @@ specialTermInit (const System sys)
|
|||||||
langcons (CLAIM_Empty, "Empty", TERM_Claim);
|
langcons (CLAIM_Empty, "Empty", TERM_Claim);
|
||||||
langcons (CLAIM_Reachable, "Reachable", TERM_Claim);
|
langcons (CLAIM_Reachable, "Reachable", TERM_Claim);
|
||||||
|
|
||||||
|
langcons (CLAIM_SID, "SID", TERM_Claim); // claim specifying session ID
|
||||||
|
langcons (CLAIM_SKR, "SKR", TERM_Claim); // claim specifying session key : doubles as secrecy claim
|
||||||
|
|
||||||
/* Define default PKI using PK/SK/K */
|
/* Define default PKI using PK/SK/K */
|
||||||
langcons (TERM_PK, "pk", TERM_Function);
|
langcons (TERM_PK, "pk", TERM_Function);
|
||||||
langcons (TERM_SK, "sk", TERM_Function);
|
langcons (TERM_SK, "sk", TERM_Function);
|
||||||
|
@ -42,6 +42,8 @@ extern Term CLAIM_Nisynch;
|
|||||||
extern Term CLAIM_Niagree;
|
extern Term CLAIM_Niagree;
|
||||||
extern Term CLAIM_Empty;
|
extern Term CLAIM_Empty;
|
||||||
extern Term CLAIM_Reachable;
|
extern Term CLAIM_Reachable;
|
||||||
|
extern Term CLAIM_SID;
|
||||||
|
extern Term CLAIM_SKR;
|
||||||
|
|
||||||
extern Term AGENT_Alice;
|
extern Term AGENT_Alice;
|
||||||
extern Term AGENT_Bob;
|
extern Term AGENT_Bob;
|
||||||
|
Loading…
Reference in New Issue
Block a user