ΠΡΠ΅ΠΌΠ΅ Π΅ Π΄Π° ΡΠ΅ Π΄Π΅ΠΌΠΎΠ½ΡΡΡΠΈΡΠ° ΠΊΠ°ΠΊΠΎ ΠΊΡΠΈΠΏΡΠΎΠ³ΡΠ°ΡΡΠΊΠ° ΡΠ°Π±ΠΎΡΠ½Π° ΡΡΠ°Π½ΠΈΡΠ° Π·Π°ΡΠ½ΠΎΠ²Π°Π½Π° Π½Π° ΡΡΠ°Π½Π΄Π°ΡΠ΄ΠΈ Π·Π° ΡΠ°Π²Π΅Π½ ΠΊΠ»ΡΡ ΡΠ°Π±ΠΎΡΠΈ Π½Π° Π΅Π΄Π½Π° ΠΎΠ΄ ΠΌΠΎΠ±ΠΈΠ»Π½ΠΈΡΠ΅ ΠΏΠ»Π°ΡΡΠΎΡΠΌΠΈ, ΠΈΠΌΠ΅Π½ΠΎ Android.
ΠΠΎΠ½ΡΠ΅ΠΏΡΠΎΡ ΡΡΠΎ Π±Π΅ΡΠ΅ ΠΏΠΎΡΡΠ°Π²Π΅Π½ ΠΏΡΠΈ ΡΠ°Π·Π²ΠΈΠ²Π°ΡΠ΅ΡΠΎ Π½Π° Π°Π»Π°ΡΠΊΠ°ΡΠ° cryptoarmpkcs Π΅ Π΄Π΅ΠΊΠ° ΠΊΠΎΡΠΈΡΠ½ΠΈΠΊΠΎΡ ΡΡΠ΅Π±Π° Π΄Π° Π΄ΠΎΠΆΠΈΠ²Π΅Π΅ ΠΌΠΈΠ½ΠΈΠΌΡΠΌ Π½Π΅ΠΏΡΠΈΡΠ°ΡΠ½ΠΎΡΡΠΈ ΠΊΠΎΠ³Π° ΠΊΡΠ΅ΠΈΡΠ° ΠΈ ΠΏΠΎΡΠ²ΡΠ΄ΡΠ²Π° Π΅Π»Π΅ΠΊΡΡΠΎΠ½ΡΠΊΠΈ ΠΏΠΎΡΠΏΠΈΡ. ΠΠ°ΡΠΎΠ° ΠΏΡΠ΅Π΄Π»Π°Π³Π°ΠΌΠ΅ ΠΊΠΎΡΠΈΡΡΠ΅ΡΠ΅ Π½Π° ΠΊΡΠΈΠΏΡΠΎΠ³ΡΠ°ΡΡΠΊΠΈ ΡΠΎΠΊΠ΅Π½ΠΈ ΠΊΠ°ΠΊΠΎ ΠΊΠ»ΡΡΠ΅Π½ Π½ΠΎΡΠ°Ρ Π·Π° Π»ΠΈΡΠ΅Π½ ΡΠ΅ΡΡΠΈΡΠΈΠΊΠ°Ρ ΠΈ/ΠΈΠ»ΠΈ Π±Π΅Π·Π±Π΅Π΄Π½ΠΈ ΠΊΠΎΠ½ΡΠ΅ΡΠ½Π΅ΡΠΈ . ΠΠΎΡΠ° Π΄Π° ΡΠ΅ ΠΊΠ°ΠΆΠ΅ Π΄Π΅ΠΊΠ° ΡΠΏΠΎΡΡΠ΅Π±Π°ΡΠ° Π½Π° PKCS#12 Π²ΠΎ ΠΌΠ½ΠΎΠ³Ρ ΡΠ»ΡΡΠ°ΠΈ ΡΠ΅ ΠΏΠΎΠΊΠ°ΠΆΡΠ²Π° ΠΊΠ°ΠΊΠΎ ΡΠ΅ΡΠΈΡΠΈ Π΅Π΄ΠΈΠ½ΡΡΠ²Π΅Π½Π°ΡΠ° ΠΌΠΎΠΆΠ½Π°, Π½Π° ΠΏΡΠΈΠΌΠ΅Ρ, ΠΊΠΎΠ³Π° ΠΈΡΡΠΈΡΠ΅ ΡΠΎΠΊΠ΅Π½ΠΈ PKCS#11 Π½Π΅ΠΌΠ°Π°Ρ ΠΏΠΎΠ΄Π΄ΡΡΠΊΠ° Π·Π° ΠΎΠ΄ΡΠ΅Π΄Π΅Π½ΠΈ ΠΏΠ»Π°ΡΡΠΎΡΠΌΠΈ. ΠΠ°ΡΠΎΠ° ΡΠ΅ΡΠΈΠ²ΠΌΠ΅ Π΄Π° Π·Π°ΠΏΠΎΡΠ½Π΅ΠΌΠ΅ ΡΠΎ ΠΏΠΎΡΡΠΈΡΠ°ΡΠ΅ Π½Π° Π°Π»Π°ΡΠΊΠ°ΡΠ° cryptoarmpkcs Π½Π° ΠΏΠ»Π°ΡΡΠΎΡΠΌΠ°ΡΠ°. Android ΡΠΎ ΠΏΠΎΠ΄Π΄ΡΡΠΊΠ° Π·Π° Π±Π΅Π·Π±Π΅Π΄Π½ΠΈ ΠΊΠΎΠ½ΡΠ΅ΡΠ½Π΅ΡΠΈ PKCS#12.
ΠΠ΅Π΄Π½Π°Ρ Π΄Π° Π·Π°Π±Π΅Π»Π΅ΠΆΠΈΠΌΠ΅ Π΄Π΅ΠΊΠ° Π±ΠΈΠ΄Π΅ΡΡΠΈ ΠΏΡΠΎΠ΅ΠΊΡΠΎΡ Π±Π΅ΡΠ΅ Π½Π°ΠΏΡΠ°Π²Π΅Π½ Π½Π° ΠΏΠ»Π°ΡΡΠΎΡΠΌΠ°ΡΠ° C ΠΈ Tcl/Tk, ΠΏΡΠ΅Π½Π΅ΡΡΠ²Π°ΡΠ΅ΡΠΎ Π½Π΅ ΠΏΡΠ΅Π΄ΠΈΠ·Π²ΠΈΠΊΠ° Π½ΠΈΠΊΠ°ΠΊΠ²ΠΈ ΡΡΠ½Π΄Π°ΠΌΠ΅Π½ΡΠ°Π»Π½ΠΈ ΡΠ΅ΡΠΊΠΎΡΠΈΠΈ. ΠΠ²Π° Π±Π΅ΡΠ΅ ΠΎΠ²ΠΎΠ·ΠΌΠΎΠΆΠ΅Π½ΠΎ Π±Π»Π°Π³ΠΎΠ΄Π°ΡΠ΅Π½ΠΈΠ΅ Π½Π° ΡΠ΅Ρ Π½ΠΎΠ»ΠΎΠ³ΠΈΡΠ°ΡΠ° . Π‘ΠΎ ΡΠ°ΡΠΊΠ»ΠΎΠΏΡΠ²Π°ΡΠ΅ ΠΈ Π½Π΅ ΡΠ΅ ΠΏΠΎΡΠ°Π²ΠΈΡΠ° ΠΏΡΠΎΠ±Π»Π΅ΠΌΠΈ (ΠΌΠΎΡΠ°ΡΠ° ΡΠ°Π±ΠΎΡΠ½Π° ΡΡΠ΅Π΄ΠΈΠ½Π° Π΅ Linux β Mageia-7.0). ΠΠ΅ Π΄Π°Π΄Π°ΠΌ ΡΠ°ΠΌΠΎ Π΅Π΄Π½Π° ΡΠΊΡΠΈΠΏΡΠ° Π·Π° ΡΠ°ΡΠΏΠΎΡΠ΅Π΄ΡΠ²Π°ΡΠ΅ Android ΠΠ»Π°ΡΠΊΠΈ ΠΎΠ΄ ΠΊΠΎΠΌΠ°Π½Π΄Π½Π°ΡΠ° Π»ΠΈΠ½ΠΈΡΠ° (sdk-tools-linux-xxxx.zip):
#!/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" ΠΠ½Π° ΡΡΠΎ Π΅ Π½Π°ΡΠ²ΠΏΠ΅ΡΠ°ΡΠ»ΠΈΠ²ΠΎ Π΅ ΡΡΠΎ ΠΎΠΊΠΎΠ»ΠΈΠ½Π°ΡΠ° Π½Π° Androwish Π²ΠΊΠ»ΡΡΡΠ²Π° Π΄Π²Π° ΡΠΎΠ»ΠΊΡΠ²Π°ΡΠΈ, undrowish-xxx ΠΈ vanillawish-xxx, ΠΊΠΎΠΈ ΡΠ΅ ΡΠ΅Π»ΠΎΡΠ½ΠΎ ΠΈΠ΄Π΅Π½ΡΠΈΡΠ½ΠΈ ΠΏΠΎ ΡΠΎΡΡΠ°Π² ΡΠΎ βΠ±Π°Π»Π°Π»Π°ΡΠΊΠΈΡΠ΅β (ΠΏΠ°ΠΊΠ΅ΡΠΈΡΠ΅) Π²ΠΊΠ»ΡΡΠ΅Π½ΠΈ Π²ΠΎ ΡΠ°ΠΌΠΈΠΎΡ Androwish. Π Π°Π·Π»ΠΈΠΊΠ°ΡΠ° ΠΏΠΎΠΌΠ΅ΡΡ 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.
ΠΠΊΠΎ ΠΈΠΌΠ°ΡΠ΅ ΠΏΠΎΠ²ΡΠ·Π°Π½ Π²ΠΈΡΡΠΈΠ½ΡΠΊΠΈ ΡΡΠ΅Π΄ ΠΈΠ»ΠΈ Π΅ΠΌΡΠ»Π°ΡΠΎΡ, ΠΏΠ°ΠΊΠ΅ΡΠΎΡ ΠΌΠΎΠΆΠ΅ Π²Π΅Π΄Π½Π°Ρ Π΄Π° ΡΠ΅ ΠΈΠ½ΡΡΠ°Π»ΠΈΡΠ°.
ΠΠΎ ΠΎΠ²ΠΎΡ ΡΠ»ΡΡΠ°Ρ, Π²ΠΈΡΡΠΈΠ½ΡΠΊΠΈΠΎΡ ΡΡΠ΅Π΄ ΠΌΠΎΡΠ° Π΄Π° Π±ΠΈΠ΄Π΅ Π²ΠΎ ΡΠ΅ΠΆΠΈΠΌ Π·Π° ΠΎΡΡΡΡΠ°Π½ΡΠ²Π°ΡΠ΅ Π³ΡΠ΅ΡΠΊΠΈ.
ΠΠΎ, Π΄Π° ΡΠ΅ Π²ΡΠ°ΡΠΈΠΌΠ΅ Π½Π° ΡΠ°ΠΌΠ°ΡΠ° Π°ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΡΠ°. Π¨ΡΠΎ ΡΡΠ΅Π±Π°ΡΠ΅ Π΄Π° ΡΠ΅ ΡΠΌΠ΅Π½ΠΈ Π²ΠΎ Π½Π΅Π³ΠΎ?
ΠΠΎΡΠΌΠ°Π»Π½ΠΎ, ΠΏΡΠΎΠΌΠ΅Π½ΠΈΡΠ΅ ΠΏΡΠ²Π΅Π½ΡΡΠ²Π΅Π½ΠΎ ΡΠ΅ ΠΏΠΎΠ²ΡΠ·Π°Π½ΠΈ ΡΠΎ Π³ΠΎΠ»Π΅ΠΌΠΈΠ½Π°ΡΠ° Π½Π° Π΅ΠΊΡΠ°Π½ΠΎΡ. ΠΠΎΡΠ°Π² Π΄Π° Π³ΠΎ ΡΠ΅Π΄ΠΈΠ·Π°ΡΠ½ΠΈΡΠ°ΠΌ Π³Π»Π°Π²Π½ΠΈΠΎΡ (ΡΡΠ°ΡΡ ΠΏΡΠΎΠ·ΠΎΡΠ΅Ρ). ΠΠ°ΠΊΠΎ ΡΠ΅Π·ΡΠ»ΡΠ°Ρ Π½Π° ΡΠΎΠ°, Π½Π°ΠΌΠ΅ΡΡΠΎ Π΅Π΄Π΅Π½ ΠΏΡΠΎΠ·ΠΎΡΠ΅Ρ Π½Π° ΠΎΠ±ΠΈΡΠ΅Π½ ΠΊΠΎΠΌΠΏΡΡΡΠ΅Ρ:

