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