@@ -15,17 +15,71 @@ # Constraints source [file join [file dirname [info script]] common.tcl] # Helper functions -proc lcompare {list1 list2} {set m "";set u "";foreach i $list1 {if {$i ni $list2} {lappend m $i}};foreach i $list2 {if {$i ni $list1} {lappend u $i}};return [list "missing" $m "unexpected" $u]} +proc lcompare {list1 list2} { + set m "" + set u "" + foreach i $list1 { + if {$i ni $list2} { + lappend m $i + } + } + foreach i $list2 { + if {$i ni $list1} { + lappend u $i + } + } + return [list "missing" $m "unexpected" $u] +} + proc exec_get {delim args} {return [split [exec openssl {*}$args] $delim]} -proc exec_get_ciphers {} {set list [list];set data [exec openssl list -cipher-algorithms];foreach line [split $data "\n"] {foreach {cipher null alias} [split [string trim $line]] {lappend list [string tolower $cipher]}};return [lsort -unique $list]} -proc exec_get_digests {} {set list [list];set data [exec openssl dgst -list];foreach line [split $data "\n"] {foreach digest $line {if {[string match "-*" $digest]} {lappend list [string trimleft $digest "-"]}}};return [lsort $list]} -proc exec_get_pkeys {} {set list [list];set data [exec openssl list -public-key-methods];foreach line [split $data "\n"] {if {![string match "*Type:*" $line]} {lappend list [string trim $line]}};return $list} +proc exec_get_ciphers {} { + set list [list] + set data [exec openssl list -cipher-algorithms] + foreach line [split $data "\n"] { + set line [string trim $line] + foreach {cipher ptr alias} [split [string trim $line]] { + lappend list [string tolower $cipher] + } + } + return [lsort -unique $list] +} + +proc exec_get_digests {} { + set list [list] + set data [exec openssl dgst -list] + foreach line [split $data "\n"] { + foreach digest $line { + if {[string match "-*" $digest]} { + lappend list [string trimleft $digest "-"]} + } + } + return [lsort $list] +} + +proc exec_get_pkeys {} { + set list [list] + set data [exec openssl list -public-key-methods] + foreach line [split $data "\n"] { + set line [string trim $line] + if {[string match "Type:*" $line]} continue + lappend list [string trim $line] + } + return $list +} + proc exec_get_macs {} {return [list cmac hmac]} -proc list_tolower {list} {set result [list];foreach element $list {lappend result [string tolower $element]};return $result} +proc list_tolower {list} { + set result [list] + foreach element $list { + lappend result [string tolower $element] + } + return $result +} + # Test list ciphers test Ciphers_List-1.1 {All} -body {