ΠšΡ€ΠΈΠΏΡ‚ΠΎΠ³Ρ€Π°Ρ„ΡΠΊΠ° Ρ€Π°Π±ΠΎΡ‚Π½Π° станица Π±Π°Π·ΠΈΡ€Π°Π½Π° Π½Π° стандарди Π·Π° јавСн ΠΊΠ»ΡƒΡ‡ Π·Π° ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π° Android

ΠšΡ€ΠΈΠΏΡ‚ΠΎΠ³Ρ€Π°Ρ„ΡΠΊΠ° Ρ€Π°Π±ΠΎΡ‚Π½Π° станица Π±Π°Π·ΠΈΡ€Π°Π½Π° Π½Π° стандарди Π·Π° јавСн ΠΊΠ»ΡƒΡ‡ Π·Π° ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π° AndroidΠ’Ρ€Π΅ΠΌΠ΅ Π΅ Π΄Π° сС дСмонстрира ΠΊΠ°ΠΊΠΎ криптографска Ρ€Π°Π±ΠΎΡ‚Π½Π° станица заснована Π½Π° стандарди Π·Π° јавСн ΠΊΠ»ΡƒΡ‡ криптоармпкцс Ρ€Π°Π±ΠΎΡ‚ΠΈ Π½Π° Π΅Π΄Π½Π° ΠΎΠ΄ ΠΌΠΎΠ±ΠΈΠ»Π½ΠΈΡ‚Π΅ ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠΈ, ΠΈΠΌΠ΅Π½ΠΎ Android.

ΠšΠΎΠ½Ρ†Π΅ΠΏΡ‚ΠΎΡ‚ ΡˆΡ‚ΠΎ бСшС поставСн ΠΏΡ€ΠΈ Ρ€Π°Π·Π²ΠΈΠ²Π°ΡšΠ΅Ρ‚ΠΎ Π½Π° Π°Π»Π°Ρ‚ΠΊΠ°Ρ‚Π° cryptoarmpkcs Π΅ Π΄Π΅ΠΊΠ° корисникот Ρ‚Ρ€Π΅Π±Π° Π΄Π° Π΄ΠΎΠΆΠΈΠ²Π΅Π΅ ΠΌΠΈΠ½ΠΈΠΌΡƒΠΌ Π½Π΅ΠΏΡ€ΠΈΡ˜Π°Ρ‚Π½ΠΎΡΡ‚ΠΈ ΠΊΠΎΠ³Π° ΠΊΡ€Π΅ΠΈΡ€Π° ΠΈ ΠΏΠΎΡ‚Π²Ρ€Π΄ΡƒΠ²Π° СлСктронски потпис. Π—Π°Ρ‚ΠΎΠ° ΠΏΡ€Π΅Π΄Π»Π°Π³Π°ΠΌΠ΅ ΠΊΠΎΡ€ΠΈΡΡ‚Π΅ΡšΠ΅ Π½Π° криптографски Ρ‚ΠΎΠΊΠ΅Π½ΠΈ ΠΊΠ°ΠΊΠΎ ΠΊΠ»ΡƒΡ‡Π΅Π½ носач Π·Π° Π»ΠΈΡ‡Π΅Π½ сСртификат PKCS # 11 ΠΈ/ΠΈΠ»ΠΈ Π±Π΅Π·Π±Π΅Π΄Π½ΠΈ ΠΊΠΎΠ½Ρ‚Π΅Ρ˜Π½Π΅Ρ€ΠΈ PKCS # 12. ΠœΠΎΡ€Π° Π΄Π° сС ΠΊΠ°ΠΆΠ΅ Π΄Π΅ΠΊΠ° ΡƒΠΏΠΎΡ‚Ρ€Π΅Π±Π°Ρ‚Π° Π½Π° 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

