home *** CD-ROM | disk | FTP | other *** search
/ Chip 2001 July / Chip_2001-07_cd1.bin / tema / linux6 / pgpgui.tcl < prev    next >
Text File  |  2001-06-04  |  18KB  |  558 lines

  1. #!/usr/bin/wish -f
  2.  
  3. # Front-end for pgp
  4. # Created using a program of  Michal Burda, 1999,as template, by Jiri KOuba 2000
  5. # as graphical interface for pgpk
  6.  
  7. #************************************************************************
  8. # procedures:
  9. #************************************************************************
  10. proc newkey {  } {
  11. set w .form1
  12.  
  13. catch {destroy $w}
  14. toplevel $w
  15. wm title $w "Nov² klφΦ"
  16. wm iconname $w ""
  17.  
  18. label $w.msg -wraplength 4i -justify left -text "PGP"
  19. pack $w.msg -side top
  20.  
  21. wm title $w "Nov² klφΦ - vstupnφ ·daje"
  22. wm iconname $w "Nov² klφΦ"
  23.  
  24. label $w.msg1 -wraplength 4i -justify left -text "Vypl≥te nßsledujφcφ ·daje"
  25. pack $w.msg1 -side top
  26.  
  27. frame $w.buttons1
  28. pack $w.buttons1 -side bottom -fill x -pady 2m
  29. button $w.buttons1.dismiss -text Zru╣it -command "destroy $w"
  30. button $w.buttons1.run -text Dßle -command "runpgp"
  31. pack $w.buttons1.run $w.buttons1.dismiss  -side left -expand 1
  32.  
  33. frame $w.radioframeleft -borderwidth .5c
  34. frame $w.radioframeright -borderwidth .5c
  35. pack $w.radioframeleft $w.radioframeright  -side top -expand yes -fill y
  36.  
  37. foreach i {DSS RSA} {
  38.     radiobutton $w.radioframeleft.b$i -text "Metoda $i" -variable mf1 \
  39.         -relief flat -value $i
  40.     pack $w.radioframeleft.b$i  -side top -pady 2 -anchor w
  41. }
  42.  
  43. foreach velikost {768 1024 2048 3072} {
  44.     set lower [string tolower $velikost]
  45.     radiobutton $w.radioframeright.$lower -text $velikost -variable mf2 \
  46.         -relief flat -value $lower
  47.     pack $w.radioframeright.$lower -side top -pady 2 -anchor w
  48. }
  49.  
  50.  
  51. foreach i { f3 f4  } {
  52.     frame $w.$i -bd 2
  53.     entry $w.$i.entry -relief sunken -width 40 -textvariable m$i
  54.     label $w.$i.label
  55.     pack $w.$i.entry -side right
  56.     pack $w.$i.label -side left
  57. }
  58.  frame $w.f5 -bd 2
  59. entry $w.f5.entry -relief sunken -width 40 -textvariable mf5 -show *
  60.  label $w.f5.label
  61.     pack $w.f5.entry -side right
  62.     pack $w.f5.label -side left
  63. $w.f3.label config -text "Identifikßtor (Jan Novak <jan.novak@volny.cz>:"
  64. $w.f4.label config -text "Validita klφΦe (dny):"
  65. $w.f5.label config -text "Heslo:"
  66.  
  67. pack $w.msg  $w.f3 $w.f4 $w.f5 -side top -fill x
  68. bind $w <Return> "destroy $w"
  69.  
  70.  
  71.         }
  72. #------------------------------------------------------------------------
  73. proc runpgp {  } {
  74. global mf1 mf2 mf3 mf4 mf5 v
  75. if { $mf1 == "RSA" & $mf2 == "3072" } {
  76.  
  77. toplevel $v
  78. wm title $v "Upozorn∞nφ"
  79.     frame $v.top -relief raised -border 1
  80.     pack $v.top -side top -fill both
  81.     frame $v.bot -relief raised -border 1
  82.     pack $v.bot -side bottom -fill both
  83.     message $v.top.msg -width 6i -anchor center \
  84.     -text "Metoda RSA nepodporuje\
  85.     \n
  86.     \ndΘlku 3072. "
  87.     
  88.     pack $v.top.msg -side top -expand 1 -fill both -padx 5m -pady 5m
  89.     button $v.okbutton -text "OK" -command {destroy $v}
  90.     pack $v.okbutton -side bottom
  91.     grab $v
  92.     focus $v
  93. } else {
  94. exec xterm -fn 10x20 -e  pgpk -g  $mf1 $mf2 $mf3 $mf4 $mf5
  95. }
  96.         }
  97. #------------------------------------------------------------------------
  98. proc loadkeylist { } {
  99. global keylist  thekey b
  100.  
  101. set keylist [exec  pgpk -l]  
  102.  
  103. catch {destroy $b}
  104. toplevel $b
  105. wm title $b "KlφΦe"
  106. wm iconname $b "KlφΦe - seznam"
  107.  
  108. label $b.msg -wraplength 4i -justify left -text "Cti nßsledujφcφ ·daje"
  109. pack $b.msg -side top
  110.  
  111. frame $b.buttons
  112. pack $b.buttons -side bottom -fill x -pady 2m
  113. button $b.buttons.dismiss -text Dßle -command "destroy $b"
  114.  
  115.  
  116. pack  $b.buttons.dismiss  -side left -expand 1
  117.  
  118. scrollbar $b.yscrollbar -command "$b.listbox yview" -relief raised -orient vertical
  119. scrollbar $b.xscrollbar -command "$b.listbox xview" -relief raised -orient horizontal
  120. text $b.text -relief sunken -bd 2 -yscrollcommand "$b.scroll set" -setgrid 1 \
  121.     -height 30
  122. scrollbar $b.scroll -command "$b.text yview"
  123. pack $b.scroll -side right -fill y
  124. pack $b.xscrollbar -side bottom -fill x
  125. pack $b.yscrollbar -side right -fill y
  126. pack $b.text -expand yes -fill both
  127.  
  128. $b.text insert 0.0 $keylist
  129.  
  130.         }
  131. #------------------------------------------------------------------------
  132. proc loadkeylistbrief {  } {
  133. global keylist  thekey
  134. set keylist [exec  pgpk -l | grep uid | cut -c4- ]  
  135.  
  136. set w .form
  137. catch {destroy $w}
  138. toplevel $w
  139. wm title $w "KlφΦe struΦn∞"
  140. wm iconname $w "KlφΦe - seznam"
  141. label $w.msg -wraplength 4i -justify left -text "╚ti nßsledujφcφ ·daje"
  142. pack $w.msg -side top
  143.  
  144. frame $w.buttons
  145. pack $w.buttons -side bottom -fill x -pady 2m
  146. button $w.buttons.dismiss -text Dßle -command "destroy $w"
  147.  
  148. pack  $w.buttons.dismiss  -side left -expand 1
  149.  
  150. scrollbar $w.yscrollbar -command "$w.listbox yview" -relief raised -orient vertical
  151. scrollbar $w.xscrollbar -command "$w.listbox xview" -relief raised -orient horizontal
  152. text $w.text -relief sunken -bd 2 -yscrollcommand "$w.scroll set" -setgrid 1 \
  153.     -height 30
  154. scrollbar $w.scroll -command "$w.text yview"
  155. pack $w.scroll -side right -fill y
  156. pack $w.xscrollbar -side bottom -fill x
  157. pack $w.yscrollbar -side right -fill y
  158. pack $w.text -expand yes -fill both
  159. $w.text insert 0.0 $keylist
  160.         }
  161. #------------------------------------------------------------------------
  162. proc loadkeylistbox {  } {
  163. global keylist  thekey 
  164.  
  165.  
  166. set w .form
  167. set uncurl ""
  168.  
  169. catch {destroy $w}
  170. toplevel $w
  171. wm title $w "KlφΦe"
  172. wm iconname $w "KlφΦe - seznam"
  173.  
  174. label $w.msg -wraplength 4i -justify left -text "Cti nßsledujφcφ ·daje"
  175. pack $w.msg -side top
  176.  
  177.  
  178.  
  179. }
  180.  
  181. #------------------------------------------------------------------------
  182. proc key { r } {
  183. global thekey list uncurl klist b v
  184.  
  185.  
  186. if { $r == "a" } {
  187. exec xterm -fn 10x20 -e  pgpk -$r  $uncurl
  188. } else {
  189. # set thekey [ $b.list get [ $b.list curselection ]]
  190.  
  191.  
  192. if { [ $b.list curselection ] == "" } {
  193.  
  194. toplevel $v
  195. wm title $v "Upozorn∞nφ"
  196.     frame $v.top -relief raised -border 1
  197.     pack $v.top -side top -fill both
  198.     frame $v.bot -relief raised -border 1
  199.     pack $v.bot -side bottom -fill both
  200.     message $v.top.msg -width 6i -anchor center \
  201.     -text "Musφte mφt vybran² klφΦ \
  202.     \n
  203.     \ns kter²m chcete pracovat. "
  204.     
  205.     pack $v.top.msg -side top -expand 1 -fill both -padx 5m -pady 5m
  206.     button $v.okbutton -text "OK" -command {destroy $v}
  207.     pack $v.okbutton -side bottom
  208.     grab $v
  209.     focus $v
  210.  
  211. } else { 
  212. set thekey [ $b.list get [ $b.list curselection ]]
  213. if { $r == "rv" }    {
  214. #exec echo -$r $thekey $uncurl -o $uncurl.pgp >/tmp/rv.txt
  215. exec xterm -fn 10x20 -e pgpe -r $thekey $uncurl -o $uncurl.pgp
  216. } else {
  217. if { $r == "rvu" }    {
  218. #exec echo pgpv  $uncurl >/tmp/rvu.txt
  219. exec xterm -fn 10x20 -e pgpv  $uncurl 
  220. } else {
  221.  
  222. if { $r == "x"  & $uncurl != "" } {
  223. exec xterm -fn 10x20 -e  pgpk -$r $thekey -o $uncurl
  224. } else {
  225. if { $r == "l" | $r == "c" } {
  226. frame $b.lc
  227. pack $b.lc -side bottom -fill x -pady 2m
  228. button $b.lc.dismiss -text Zav°φt -command "destroy $b.lc"
  229. pack  $b.lc.dismiss  -side left -expand 1
  230. text $b.lc.text -relief sunken -bd 2 -yscrollcommand "$b.lc.scroll set" -setgrid 1 \
  231.     -height 10
  232. scrollbar $b.lc.scroll -command "$b.lc.text yview"
  233. pack $b.lc.scroll -side right -fill y
  234. pack $b.lc.text -expand yes -fill both
  235.  
  236. $b.lc.text insert 0.0 [ exec pgpk -$r $thekey ]
  237. #
  238.  
  239. } else {
  240. if {  $r == "d" | $r == "-revoke"} {
  241. exec echo pgpk -$r $thekey >/tmp/reboke.txt
  242. exec xterm -fn 10x20 -e pgpk -$r $thekey
  243. } else {
  244. if { $r == "s" } {
  245. frame $b.su
  246. set thekey_ \"$thekey\"
  247. #jak to obalit do uvozovek
  248. pack $b.su -side bottom -fill x -pady 2m
  249. button $b.su.dismiss -text Zav°φt -command "destroy $b.su"
  250. button $b.su.sign -text "Podepsat k²m" -command "keylist1 $r $thekey_"
  251.  
  252. pack $b.su.dismiss $b.su.sign -side left -expand 1
  253. scrollbar $b.su.yscrollbar -command "$b.su.list yview" -relief raised -orient vertical
  254. scrollbar $b.su.xscrollbar -command "$b.su.list xview" -relief raised -orient horizontal
  255. pack $b.su.xscrollbar -side bottom -fill x
  256. pack $b.su.yscrollbar -side right -fill y
  257.  
  258. listbox $b.su.list -font fixed -relief raised -selectmode browse \
  259.     -yscroll "$b.su.yscrollbar set" -xscroll "$b.su.xscrollbar set" -width 80
  260. pack $b.su.list -fill both -expand 1
  261. evalu 
  262. eval $b.su.list insert 0 $klist
  263.  
  264.  
  265. #
  266. #
  267. } else {
  268. exec xterm -fn 10x20 -e  pgpk -$r $thekey
  269. }}}}}}}}
  270.  
  271. }
  272. #------------------------------------------------------------------------
  273. proc fileDialog {  ent operation} {
  274. global fileName
  275. #tim se vyresil prenos teto promenne vne
  276.     #   Type names        Extension(s)    Mac File Type(s)
  277.     #
  278.     #---------------------------------------------------------
  279.     set types {
  280.     {"Text files"        {.txt .doc}    }
  281.     {"Text files"        {}        TEXT}
  282.     {"All files"        *}
  283.     }
  284.     if {$operation == "open"} {
  285.     set fileName [tk_getOpenFile -filetypes $types ]
  286. #v╣imni si, ╛e tk funkce se volß v []
  287.     } else {
  288.     set fileName [tk_getSaveFile -filetypes $types  \
  289.         -initialfile Untitled -defaultextension .txt]
  290.     }
  291.     if [string compare $fileName ""] {
  292. #jde to v╛dycky touto cestou  prßzdnΘho °et∞zce
  293.     $ent delete 0 end  
  294. #vymaz entry
  295.     $ent insert 0 $fileName 
  296. #vloz do nej promennou jmena souboru
  297.     $ent xview end 
  298.  
  299.  
  300.     } 
  301. }
  302. #------------------------------------------------------------------------
  303. proc about {} {
  304.     global appname
  305.     toplevel .awin -class Dialog
  306.     wm title .awin "About $appname"
  307.     frame .awin.top -relief raised -border 1
  308.     pack .awin.top -side top -fill both
  309.     frame .awin.bot -relief raised -border 1
  310.     pack .awin.bot -side bottom -fill both
  311.     message .awin.top.msg -width 5i -anchor center \
  312.     -text "$appname\
  313.     \n
  314.     \n
  315. PGPgui is an window interface for pgpk key management.\
  316. This file is freeware and it was last modified in August, 30th 2000.\
  317. No warranty granted.\    
  318.     \nContact me: jiri.kouba@volny.cz\
  319.     \nMy homepage: www.volny.cz/jiri.kouba\
  320.     \n
  321.     \nCopyright (C) 2000 Jiri Kouba. All Rights Reserved."
  322.     pack .awin.top.msg -side top -expand 1 -fill both -padx 5m -pady 5m
  323.     button .awin.okbutton -text "OK" -command {destroy .awin}
  324.     pack .awin.okbutton -side bottom
  325.     grab .awin
  326.     focus .awin
  327. }
  328. #------------------------------------------------------------------------
  329. proc howuninstall {} {
  330.     global appname
  331.     toplevel .uwin -class Dialog
  332.     wm title .uwin "Jak odinstalovat $appname"
  333.     frame .uwin.top -relief raised -border 1
  334.     pack .uwin.top -side top -fill both
  335.     frame .uwin.bot -relief raised -border 1
  336.     pack .uwin.bot -side bottom -fill both
  337.     message .uwin.top.msg -width 6i -anchor center \
  338.     -text "Jak odinstalovat $appname?\
  339.     \n
  340.     \nJednodu╣e sma╛te tento pgpgui file. "
  341.     
  342.     pack .uwin.top.msg -side top -expand 1 -fill both -padx 5m -pady 5m
  343.     button .uwin.okbutton -text "OK" -command {destroy .uwin}
  344.     pack .uwin.okbutton -side bottom
  345.     grab .uwin
  346.     focus .uwin
  347. }
  348. #------------------------------------------------------------------------
  349. proc howto {} {
  350.     global appname
  351.     toplevel .uwin -class Dialog
  352.     wm title .uwin "Howto "
  353.     frame .uwin.top -relief raised -border 1
  354.     pack .uwin.top -side top -fill both
  355.     frame .uwin.bot -relief raised -border 1
  356.     pack .uwin.bot -side bottom -fill both
  357.     message .uwin.top.msg -width 6i -anchor center \
  358.     -text "Jak za╣ifrovat soubor ?\
  359.     \n
  360.     \nVyberte klφΦ p°φjemce (m∙╛ete to b²t i Vy sßm)
  361.     \n TlaΦφtkem Soubor vyber vyber soubor, kter² chce╣ ╣ifrovat
  362.     \n a stiskni Za╣ifruj soubor.
  363.     \nPodobn∞ p°i exportu klφΦe do souboru.
  364.     \n
  365.     \nJak zφskat n∞Φφ klφΦ ?
  366.     \nKlφΦ_Otev°φt Φesk² server klφΦ∙
  367.     \nOstatnφ v∞ci jsou samovysv∞tlujφcφ"
  368.     
  369.     pack .uwin.top.msg -side top -expand 1 -fill both -padx 5m -pady 5m
  370.     button .uwin.okbutton -text "OK" -command {destroy .uwin}
  371.     pack .uwin.okbutton -side bottom
  372.     grab .uwin
  373.     focus .uwin
  374. }
  375. #------------------------------------------------------------------------
  376.  
  377. proc evalu {} {
  378. global klist
  379. set klist [ exec pgpk -l | grep uid | sed -n 1,\$s/^uid//p | cut -c2- | \
  380. sed -n  1,\$s/^./\"/p | sed -n 1,\$s/\<.*$/\"/p | tr '\012' '\040'  ]
  381. }
  382. #------------------------------------------------------------------------
  383. proc render {  } {
  384. global klist b
  385. destroy $b.list $b.yscrollbar $b.xscrollbar 
  386. scrollbar $b.yscrollbar -command "$b.list yview" -relief raised -orient vertical
  387. scrollbar $b.xscrollbar -command "$b.list xview" -relief raised -orient horizontal
  388. pack $b.xscrollbar -side bottom -fill x
  389. pack $b.yscrollbar -side right -fill y
  390.  
  391. listbox $b.list -font fixed -relief raised -selectmode browse \
  392.     -yscroll "$b.yscrollbar set" -xscroll "$b.xscrollbar set" -width 80
  393. pack $b.list -fill both -expand 1
  394. evalu 
  395. eval $b.list insert 0 $klist
  396. }
  397.  
  398. #------------------------------------------------------------------------
  399.  
  400. proc keylist1 { r thekey_  } {
  401. global b
  402. set thekey1 [ $b.su.list get [ $b.su.list curselection ]]
  403. exec xterm -fn 10x20 -e  pgpk -$r $thekey_ -u $thekey1
  404. #exec  echo  -$r $thekey_ $thekey1 >/tmp/1.txt
  405. }
  406. #------------------------------------------------------------------------
  407. proc connect2web {  } {
  408. exec xterm -fn 10x20 -e kppp &
  409. }
  410. #------------------------------------------------------------------------
  411. proc chookey {  } {
  412. global b u 
  413. toplevel .butwin
  414. frame $b.buttons
  415. pack $b.buttons -side bottom -fill x -pady 2m
  416.  
  417. button $b.buttons.ref -text "Refresh" -command "render"
  418. button $b.buttons.sho -text "ProhlΘdni klφΦ" -command "key  l "
  419.  
  420. button $b.buttons.del -text "Sma╛ klφΦ" -command "key  r"
  421. button $b.buttons.chec -text "Ov∞° podpis klφΦe" -command "key   c"
  422. button $b.buttons.edi -text "Edituj klφΦ" -command "key  e"
  423. button $b.buttons.sig -text "Podepi╣ klφΦ" -command "key  s"
  424. button $b.buttons.blo -text "Blokuj klφΦ" -command "key  d"
  425. button $b.buttons.rev -text "Revokuj (odvolej)klφΦ" -command "key  -revoke"
  426.  
  427. foreach i { ref sho  del chec edi sig blo rev  } {
  428. pack  $b.buttons.$i  -side left -expand 1
  429. }
  430. frame $b.buttons1
  431. pack $b.buttons1 -side bottom  -pady 2m
  432. button $b.buttons1.sen -text "Exportuj klφΦ(i na server)" -command "key  x "
  433. button $b.buttons1.rec -text "Importuj klφΦ ze souboru" -command "key  a "
  434. button $b.buttons1.fil -text "Za╣ifruj soubor" -command "key  rv "
  435. button $b.buttons1.ufil -text "Roz╣ifruj soubor" -command "key  rvu "
  436. foreach i { sen rec  fil ufil } {
  437. pack  $b.buttons1.$i  -side left -expand 1
  438. }
  439.  
  440.  
  441. frame $b.$u
  442.  
  443. entry $b.$u.entry -relief sunken -width 40 -textvariable uncurl
  444. $b.$u.entry insert 0 "hkp://wwwkeys.cz.pgp.net"
  445. label $b.$u.label
  446.     pack $b.$u.entry -side right
  447.     pack $b.$u.label -side left
  448. $b.$u.label config -text "Zadej jmΘno vstupnφho/vystupniho souboru nebo URL:      "
  449. button $b.$u.but -text "Soubor vyber..." -command "fileDialog  $b.$u.entry open"
  450. pack $b.$u -side bottom -fill x 
  451. pack $b.$u.but  -side left -fill x 
  452. render 
  453.  
  454.  
  455. }
  456. #------------------------------------------------------------------------
  457. proc openczkeyserver {} {
  458. exec netscape  -no-about-splash   www.pgp.cz
  459. }
  460.  
  461. #------------------------------------------------------------------------
  462. proc quitme {} {
  463.  
  464.     destroy .
  465. }
  466. #************************************************************************
  467.  
  468. set appname "PGPgui Tcl 1.0"
  469. set metoda ""
  470. set delka ""
  471. set id ""
  472. set validita ""
  473. set passphrase ""
  474. set w .form
  475. set b .butwin
  476. set u url
  477. set uncurl ""
  478. set v .alertwin
  479. set f ""
  480. catch {destroy $w}
  481. toplevel $w
  482. wm title $w "KlφΦe"
  483. wm iconname $w "KlφΦe - seznam"
  484. #positionWindow $w
  485. label $w.msg -wraplength 4i -justify left -text "PGP"
  486. pack $w.msg -side top
  487. global f 
  488. set home [ exec printenv  | grep HOME | cut  -d= -f2 ]  
  489. #exec echo $home >/tmp/home.txt
  490.  
  491. set cfg [ exec find $home/.pgp/ -name pgp.cfg -print ]
  492. #exec echo $cfg >/tmp/cfg.txt
  493. if { $cfg == "" } {
  494. exec touch $home/.pgp/pgp.cfg 
  495. }
  496. ########
  497. wm title . $appname
  498.  
  499. frame .mbar -relief raised -bd 2
  500. menubutton .mbar.file -text "Soubor" -underline 0 \
  501.     -menu .mbar.file.menu
  502. menubutton .mbar.keylist -text "KlφΦ" -underline 0 \
  503.     -menu .mbar.keylist.menu
  504. menubutton .mbar.options -text "Nastavenφ" -underline 0 \
  505.     -menu .mbar.options.menu
  506. menubutton .mbar.help -text "Help" -underline 0 -menu .mbar.help.menu
  507.  
  508. menu .mbar.file.menu
  509.  
  510. .mbar.file.menu add command -label "Quit" -underline 0 \
  511.     -command {quitme}
  512. #    -accelerator "Alt+F4"
  513.  
  514. menu .mbar.keylist.menu
  515. .mbar.keylist.menu add command -label "Nov² klφΦ.." -underline 0 \
  516.     -command {newkey}
  517. .mbar.keylist.menu add command -label "Otev°φt seznam..." -underline 0 \
  518.     -command {loadkeylist}
  519. .mbar.keylist.menu add command -label "Otev°φt seznam struΦn²..." -underline 0 \
  520.     -command {loadkeylistbrief}
  521. .mbar.keylist.menu add command -label "Otev°φt Φesk² server klφΦ∙..." -underline 0 \
  522.     -command {openczkeyserver} 
  523. .mbar.keylist.menu add command -label "P°ipojit k Internetu" -underline 0 \
  524.     -command {connect2web}
  525. menu .mbar.options.menu
  526. .mbar.options.menu add command -label "Volby.." -underline 0 \
  527.     -command {setoption}
  528.  
  529. menu .mbar.help.menu
  530. .mbar.help.menu add command -label "O aplikaci..." -underline 0 \
  531.     -command {about}
  532. .mbar.help.menu add command -label "Jak odinstalovat..." -underline 0 \
  533.     -command {howuninstall}
  534. .mbar.help.menu add command -label "HOWTO..." -underline 0 \
  535.    -command {howto}
  536.  
  537. pack .mbar -side top -fill x
  538. pack .mbar.file .mbar.keylist .mbar.options -side left -in .mbar
  539. pack .mbar.help -side right -in .mbar
  540.  
  541. frame .buttons
  542. pack .buttons -side bottom -fill x -pady 2m
  543. button .buttons.nek -text "Nov² klφΦ" -command "newkey"
  544. button .buttons.chek -text "Vybran² klφΦ" -command "chookey"
  545. pack  .buttons.nek  -side left -expand 1
  546. pack  .buttons.chek  -side left -expand 1
  547.  
  548.  
  549.  
  550. #poznatky: ╣patnou cestu to pφ╣e, kdy╛ prvek nemß sv∙j rßm, nebo u╛ existuje, co╛
  551. #vznikß v∞t╣inou tak, ╛e Φlov∞k zapomene v cest∞ na n∞jakou prom∞nnou a tφm s eprvek polo╛φ
  552. #na ji╛ existujφcφ
  553. #toplevel ud∞lß novΘ ko°enovΘ okno 
  554. #kdy╛ v procedu°e globßlnφ prom∞nnß, tak se do porcedury nep°edßvß parametrem
  555. #Metoda RSA nema 3072 
  556.  
  557.  
  558.