in SAW/proof/AES/AES-GCM-check-entrypoint.go [19:47]
func main() {
log.Printf("Started AES-GCM check.")
// When 'AES_GCM_SELECTCHECK' is undefined, quickcheck is executed.
env_var := os.Getenv("AES_GCM_SELECTCHECK")
if len(env_var) == 0 {
utility.RunSawScript("verify-AES-GCM-quickcheck.saw")
return
}
selectcheck_range_start := utility.ParseSelectCheckRange("AES_GCM_SELECTCHECK_START", 1)
selectcheck_range_end := utility.ParseSelectCheckRange("AES_GCM_SELECTCHECK_END", 384)
// When 'AES_GCM_SELECTCHECK' is defined, formal verification is executed with different `evp_cipher_update_len`.
// Generate saw scripts based on the verification template and evp_cipher_update_len range [1, 384].
var wg sync.WaitGroup
process_count := 0
total_memory := utility.SystemMemory()
num_parallel_process := int(math.Floor((float64(total_memory) / float64(memory_used_per_test))))
log.Printf("System has %d bytes of memory, running %d jobs in parallel", total_memory, num_parallel_process)
for i := selectcheck_range_start; i <= selectcheck_range_end; i++ {
wg.Add(1)
saw_template := "verify-AES-GCM-selectcheck-template.txt"
placeholder_name := "TARGET_LEN_PLACEHOLDER"
go utility.CreateAndRunSawScript(saw_template, placeholder_name, i, &wg)
utility.Wait(&process_count, num_parallel_process, &wg)
}
wg.Wait()
log.Printf("Completed AES-GCM check.")
}