ΠŸΡ€ΠΈΡΡƒΡΡ‚Π²ΠΎΡ‚ΠΎ Π½Π° ΠΎΠ²ΠΈΠ΅ Π΄Π²Π΅ Π°Π»Π°Ρ‚ΠΊΠΈ Π²ΠΈ ΠΎΠ²ΠΎΠ·ΠΌΠΎΠΆΡƒΠ²Π° Π΄Π° Ρ€Π°Π·Π²ΠΈΠ΅Ρ‚Π΅ Π°ΠΏΠ»ΠΈΠΊΠ°Ρ†ΠΈΡ˜Π° Π±Π΅Π· Π΄Π° користитС Android-ΠΈ Π½Π΅Π³ΠΎΠ²ΠΈΠΎΡ‚ Π΅ΠΌΡƒΠ»Π°Ρ‚ΠΎΡ€ со максимална точност Π½Π°Π»ΠΈΠΊΡƒΠ²Π° Π½Π° вистински ΡƒΡ€Π΅Π΄. ΠŸΡ€Π²ΠΎ ΠΈ најваТно, ΠΎΠ²Π° Π΅, сСкако, undroidwish-xxx.

ΠŸΡ€ΠΈΠ»Π°Π³ΠΎΠ΄Π΅Π½ ΠΏΠ°ΠΊΠ΅Ρ‚ Π·Π° Android Π‘Π΅ Π³Ρ€Π°Π΄ΠΈ Π²ΠΎ AWSDK ΠΎΠΊΠΎΠ»ΠΈΠ½Π°. Π”Ρ€Π²ΠΎΡ‚ΠΎ Π½Π° Π²Π°ΡˆΠΈΠΎΡ‚ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ Ρ‚Ρ€Π΅Π±Π° Π΄Π° сС прСмСсти Π²ΠΎ ΠΏΠ°ΠΏΠΊΠ°Ρ‚Π° ~/AWSDK/assets/app. Π“Π»Π°Π²Π½ΠΈΠΎΡ‚ ΠΌΠΎΠ΄ΡƒΠ» Π½Π° Π²Π°ΡˆΠΈΠΎΡ‚ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ Ρ‚Ρ€Π΅Π±Π° Π΄Π° сС ΠΏΡ€Π΅ΠΈΠΌΠ΅Π½ΡƒΠ²Π° Π²ΠΎ main.tcl. Ако користитС Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»Π½ΠΈ балалајки со Π΄ΠΈΠ½Π°ΠΌΠΈΡ‡ΠΊΠΈ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ, Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈΡ‚Π΅ Ρ‚Ρ€Π΅Π±Π° Π΄Π° сС смСстат Π²ΠΎ ΠΏΠ°ΠΏΠΊΠ°Ρ‚Π° ~/AWSDK/libs/x86 Π·Π° Π΅ΠΌΡƒΠ»Π°Ρ‚ΠΎΡ€ΠΎΡ‚ ΠΈ ΠΏΠ°ΠΏΠΊΠ°Ρ‚Π° ~/AWSDK/libs/armeabi Π·Π° вистинскиот ΡƒΡ€Π΅Π΄.

ПослС ΠΎΠ²Π°, само ΠΈΠ·Π²Ρ€ΡˆΠ΅Ρ‚Π΅ ја ΠΊΠΎΠΌΠ°Π½Π΄Π°Ρ‚Π°:

$wish ~/AWSDK/tools/bones

ΠΈ слСдСтС Π³ΠΈ Π½Π΅Ρ˜Π·ΠΈΠ½ΠΈΡ‚Π΅ упатства:

ΠšΡ€ΠΈΠΏΡ‚ΠΎΠ³Ρ€Π°Ρ„ΡΠΊΠ° Ρ€Π°Π±ΠΎΡ‚Π½Π° станица Π±Π°Π·ΠΈΡ€Π°Π½Π° Π½Π° стандарди Π·Π° јавСн ΠΊΠ»ΡƒΡ‡ Π·Π° ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π° Android

Π‘ΠΊΠ»ΠΎΠΏΠ΅Π½ΠΈΠΎΡ‚ apk ΠΏΠ°ΠΊΠ΅Ρ‚ ќС сС Π½Π°ΠΎΡ“Π° Π²ΠΎ ΠΏΠ°ΠΏΠΊΠ°Ρ‚Π° ~/AWSDK/build/outputs/apk.

