@ -45,6 +45,7 @@ var (
configFilename = flag . String ( "config" , "config.json" , "Location of the configuration JSON file" )
configFilename = flag . String ( "config" , "config.json" , "Location of the configuration JSON file" )
jsonInputFile = flag . String ( "json" , "" , "Location of a vector-set input file" )
jsonInputFile = flag . String ( "json" , "" , "Location of a vector-set input file" )
runFlag = flag . String ( "run" , "" , "Name of primitive to run tests for" )
runFlag = flag . String ( "run" , "" , "Name of primitive to run tests for" )
fetchFlag = flag . String ( "fetch" , "" , "Name of primitive to fetch vectors for" )
wrapperPath = flag . String ( "wrapper" , "../../../../build/util/fipstools/acvp/modulewrapper/modulewrapper" , "Path to the wrapper binary" )
wrapperPath = flag . String ( "wrapper" , "../../../../build/util/fipstools/acvp/modulewrapper/modulewrapper" , "Path to the wrapper binary" )
)
)
@ -331,9 +332,19 @@ func main() {
os . Exit ( 0 )
os . Exit ( 0 )
}
}
runAlgos := make ( map [ string ] bool )
var requestedAlgosFlag string
if len ( * runFlag ) > 0 && len ( * fetchFlag ) > 0 {
log . Fatalf ( "cannot specify both -run and -fetch" )
}
if len ( * runFlag ) > 0 {
if len ( * runFlag ) > 0 {
for _ , substr := range strings . Split ( * runFlag , "," ) {
requestedAlgosFlag = * runFlag
} else {
requestedAlgosFlag = * fetchFlag
}
runAlgos := make ( map [ string ] bool )
if len ( requestedAlgosFlag ) > 0 {
for _ , substr := range strings . Split ( requestedAlgosFlag , "," ) {
runAlgos [ substr ] = false
runAlgos [ substr ] = false
}
}
}
}
@ -389,7 +400,7 @@ func main() {
log . Fatalf ( "failed to login: %s" , err )
log . Fatalf ( "failed to login: %s" , err )
}
}
if len ( * run Flag) == 0 {
if len ( requestedAlgos Flag) == 0 {
if interactiveModeSupported {
if interactiveModeSupported {
runInteractive ( server , config )
runInteractive ( server , config )
} else {
} else {
@ -423,6 +434,15 @@ func main() {
log . Printf ( "Have vector sets %v" , result . VectorSetURLs )
log . Printf ( "Have vector sets %v" , result . VectorSetURLs )
if len ( * fetchFlag ) > 0 {
os . Stdout . WriteString ( "[\n" )
json . NewEncoder ( os . Stdout ) . Encode ( map [ string ] interface { } {
"url" : url ,
"vectorSetUrls" : result . VectorSetURLs ,
"time" : time . Now ( ) . Format ( time . RFC3339 ) ,
} )
}
for _ , setURL := range result . VectorSetURLs {
for _ , setURL := range result . VectorSetURLs {
firstTime := true
firstTime := true
for {
for {
@ -450,6 +470,12 @@ func main() {
continue
continue
}
}
if len ( * fetchFlag ) > 0 {
os . Stdout . WriteString ( ",\n" )
os . Stdout . Write ( vectorsBytes )
break
}
replyGroups , err := middle . Process ( vectors . Algo , vectorsBytes )
replyGroups , err := middle . Process ( vectors . Algo , vectorsBytes )
if err != nil {
if err != nil {
log . Printf ( "Failed: %s" , err )
log . Printf ( "Failed: %s" , err )
@ -535,6 +561,11 @@ func main() {
}
}
}
}
if len ( * fetchFlag ) > 0 {
os . Stdout . WriteString ( "]\n" )
os . Exit ( 0 )
}
FetchResults :
FetchResults :
for {
for {
var results acvp . SessionResults
var results acvp . SessionResults