1# -*- tcl -*- 2# Tcl Benchmark File 3# 4# This file contains a number of benchmarks for the 'des' module. 5# This allow developers to monitor/gauge/track package performance. 6# 7# (c) 2005 Andreas Kupries <andreas_kupries@users.sourceforge.net> 8 9# We need at least version 8.2 for the package and thus the 10# benchmarks. 11 12if {![package vsatisfies [package provide Tcl] 8.2]} { 13 return 14} 15 16# ### ### ### ######### ######### ######### ########################### 17## Setting up the environment ... 18 19package forget tclDES 20catch {namespace delete ::des} 21catch {source [file join [file dirname [info script]] tcldes.tcl]} 22 23package forget des 24catch {namespace delete ::DES} 25source [file join [file dirname [info script]] des.tcl] 26 27set i [binary format H* 0000000000000000] 28set p [binary format H* 0123456789ABCDEF0123456789ABCDEF]] 29 30set k [binary format H* FEDCBA9876543210] 31set c [binary format H* ED39D950FA74BCC4ED39D950FA74BCC4] 32 33# ### ### ### ######### ######### ######### ########################### 34## Benchmarks. 35 36bench -desc "DES 1des ECB encryption" -body { 37 DES::des -mode ecb -dir enc -key $k -iv $i $p 38} 39 40bench -desc "DES 1des ECB decryption" -body { 41 DES::des -mode ecb -dir dec -key $k -iv $i $c 42} 43 44bench -desc "DES 1des ECB encryption core" -pre { 45 set key [DES::Init ecb $k $i] 46} -body { 47 DES::Encrypt $key $p 48} -post { 49 DES::Final $key 50} 51 52bench -desc "DES 1des ECB decryption core" -pre { 53 set key [DES::Init ecb $k $i] 54} -body { 55 DES::Decrypt $key $c 56} -post { 57 DES::Final $key 58} 59 60bench -desc "DES 1des ECB keyschedule" -body { 61 DES::Final [DES::Init ecb $k $i] 62} 63 64bench -desc "DES 1des CBC keyschedule" -body { 65 DES::Final [DES::Init cbc $k $i] 66} 67 68if {[llength [package provide tclDES]] != 0} { 69 set k [binary format H* FEDCBA9876543210FEDCBA9876543210FEDCBA9876543210] 70 71 bench -desc "DES 3des ECB encryption" -body { 72 DES::des -mode ecb -dir enc -key $k -iv $i $p 73 } 74 75 bench -desc "DES 3des ECB decryption" -body { 76 DES::des -mode ecb -dir dec -key $k -iv $i $c 77 } 78 79 bench -desc "DES 3des ECB encryption core" -pre { 80 set key [DES::Init ecb $k $i] 81 } -body { 82 DES::Encrypt $key $p 83 } -post { 84 DES::Final $key 85 } 86 87 bench -desc "DES 3des ECB decryption core" -pre { 88 set key [DES::Init ecb $k $i] 89 } -body { 90 DES::Decrypt $key $c 91 } -post { 92 DES::Final $key 93 } 94 95 bench -desc "DES 3des ECB keyschedule" -body { 96 DES::Final [DES::Init ecb $k $i] 97 } 98 99 bench -desc "DES 3des CBC keyschedule" -body { 100 DES::Final [DES::Init cbc $k $i] 101 } 102} 103 104# ### ### ### ######### ######### ######### ########################### 105## Complete 106