Ако ΠΈΠΌΠ°Ρ‚Π΅ ΠΏΠΎΠ²Ρ€Π·Π°Π½ вистински ΡƒΡ€Π΅Π΄ ΠΈΠ»ΠΈ Π΅ΠΌΡƒΠ»Π°Ρ‚ΠΎΡ€, ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΡ‚ ΠΌΠΎΠΆΠ΅ вСднаш Π΄Π° сС инсталира.
Π’ΠΎ овој ΡΠ»ΡƒΡ‡Π°Ρ˜, вистинскиот ΡƒΡ€Π΅Π΄ ΠΌΠΎΡ€Π° Π΄Π° Π±ΠΈΠ΄Π΅ Π²ΠΎ Ρ€Π΅ΠΆΠΈΠΌ Π·Π° ΠΎΡ‚ΡΡ‚Ρ€Π°Π½ΡƒΠ²Π°ΡšΠ΅ Π³Ρ€Π΅ΡˆΠΊΠΈ.

Но, Π΄Π° сС Π²Ρ€Π°Ρ‚ΠΈΠΌΠ΅ Π½Π° самата Π°ΠΏΠ»ΠΈΠΊΠ°Ρ†ΠΈΡ˜Π°. Π¨Ρ‚ΠΎ Ρ‚Ρ€Π΅Π±Π°ΡˆΠ΅ Π΄Π° сС смСни Π²ΠΎ Π½Π΅Π³ΠΎ?

Нормално, ΠΏΡ€ΠΎΠΌΠ΅Π½ΠΈΡ‚Π΅ првСнствСно сС ΠΏΠΎΠ²Ρ€Π·Π°Π½ΠΈ со Π³ΠΎΠ»Π΅ΠΌΠΈΠ½Π°Ρ‚Π° Π½Π° Π΅ΠΊΡ€Π°Π½ΠΎΡ‚. ΠœΠΎΡ€Π°Π² Π΄Π° Π³ΠΎ Ρ€Π΅Π΄ΠΈΠ·Π°Ρ˜Π½ΠΈΡ€Π°ΠΌ Π³Π»Π°Π²Π½ΠΈΠΎΡ‚ (старт ΠΏΡ€ΠΎΠ·ΠΎΡ€Π΅Ρ†). Како Ρ€Π΅Π·ΡƒΠ»Ρ‚Π°Ρ‚ Π½Π° Ρ‚ΠΎΠ°, намСсто Π΅Π΄Π΅Π½ ΠΏΡ€ΠΎΠ·ΠΎΡ€Π΅Ρ† Π½Π° ΠΎΠ±ΠΈΡ‡Π΅Π½ ΠΊΠΎΠΌΠΏΡ˜ΡƒΡ‚Π΅Ρ€:

ΠšΡ€ΠΈΠΏΡ‚ΠΎΠ³Ρ€Π°Ρ„ΡΠΊΠ° Ρ€Π°Π±ΠΎΡ‚Π½Π° станица Π±Π°Π·ΠΈΡ€Π°Π½Π° Π½Π° стандарди Π·Π° јавСн ΠΊΠ»ΡƒΡ‡ Π·Π° ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π° Android

Π‘Π΅ појавија Ρ‚Ρ€ΠΈ ΠΏΡ€ΠΎΠ·ΠΎΡ€Ρ†ΠΈ Android:

ΠšΡ€ΠΈΠΏΡ‚ΠΎΠ³Ρ€Π°Ρ„ΡΠΊΠ° Ρ€Π°Π±ΠΎΡ‚Π½Π° станица Π±Π°Π·ΠΈΡ€Π°Π½Π° Π½Π° стандарди Π·Π° јавСн ΠΊΠ»ΡƒΡ‡ Π·Π° ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π° Android

