- Major improvements (o.a. in progress bars etc)
This commit is contained in:
		
							parent
							
								
									a4f9b3c4de
								
							
						
					
					
						commit
						2b53516542
					
				@ -2,7 +2,7 @@ const pk: Function;
 | 
			
		||||
secret sk: Function;
 | 
			
		||||
inversekeys (pk,sk);
 | 
			
		||||
 | 
			
		||||
protocol carkeyni(I,R)
 | 
			
		||||
protocol carkeyni2(I,R)
 | 
			
		||||
{
 | 
			
		||||
	role I
 | 
			
		||||
	{
 | 
			
		||||
@ -28,7 +28,7 @@ untrusted Eve;
 | 
			
		||||
const nc: Nonce;
 | 
			
		||||
compromised sk(Eve);
 | 
			
		||||
 | 
			
		||||
run carkeyni.I(Agent,Agent);
 | 
			
		||||
run carkeyni.R(Agent,Agent);
 | 
			
		||||
run carkeyni.I(Agent,Agent);
 | 
			
		||||
run carkeyni.R(Agent,Agent);
 | 
			
		||||
run carkeyni2.I(Agent,Agent);
 | 
			
		||||
run carkeyni2.R(Agent,Agent);
 | 
			
		||||
run carkeyni2.I(Agent,Agent);
 | 
			
		||||
run carkeyni2.R(Agent,Agent);
 | 
			
		||||
 | 
			
		||||
@ -19,7 +19,7 @@ TupleProgram = "./tuples.py"
 | 
			
		||||
 | 
			
		||||
ScytherProgram = "../src/scyther"
 | 
			
		||||
ScytherDefaults	= "--summary"
 | 
			
		||||
ScytherMethods	= "-m1 -a"
 | 
			
		||||
ScytherMethods	= "-m0 -a"
 | 
			
		||||
ScytherBounds	= "-r4 -l40"
 | 
			
		||||
 | 
			
		||||
ReportInterval = 10
 | 
			
		||||
@ -29,6 +29,13 @@ CommandPrefix = ScytherProgram + " " + ScytherArgs
 | 
			
		||||
 | 
			
		||||
ProtocolClaims = {}
 | 
			
		||||
 | 
			
		||||
SkipList = [
 | 
			
		||||
	'gong-nonce.spdl',
 | 
			
		||||
	'gong-nonce-b.spdl',
 | 
			
		||||
	'splice-as-hc.spdl',
 | 
			
		||||
	'kaochow-palm.spdl'
 | 
			
		||||
	]
 | 
			
		||||
 | 
			
		||||
# ***********************
 | 
			
		||||
# 	LIBS
 | 
			
		||||
# ***********************
 | 
			
		||||
@ -47,7 +54,7 @@ def ScytherEval (plist):
 | 
			
		||||
	results = {}
 | 
			
		||||
	for line in lines:
 | 
			
		||||
		data = line.split()
 | 
			
		||||
		if data[0] == 'claim':
 | 
			
		||||
		if len(data) > 6 and data[0] == 'claim':
 | 
			
		||||
			claim = " ".join(data[1:4])
 | 
			
		||||
			tag = data[6]
 | 
			
		||||
			value = -1
 | 
			
		||||
@ -70,6 +77,43 @@ def ScytherEval1 (protocol):
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
# Show progress of i (0..n)
 | 
			
		||||
# 
 | 
			
		||||
LastProgress = {}
 | 
			
		||||
ProgressBarWidth = 50
 | 
			
		||||
 | 
			
		||||
def ShowProgress (i,n,txt):
 | 
			
		||||
	factor = int((ProgressBarWidth * i) / n)
 | 
			
		||||
	showme = 0
 | 
			
		||||
	if LastProgress.has_key(n):
 | 
			
		||||
		if LastProgress[n]<>(factor,txt):
 | 
			
		||||
			showme = 1
 | 
			
		||||
	else:
 | 
			
		||||
		showme = 1
 | 
			
		||||
	if showme == 1:
 | 
			
		||||
		bar = "\r["
 | 
			
		||||
		i = 0
 | 
			
		||||
		while i < ProgressBarWidth:
 | 
			
		||||
			if i <= factor:
 | 
			
		||||
				bar = bar + "*"
 | 
			
		||||
			else:
 | 
			
		||||
				bar = bar + "."
 | 
			
		||||
			i = i+1
 | 
			
		||||
		bar = bar + "] " + txt
 | 
			
		||||
		sys.stdout.write(bar)
 | 
			
		||||
		sys.stdout.flush()
 | 
			
		||||
	LastProgress[n] = (factor, txt)
 | 
			
		||||
 | 
			
		||||
def ClearProgress (n,txt):
 | 
			
		||||
	bar = " " * (1 + ProgressBarWidth + 2 + len(txt))
 | 
			
		||||
	sys.stdout.write("\r" + bar + "\r")
 | 
			
		||||
	sys.stdout.flush()
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
# ***********************
 | 
			
		||||
# 	MAIN CODE
 | 
			
		||||
@ -97,8 +141,8 @@ while loop:
 | 
			
		||||
	if line != '':
 | 
			
		||||
		# not the end of the input
 | 
			
		||||
		cleanline = string.strip(line)
 | 
			
		||||
		if cleanline != '':
 | 
			
		||||
			# not a blank line
 | 
			
		||||
		if cleanline != '' and cleanline not in SkipList:
 | 
			
		||||
			# not a blank line, not forbidden
 | 
			
		||||
			Protocol.append(cleanline)
 | 
			
		||||
			ProtocolCount = ProtocolCount + 1
 | 
			
		||||
			outp.write(line)
 | 
			
		||||
@ -106,7 +150,6 @@ while loop:
 | 
			
		||||
		# end of the input
 | 
			
		||||
		loop = 0
 | 
			
		||||
outp.close()
 | 
			
		||||
print "Evaluating tuples of", TupleWidth, "for", ProtocolCount, "protocols."
 | 
			
		||||
 | 
			
		||||
# Caching of single-protocol results for speed gain.
 | 
			
		||||
#----------------------------------------------------------------------
 | 
			
		||||
@ -114,11 +157,15 @@ print "Evaluating tuples of", TupleWidth, "for", ProtocolCount, "protocols."
 | 
			
		||||
# The script first computes the singular results for all the protocols
 | 
			
		||||
# and stores this in an array, or something like that.
 | 
			
		||||
 | 
			
		||||
print "Evaluating tuples of", TupleWidth, "for", ProtocolCount, "protocols, using the command '" + CommandPrefix + "'"
 | 
			
		||||
i = 0
 | 
			
		||||
safetxt = '                                '
 | 
			
		||||
while i < ProtocolCount:
 | 
			
		||||
	ShowProgress (i, ProtocolCount,Protocol[i]+safetxt)
 | 
			
		||||
	ScytherEval1 ( Protocol[i] )
 | 
			
		||||
	i = i + 1
 | 
			
		||||
print "Evaluated single results."
 | 
			
		||||
ClearProgress(ProtocolCount, safetxt)
 | 
			
		||||
print "Evaluated single results, proceeding to test tuples."
 | 
			
		||||
 | 
			
		||||
# Computation of combined list.
 | 
			
		||||
#----------------------------------------------------------------------
 | 
			
		||||
@ -129,12 +176,17 @@ print "Evaluated single results."
 | 
			
		||||
 | 
			
		||||
lstatus=os.system(TupleProgram + ' ' + TupleWidth + ' <' + TempFileList + ' >' + TempFileTuples)
 | 
			
		||||
 | 
			
		||||
inp = open(TempFileTuples, 'r')
 | 
			
		||||
TupleCount = 0
 | 
			
		||||
for x in inp:
 | 
			
		||||
	TupleCount = TupleCount + 1
 | 
			
		||||
inp.close()
 | 
			
		||||
 | 
			
		||||
# Testing of protocol tuples
 | 
			
		||||
#----------------------------------------------------------------------
 | 
			
		||||
#
 | 
			
		||||
# We take the list of tuples and test each combination.
 | 
			
		||||
 | 
			
		||||
print
 | 
			
		||||
inp = open(TempFileTuples, 'r')
 | 
			
		||||
processed = 0
 | 
			
		||||
newattacks = 0
 | 
			
		||||
@ -143,6 +195,10 @@ for tline in inp:
 | 
			
		||||
	# Get the next tuple
 | 
			
		||||
	#
 | 
			
		||||
	protocols = tline.split()
 | 
			
		||||
	ShowProgress (processed, TupleCount, " ".join(protocols) + safetxt)
 | 
			
		||||
	#
 | 
			
		||||
	# Process it
 | 
			
		||||
	#
 | 
			
		||||
	results = ScytherEval ( protocols )
 | 
			
		||||
	#
 | 
			
		||||
	# Now we have the results for this combination.
 | 
			
		||||
@ -154,15 +210,14 @@ for tline in inp:
 | 
			
		||||
			# an attack)
 | 
			
		||||
			if ProtocolClaims[claim] == 1:
 | 
			
		||||
				# Wooh! It was correct before
 | 
			
		||||
				ClearProgress (TupleCount, safetxt)
 | 
			
		||||
				newattacks = newattacks + 1
 | 
			
		||||
				print claim
 | 
			
		||||
				print "We found a new flaw:", claim
 | 
			
		||||
	
 | 
			
		||||
	# Next!
 | 
			
		||||
	processed = processed + 1
 | 
			
		||||
	if (processed % ReportInterval) == 0:
 | 
			
		||||
		print "Checked", processed, "sofar."
 | 
			
		||||
 | 
			
		||||
print
 | 
			
		||||
ClearProgress (TupleCount, safetxt)
 | 
			
		||||
print "Processed", processed,"tuple combinations in total."
 | 
			
		||||
 | 
			
		||||
inp.close()
 | 
			
		||||
 | 
			
		||||
		Loading…
	
		Reference in New Issue
	
	Block a user