CogniCrypt
CogniCrypt copied to clipboard
getTransitions() doesn't return all possible correct transitions
The method getTransitions in StateMachineGraphAnalyser is currently unable to handle multiple initial transitions like in SSLParameters rule. Additionally, it is doesn't return expected transitions when |
operator is used in ORDER
section.
In order to avoid cycles in the graph, the code here skips already visited transition in the graph. Since Stores
is already visited in Gets->Loads->GetEntry->GetKey->SetEntry->Stores
, the transitions Gets->Loads->SetEntry->Stores
and Gets->Loads->GetKey->SetEntry->Stores
containing Stores
are skipped
Happens for MessageDigest rule
Expected:
Gets, DWOU
Gets, Updates, Digests
Gets, DWOU, Updates, Digests
Returned:
Gets, DWOU
Gets, DWOU, Updates, Digests
Happens for KeyStore rule
Expected:
Gets, Loads, GetEntry, GetKey, SetEntry, Stores
Gets, Loads, GetKey, SetEntry, Stores
Gets, Loads, GetEntry, GetKey
Gets, Loads, SetEntry, Stores
Gets, Loads, GetKey
Gets, Loads
Returned:
Gets, Loads, GetEntry, GetKey, SetEntry, Stores
Gets, Loads, GetEntry, GetKey
Gets, Loads, GetKey
Gets, Loads
Happens for SecureRandom rule
Expected:
Ins, Seeds, Ends, Seeds
Ins, Ends, Seeds
Ins, Seeds, Seeds
Ins, Seeds, Ends
Ins, Seeds
Ins, Ends
Ins
Returned:
Ins, Seeds, Ends, Seeds
Ins, Seeds, Ends
Ins, Seeds
Ins, Ends
Ins