ΠŸΡ€Π²ΠΈΠΎΡ‚ ΠΏΡ€ΠΎΠ·ΠΎΡ€Π΅Ρ† Π΅ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΈΠ²Π΅Π½. ΠšΠΎΠ½Π²Π΅Π½Ρ†ΠΈΠΎΠ½Π°Π»Π½ΠΎ, Ρ‚ΠΎΡ˜ Π΅ ΠΏΠΎΠ΄Π΅Π»Π΅Π½ Π½Π° Π½Π΅ΠΊΠΎΠ»ΠΊΡƒ Π΄Π΅Π»ΠΎΠ²ΠΈ. ΠŸΡ€Π²ΠΈΠΎΡ‚ Π΄Π΅Π», кој сС Π½Π°ΠΎΡ“Π° Π½Π° Π²Ρ€Π²ΠΎΡ‚, Π³ΠΎ содрТи ΠΈΠΌΠ΅Ρ‚ΠΎ Π½Π° Π°Π»Π°Ρ‚ΠΊΠ°Ρ‚Π° ΠΈ Π½Π΅Π³ΠΎΠ²ΠΎΡ‚ΠΎ Π»ΠΎΠ³ΠΎ.

Π‘Π»Π΅Π΄ΡƒΠ²Π° Π»ΠΎΠ³ΠΎΡ‚ΠΎ Π½Π° ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΠΎΡ‚, ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΈΠ²Π½ΠΈΠΎΡ‚ лист ΠΈ Ρ‚Ρ€ΠΈΡ‚Π΅ ΠΊΠΎΠΏΡ‡ΠΈΡšΠ° ΠΊΠΎΠΈ ја ΠΊΠΎΠΌΠΏΠ»Π΅Ρ‚ΠΈΡ€Π°Π°Ρ‚ страницата.
Π‘Ρ‚Ρ€Π°Π½ΠΈΡ†Π°Ρ‚Π° Π΅ напишана со помош Π½Π° ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π°Ρ‚Π° ΠΏΠ»Π°Ρ‚Π½ΠΎ. Π‘Ρ‚Ρ€Π°Π½ΠΈΡ†Π°Ρ‚Π° користи Π΄Π²Π° Π²ΠΈΠ΄Π° ΠΊΠΎΠΏΡ‡ΠΈΡšΠ°: Π΅Π΄Π½ΠΎΡ‚ΠΎ Π²ΠΎ Ρ„ΠΎΡ€ΠΌΠ° Π½Π° ΠΏΡ€ΠΎΡ•ΠΈΡ€Π΅Π½ ΠΏΡ€Π°Π²ΠΎΠ°Π³ΠΎΠ»Π½ΠΈΠΊ (Π²ΠΎ срСдината), Π° Π΄Ρ€ΡƒΠ³ΠΈΡ‚Π΅ Π΄Π²Π΅ Π²ΠΎ Ρ„ΠΎΡ€ΠΌΠ° Π½Π° ΠΏΡ€Π°Π²ΠΎΠ°Π³ΠΎΠ»Π½ΠΈΠΊ со Π·Π°ΠΎΠ±Π»Π΅Π½ΠΈ Π°Π³Π»ΠΈ. Π‘Π΅ ΠΊΠΎΡ€ΠΈΡΡ‚Π΅ΡˆΠ΅ балалајка Π·Π° создавањС ΠΊΠΎΠΏΡ‡ΠΈΡšΠ° со Π·Π°ΠΎΠ±Π»Π΅Π½ΠΈ Π°Π³Π»ΠΈ tkpath. Π›ΠΈΡ‡Π½ΠΎ, ΠΎΠ²Π°Π° балалајка ΠΌΠΈ остави ΠΌΠ½ΠΎΠ³Ρƒ Π΄ΠΎΠ±Π°Ρ€ Π²ΠΏΠ΅Ρ‡Π°Ρ‚ΠΎΠΊ. ΠŸΡ€ΠΈΡ€ΠΎΠ΄Π½ΠΎ, ΠΊΠΎΠ³Π° сС Ρ€Π°Π±ΠΎΡ‚ΠΈ со ΠΏΠ»Π°Ρ‚Π½ΠΎ, Π³Π΅ΠΎΠΌΠ΅Ρ‚Ρ€ΠΈΡ˜Π°Ρ‚Π° Π³ΠΎ Π·Π°Π·Π΅ΠΌΠ° лавовскиот Π΄Π΅Π» ΠΎΠ΄ ΠΊΠΎΠ΄ΠΎΡ‚. ΠŸΠΎΠ΄ΠΎΠ»Ρƒ Π΅ скриптата 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 