Π‘Π΅ ΠΏΠΎΡΠ°Π²ΠΈΡΠ° ΡΡΠΈ ΠΏΡΠΎΠ·ΠΎΡΡΠΈ Android:

ΠΡΠ²ΠΈΠΎΡ ΠΏΡΠΎΠ·ΠΎΡΠ΅Ρ Π΅ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠ²Π΅Π½. ΠΠΎΠ½Π²Π΅Π½ΡΠΈΠΎΠ½Π°Π»Π½ΠΎ, ΡΠΎΡ Π΅ ΠΏΠΎΠ΄Π΅Π»Π΅Π½ Π½Π° Π½Π΅ΠΊΠΎΠ»ΠΊΡ Π΄Π΅Π»ΠΎΠ²ΠΈ. ΠΡΠ²ΠΈΠΎΡ Π΄Π΅Π», ΠΊΠΎΡ ΡΠ΅ Π½Π°ΠΎΡΠ° Π½Π° Π²ΡΠ²ΠΎΡ, Π³ΠΎ ΡΠΎΠ΄ΡΠΆΠΈ ΠΈΠΌΠ΅ΡΠΎ Π½Π° Π°Π»Π°ΡΠΊΠ°ΡΠ° ΠΈ Π½Π΅Π³ΠΎΠ²ΠΎΡΠΎ Π»ΠΎΠ³ΠΎ.
Π‘Π»Π΅Π΄ΡΠ²Π° Π»ΠΎΠ³ΠΎΡΠΎ Π½Π° ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΠΎΡ, ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠ²Π½ΠΈΠΎΡ Π»ΠΈΡΡ ΠΈ ΡΡΠΈΡΠ΅ ΠΊΠΎΠΏΡΠΈΡΠ° ΠΊΠΎΠΈ ΡΠ° ΠΊΠΎΠΌΠΏΠ»Π΅ΡΠΈΡΠ°Π°Ρ ΡΡΡΠ°Π½ΠΈΡΠ°ΡΠ°.
Π‘ΡΡΠ°Π½ΠΈΡΠ°ΡΠ° Π΅ Π½Π°ΠΏΠΈΡΠ°Π½Π° ΡΠΎ ΠΏΠΎΠΌΠΎΡ Π½Π° ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠ°ΡΠ° ΠΏΠ»Π°ΡΠ½ΠΎ. Π‘ΡΡΠ°Π½ΠΈΡΠ°ΡΠ° ΠΊΠΎΡΠΈΡΡΠΈ Π΄Π²Π° Π²ΠΈΠ΄Π° ΠΊΠΎΠΏΡΠΈΡΠ°: Π΅Π΄Π½ΠΎΡΠΎ Π²ΠΎ ΡΠΎΡΠΌΠ° Π½Π° ΠΏΡΠΎΡΠΈΡΠ΅Π½ ΠΏΡΠ°Π²ΠΎΠ°Π³ΠΎΠ»Π½ΠΈΠΊ (Π²ΠΎ ΡΡΠ΅Π΄ΠΈΠ½Π°ΡΠ°), Π° Π΄ΡΡΠ³ΠΈΡΠ΅ Π΄Π²Π΅ Π²ΠΎ ΡΠΎΡΠΌΠ° Π½Π° ΠΏΡΠ°Π²ΠΎΠ°Π³ΠΎΠ»Π½ΠΈΠΊ ΡΠΎ Π·Π°ΠΎΠ±Π»Π΅Π½ΠΈ Π°Π³Π»ΠΈ. Π‘Π΅ ΠΊΠΎΡΠΈΡΡΠ΅ΡΠ΅ Π±Π°Π»Π°Π»Π°ΡΠΊΠ° Π·Π° ΡΠΎΠ·Π΄Π°Π²Π°ΡΠ΅ ΠΊΠΎΠΏΡΠΈΡΠ° ΡΠΎ Π·Π°ΠΎΠ±Π»Π΅Π½ΠΈ Π°Π³Π»ΠΈ . ΠΠΈΡΠ½ΠΎ, ΠΎΠ²Π°Π° Π±Π°Π»Π°Π»Π°ΡΠΊΠ° ΠΌΠΈ ΠΎΡΡΠ°Π²ΠΈ ΠΌΠ½ΠΎΠ³Ρ Π΄ΠΎΠ±Π°Ρ Π²ΠΏΠ΅ΡΠ°ΡΠΎΠΊ. ΠΡΠΈΡΠΎΠ΄Π½ΠΎ, ΠΊΠΎΠ³Π° ΡΠ΅ ΡΠ°Π±ΠΎΡΠΈ ΡΠΎ ΠΏΠ»Π°ΡΠ½ΠΎ, Π³Π΅ΠΎΠΌΠ΅ΡΡΠΈΡΠ°ΡΠ° Π³ΠΎ Π·Π°Π·Π΅ΠΌΠ° Π»Π°Π²ΠΎΠ²ΡΠΊΠΈΠΎΡ Π΄Π΅Π» ΠΎΠ΄ ΠΊΠΎΠ΄ΠΎΡ. ΠΠΎΠ΄ΠΎΠ»Ρ Π΅ ΡΠΊΡΠΈΠΏΡΠ°ΡΠ° create_titul_page.tcl Π·Π° ΠΊΡΠ΅ΠΈΡΠ°ΡΠ΅ Π½Π° ΠΏΡΠ²Π°ΡΠ° ΡΡΡΠ°Π½ΠΈΡΠ° ΠΎΠ΄ Π°ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΡΠ°ΡΠ°. Π‘Π΅ΠΊΠΎΡ ΠΌΠΎΠΆΠ΅ Π΄Π° Π³ΠΎ ΡΡΠ΅Π΄ΠΈ Π·Π° Π΄Π° ΠΎΠ΄Π³ΠΎΠ²Π°ΡΠ° Π½Π° ΡΠΎΠΏΡΡΠ²Π΅Π½Π°ΡΠ° Π²ΠΈΠ·ΠΈΡΠ°.
Π‘ΠΊΡΠΈΠΏΡΠ° 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: support@lissi.runn"
-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: support@lissi.runn"
-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: support@lissi.runn"
-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: support@lissi.runn"
-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
}
. . .
}ΠΡΠ΅Π»ΠΈΡΡΡΠ²Π°ΡΠΎΡ Π΅ Π²ΠΊΠ»ΡΡΠ΅Π½ Android ΡΠ΅ Π½Π°ΡΠ΅ΠΊΡΠ²Π° Π²Π°ΠΊΠ°:
borg activity android.intent.action.VIEW <URL> text/html
ΠΠΎΡΡΠΎΠΈ ΠΌΠ°Π»Π° ΠΎΡΠΎΠ±Π΅Π½ΠΎΡΡ ΠΊΠΎΠ³Π° ΡΠ΅ Π΄ΠΎΠ΄Π°Π²Π° Π½ΠΎΠ² ΠΏΠΎΡΠΏΠΈΡΠ½ΠΈΠΊ Π½Π° ΠΏΡΠ΅ΡΡ ΠΎΠ΄Π½ΠΎ ΠΏΠΎΡΠΏΠΈΡΠ°Π½ Π΄ΠΎΠΊΡΠΌΠ΅Π½Ρ. Π‘Π΅ΡΡΠΈΡΠΈΠΊΠ°ΡΠΎΡ Π½Π° Π½ΠΎΠ²ΠΈΠΎΡ ΠΏΠΎΡΠΏΠΈΡΠ½ΠΈΠΊ (ΠΈΠ»ΠΈ ΠΏΠΎΠ΄ΠΎΠ±ΡΠΎ, Π΄ΡΡΠΈ ΠΈ ΠΊΠΎΠ½ΡΠ΅ΡΠ½Π΅Ρ PKCS#12 ΡΠΎ ΡΠ΅ΡΡΠΈΡΠΈΠΊΠ°Ρ ΠΈ ΠΏΡΠΈΠ²Π°ΡΠ΅Π½ ΠΊΠ»ΡΡ) ΠΌΠΎΡΠ° ΠΎΠ΄Π½Π°ΠΏΡΠ΅Π΄ Π΄Π° ΡΠ΅ ΠΈΠ·Π±Π΅ΡΠ΅ Π½Π° ΡΡΡΠ°Π½ΠΈΡΠ°ΡΠ° βΠΠΎΡΠΏΠΈΡΠΈ Π΄ΠΎΠΊΡΠΌΠ΅Π½Ρβ ΠΈΠ»ΠΈ βΠ Π°Π±ΠΎΡΠ° ΡΠΎ PKCS12/PFXβ, Π½Π° ΠΊΠΎΡΠ° Π°Π»Π°ΡΠΊΠ°ΡΠ° ΡΠ΅ Π²Π΅ ΠΏΠΎΡΡΠ΅ΡΠΈ :

ΠΠ° Π²ΡΠ΅ΠΌΠ΅ Π½Π° Π΄ΠΎΠ»Π³ΠΎΡΡΠ°ΡΠ½ΠΈΡΠ΅ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ, ΡΠ°ΡΠΎΠ²Π½ΠΈΠΊΠΎΡ ΡΠ΅ ΠΏΡΠΎΠ΄ΠΎΠ»ΠΆΠΈ Π΄Π° ΠΎΡΡΡΠΊΡΠ²Π°:

ΠΡΡΠ°Π½ΡΠ²Π° ΡΠ°ΠΌΠΎ Π΄Π° ΠΊΠ°ΠΆΠ΅ΡΠ΅ ΠΎΠ΄ ΠΊΠ°Π΄Π΅ Π΄Π° Π³ΠΈ ΠΏΡΠ΅Π·Π΅ΠΌΠ΅ΡΠ΅ Π΄ΠΈΡΡΡΠΈΠ±ΡΡΠΈΠΈΡΠ΅ ΠΈ Π΄Π° Π²ΠΈ ΡΠ° ΡΠ΅ΡΡΠΈΡΠ°ΠΌΠ΅ ΠΏΡΠ΅ΡΡΡΠΎΡΠ½Π°ΡΠ° ΠΠΎΠ²Π° Π³ΠΎΠ΄ΠΈΠ½Π° ΠΈ Π΄Π° ΠΈΠΌ ΠΏΠΎΡΠ°ΠΊΠ°ΠΌΠ΅ Π½Π° ΡΠΈΡΠ΅ ΡΠ΅ Π½Π°ΡΠ΄ΠΎΠ±ΡΠΎ Π²ΠΎ 2020 Π³ΠΎΠ΄ΠΈΠ½Π°!
ΠΠ½Π°ΡΠΈ, Π΄ΠΈΡΡΡΠΈΠ±ΡΡΠΈΠΈ Π·Π° Linux, OS X, Windows ΠΈ Android:
ΠΠ·Π²ΠΎΡ: www.habr.com


