# # encrypt.test -- # nca-073-9 # # Copyright (c) 1996-2000 by Netcetera AG. # Copyright (c) 2001 by Apache Software Foundation. # All rights reserved. # # See the file "license.terms" for information on usage and # redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES. # # @(#) $Id$ # #------------------------------------------------------------------------------ # tcltest package #------------------------------------------------------------------------------ if {[lsearch [namespace children] ::tcltest] == -1} { package require tcltest namespace import ::tcltest::* } # ----------------------------------------------------------------------------- # cfg # ----------------------------------------------------------------------------- web::config uploadfilesize 0 web::config encryptchain web::encryptd web::config decryptchain web::decryptd # ----------------------------------------------------------------------------- # success, standard cryption type (D) # ----------------------------------------------------------------------------- test crypt-1.1 {crypt and decrypt correct} { web::decrypt [web::encrypt "Hallo éàè!"] } {Hallo éàè!} #------------------------------------------------------------------------------ # errors #------------------------------------------------------------------------------ test encrypt-1.1 {missing string} { catch {web::encrypt} msg set msg } {wrong # args: should be "web::encrypt string"} test encrypt-1.2 {too many args} { catch {web::encrypt "a" "b" "c"} msg set msg } {wrong # args: should be "web::encrypt string"} #============================================================================== # decrypt #============================================================================== #------------------------------------------------------------------------------ # errors #------------------------------------------------------------------------------ test decrypt-1.1 {websh3_decrypt: missing string} { catch {web::decrypt} msg set msg } {wrong # args: should be "web::decrypt string"} test decrypt-1.2 {websh3_decrypt: too many args} { catch {web::decrypt "a" "b" "c"} msg set msg } {wrong # args: should be "web::decrypt string"} test decrypt-1.3 {decrypt: empty string} { if { [info exists res] } {unset res} set tmp [catch {set res [web::decrypt ""]} msg] lappend res $tmp $msg set res } {0 {}} test decrypt-1.4 {normal operation} { set res [web::encrypt "Hello éàè!"] lappend res [web::decrypt $res] } {XDIVAhkgYnDaThxIKkSwhFLko9Z {Hello éàè!}} test decrypt-1.5 {cryptlist symmetry} { set res [list [list a b c] "Hallo éàè!"] string equal $res [web::decrypt [web::encrypt $res]] } {1} test decrypt-1.6 {string with spaces} { web::config decryptchain web::decryptd set res [catch {set str [web::decrypt [web::uridecode "a+b"]]} msg] web::config decryptchain web::decryptd lappend res $str } {0 {a b}} # ----------------------------------------------------------------------------- # error signaling # ----------------------------------------------------------------------------- test decrypt-2.1 {error signals 1} { web::config decryptchain web::decryptd set res [catch {web::decrypt "a"} msg] lappend res $msg } {0 a} test decrypt-2.2 {error signals 2} { web::config decryptchain web::decryptd catch {web::decrypt "a"} msg } {0} test decrypt-2.3 {error signals 3} { web::config decryptchain web::decryptd catch {web::decrypt "a"} msg } {0} test decrypt-2.4 {error signals 4} { set res [catch {web::decrypt "XDfoo"} msg] lappend res $msg } {1 {decrypt method "web::decryptd": checksum mismatch}} # ## fixme: think about this one # web::config decryptchain [list web::decryptd] # set res [web::decrypt "X0abc"] # lappend res [web::decrypt "Xaabc"] # lappend res [web::decrypt "XZabc"] # lappend res [web::decrypt "YCa"] # lappend res [web::decrypt "föö"] # lappend res [web::decrypt "bär"] # set tmp "\u60\u70\u300\u400\u2000" # lappend res [string compare $tmp [web::decrypt [web::encrypt $tmp]]] # web::config decryptchain web::decryptd # set res # } {X0abc Xaabc XZabc YCa föö bär 0} # cleanup ::tcltest::cleanupTests