Оваа скрипта исто Ρ‚Π°ΠΊΠ° ΠΏΠΎΠ΄Π³ΠΎΡ‚Π²ΡƒΠ²Π° ΠΏΡ€Π°Π·Π½ΠΈ мСста Π·Π° сСкоС функциско ΠΊΠΎΠΏΡ‡Π΅:

ΠšΡ€ΠΈΠΏΡ‚ΠΎΠ³Ρ€Π°Ρ„ΡΠΊΠ° Ρ€Π°Π±ΠΎΡ‚Π½Π° станица Π±Π°Π·ΠΈΡ€Π°Π½Π° Π½Π° стандарди Π·Π° јавСн ΠΊΠ»ΡƒΡ‡ Π·Π° ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π° Android

ΠŸΡ€Π°Π·Π½ΠΈΠ½ΠΈΡ‚Π΅ сС ΠΏΠΎΠΏΠΎΠ»Π½Π΅Ρ‚ΠΈ со класични ΠΈ тСматски Π³Ρ€Π°Ρ„ΠΈΡ‡ΠΊΠΈ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΠΈ (Ρ€Π°ΠΌΠΊΠ° Π½Π° Π΅Ρ‚ΠΈΠΊΠ΅Ρ‚Π°, ΠΊΠΎΠΏΡ‡Π΅ ΠΈΡ‚Π½.). Π•Π΄Π½ΠΎ ΠΎΠ΄ ΠΎΠ²ΠΈΠ΅ ΠΏΠΎΠΏΠΎΠ»Π½Π΅Ρ‚ΠΈ ΠΏΡ€Π°Π·Π½ΠΈ мСста ΠΌΠΎΠΆΠ΅ Π΄Π° сС Π²ΠΈΠ΄ΠΈ Π½Π° ΠΏΡ€Π²Π°Ρ‚Π° слика ΠΎΠ΄ Π΅ΠΊΡ€Π°Π½ΠΎΡ‚ дСсно. Π‘ΠΈΠ΄Π΅Ρ˜ΡœΠΈ Π²ΠΎ ΠΏΡ€Π²Π°Ρ‚Π° Ρ„Π°Π·Π° сС фокусиравмС Π½Π° Ρ€Π°Π±ΠΎΡ‚Π° со ΠΊΠΎΠ½Ρ‚Π΅Ρ˜Π½Π΅Ρ€ΠΎΡ‚ PKCS#12, ΠΊΠΎΠ΄ΠΎΡ‚ сС ΠΊΠΎΡ€ΠΈΡΡ‚Π΅ΡˆΠ΅ рСчиси Π½Π΅ΠΏΡ€ΠΎΠΌΠ΅Π½Π΅Ρ‚ Π·Π° cryptoarmpkcs-A. Π’ΠΎ ΠΎΠ²Π°Π° Ρ„Π°Π·Π° сС спровСдуваат слСднитС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ:

  • ΠΏΠΎΡ‚ΠΏΠΈΡˆΠ΅Ρ‚Π΅ Π³ΠΎ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ΠΎΡ‚ (Cades-BES, CAdes-T, CAdes-XLT1);
  • Π Π°Π±ΠΎΡ‚ΠΈΠΌΠ΅ со СлСктронски потпис (PKCS7), Π²ΠΊΠ»ΡƒΡ‡ΡƒΠ²Π°Ρ˜ΡœΠΈ додавањС потписник;
  • ΠŸΡ€ΠΈΠΊΠ°ΠΆΠΈ сСртификати/Π±Π°Ρ€Π°ΡšΠ° Π·Π° сСртификати:

    ΠšΡ€ΠΈΠΏΡ‚ΠΎΠ³Ρ€Π°Ρ„ΡΠΊΠ° Ρ€Π°Π±ΠΎΡ‚Π½Π° станица Π±Π°Π·ΠΈΡ€Π°Π½Π° Π½Π° стандарди Π·Π° јавСн ΠΊΠ»ΡƒΡ‡ Π·Π° ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π° Android

  • НиС Ρ€Π°Π±ΠΎΡ‚ΠΈΠΌΠ΅ со PKCS12/PFX;
  • Π·Π° ΠΊΠΎΠΌΡƒΠ½Π°Π»Π½ΠΈΡ‚Π΅ услуги/Дистрибуции:

    ΠšΡ€ΠΈΠΏΡ‚ΠΎΠ³Ρ€Π°Ρ„ΡΠΊΠ° Ρ€Π°Π±ΠΎΡ‚Π½Π° станица Π±Π°Π·ΠΈΡ€Π°Π½Π° Π½Π° стандарди Π·Π° јавСн ΠΊΠ»ΡƒΡ‡ Π·Π° ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π° Android

