แแ แแ แแแฉแแแแแ, แแฃ แ แแแแ แแ แแก แแ แแแขแแแ แแคแแฃแแ แกแแแฃแจแแ แแแแแแ แกแแฏแแ แ แแแกแแฆแแแแก แกแขแแแแแ แขแแแแ แแแงแ แแแแแแ
แแแแชแแคแชแแ, แ แแแแแแช แฉแแแแงแแแแแแ cryptoarmpkcs แแแแฃแแแแฃแ แ แแ แแแ แแแแก แจแแแฃแจแแแแแแกแแก, แแ แแก แแก, แ แแ แแแแฎแแแ แแแแแแ แฃแแแ แแแแแชแแแแก แแแแแแแแฃแ แ แฃแฎแแ แฎแฃแแแแ แแแแฅแขแ แแแฃแแ แฎแแแแแฌแแ แแก แจแแฅแแแแกแ แแ แแแแแแแฌแแแแแกแแก. แกแฌแแ แแ แแแแขแแ, แฉแแแ แแแแแแแแแ แแ แแแขแแแ แแคแแฃแแ แแแจแแแแแก แแแแแงแแแแแแก, แ แแแแ แช แแแ แกแแแแแฃแ แ แกแแ แแแคแแแแขแแก แแแกแแฆแแแแก แแแขแแ แแแแแก
แแแฃแงแแแแแแแแ แแฆแแแแจแแแ, แ แแ แแแก แจแแแแแ, แ แแช แแ แแแฅแขแ แแแแฎแแ แชแแแแแ C แแ Tcl/Tk แแแแขแคแแ แแแแ, แแแ แขแแ แแแแ แแ แแแแแแฌแแแ แ แแแแ แคแฃแแแแแแแขแฃแ แ แกแแ แแฃแแ. แแก แจแแกแแซแแแแแแ แแแฎแแ แขแแฅแแแแแแแแก แฌแงแแแแแแ
#!/bin/sh
if [ $# -ne 1 ]
then
echo "./InstallAndroidSDK.sh <sdk-tools-linux-xxxxxxxx.zip>"
echo "ะะต ัะบะฐะทะฐะฝ ะฐัั
ะธะฒ ะธะปะธ ัะธัะปะพ ะฟะฐัะฐะผะตััะพะฒ ะฑะพะปััะต 1"
exit 1
fi
if [ ! -f $1 ]
then
echo "./InstallAndroidSDK.sh <sdk-tools-linux-xxxxxxxx.zip>"
echo "ะฐัั
ะธะฒ $1 ะพััััััะฒัะตั"
exit 1
fi
#ะ ะฐัะฟะฐะบะพะฒัะฒะฐะตะผ SDK-TOOLS ะฒ ะฟะฐะฟะบั tools
#unzip sdk-tools-linux-4333796.zip
unzip $1
#ะกะพะทะดะฐะตะผ ะฟะฐะฟะบั android-sdk-linux
mkdir android-sdk-linux
#ะะตัะตะผะตัะฒะตะผ ะฟะฐะฟะบั tools ะฒ android-sdk-linux
mv tools android-sdk-linux
cd android-sdk-linux/tools/bin
./sdkmanager "platform-tools" "platforms;android-29"
แงแแแแแแ แกแแงแฃแ แแแฆแแแ แแก แแ แแก, แ แแ แแแแ แแแจแแก แแแ แแแ แแแแชแแแก แแ แแแขแแ แแ แแขแแขแแ แก, undrowish-xxx แแ vanillawish-xxx, แ แแแแแแแช แจแแแแแแแแแแแแ แกแ แฃแแแแ แแแแแขแฃแ แแ แแแแแ แแแแ แแแจแจแ แจแแขแแแแแ โแแแแแแแแแแแแกโ (แแแแแขแแแแก). แแแแกแฎแแแแแแ undrowish-แกแ แแ vanillawish-แก แจแแ แแก แแ แแก แแก, แ แแ vanillawish-แก แแฅแแก SDL/AGG/freetype แกแแคแฃแซแแแแแ backend:
แแ แแ แ แแแแฃแแแแฃแ แ แแ แแแ แแแแก แแ แกแแแแแ แกแแจแฃแแแแแแก แแแซแแแแ แแแแแแแแแ แแ แแแแแแแชแแ แแแแแ Android-แแกแ แแ แแแกแ แแแฃแแแขแแ แแก แแแแแงแแแแแแก แแแ แแจแ แ แแแแฃแ แแแฌแงแแแแแแแแกแแแ แแแฅแกแแแแแฃแ แ แแแแฎแแแแแแ. แฃแแแ แแแแแก แงแแแแแกแ, แแก แแ แแก, แ แ แแฅแแ แฃแแแ, undroidwish-xxx.
Android-แแกแแแแก แ แแแแฃแ แ แแแ แกแแแแแฃแ แ แแแแแขแ แแแแแฃแแแ AWSDK แแแ แแแแจแ. แแฅแแแแ แแ แแแฅแขแแก แฎแ แฃแแแ แแแแแแแแแก ~/AWSDK/assets/app แกแแฅแแฆแแแแแจแ. แแ แจแแแแฎแแแแแจแ, แแฅแแแแ แแ แแแฅแขแแก แแแแแแ แแแแฃแแก แฃแแแ แแแแ แฅแแแก main.tcl. แแฃ แแงแแแแแ แแแแแขแแแแ แแแแแแแแแแแก แแแแแแแฃแ แ แแแแแแแแแแแแแ, แแแจแแ แแแแแแแแแแแแ แฃแแแ แแแแแแแกแแแก แกแแฅแแฆแแแแแแแจแ ~/AWSDK/libs/x86 แแแฃแแแขแแ แแกแแแแก แแ ~/AWSDK/libs/armeabi แ แแแแฃแ แ แแแฌแงแแแแแแแแกแแแแก.
แแแแก แจแแแแแ แฃแแ แแแแ แแแฃแจแแแ แแ แซแแแแแ:
$wish ~/AWSDK/tools/bones
แแ แแแฐแงแแแแ แแแก แแแแแแแแแแก:
แแฌแงแแแแแ apk แแแแแขแ แแแแแแแกแแแแ ~/AWSDK/build/outputs/apk แกแแฅแแฆแแแแแจแ.
แแฃ แแฅแแแ แแแฅแแ แแแแแแจแแ แแแฃแแ แ แแแแฃแ แ แแแฌแงแแแแแแแ แแ แแแฃแแแขแแ แ, แแแแแขแ แจแแแซแแแแ แแแแแกแขแแแแ แแแก แแแฃแงแแแแแแแแ.
แแ แจแแแแฎแแแแแจแ, แ แแแแฃแ แ แแแฌแงแแแแแแแ แฃแแแ แแงแแก แแแแแ แแแแก แ แแแแแจแ.
แแแแ แแ แแแแแ แแแแฃแแ แฃแแแแ แแแแแ แแแแแแแชแแแก. แ แ แฃแแแ แจแแชแแแแแแงแ แแแกแจแ?
แแฃแแแแ แแแแ, แชแแแแแแแแแ แแแ แแแ แ แแแจแ แแแ แแแแก แแแแแก แฃแแแแจแแ แแแแ. แแ แแแแแฌแแ แแแแแแ แ (แกแขแแ แขแแก แคแแแฏแ แแก) แฎแแแแฎแแแ แแแแแแแ. แจแแแแแแ, แฉแแแฃแแแแ แแแ แแแแแแฃแขแแ แแก แแ แแ แคแแแฏแ แแก แแแชแแแแ:
แแแแ แแแแแ แกแแแ แคแแแฏแแ แ แแแแแฉแแแ:
แแแ แแแแ แคแแแฏแแ แ แแ แแก แกแแแแคแแ แแแชแแ. แแแ แแแแแแ, แแแ แแงแแคแ แ แแแแแแแแ แแแฌแแแแ. แแแ แแแแ แแแฌแแแ, แ แแแแแแช แแแแแแ แแแแก แแแแ แแแฌแแแจแ, แจแแแชแแแก แแแแฃแแแแฃแ แ แแ แแแ แแแแก แกแแฎแแแก แแ แแแก แแแแแก.
แจแแแแแ แแแแแก แแฌแแ แแแแแแแก แแแแ, แกแแแแคแแ แแแชแแ แคแฃแ แชแแแ แแ แกแแแ แฆแแแแแ แแแกแแแก แแแแ แแก.
แแแแ แแ แแฌแแ แแแ แขแแแแก แแแแแแแแแขแแก แแแแแงแแแแแแ. แแแแ แแแ แแแแแงแแแแแฃแแแ แแ แ แขแแแแก แฆแแแแแ: แแ แแ แแแแญแแแ แแแแ แแแ แแแฃแแฎแแแแก แกแแฎแแ (แจแฃแ), แฎแแแ แแแแแ แฉแแแ แแ แ แแแ แแแฃแแฎแแแแก แกแแฎแแ แแแแ แแแแแแแฃแแ แแฃแแฎแแแแแ. แแแแ แแแแแแแฃแแ แแฃแแฎแแแแแ แฆแแแแแแแแก แจแแกแแฅแแแแแแ แแแแแแงแแแแแแแ แแแแแแแแแ
แกแแ แแแขแ create_titul_page.tcl
package require Tk
package require tkpath 0.3.0
global mydir
set mydir [file dirname [info script]]
#ะััะทะธะผ ะบะฐััะธะฝะบะธ
#ะะพะณะพัะธะฟ ะฟัะพะดัะบัะฐ
image create photo logo_product -file [file join $mydir "imageme" "validcertkey_51x24.png"]
#ะะพะณะพัะธะฟ ะฟัะพะธะทะฒะพะดะธัะตะปั
image create photo logo_orel -file [file join $mydir "imageme" "ั_ะพัะตะป_425x200.png"] -format "png -alpha 1.0"
#ะะฝะดัะพะธะดะฐ ั tcl/tk
image create photo logo_and -file [file join $mydir "imageme" "AndTk_inv_147x173.png"] -format "png -alpha 1.0"
#ะกะฒะธัะพะบ ะพะฟะตัะฐัะฐะฝะฝัะน
image create photo svitok -file [file join $mydir "imageme" "blue_svitok.png"] -format "png -alpha 1.0"
#ะะปะธัะบะฐ
image create photo tileand -file [file join $mydir "imageme" "tile_green_and_32x32.png"] -format "png -alpha 1.0"
#ะฃะฒะตะปะธัะธัั/ัะผะตะฝััะธัั (ะพััะธัะฐัะตะปัะฝะพะต ะทะฝะฐัะตะฝะธะต - ัะผะตะฝััะตะฝะธะต)
proc scaleImage {im xfactor {yfactor 0}} {
set mode -subsample
if {$xfactor>=0 && $yfactor>=0} {
set mode -zoom
} else {
set xfactor [expr $xfactor * -1]
}
if {$yfactor == 0} {set yfactor $xfactor}
set t [image create photo]
$t copy $im
$im blank
$im copy $t -shrink $mode $xfactor $yfactor
image delete $t
}
proc createtile {w backg} {
image create photo tiled
tiled copy $backg -to 0 0 $::scrwidth $::scrheight -shrink
$backg copy tiled
image delete tiled
# ะะพััะธะผ ั
ะพะปัั
$w create image 0 0
-image $backg
-anchor nw
}
proc create_rectangle {canv img x1 y1 x2 y2 color alfa {wbd 0} {colorline black} } {
image create photo $img -format "default -colorformat rgb"
set rgb1 [winfo rgb $canv $color]
set cr [lindex $rgb1 0]
set cg [lindex $rgb1 1]
set cb [lindex $rgb1 2]
set fill [format "#%04x%04x%04x" $cr $cg $cb ]
#ะกะพะทะดะฐะตะผ ัะฒะตัะฝะพะน ะฟัะฐัะผะพัะณะพะปัะฝะธะบ
$img put $fill -to 0 0 [expr {$x2 - $x1}] [expr {$y2 -$y1}]
#ะกะพั
ัะฐะฝัะตะผ ะบะฐััะธะฝะบั
set dimg [$img data -format png]
#ะกะพะทะดะฐะตะผ image ั ััะตัะพะผ alpha ะบะฐะฝะฐะปะฐ
image create photo $img -data $dimg -format "png -alpha $alfa"
# $img put [list $rgb1] -to 0 0 [expr {$x2 - $x1}] [expr {$y2 -$y1}]
#ะัะพะฑัะฐะถะฐะตะผ ัะฒะตัะฝะพะน ะฟััะผะพัะณะพะปัะฝะธะบ
set imgr [$canv create image $x1 $y1 -image $img -anchor nw]
set cc [subst {butImg $img}]
$canv bind $imgr <ButtonPress-1> $cc
#ะะบะพะฝัะพะฒะบะฐ ะฒะพะบััะณ ัะฒะตัะฝะพะณะพ ะฟััะผะพัะณะพะปัะฝะธะบะฐ
if {$wbd > 0 } {
set item [$canv create rect $x1 $y1 $x2 $y2 -outline $colorline -width $wbd ]
$canv bind $item <ButtonPress-1> $cc
}
return $imgr
}
proc butImg {img} {
tk_messageBox -title "ะะฝะพะฟะบะฐ" -icon info -message "ะะฐะถะฐะปะธ ะบะฝะพะฟะบั=$img" -detail "::screenwidth=$::scrwidthn::screenheight=$::scrheight" -parent .
if {$img == "exit"} {
set answer [tk_dialog .dialog2 "ะะพะฝะตั ัะฐะฑะพัั" "ะั ะดะตะนััะฒะธัะตะปัะฝะพnั
ะพัะธัะต ะฒัะนัะธ?" question 0 "ะะฐ" "ะะตั" ]
if {$answer == 0} {
exit
}
}
}
proc page_titul {fr logo_manufacturer} {
global mydir
#ะกะพะทะดะฐะตะผ ั
ะพะปัั ะฝะฐ ะฒะตัั ัะบัะฐะฝ
tkp::canvas $fr.can -borderwidth 0 -height [winfo screenheight .] -width [winfo screenwidth .] -relief flat
#ะะพััะธะผ ั
ะพะปัั ะฟะปะธัะบะพะน
createtile "$fr.can" "tileand"
pack $fr.can -anchor center -expand 1 -fill both -side top -padx 0 -pady 0
#ะััะธัะปัะตะผ ะบะพะพัะดะธะฝะฐัั ะดะปั ะปะพะณะพัะธะฟะฐ ะฟัะพะธะทะฒะพะดะธัะตะปั
#update ััะพะฑั ะพะฑะฝะพะฒะธะปะฐัั ะธะฝัะพัะผะฐัะธั ะฒ ะะ ะพะฑ ะพะบะฝะฐั
update
# set aa [winfo height $fr.labtitul]
set aa $::padly
#ะฆะตะฝััะธััะตะผ ะปะพะณะพัะธะฟ ัะฐะทัะฐะฑะพััะธะบะฐ
set ha [image width $logo_manufacturer]
set xman [expr {($::scrwidth - $ha) / 2 }]
$fr.can create image $xman $aa -image $logo_manufacturer -anchor nw -tag tag_logo
set blogo [$fr.can bbox tag_logo]
set wexit [lindex $blogo 3]
if {$::typetlf } {
set dlx [expr {$::padlx / 1}]
$fr.can create text [expr $dlx + 6] [expr {$wexit + $::padly + 6}] -anchor nw -text "ะญะปะตะบััะพะฝะฝะฐั ะฟะพะดะฟะธัั" -fill black -font {{Roboto Condensed Medium} 15 }
$fr.can create text $dlx [expr {$wexit + $::padly}] -anchor nw -text "ะญะปะตะบััะพะฝะฝะฐั ะฟะพะดะฟะธัั" -fill white -font {{Roboto Condensed Medium} 15 } -tag id_text0
update
set blogo [$fr.can bbox id_text0]
set wexit [lindex $blogo 3]
$fr.can create text [expr $dlx + 4] [expr {$wexit + $::padly + 4 - 80}] -anchor nw -text "ะดะปั ะฟะปะฐััะพัะผั Android" -fill black -font {{Roboto Condensed Medium} 13}
$fr.can create text $dlx [expr {$wexit + $::padly - 80}] -anchor nw -text "ะดะปั ะฟะปะฐััะพัะผั Android" -fill white -font {{Roboto Condensed Medium} 13} -tag id_text1
set blogo [$fr.can bbox id_text1]
set wexit [lindex $blogo 3]
$fr.can create text [expr $dlx + 3] [expr {$wexit + $::padly + 3 - 50}] -anchor nw -text "โ 63 ะคะ "ะะฑ ัะปะตะบััะพะฝะฝะพะนnะฟะพะดะฟะธัะธ ะพั 6 ะฐะฟัะตะปั 2011 ะณะพะดะฐ"" -fill black -font {{Roboto} 10}
$fr.can create text $dlx [expr {$wexit + $::padly - 50}] -anchor nw -text "โ 63 ะคะ "ะะฑ ัะปะตะบััะพะฝะฝะพะนnะฟะพะดะฟะธัะธ ะพั 6 ะฐะฟัะตะปั 2011 ะณะพะดะฐ"" -fill white -font {{Roboto} 10} -tag id_text2
set blogo [$fr.can bbox id_text2]
set wexit [lindex $blogo 3]
$fr.can create text [expr $dlx + 2] [expr {$wexit + $::padly + 2 - 40}] -text "ะะฒัะพัั: ะ.ะ. ะัะปะพะฒnhttp://soft.lissi.ru, http://www.lissi.run+7(495)589-99-53ne-mail: [email protected]"
-anchor nw -fill black -font {{Roboto} 9}
$fr.can create text $dlx [expr {$wexit + $::padly - 40}] -text "ะะฒัะพัั: ะ.ะ. ะัะปะพะฒnhttp://soft.lissi.ru, http://www.lissi.run+7(495)589-99-53ne-mail: [email protected]"
-anchor nw -fill white -tag id_text3 -font {{Roboto} 9}
} else {
$fr.can create text [expr $::padlx + 2] [expr {$wexit + $::padly + 2}] -anchor nw -text "ะญะปะตะบััะพะฝะฝะฐั ะฟะพะดะฟะธัั" -fill black -font {{Nimbus Sans Narrow} 20}
$fr.can create text $::padlx [expr {$wexit + $::padly}] -anchor nw -text "ะญะปะตะบััะพะฝะฝะฐั ะฟะพะดะฟะธัั" -fill white -font {{Nimbus Sans Narrow} 20} -tag id_text0
set blogo [$fr.can bbox id_text0]
set wexit [lindex $blogo 3]
$fr.can create text [expr $::padlx + 2] [expr {$wexit + $::padly + 2 - 20}] -anchor nw -text "ะดะปั ะฟะปะฐััะพัะผั Android" -fill black -font {{Nimbus Sans Narrow} 18}
$fr.can create text $::padlx [expr {$wexit + $::padly - 20}] -anchor nw -text "ะดะปั ะฟะปะฐััะพัะผั Android" -fill white -font {{Nimbus Sans Narrow} 18} -tag id_text1
set blogo [$fr.can bbox id_text1]
set wexit [lindex $blogo 3]
$fr.can create text [expr $::padlx + 2] [expr {$wexit + $::padly + 2}] -anchor nw -text "โ 63 ะคะ "ะะฑ ัะปะตะบััะพะฝะฝะพะนnะฟะพะดะฟะธัะธ ะพั 6 ะฐะฟัะตะปั 2011 ะณะพะดะฐ"" -fill black -font {{Nimbus Sans Narrow} 14}
$fr.can create text $::padlx [expr {$wexit + $::padly}] -anchor nw -text "โ 63 ะคะ "ะะฑ ัะปะตะบััะพะฝะฝะพะนnะฟะพะดะฟะธัะธ ะพั 6 ะฐะฟัะตะปั 2011 ะณะพะดะฐ"" -fill white -font {{Nimbus Sans Narrow} 14} -tag id_text2
set blogo [$fr.can bbox id_text2]
set wexit [lindex $blogo 3]
$fr.can create text [expr $::padlx + 1] [expr {$wexit + $::padly + 1}] -text "ะะฒัะพัั: ะ.ะ. ะัะปะพะฒnhttp://soft.lissi.ru, http://www.lissi.run+7(495)589-99-53ne-mail: [email protected]"
-anchor nw -fill black -font {{Nimbus Sans Narrow} 12}
$fr.can create text $::padlx [expr {$wexit + $::padly}] -text "ะะฒัะพัั: ะ.ะ. ะัะปะพะฒnhttp://soft.lissi.ru, http://www.lissi.run+7(495)589-99-53ne-mail: [email protected]"
-anchor nw -fill white -tag id_text3 -font {{Nimbus Sans Narrow} 12} -tag id_text3
set blogo [$fr.can bbox id_text2]
}
set blogo [$fr.can bbox id_text3]
set wland [lindex $blogo 3]
$fr.can create image $::padlx $wland -image logo_and -anchor nw -tag tag_land
set ha [image height logo_and]
set wa [image width logo_and]
set ha1 [expr {$ha - ($ha / 2 ) }]
$fr.can create image [expr {$wa - 80 }] [expr {$wland + $ha1}] -image svitok -anchor nw -tag tag_land
if {$::typetlf} {
set x1 [expr {$::padlx / 2}]
set y1 [expr {$wland + 120}]
set x2 [expr {$::::scrwidth - $x1}]
set y2 [expr {$y1 + 120}]
set wd 8
set rr 18
} else {
set x1 [expr {$::padlx / 2}]
set y1 [expr {$wland + 40}]
set x2 [expr {$::::scrwidth - $x1}]
set y2 [expr {$y1 + 40}]
set wd 4
set rr 6
}
set g5 [$fr.can gradient create linear -stops {{0 lightgreen} {1 green}}]
set S3 [$fr.can style create -stroke "skyblue" -fill $g5 -strokewidth $wd -fillopacity 0.6]
set im1 [$fr.can create prect $x1 $y1 $x2 $y2 -rx $rr -style $S3]
$fr.can bind $im1 <ButtonPress-1> {butImg "img1"}
#ะะตัะฐัะฐะตะผ ัะตั
ั
set blogo [$fr.can bbox $im1]
set by2 [lindex $blogo 3]
set by1 [lindex $blogo 1]
set bb [expr {($by2 - $by1) / 2}]
set bx2 [lindex $blogo 2]
set bx1 [lindex $blogo 0]
set bbx [expr {($bx2 - $bx1) / 2}]
set txt1 [$fr.can create text [expr {$x1 + $::padlx * 2}] [expr {$y1 + 1 }] -anchor nw -text "ะกะฐะนั ัะฐะทัะฐะฑะพััะธะบะฐ" -fill black -font {{Arial} 10 normal}]
#ะฆะตะฝััะธััะตะผ ัะตั
ั
set btxt1 [$fr.can bbox $txt1]
#ะกะผะตัะตะฝะธะต ะฟะพ ะพัะธ Y
set ty2 [lindex $btxt1 3]
set ty1 [lindex $btxt1 1]
set tt [expr {$ty2 - $ty1}]
set tt [expr {$tt / 2}]
set offsy [expr {($by1 + $bb) - ($ty1 + $tt)}]
#ะกะผะตัะตะฝะธะต ะฟะพ ะพัะธ X
set tx2 [lindex $btxt1 2]
set tx1 [lindex $btxt1 0]
set ttx [expr {$tx2 - $tx1}]
set ttx [expr {$ttx / 2}]
set offsx [expr {($bx1 + $bbx) - ($tx1 + $ttx)}]
$fr.can move $txt1 $offsx $offsy
$fr.can bind $txt1 <ButtonPress-1> {butImg "img1"}
if {$::typetlf} {
set y1 [expr $y2 + 40]
set x2 [expr {$::::scrwidth - $x1}]
set y2 [expr {$y1 + 120}]
} else {
set y1 [expr {$y1 + 60}]
set x2 [expr {$::::scrwidth - $x1}]
set y2 [expr {$y1 + 40}]
}
set im1 [create_rectangle $fr.can "but2" $x1 $y1 $x2 $y2 "#2b972d" 0.6 $wd "skyblue"]
#ะะตัะฐัะฐะตะผ ัะตั
ั
set blogo [$fr.can bbox $im1]
set by2 [lindex $blogo 3]
set by1 [lindex $blogo 1]
set bb [expr {($by2 - $by1) / 2}]
set bx2 [lindex $blogo 2]
set bx1 [lindex $blogo 0]
set bbx [expr {($bx2 - $bx1) / 2}]
set txt1 [$fr.can create text [expr {$x1 + $::padlx * 2}] [expr {$y1 + 1 }] -anchor nw -text "ะะตัะตั
ะพะด ะฒ ะพัะฝะพะฒะฝะพะต ะผะตะฝั" -fill black -font {{Roboto Condensed Medium} 12}]
#ะฆะตะฝััะธััะตะผ ัะตะบัั
set btxt1 [$fr.can bbox $txt1]
#ะกะผะตัะตะฝะธะต ะฟะพ ะพัะธ Y
set ty2 [lindex $btxt1 3]
set ty1 [lindex $btxt1 1]
set tt [expr {$ty2 - $ty1}]
set tt [expr {$tt / 2}]
set offsy [expr {($by1 + $bb) - ($ty1 + $tt)}]
#ะกะผะตัะตะฝะธะต ะฟะพ ะพัะธ X
set tx2 [lindex $btxt1 2]
set tx1 [lindex $btxt1 0]
set ttx [expr {$tx2 - $tx1}]
set ttx [expr {$ttx / 2}]
set offsx [expr {($bx1 + $bbx) - ($tx1 + $ttx)}]
$fr.can move $txt1 $offsx $offsy
$fr.can bind $txt1 <ButtonPress-1> {butImg "but2"}
if {$::typetlf} {
set x1 [expr {$::padlx / 2}]
set y1 [expr $y2 + 40]
set x2 [expr {$::::scrwidth - $x1}]
set y2 [expr {$y1 + 120}]
} else {
set x1 [expr {$::padlx / 2}]
set y1 [expr {$y1 + 60}]
set x2 [expr {$::::scrwidth - $x1}]
set y2 [expr {$y1 + 40}]
}
set S3 [$fr.can style create -stroke skyblue -fill $g5 -strokewidth $wd -fillopacity 0.6]
set im1 [$fr.can create prect $x1 $y1 $x2 $y2 -rx $rr -style $S3]
set blogo [$fr.can bbox $im1]
$fr.can bind $im1 <ButtonPress-1> {butImg "exit"}
set by2 [lindex $blogo 3]
set by1 [lindex $blogo 1]
set bb [expr {($by2 - $by1) / 2}]
set bx2 [lindex $blogo 2]
set bx1 [lindex $blogo 0]
set bbx [expr {($bx2 - $bx1) / 2}]
set txt1 [$fr.can create text [expr {$x1 + $::padlx * 2}] [expr {$y1 + 1 }] -anchor nw -text "ะะพะฝะตั ัะฐะฑะพัั" -fill black -font {Arial 10 normal}]
$fr.can bind $txt1 <ButtonPress-1> {butImg "exit"}
set btxt1 [$fr.can bbox $txt1]
#ะกะผะตัะตะฝะธะต ะฟะพ ะพัะธ Y
set ty2 [lindex $btxt1 3]
set ty1 [lindex $btxt1 1]
set tt [expr {$ty2 - $ty1}]
set tt [expr {$tt / 2}]
set offsy [expr {($by1 + $bb) - ($ty1 + $tt)}]
#ะกะผะตัะตะฝะธะต ะฟะพ ะพัะธ X
set tx2 [lindex $btxt1 2]
set tx1 [lindex $btxt1 0]
set ttx [expr {$tx2 - $tx1}]
set ttx [expr {$ttx / 2}]
set offsx [expr {($bx1 + $bbx) - ($tx1 + $ttx)}]
$fr.can move $txt1 $offsx $offsy
}
#ะกะพะฑััะฒะตะฝะฝะพ ัะบัะธะฟั
#ะกัะธััะฒะฐะตะผ ัะฐะทะผะตัั ัะบัะฐะฝะฐ
set ::scrwidth [winfo screenwidth .]
set ::scrheight [winfo screenheight .]
set ::typetlf 0
#ะัะพะฒะตััะตะผ, ััะพ ััะพ ัะตะปะตัะพะฝ
if {$::scrwidth < $::scrheight} {
set ::typetlf 1
}
set ::padls 20
set ::padlx 15
set ::padly 15
if {$::typetlf} {
wm attributes . -fullscreen 1
scaleImage icon_openfile_18x16 3
scaleImage ::img::view_18x16 3
#ะะพะณะพัะธะฟ ะฟัะพะธะทะฒะพะดะธัะตะปั
scaleImage logo_orel 2
#ะะพะณะพัะธะฟ ะฟัะพะดัะบัะฒ
scaleImage logo_product 2
#ะะฝะดัะพะธะดะฐ tcl/tk
scaleImage logo_and 3
#ะกะฒะธัะพะบ ะพะฟะตัะฐัะฐะฝะฝัะน
scaleImage svitok 4
set ::padls 50
set ::padlx 75
set ::padly 50
} else {
#ะะพะฝัะธะณััะธัะพะฒะฐะฝะธะต ะฒะธะดะถะตัะฐ ะฟะพะด ัะผะฐัััะพะฝ
scaleImage logo_orel -2
set ::scrwidth 370
set ::scrheight 700
wm minsize . $::scrwidth $::scrheight
set geometr $::scrwidth
append geometr "x"
append geometr $::scrheight
append geometr "+0+0"
wm geometry . $geometr
}
#ะกะพะทะดะฐะตะผ ะฝะฐะทะฒะฐะฝะธะต ะฟัะพะดัะบัะฐ
set name_product "CryptoArmPKCS-A"
label .labtitul -image logo_product -compound left -fg snow -text $name_product -font {Arial 10 bold} -anchor w -width [winfo screenwidth .] -pady $::padls -padx 10 -bg #222222
pack .labtitul -anchor nw -expand 0 -fill x -side top -padx 1 -pady 0
#ะกะพะทะดะฐะตะผ ััะฐััะพะฒัั ัััะฐะฝะธัั
set i 0
ttk::frame .fr$i -pad 0 -padding 0
page_titul ".fr$i" "logo_orel"
pack .fr$i -side top -anchor center -expand 1 -fill both -side top -padx 0 -pady 0
update
แแ แกแแ แแแขแแก แจแแกแแกแ แฃแแแแแแ แแแแแแงแแแแ แแ แ-แแ แแ undroidwish แแ vanillawish แฃแขแแแแขแ:
$ /usr/local/bin64/undroidwish-e5dc71ed9d-linux64 create_titul_page.tcl
แแ
$/usr/local/bin64/vanillawish-e5dc71ed9d-linux64 create_titul_page.tcl
แจแแแแแ แแแฉแแแแแแแ แแแ แแแ แกแแ แแแจแแขแจแ.
แแแแ แ แแแแ แแแ แฉแแแแแแแแแแ แคแฃแแฅแชแแแแแแแแ, แ แแแแแกแแช แแฎแแ แก แฃแญแแ แก cryptoarmpkcs-A แแ แแแ แแแ. แแแแแแฃแแ แฎแแแ แแ แแก แฆแแแแแ, แแแฌแแแแฃแแแแแกแแก แแแแแฉแแแแแ แคแฃแแฅแชแแฃแ แ แแแแ แแ. แแ แแแแ แแแ แฆแแแแแแแแก แแแแแแแกแแแแก แแแแแแขแ แแ แแแแแกแแแฆแแ แแแ แแแแแงแแแแแฃแแ แจแ แแคแขแแ. แฅแแแแแ แแแชแแแฃแแแ create_page_functions.tcl แกแแ แแแขแ แแแแแแแชแแแก แแแแ แ/แคแฃแแฅแชแแฃแ แ แแแแ แแแก แจแแกแแฅแแแแแแ. แแแแแกแแแแ แแกแฃแ แแแแก แแกแแแ แจแแฃแซแแแ แแแกแ แ แแแแฅแขแแ แแแ แแแแ แคแฃแแฅแชแแแแแก แจแแกแแแแแแกแแ.
แกแแ แแแขแ create_page_functions.tcl
package require Tk
package require tkpath 0.3.0
global mydir
set mydir [file dirname [info script]]
#ะฃะฒะตะปะธัะธัั/ัะผะตะฝััะธัั (ะพััะธัะฐัะตะปัะฝะพะต ะทะฝะฐัะตะฝะธะต - ัะผะตะฝััะตะฝะธะต)
proc scaleImage {im xfactor {yfactor 0}} {
set mode -subsample
if {$xfactor>=0 && $yfactor>=0} {
set mode -zoom
} else {
set xfactor [expr $xfactor * -1]
}
if {$yfactor == 0} {set yfactor $xfactor}
set t [image create photo]
$t copy $im
$im blank
$im copy $t -shrink $mode $xfactor $yfactor
image delete $t
}
proc createtile {w backg} {
image create photo tiled
tiled copy $backg -to 0 0 $::scrwidth $::scrheight -shrink
$backg copy tiled
image delete tiled
# ะะพััะธะผ ั
ะพะปัั
$w create image 0 0
-image $backg
-anchor nw
}
proc butCliked {num fr} {
pack forget .fr1
set ::tekFrfunc $fr
pack $fr -side top -anchor center -expand 1 -fill both -side top -padx 0 -pady 0
tk_dialog .dialog1 "Dear user:" "Button $num was clickednFr=$fr" info 0 OK
}
proc butImg {img} {
tk_messageBox -title "ะะฝะพะฟะบะฐ" -icon info -message "ะะฐะถะฐะปะธ ะบะฝะพะฟะบั=$img" -detail "::screenwidth=$::scrwidthn::screenheight=$::scrheight" -parent .
if {$img == "exit"} {
set answer [tk_dialog .dialog2 "ะะพะฝะตั ัะฐะฑะพัั" "ะั ะดะตะนััะฒะธัะตะปัะฝะพnั
ะพัะธัะต ะฒัะนัะธ?" question 0 "ะะฐ" "ะะตั" ]
if {$answer == 0} {
exit
}
}
}
proc butReturn {} {
pack forget $::tekFrfunc
pack .fr1 -side top -anchor center -expand 1 -fill both -side top -padx 0 -pady 0
# tk_dialog .dialog1 "Dear user:" "Button $num was clickednFr=$fr" info 0 OK
}
proc page_func {fr tile titul functions} {
#ะะฝะพะฟะบะธ ะผะตะฝั
upvar $functions but
#ะกะพะทะดะฐะตะผ ััะธัั ะดะปั ะบะฝะพะฟะพะบ
if {$::typetlf} {
set feFONT_button "-family {Roboto} -size 9 -weight bold -slant roman"
set widl 10
} else {
set feFONT_button "-family {Arial} -size 12 -weight bold -slant roman"
set widl 5
}
catch {font delete fontTEMP_drawer}
eval font create fontTEMP_drawer $feFONT_button
#ะััะธัะปัะตะผ ะผะฐะบัะธะผะฐะปัะฝัั ะดะปะธะฝั ัะตะบััะฐ
set drawerCNT 0
set strMaxWidthPx 15
set Ndrawers [expr {[array size but] - 1}]
while { $drawerCNT <= $Ndrawers } {
set strWidthPx [font measure fontTEMP_drawer "$but($drawerCNT)"]
if { $strWidthPx > $strMaxWidthPx } {
set strMaxWidthPx $strWidthPx
}
incr drawerCNT
}
set drawerWidthPx [expr $strMaxWidthPx + 10]
set xxx [expr {($::::scrwidth - $drawerWidthPx) / 2}]
if {$fr != ".fr1"} {
set hret [expr $::scrheight / 4]
} else {
set hret $::scrheight
}
set hret [expr $::scrheight / 4]
tkp::canvas $fr.can -borderwidth 0 -height $hret -width $::scrwidth -relief flat
#ะะพััะธะผ ั
ะพะปัั ะฟะปะธัะบะพะน
createtile "$fr.can" $tile
pack $fr.can -anchor center -expand 1 -fill both -side top -padx 0 -pady 0
if {$titul != "" } {
set allfunc $titul
catch {font delete fontTEMP_titul}
set font_titul "-family {Roboto Condensed Medium} -size 15"
eval font create fontTEMP_titul $font_titul
set funcWidthPx [font measure fontTEMP_titul "$allfunc"]
set dlx [expr {($::::scrwidth - $funcWidthPx) / 2}]
$fr.can create text [expr $dlx + 6] [expr {6 + 6}] -anchor nw -text "$allfunc" -fill black -font fontTEMP_titul
$fr.can create text $dlx 6 -anchor nw -text "$allfunc" -fill white -font fontTEMP_titul -tag id_text0
set blogo [$fr.can bbox id_text0]
set boxbut [expr ([lindex $blogo 3] + 6 + 6)]
} else {
set boxbut [expr 6 + 6]
}
#ะััะธัะปัะตะผ ัะฐะผัะน ัะธัะพะบะธะน ัะตะบัั ั ะบะฝะพะฟะพะบ
#ะกะผ. ะฒััะต
#ะ ะฐะทะผะตัะฐะตะผ ะบะฝะพะฟะบะธ
set BDwidth_canvas 0
set maxTextHeightPx [font metrics fontTEMP_drawer -linespace]
set maxTextHeightPx [expr {$maxTextHeightPx + ( $maxTextHeightPx / 2)}]
set drawerHeightPx $maxTextHeightPx
set xLocTextPx [expr {($::::scrwidth - $drawerWidthPx) / 2}]
set yLocTextPx [expr $BDwidth_canvas + ($drawerHeightPx / 2) + $boxbut]
set canvasHeightPx [expr $Ndrawers * $drawerHeightPx]
set drawerCNT 0
set Ndrawers [expr {[array size but] - 1}]
while { $drawerCNT <= $Ndrawers } {
set yLineLocPx [ expr (( $drawerCNT ) * $drawerHeightPx + $boxbut)]
#ะะธะฝะธั ะฟะตัะตะด ัะตะบััะพะผ
$fr.can create line
$xLocTextPx $yLineLocPx
[expr $drawerWidthPx + $xLocTextPx] $yLineLocPx
-fill "#a0a0a0" -width $widl
$fr.can create text [expr $xLocTextPx + 5] $yLocTextPx
-anchor w
-font fontTEMP_drawer
-text "$but($drawerCNT)"
-tag textlineTag($drawerCNT)
if {$drawerCNT == 0} {
if {$fr == ".fr1"} {
$fr.can bind textlineTag($drawerCNT) <ButtonRelease-1> {butImg "but1"}
} else {
$fr.can bind textlineTag($drawerCNT) <ButtonRelease-1> {butReturn}
}
} else {
frame .fn$drawerCNT -background white -relief flat -pady 0 -padx 0
set titul $but($drawerCNT)
set cmd "$fr.can bind textlineTag($drawerCNT) <ButtonRelease-1> {butCliked $drawerCNT .fn$drawerCNT}"
set cmd [subst "$cmd"]
eval $cmd
set but1(0) "ะะพะทะฒัะฐั ะฒ ะพัะฝะพะฒะฝะพะต ะผะตะฝั"
page_func ".fn$drawerCNT" voda "$titul" "but1"
}
incr drawerCNT
set yLocTextPx [ expr $yLocTextPx + $drawerHeightPx]
#ะะฐะฒะตััะฐััะฐั ะปะธะฝะธั
if { $drawerCNT > $Ndrawers } {
set yLineLocPx [ expr (( $drawerCNT ) * $drawerHeightPx + $boxbut)]
$fr.can create line $xLocTextPx $yLineLocPx
[expr $drawerWidthPx + $xLocTextPx] $yLineLocPx
-fill "#a0a0a0" -width $widl
}
}
}
#ะกะพะฑััะฒะตะฝะฝะพ ัะบัะธะฟั
#ะกัะธััะฒะฐะตะผ ัะฐะทะผะตัั ัะบัะฐะฝะฐ
set ::scrwidth [winfo screenwidth .]
set ::scrheight [winfo screenheight .]
set ::typetlf 0
#ะัะพะฒะตััะตะผ, ััะพ ััะพ ัะตะปะตัะพะฝ
if {$::scrwidth < $::scrheight} {
set ::typetlf 1
}
set ::padls 20
set ::padlx 15
set ::padly 15
if {$::typetlf} {
wm attributes . -fullscreen 1
#ะะพะณะพัะธะฟ ะฟัะพะดัะบัะฒ
scaleImage logo_product 2
set ::padls 50
set ::padlx 75
set ::padly 50
} else {
#ะะพะฝัะธะณััะธัะพะฒะฐะฝะธะต ะฒะธะดะถะตัะฐ ะฟะพะด ัะผะฐัััะพะฝ
set ::scrwidth 370
set ::scrheight 700
wm minsize . $::scrwidth $::scrheight
set geometr $::scrwidth
append geometr "x"
append geometr $::scrheight
append geometr "+0+0"
wm geometry . $geometr
}
#ะััะทะธะผ ะบะฐััะธะฝะบะธ
image create photo voda -file [file join $mydir "imageme" "voda_400x800.png"]
#ะะพะณะพัะธะฟ ะฟัะพะดัะบัะฐ
image create photo logo_product -file [file join $mydir "imageme" "validcertkey_51x24.png"]
#ะกะพะทะดะฐะตะผ ะฝะฐะทะฒะฐะฝะธะต ะฟัะพะดัะบัะฐ
set name_product "CryptoArmPKCS-A"
label .labtitul -image logo_product -compound left -fg snow -text $name_product -font {Arial 10 bold} -anchor w -width [winfo screenwidth .] -pady $::padls -padx 10 -bg #222222
pack .labtitul -anchor nw -expand 0 -fill x -side top -padx 1 -pady 0
#ะกะพะทะดะฐะตะผ ัััะฐะฝะธัั ั ััะฝะบัะธะพะฝะฐะปะพะผ
set i 1
ttk::frame .fr$i -pad 0 -padding 0
#ะะฝะพะฟะบะธ ะพัะฝะพะฒะฝะพะณะพ ะผะตะฝั
set but(0) "ะกัะฐััะพะฒะฐั ัััะฐะฝะธัะฐ"
set but(1) "ะะพะดะฟะธัะฐัั ะดะพะบัะผะตะฝั"
set but(2) "ะ ะฐะฑะพัะฐะตะผ ั ะญะ (PKCS7)"
set but(3) "ะะฐะฟัะพั ะฝะฐ ัะตััะธัะธะบะฐั"
set but(4) "ะัะพัะผะพัั ะทะฐะฟัะพัะฐ/ัะตััะธัะธะบะฐัะฐ"
set but(5) "ะกะฟะธัะพะบ ะบัะธะฟัะพะผะตั
ะฐะฝะธะทะผะพะฒ"
set but(6) "ะัะพัะผะพัั ASN1-ััััะบัััั"
set but(7) "ะะฑัะตะบัั ัะพะบะตะฝะฐ"
set but(8) "ะ ะฐะฑะพัะฐะตะผ ั PKCS12/PFX"
set but(9) "ะกะฐะผะพะฟะพะดะฟะธัะฐะฝะฝัะน ัะตััะธัะธะบะฐั"
set but(10) "ะะฑ ะฃัะธะปะธัะต/ะะธัััะธะฑััะธะฒั"
set but(11) "ะกะพะทะดะฐัั ะขะพะบะตะฝั"
set but(12) "ะะพะฝัะธะณััะธัะพะฒะฝะธะต ัะพะบะตะฝะฐ"
if {$::typetlf} {
scaleImage voda 3 2
}
#ะกะพะทะดะฐะตะผ ัััะฐะฝะธัั ั ััะฝะบัะธะพะฝะฐะปะพะผ
page_func ".fr$i" voda "ะคัะฝะบัะธะพะฝะฐะป" "but"
#ะัะพะฑัะฐะถะฐะตะผ ัััะฐะฝะธัั ั ััะฝะบัะธะพะฝะฐะปะพะผ
pack .fr$i -side top -anchor center -expand 1 -fill both -side top -padx 0 -pady 0
แแก แกแแ แแแขแ แแกแแแ แแแแแแแแก แแแแแแแแก แแแแแแฃแแ แคแฃแแฅแชแแแก แฆแแแแแแกแแแแก:
แแแแแแแแ แแแกแแแ แแแแกแแแฃแ แ แแ แแแแแขแฃแ แ แแแฏแแขแแแแ (แแขแแแแขแแก แฉแแ แฉแ, แฆแแแแแ แแ แ.แจ.). แแ แ-แแ แแ แแกแแแ แจแแแกแแแฃแแ แแแแแแ แฉแแแก แแแ แแแ แแแ แแแแก แกแฃแ แแแแ แแแ แฏแแแแ. แแแแแแแแ แแแ แแแ แแขแแแแ แฉแแแ แคแแแฃแกแแ แแแฃแแ แแแงแแแแ PKCS#12 แแแแขแแแแแ แแแ แแฃแจแแแแแแ, แแแแ แแแแฅแแแก แฃแชแแแแแ แแงแ แแแแแงแแแแแฃแแ cryptoarmpkcs-A-แกแแแแก. แแ แแขแแแแ แฎแแ แชแแแแแแแ แจแแแแแแ แคแฃแแฅแชแแแแ:
- แฎแแแ แแแแฌแแ แแก แแแแฃแแแแขแก (Cades-BES, CAdes-T, CAdes-XLT1);
- แฉแแแ แแแฃแจแแแแ แแแแฅแขแ แแแฃแแ แฎแแแแแฌแแ แแ (PKCS7), แฎแแแแแฌแแ แแก แแแแแขแแแแก แฉแแแแแแ;
- แกแแ แขแแคแแแแขแแแแก/แกแแ แแแคแแแแขแแแแก แแแแฎแแแแแแแก แแแฎแแ:
- แฉแแแ แแแฃแจแแแแ PKCS12/PFX-แแแ;
- แแแแฃแแแแฃแ แ/แแแกแขแ แแแฃแชแแแแแก แจแแกแแฎแแ:
แแแ แฉแแแแแ แคแฃแแฅแชแแแแ แฃแคแ แ แแแขแแ แฃแแแแจแแ แแแแ PKCS#11 แแแขแแแแแก. แแแแ แแแ แขแแ แแแ แกแแแฎแแแฌแแแ แแแแแแแ. แแแแแแแแแแ แแ แแแ แแแฃแแ แขแแแแแแก แแแแแแจแแ แแแ แแ แแแแแแจแแ แแแ
แคแฃแแฅแชแแฃแ แ แแแแแกแแแ แแกแแ, แแแแฅแแแก แงแแแแแคแแ แ แแกแแแแกแแ cryptoarmpkcs แฃแขแแแแขแแก. แแแแ แแ แแ แแก แแแ แแแแฃแแ แแแแกแฎแแแแแแแแ. แแแแแแแแแ, แแแแฃแแแแขแแ แฎแแแแแฌแแ แแก แจแแแแแ, แแแแฃแแแแฃแ แ แแแแแฎแแแ, แแแแแฌแแแแฃแแ แแฅแแแแ แแฃ แแ แ แฎแแแแแฌแแ แ แกแแฎแแแแฌแแคแ แกแแ แแแกแแแแก แแแแกแแแขแแ:
แ แแแแกแแช แแแแญแแ แแ แฆแแแแแก "แแแแฎ", แแ แแฃแแแ แ แแขแแแ แแแแ แแแแ แแแ แแแแฃแแแแขแแแแกแ แแ แกแแ แแแคแแแแขแแแแก แฎแแแแแฌแแ แแก แแแกแแแแกแขแฃแ แแแแแ. แแแฃแงแแแแแแแแ แแแฅแแแ, แ แแ แแก แแแแ แแ แแแแแแแแแ แแ แแ แแก แจแแฅแแแแแ แกแแแ แขแคแแแแก แแแ แแแแกแแแแก. แแก แจแแกแแแฉแแแแ แแฅแแแแ แฎแแแแแฌแแ แแก แจแแ แฉแแแแกแแก แแ แฎแแแแแฌแแ แแก แแแฎแกแแแก แจแแแแฎแแแแแจแ, แแแแฃแแแแขแแแ แแ แกแแแฃแแ แคแแแแ. แแแแ แแ แแฃ แงแแแแแคแแ แ แแแ แแแแแ, แแแจแแ แแแแแแแ แจแแแแแก แแแแแฆแแแ:
แฃแแแ แแแแฎแกแแแแแก, แ แแ แ แแแแ แช แฎแแแแแฌแแ แแก, แแกแแแ แกแแ แแแคแแแแขแแก แจแแแแฌแแแแแก แกแแฎแแแแฌแแคแ แกแแ แแแกแแแแก แแแแกแแแขแแ แแฅแแก แแแ แ แแฎแแแแ แแ แจแแแแฎแแแแแจแ, แแฃ แกแแ แแแคแแแแขแ แแแฆแแแฃแแแ แแแ แแแแขแแแฃแ แกแแ แขแแคแแชแแ แแแแก แชแแแขแ แจแ (
แแ แแฃแแแ แแก แแแกแแ แแแแ แแแแแฌแแ แแ แ แฎแแแแก แแแแแขแแแ openUrl แแ แแชแแแฃแ แแจแ:
proc openURL {url} {
global typesys
global macos
# global windowsOS
#ะฟัะพะฒะตัะบะฐ, ััะพ ััะธะปะธัะฐ ะฒัะฟะพะปะฝัะตััั ะฝะฐ ัะผะฐัััะพะฝะต Android
if {$::typetlf} {
#ะะฐะฟััะบ ะฑัะฐัะทะตัะฐ
borg activity android.intent.action.VIEW $url text/html
return
}
. . .
}
แแแแ แแแแแ แแ แแฃแแแ แก แแกแ แฐแฅแแแ:
borg activity android.intent.action.VIEW <URL> text/html
แแชแแ แ แแแแแกแแแฃแ แแแแ แแแ แ แฎแแแแแฌแแ แแ แแแแฃแแแแขแจแ แแฎแแแ แฎแแแแแแฌแแ แแก แแแแแขแแแแกแแก. แแฎแแแ แฎแแแแแแฌแแ แแก แกแแ แแแคแแแแขแ (แฃแคแ แ แกแฌแแ แแ, แแฃแแแแช PKCS#12 แแแแขแแแแแ แ แกแแ แขแแคแแแแขแแ แแ แแแ แแแ แแแกแแฆแแแแ) แฌแแแแกแฌแแ แฃแแแ แแงแแก แแ แฉแแฃแแ โแแแแฃแแแแขแแก แฎแแแแแฌแแ แโ แแ โPKCS12/PFX-แแแ แแฃแจแแแแโ แแแแ แแแ, แ แแแแแกแแช แแ แแแ แแแ แจแแแแฎแกแแแแแ. :
แแ แซแแแแแแแแแ แแแแ แแชแแแแแก แแ แแก, แกแแแแ แแแแแ แซแแแแแก แฅแ แแแแแแก:
แ แฉแแแ แแฎแแแแ แแแแก แแฅแแ, แกแแแแแ แแแแแแแฌแแ แแ แแแกแขแ แแแฃแชแแแแ แแ แแแแแแแชแแ แแแแแแแแ แแฎแแแ แฌแแแ แแ แแฃแกแฃแ แแแ แงแแแแแก แงแแแแแแแ แกแแฃแแแแแกแ 2020 แฌแแแก!
แแกแ แ แแ, แแแกแขแ แแแฃแชแแแแ Linux, OS X, Windows แแ Android-แแกแแแแก:
แฌแงแแ แ: www.habr.com