ΠžΡΡ‚Π°Π½Π°Ρ‚ΠΈΡ‚Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ сС повСќС ΠΏΠΎΠ²Ρ€Π·Π°Π½ΠΈ со Ρ‚ΠΎΠΊΠ΅Π½ΠΈΡ‚Π΅ PKCS#11. Нивното ΠΏΡ€Π΅Π½Π΅ΡΡƒΠ²Π°ΡšΠ΅ Π΅ ΠΎΠ΄Π»ΠΎΠΆΠ΅Π½ΠΎ Π·Π° Нова Π³ΠΎΠ΄ΠΈΠ½Π°. ΠŸΠ»Π°Π½ΠΈΡ€Π°Π½ΠΎ Π΅ Π΄Π° сС ΠΏΠΎΠ²Ρ€Π·Π΅ софтвСрски Ρ‚ΠΎΠΊΠ΅Π½ ΠΈ Π΄Π° сС ΠΏΠΎΠ²Ρ€Π·Π΅ со Ρ‚ΠΎΠΊΠ΅Π½ ΠΎΠ±Π»Π°ΠΊ.

Од Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»Π½Π° Π³Π»Π΅Π΄Π½Π° Ρ‚ΠΎΡ‡ΠΊΠ°, скоро сè Π΅ слично Π½Π° Π°Π»Π°Ρ‚ΠΊΠ°Ρ‚Π° cryptoarmpkcs. Но, ΠΏΠΎΡΡ‚ΠΎΡ˜Π°Ρ‚ Π½Π΅ΠΊΠΎΠΈ Ρ€Π°Π·Π»ΠΈΠΊΠΈ. На ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΏΠΎ ΠΏΠΎΡ‚ΠΏΠΈΡˆΡƒΠ²Π°ΡšΠ΅Ρ‚ΠΎ Π½Π° Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ΠΎΡ‚, ΠΊΠΎΠΌΡƒΠ½Π°Π»Π½ΠΎΡ‚ΠΎ ΠΏΡ€Π΅Ρ‚ΠΏΡ€ΠΈΡ˜Π°Ρ‚ΠΈΠ΅ ΠΏΡ€Π°ΡˆΡƒΠ²Π° Π΄Π°Π»ΠΈ потписот ќС Π±ΠΈΠ΄Π΅ ΠΏΠΎΡ‚Π²Ρ€Π΄Π΅Π½ Π½Π° Π²Π΅Π±-страницата Π½Π° Π”Ρ€ΠΆΠ°Π²Π½ΠΈΡ‚Π΅ слуТби:

ΠšΡ€ΠΈΠΏΡ‚ΠΎΠ³Ρ€Π°Ρ„ΡΠΊΠ° Ρ€Π°Π±ΠΎΡ‚Π½Π° станица Π±Π°Π·ΠΈΡ€Π°Π½Π° Π½Π° стандарди Π·Π° јавСн ΠΊΠ»ΡƒΡ‡ Π·Π° ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π° Android
Кога ќС ΠΊΠ»ΠΈΠΊΠ½Π΅Ρ‚Π΅ Π½Π° ΠΊΠΎΠΏΡ‡Π΅Ρ‚ΠΎ β€žΠ”Π°β€œ, прСлистувачот ќС сС Π²Ρ‡ΠΈΡ‚Π° со страница Π·Π° ΠΏΠΎΡ‚Π²Ρ€Π΄ΡƒΠ²Π°ΡšΠ΅ Π½Π° потписот Π½Π° Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ΠΈΡ‚Π΅ ΠΈ сСртификатитС. Π’Π΅Π΄Π½Π°Ρˆ Π΄Π° ΠΊΠ°ΠΆΠ΅ΠΌΠ΅ Π΄Π΅ΠΊΠ° ΠΎΠ²Π°Π° страница Π½Π΅ Π΅ навистина Π΄ΠΈΠ·Π°Ρ˜Π½ΠΈΡ€Π°Π½Π° Π·Π° Π΅ΠΊΡ€Π°Π½ Π½Π° ΠΏΠ°ΠΌΠ΅Ρ‚Π΅Π½ Ρ‚Π΅Π»Π΅Ρ„ΠΎΠ½. Ова ќС Π±ΠΈΠ΄Π΅ Π·Π°Π±Π΅Π»Π΅ΠΆΠ»ΠΈΠ²ΠΎ ΠΏΡ€ΠΈ ΠΈΠ·Π±ΠΎΡ€ΠΎΡ‚ Π½Π° потпис ΠΈ, Π°ΠΊΠΎ потписот Π΅ ΠΎΠ΄Π²ΠΎΠ΅Π½, Π΄Π°Ρ‚ΠΎΡ‚Π΅ΠΊΠ°Ρ‚Π° со Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ΠΎΡ‚. Но, Π°ΠΊΠΎ сè Π΅ Π²ΠΎ Ρ€Π΅Π΄, Ρ‚ΠΎΠ³Π°Ρˆ ќС Π΄ΠΎΠ±ΠΈΠ΅ΠΌΠ΅ ΠΏΠΎΠ·ΠΈΡ‚ΠΈΠ²Π΅Π½ Ρ€Π΅Π·ΡƒΠ»Ρ‚Π°Ρ‚:

ΠšΡ€ΠΈΠΏΡ‚ΠΎΠ³Ρ€Π°Ρ„ΡΠΊΠ° Ρ€Π°Π±ΠΎΡ‚Π½Π° станица Π±Π°Π·ΠΈΡ€Π°Π½Π° Π½Π° стандарди Π·Π° јавСн ΠΊΠ»ΡƒΡ‡ Π·Π° ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π° Android

Π’Ρ€Π΅Π±Π° Π΄Π° сС ΠΈΠΌΠ° Π½Π° ΡƒΠΌ Π΄Π΅ΠΊΠ° ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ°Ρ‚Π° ΠΈ Π½Π° потписот ΠΈ Π½Π° сСртификатот Π½Π° Π²Π΅Π±-страницата Π½Π° Π΄Ρ€ΠΆΠ°Π²Π½ΠΈΡ‚Π΅ слуТби ΠΈΠΌΠ° смисла само Π°ΠΊΠΎ сСртификатот Π΅ ΠΏΡ€ΠΈΠΌΠ΅Π½ Π²ΠΎ Π°ΠΊΡ€Π΅Π΄ΠΈΡ‚ΠΈΡ€Π°Π½ Ρ†Π΅Π½Ρ‚Π°Ρ€ Π·Π° ΡΠ΅Ρ€Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΡ˜Π° (Π¦Π΅Π½Ρ‚Π°Ρ€ Π·Π° ΡΠ΅Ρ€Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΡ˜Π°). Π’ΠΎ спротивно, потписот сСкогаш ќС Π±ΠΈΠ΄Π΅ Π½Π΅Π²Π°ΠΆΠ΅Ρ‡ΠΊΠΈ.

Π—Π° Π΄Π° Π³ΠΎ ΠΏΠΎΠ²ΠΈΠΊΠ°ΠΌ прСлистувачот, ΠΌΠΎΡ€Π°Π² Π΄Π° Π΄ΠΎΠ΄Π°Π΄Π°ΠΌ Π½Π΅ΠΊΠΎΠ»ΠΊΡƒ Π»ΠΈΠ½ΠΈΠΈ Π²ΠΎ ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π°Ρ‚Π° 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β€œ, Π½Π° која Π°Π»Π°Ρ‚ΠΊΠ°Ρ‚Π° ќС Π²Π΅ потсСти :

ΠšΡ€ΠΈΠΏΡ‚ΠΎΠ³Ρ€Π°Ρ„ΡΠΊΠ° Ρ€Π°Π±ΠΎΡ‚Π½Π° станица Π±Π°Π·ΠΈΡ€Π°Π½Π° Π½Π° стандарди Π·Π° јавСн ΠΊΠ»ΡƒΡ‡ Π·Π° ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π° Android
Π—Π° Π²Ρ€Π΅ΠΌΠ΅ Π½Π° Π΄ΠΎΠ»Π³ΠΎΡ‚Ρ€Π°Ρ˜Π½ΠΈΡ‚Π΅ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ, часовникот ќС ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠΈ Π΄Π° ΠΎΡ‚Ρ‡ΡƒΠΊΡƒΠ²Π°:

ΠšΡ€ΠΈΠΏΡ‚ΠΎΠ³Ρ€Π°Ρ„ΡΠΊΠ° Ρ€Π°Π±ΠΎΡ‚Π½Π° станица Π±Π°Π·ΠΈΡ€Π°Π½Π° Π½Π° стандарди Π·Π° јавСн ΠΊΠ»ΡƒΡ‡ Π·Π° ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π° Android
ΠžΡΡ‚Π°Π½ΡƒΠ²Π° само Π΄Π° ΠΊΠ°ΠΆΠ΅Ρ‚Π΅ ΠΎΠ΄ ΠΊΠ°Π΄Π΅ Π΄Π° Π³ΠΈ ΠΏΡ€Π΅Π·Π΅ΠΌΠ΅Ρ‚Π΅ дистрибуциитС ΠΈ Π΄Π° Π²ΠΈ ја чСститамС ΠΏΡ€Π΅Ρ‚ΡΡ‚ΠΎΡ˜Π½Π°Ρ‚Π° Нова Π³ΠΎΠ΄ΠΈΠ½Π° ΠΈ Π΄Π° ΠΈΠΌ посакамС Π½Π° ситС сС Π½Π°Ρ˜Π΄ΠΎΠ±Ρ€ΠΎ Π²ΠΎ 2020 Π³ΠΎΠ΄ΠΈΠ½Π°!

ΠšΡ€ΠΈΠΏΡ‚ΠΎΠ³Ρ€Π°Ρ„ΡΠΊΠ° Ρ€Π°Π±ΠΎΡ‚Π½Π° станица Π±Π°Π·ΠΈΡ€Π°Π½Π° Π½Π° стандарди Π·Π° јавСн ΠΊΠ»ΡƒΡ‡ Π·Π° ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π° AndroidΠ—Π½Π°Ρ‡ΠΈ, дистрибуции Π·Π° Linux, OS X, Windows ΠΈ Android:

Π˜Π·Π²ΠΎΡ€: www.habr.com

ΠšΡƒΠΏΠ΅Ρ‚Π΅ Π΄ΠΎΠ²Π΅Ρ€Π»ΠΈΠ² хостинг Π·Π° ΡΠ°Ρ˜Ρ‚ΠΎΠ²ΠΈ со DDoS Π·Π°ΡˆΡ‚ΠΈΡ‚Π°, VPS VDS сСрвСри πŸ”₯ ΠšΡƒΠΏΠ΅Ρ‚Π΅ сигурСн Π²Π΅Π±-хостинг со DDoS Π·Π°ΡˆΡ‚ΠΈΡ‚Π°, VPS VDS сСрвСри | ProHoster