αžŸαŸ’αžαžΆαž“αžΈαž™αž€αžΆαžšαž„αžΆαžšαž‚αŸ’αžšαžΈαž”αžαžΌ αž•αŸ’αž’αŸ‚αž€αž›αžΎαžŸαŸ’αžαž„αŸ‹αžŠαžΆαžšαž‚αž“αŸ’αž›αžΉαŸ‡αžŸαžΆαž’αžΆαžšαžŽαŸˆαžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž”αŸ’αžšαž–αŸαž“αŸ’αž’αž”αŸ’αžšαžαž·αž”αžαŸ’αžαž·αž€αžΆαžš Android

αžŸαŸ’αžαžΆαž“αžΈαž™αž€αžΆαžšαž„αžΆαžšαž‚αŸ’αžšαžΈαž”αžαžΌ αž•αŸ’αž’αŸ‚αž€αž›αžΎαžŸαŸ’αžαž„αŸ‹αžŠαžΆαžšαž‚αž“αŸ’αž›αžΉαŸ‡αžŸαžΆαž’αžΆαžšαžŽαŸˆαžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž”αŸ’αžšαž–αŸαž“αŸ’αž’αž”αŸ’αžšαžαž·αž”αžαŸ’αžαž·αž€αžΆαžš AndroidαžœαžΆαžŠαž›αŸ‹αž–αŸαž›αž αžΎαž™αžŠαžΎαž˜αŸ’αž”αžΈαž”αž„αŸ’αž αžΆαž‰αž–αžΈαžšαž”αŸ€αž”αžŠαŸ‚αž›αžŸαŸ’αžαžΆαž“αžΈαž™αž€αžΆαžšαž„αžΆαžšαž‚αŸ’αžšαžΈαž”αžŠαŸ‚αž›αž•αŸ’αž’αŸ‚αž€αž›αžΎαžŸαŸ’αžαž„αŸ‹αžŠαžΆαžšαžŸαŸ„αžŸαžΆαž’αžΆαžšαžŽαŸˆ cryptoarmpkcs αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαž›αžΎαžœαŸαž‘αž·αž€αžΆαž‘αžΌαžšαžŸαŸαž–αŸ’αž‘αž˜αž½αž™αž‚αžΊ Android αŸ”

αž‚αŸ†αž“αž·αžαžŠαŸ‚αž›αžαŸ’αžšαžΌαžœαž”αžΆαž“αžŠαžΆαž€αŸ‹αž“αŸ…αž–αŸαž›αž”αž„αŸ’αž€αžΎαžαž§αž”αž€αžšαžŽαŸαž”αŸ’αžšαžΎαž”αŸ’αžšαžΆαžŸαŸ‹ cryptoarmpkcs αž‚αžΊαžαžΆαž’αŸ’αž“αž€αž”αŸ’αžšαžΎαž”αŸ’αžšαžΆαžŸαŸ‹αž‚αž½αžšαžαŸ‚αž‡αž½αž”αž”αŸ’αžšαž‘αŸ‡αž’αž”αŸ’αž”αžšαž˜αžΆαž“αŸƒαž€αžΆαžšαžšαž’αžΆαž€αŸ‹αžšαž’αž½αž›αž“αŸ…αž–αŸαž›αž”αž„αŸ’αž€αžΎαž αž“αž·αž„αž•αŸ’αž‘αŸ€αž„αž•αŸ’αž‘αžΆαžαŸ‹αž αžαŸ’αžαž›αŸαžαžΆαž’αŸαž‘αž·αž…αžαŸ’αžšαžΌαž“αž·αž€αŸ” αž“αŸ„αŸ‡αž αžΎαž™αž‡αžΆαž˜αžΌαž›αž αŸαžαž»αžŠαŸ‚αž›αž™αžΎαž„αžŸαŸ’αž“αžΎαž±αŸ’αž™αž”αŸ’αžšαžΎαž“αž·αž˜αž·αžαŸ’αžαžŸαž‰αŸ’αž‰αžΆαž‚αŸ’αžšαžΈαž”αž‚αŸ’αžšαžΈαž”αž‡αžΆαž€αŸ’αžšαž»αž˜αž αŸŠαž»αž“αžŠαžΉαž€αž‡αž‰αŸ’αž‡αžΌαž“αž‚αž“αŸ’αž›αžΉαŸ‡αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αžœαž·αž‰αŸ’αž‰αžΆαž”αž“αž”αžαŸ’αžšαž•αŸ’αž‘αžΆαž›αŸ‹αžαŸ’αž›αž½αž“ PKCS #11 αž“αž·αž„/αž¬αž’αž»αž„αžŸαž»αžœαžαŸ’αžαž·αž—αžΆαž– PKCS #12. αžœαžΆαžαŸ’αžšαžΌαžœαžαŸ‚αžαŸ’αžšαžΌαžœαž”αžΆαž“αž“αž·αž™αžΆαž™αžαžΆαž€αžΆαžšαž”αŸ’αžšαžΎαž”αŸ’αžšαžΆαžŸαŸ‹ PKCS #12 αž€αŸ’αž“αž»αž„αž€αžšαžŽαžΈαž‡αžΆαž…αŸ’αžšαžΎαž“αž”αŸ’αžšαŸ‚αž‘αŸ…αž‡αžΆαžŸαŸ’αž‘αžΎαžšαžαŸ‚αžαŸ‚αž˜αž½αž™αž‚αžαŸ‹αžŠαŸ‚αž›αž’αžΆαž…αž’αŸ’αžœαžΎαž‘αŸ…αž”αžΆαž“αž§αž‘αžΆαž αžšαžŽαŸαž“αŸ…αž–αŸαž›αžŠαŸ‚αž›αž“αž·αž˜αž·αžαŸ’αžαžŸαž‰αŸ’αž‰αžΆ PKCS #11 αžŠαžΌαž…αž‚αŸ’αž“αžΆαž˜αž·αž“αž˜αžΆαž“αž€αžΆαžšαž‚αžΆαŸ†αž‘αŸ’αžšαžŸαž˜αŸ’αžšαžΆαž”αŸ‹αžœαŸαž‘αž·αž€αžΆαž‡αžΆαž€αŸ‹αž›αžΆαž€αŸ‹αŸ” αžŠαžΌαž…αŸ’αž“αŸαŸ‡αž αžΎαž™ αž™αžΎαž„αž”αžΆαž“αžŸαž˜αŸ’αžšαŸαž…αž…αž·αžαŸ’αžαž…αžΆαž”αŸ‹αž•αŸ’αžαžΎαž˜αž”αž‰αŸ’αž‡αžΌαž“αž§αž”αž€αžšαžŽαŸαž”αŸ’αžšαžΎαž”αŸ’αžšαžΆαžŸαŸ‹ cryptoarmpkcs αž‘αŸ…αž€αžΆαž“αŸ‹αž”αŸ’αžšαž–αŸαž“αŸ’αž’αž”αŸ’αžšαžαž·αž”αžαŸ’αžαž·αž€αžΆαžš Android αžŠαŸ„αž™αž˜αžΆαž“αž€αžΆαžšαž‚αžΆαŸ†αž‘αŸ’αžšαžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž’αž»αž„αž€αžΆαžšαž–αžΆαžš PKCS#12 αŸ”

αž’αž“αž»αž‰αŸ’αž‰αžΆαžαž±αŸ’αž™αž™αžΎαž„αž€αžαŸ‹αžŸαž˜αŸ’αž‚αžΆαž›αŸ‹αž—αŸ’αž›αžΆαž˜αŸ—αžαžΆαž…αžΆαž”αŸ‹αžαžΆαŸ†αž„αž–αžΈαž‚αž˜αŸ’αžšαŸ„αž„αž“αŸαŸ‡αžαŸ’αžšαžΌαžœαž”αžΆαž“αž’αŸ’αžœαžΎαž“αŸ…αž›αžΎαžœαŸαž‘αž·αž€αžΆ C αž“αž·αž„ Tcl/Tk αž…αŸ’αžšαž€αž˜αž·αž“αž”αž„αŸ’αž€αž±αŸ’αž™αž˜αžΆαž“αž€αžΆαžšαž›αŸ†αž”αžΆαž€αž‡αžΆαž˜αžΌαž›αžŠαŸ’αž‹αžΆαž“αžŽαžΆαž˜αž½αž™αž‘αžΎαž™αŸ” αž“αŸαŸ‡αž’αžΆαž…αž’αŸ’αžœαžΎαž‘αŸ…αž”αžΆαž“αžŠαŸ„αž™αžŸαžΆαžšαž”αž…αŸ’αž…αŸαž€αžœαž·αž‘αŸ’αž™αžΆ Androwish. αž‡αžΆαž˜αž½αž™αž“αžΉαž„αž€αžΆαžšαž›αžΆαžαžαŸ’αžšαžŠαžΆαž„αž“αž·αž„ αžšαŸ€αž”αž…αŸ†αž”αžšαž·αžŸαŸ’αžαžΆαž“ αž˜αž·αž“αž˜αžΆαž“αž”αž‰αŸ’αž αžΆαž’αŸ’αžœαžΈαž‘αŸ (αž”αžšαž·αž™αžΆαž€αžΆαžŸαž€αžΆαžšαž„αžΆαžšαžšαž”αžŸαŸ‹αžαŸ’αž‰αž»αŸ†αž‚αžΊ 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 αžŠαŸ‚αž›αž˜αžΆαž“αž›αž€αŸ’αžαžŽαŸˆαžŠαžΌαž…αž‚αŸ’αž“αžΆαž‘αžΆαŸ†αž„αžŸαŸ’αžšαž»αž„αž“αŸ…αž€αŸ’αž“αž»αž„αžŸαž˜αžΆαžŸαž—αžΆαž–αž“αŸƒ "balalaikas" (αž€αž‰αŸ’αž…αž”αŸ‹) αžŠαŸ‚αž›αžšαž½αž˜αž”αž‰αŸ’αž…αžΌαž›αž“αŸ…αž€αŸ’αž“αž»αž„ Androwish αžαŸ’αž›αž½αž“αžœαžΆαž•αŸ’αž‘αžΆαž›αŸ‹αŸ” αž—αžΆαž–αžαž»αžŸαž‚αŸ’αž“αžΆαžšαžœαžΆαž„ undrowish αž“αž·αž„ vanillawish αž‚αžΊαžαžΆ vanillawish αž˜αžΆαž“ backend αž•αŸ’αž’αŸ‚αž€αž›αžΎ SDL / AGG / freetype:

αžŸαŸ’αžαžΆαž“αžΈαž™αž€αžΆαžšαž„αžΆαžšαž‚αŸ’αžšαžΈαž”αžαžΌ αž•αŸ’αž’αŸ‚αž€αž›αžΎαžŸαŸ’αžαž„αŸ‹αžŠαžΆαžšαž‚αž“αŸ’αž›αžΉαŸ‡αžŸαžΆαž’αžΆαžšαžŽαŸˆαžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž”αŸ’αžšαž–αŸαž“αŸ’αž’αž”αŸ’αžšαžαž·αž”αžαŸ’αžαž·αž€αžΆαžš Android

αžœαžαŸ’αžαž˜αžΆαž“αž“αŸƒαž§αž”αž€αžšαžŽαŸαž”αŸ’αžšαžΎαž”αŸ’αžšαžΆαžŸαŸ‹αž‘αžΆαŸ†αž„αž–αžΈαžšαž“αŸαŸ‡αž’αž“αž»αž‰αŸ’αž‰αžΆαžαž±αŸ’αž™αž’αŸ’αž“αž€αž”αž„αŸ’αž€αžΎαžαž€αž˜αŸ’αž˜αžœαž·αž’αžΈαžŠαŸ„αž™αž˜αž·αž“αž…αžΆαŸ†αž”αžΆαž…αŸ‹αž”αŸ’αžšαžΎαž”αŸ’αžšαž–αŸαž“αŸ’αž’αž”αŸ’αžšαžαž·αž”αžαŸ’αžαž·αž€αžΆαžš Android αžŠαŸ„αž™αžαŸ’αž›αž½αž“αž―αž„ αž“αž·αž„αž€αž˜αŸ’αž˜αžœαž·αž’αžΈαžαŸ’αžšαžΆαž”αŸ‹αžαžΆαž˜αžšαž”αžŸαŸ‹αžœαžΆαž‡αžΆαž˜αž½αž™αž“αžΉαž„αž€αžΆαžšαž”αŸ’αžšαž αžΆαž€αŸ‹αž”αŸ’αžšαž αŸ‚αž›αž’αžαž·αž”αžšαž˜αžΆαž‘αŸ…αž“αžΉαž„αž§αž”αž€αžšαžŽαŸαž–αž·αžαŸ” αž‡αžΆαžŠαŸ†αž”αžΌαž„ αž“αŸαŸ‡αž‡αžΆαž€αžΆαžšαž–αž·αž undroidwish-xxxαŸ”

αž€αž‰αŸ’αž…αž”αŸ‹αž•αŸ’αž‘αžΆαž›αŸ‹αžαŸ’αž›αž½αž“αž–αž·αžαž”αŸ’αžšαžΆαž€αžŠαžŸαž˜αŸ’αžšαžΆαž”αŸ‹ Android αžαŸ’αžšαžΌαžœαž”αžΆαž“αž”αž„αŸ’αž€αžΎαžαž‘αžΎαž„αž“αŸ…αž€αŸ’αž“αž»αž„αž”αžšαž·αžŸαŸ’αžαžΆαž“ AWSDK αŸ” αž˜αŸ‚αž€αž’αžΆαž„αž‚αž˜αŸ’αžšαŸ„αž„αžšαž”αžŸαŸ‹αž’αŸ’αž“αž€αž‚αž½αžšαžαŸ‚αžαŸ’αžšαžΌαžœαž”αžΆαž“αž•αŸ’αž›αžΆαžŸαŸ‹αž‘αžΈαž‘αŸ…αžαž ~/AWSDK/αž‘αŸ’αžšαž–αŸ’αž™αžŸαž€αž˜αŸ’αž˜/αž€αž˜αŸ’αž˜αžœαž·αž’αžΈαŸ” αž€αŸ’αž“αž»αž„αž€αžšαžŽαžΈαž“αŸαŸ‡ αž˜αŸ‰αžΌαžŒαž»αž›αž˜αŸαž“αŸƒαž‚αž˜αŸ’αžšαŸ„αž„αžšαž”αžŸαŸ‹αž’αŸ’αž“αž€αžαŸ’αžšαžΌαžœαžαŸ‚αž”αŸ’αžαžΌαžšαžˆαŸ’αž˜αŸ„αŸ‡αž‘αŸ…αž‡αžΆ main.tcl αŸ” αž”αŸ’αžšαžŸαž·αž“αž”αžΎαž’αŸ’αž“αž€αž”αŸ’αžšαžΎ balalaikas αž”αž“αŸ’αžαŸ‚αž˜αž‡αžΆαž˜αž½αž™αž”αžŽαŸ’αžŽαžΆαž›αŸαž™αžαžΆαž˜αžœαž“αŸ’αž αž“αŸ„αŸ‡αž”αžŽαŸ’αžŽαžΆαž›αŸαž™αžαŸ’αžšαžΌαžœαžαŸ‚αžŠαžΆαž€αŸ‹αž€αŸ’αž“αž»αž„αžαž ~/AWSDK/libs/x86 αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž€αž˜αŸ’αž˜αžœαž·αž’αžΈαžαŸ’αžšαžΆαž”αŸ‹αžαžΆαž˜ αž“αž·αž„ ~/AWSDK/libs/armeabi αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž§αž”αž€αžšαžŽαŸαž–αž·αžαŸ”

αž”αž“αŸ’αž‘αžΆαž”αŸ‹αž–αžΈαž“αŸαŸ‡αž‚αŸ’αžšαžΆαž“αŸ‹αžαŸ‚αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαž–αžΆαž€αŸ’αž™αž”αž‰αŸ’αž‡αžΆ:

$wish ~/AWSDK/tools/bones

αž αžΎαž™αž’αŸ’αžœαžΎαžαžΆαž˜αž€αžΆαžšαžŽαŸ‚αž“αžΆαŸ†αžšαž”αžŸαŸ‹αž“αžΆαž„αŸ–

αžŸαŸ’αžαžΆαž“αžΈαž™αž€αžΆαžšαž„αžΆαžšαž‚αŸ’αžšαžΈαž”αžαžΌ αž•αŸ’αž’αŸ‚αž€αž›αžΎαžŸαŸ’αžαž„αŸ‹αžŠαžΆαžšαž‚αž“αŸ’αž›αžΉαŸ‡αžŸαžΆαž’αžΆαžšαžŽαŸˆαžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž”αŸ’αžšαž–αŸαž“αŸ’αž’αž”αŸ’αžšαžαž·αž”αžαŸ’αžαž·αž€αžΆαžš Android

αž€αž‰αŸ’αž…αž”αŸ‹ apk αžŠαŸ‚αž›αž”αžΆαž“αž‡αž½αž”αž”αŸ’αžšαž‡αž»αŸ†αž‚αŸ’αž“αžΆαž“αžΉαž„αž˜αžΆαž“αž‘αžΈαžαžΆαŸ†αž„αž“αŸ…αž€αŸ’αž“αž»αž„αžαž ~/AWSDK/build/outputs/apk αŸ”

αž”αŸ’αžšαžŸαž·αž“αž”αžΎαž’αŸ’αž“αž€αž˜αžΆαž“αž§αž”αž€αžšαžŽαŸαž–αž·αž αž¬αž§αž”αž€αžšαžŽαŸαžαŸ’αžšαžΆαž”αŸ‹αžαžΆαž˜αž”αžΆαž“αž—αŸ’αž‡αžΆαž”αŸ‹ αž€αž‰αŸ’αž…αž”αŸ‹αž’αžΆαž…αžαŸ’αžšαžΌαžœαž”αžΆαž“αžŠαŸ†αž‘αžΎαž„αž—αŸ’αž›αžΆαž˜αŸ—αŸ”
αž€αŸ’αž“αž»αž„αž€αžšαžŽαžΈαž“αŸαŸ‡ αž§αž”αž€αžšαžŽαŸαž–αž·αžαžαŸ’αžšαžΌαžœαžαŸ‚αžŸαŸ’αžαž·αžαž“αŸ…αž€αŸ’αž“αž»αž„αžšαž”αŸ€αž”αž”αŸ†αž”αžΆαžαŸ‹αž€αŸ†αž αž»αžŸαŸ”

αž”αŸ‰αž»αž“αŸ’αžαŸ‚αžŸαžΌαž˜αžαŸ’αžšαž›αž”αŸ‹αž‘αŸ…αž€αž˜αŸ’αž˜αžœαž·αž’αžΈαžαŸ’αž›αž½αž“αž―αž„αžœαž·αž‰αŸ” αžαžΎαž˜αžΆαž“αž’αŸ’αžœαžΈαžŠαŸ‚αž›αžαŸ’αžšαžΌαžœαž•αŸ’αž›αžΆαžŸαŸ‹αž”αŸ’αžαžΌαžšαž“αŸ…αž€αŸ’αž“αž»αž„αžœαžΆ?

αžαžΆαž˜αž’αž˜αŸ’αž˜αž‡αžΆαžαž· αž€αžΆαžšαž•αŸ’αž›αžΆαžŸαŸ‹αž”αŸ’αžαžΌαžšαž‚αžΊαž‘αžΆαž€αŸ‹αž‘αž„αž‡αžΆαž…αž˜αŸ’αž”αž„αž‘αŸ…αž“αžΉαž„αž‘αŸ†αž αŸ†αž’αŸαž€αŸ’αžšαž„αŸ‹αŸ” αžαŸ’αž‰αž»αŸ†αžαŸ’αžšαžΌαžœαžšαž…αž“αžΆαž˜αŸ (αž”αž„αŸ’αž’αž½αž…αž…αžΆαž”αŸ‹αž•αŸ’αžαžΎαž˜) αž‘αžΎαž„αžœαž·αž‰αŸ” αž‡αžΆαž›αž‘αŸ’αž’αž•αž› αž‡αŸ†αž“αž½αžŸαž±αŸ’αž™αž”αž„αŸ’αž’αž½αž…αž˜αž½αž™αž“αŸ…αž›αžΎαž€αž»αŸ†αž–αŸ’αž™αžΌαž‘αŸαžšαž’αž˜αŸ’αž˜αžαžΆαŸ–

αžŸαŸ’αžαžΆαž“αžΈαž™αž€αžΆαžšαž„αžΆαžšαž‚αŸ’αžšαžΈαž”αžαžΌ αž•αŸ’αž’αŸ‚αž€αž›αžΎαžŸαŸ’αžαž„αŸ‹αžŠαžΆαžšαž‚αž“αŸ’αž›αžΉαŸ‡αžŸαžΆαž’αžΆαžšαžŽαŸˆαžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž”αŸ’αžšαž–αŸαž“αŸ’αž’αž”αŸ’αžšαžαž·αž”αžαŸ’αžαž·αž€αžΆαžš Android

αž”αž„αŸ’αž’αž½αž…αž…αŸ†αž“αž½αž“αž”αžΈαž”αžΆαž“αž”αž„αŸ’αž αžΆαž‰αžαŸ’αž›αž½αž“αž“αŸ…αž›αžΎαž”αŸ’αžšαž–αŸαž“αŸ’αž’αž”αŸ’αžšαžαž·αž”αžαŸ’αžαž·αž€αžΆαžš AndroidαŸ–

αžŸαŸ’αžαžΆαž“αžΈαž™αž€αžΆαžšαž„αžΆαžšαž‚αŸ’αžšαžΈαž”αžαžΌ αž•αŸ’αž’αŸ‚αž€αž›αžΎαžŸαŸ’αžαž„αŸ‹αžŠαžΆαžšαž‚αž“αŸ’αž›αžΉαŸ‡αžŸαžΆαž’αžΆαžšαžŽαŸˆαžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž”αŸ’αžšαž–αŸαž“αŸ’αž’αž”αŸ’αžšαžαž·αž”αžαŸ’αžαž·αž€αžΆαžš Android

αž”αž„αŸ’αž’αž½αž…αžŠαŸ†αž”αžΌαž„αž‚αžΊαž–αŸαžαŸŒαž˜αžΆαž“αŸ” αžαžΆαž˜αž’αž˜αŸ’αž˜αžαžΆαžœαžΆαžαŸ’αžšαžΌαžœαž”αžΆαž“αž”αŸ‚αž„αž…αŸ‚αž€αž‡αžΆαž•αŸ’αž“αŸ‚αž€αž‡αžΆαž…αŸ’αžšαžΎαž“αŸ” αž•αŸ’αž“αŸ‚αž€αž‘αžΈαž˜αž½αž™αžŠαŸ‚αž›αž˜αžΆαž“αž‘αžΈαžαžΆαŸ†αž„αž“αŸ…αž•αŸ’αž“αŸ‚αž€αžαžΆαž„αž›αžΎαž˜αžΆαž“αžˆαŸ’αž˜αŸ„αŸ‡αž§αž”αž€αžšαžŽαŸαž”αŸ’αžšαžΎαž”αŸ’αžšαžΆαžŸαŸ‹ αž“αž·αž„αž“αž·αž˜αž·αžαŸ’αžαžŸαž‰αŸ’αž‰αžΆαžšαž”αžŸαŸ‹αžœαžΆαŸ”

αž”αž“αŸ’αž‘αžΆαž”αŸ‹β€‹αž˜αž€β€‹αžŸαŸ’αž›αžΆαž€β€‹αžŸαž‰αŸ’αž‰αžΆβ€‹αžšαž”αžŸαŸ‹β€‹αž’αŸ’αž“αž€β€‹αž•αž›αž·αž αžŸαž“αŸ’αž›αžΉαž€β€‹αž–αŸαžαŸŒαž˜αžΆαž“ αž“αž·αž„β€‹αž”αŸŠαžΌαžαž»αž„β€‹αž”αžΈβ€‹αž”αž‰αŸ’αž…αž”αŸ‹β€‹αž‘αŸ†αž–αŸαžšαŸ”
αž‘αŸ†αž–αŸαžšαžαŸ’αžšαžΌαžœαž”αžΆαž“αžŸαžšαžŸαŸαžšαžŠαŸ„αž™αž”αŸ’αžšαžΎαžŸαž˜αžΆαžŸαž’αžΆαžαž»αž•αŸ’αž‘αžΆαŸ†αž„αž€αŸ’αžšαžŽαžΆαžαŸ‹αŸ” αž‘αŸ†αž–αŸαžšαž”αŸ’αžšαžΎαž”αŸŠαžΌαžαž»αž„αž–αžΈαžšαž”αŸ’αžšαž—αŸαž‘αŸ– αž˜αž½αž™αž€αŸ’αž“αž»αž„αž‘αž˜αŸ’αžšαž„αŸ‹αž‡αžΆαž…αžαž»αž€αŸ„αžŽαž€αŸ‚αž„αžαŸ’αž›αžΆ (αž€αžŽαŸ’αžαžΆαž›) αž“αž·αž„αž–αžΈαžšαž”αŸ’αžšαž—αŸαž‘αž‘αŸ€αžαž‡αžΆαž‘αž˜αŸ’αžšαž„αŸ‹αž…αžαž»αž€αŸ„αžŽαž€αŸ‚αž„αžŠαŸ‚αž›αž˜αžΆαž“αž‡αŸ’αžšαž»αž„αž˜αžΌαž›αŸ” Balalaika αžαŸ’αžšαžΌαžœαž”αžΆαž“αž”αŸ’αžšαžΎαžŠαžΎαž˜αŸ’αž”αžΈαž”αž„αŸ’αž€αžΎαžαž”αŸŠαžΌαžαž»αž„αžŠαŸ‚αž›αž˜αžΆαž“αž‡αŸ’αžšαž»αž„αž˜αžΌαž› tkpath. αžŠαŸ„αž™αž•αŸ’αž‘αžΆαž›αŸ‹ balalaika αž“αŸαŸ‡αž”αžΆαž“αž’αŸ’αžœαžΎαž±αŸ’αž™αž˜αžΆαž“αž€αžΆαžšαž…αžΆαž”αŸ‹αž’αžΆαžšαž˜αŸ’αž˜αžŽαŸαž™αŸ‰αžΆαž„αžαŸ’αž›αžΆαŸ†αž„αž˜αž€αž›αžΎαžαŸ’αž‰αž»αŸ†αŸ” αž‡αžΆαž’αž˜αŸ’αž˜αžαžΆ αž“αŸ…αž–αŸαž›αž’αŸ’αžœαžΎαž€αžΆαžšαž‡αžΆαž˜αž½αž™αž•αŸ’αž‘αžΆαŸ†αž„αž€αŸ’αžšαžŽαžΆαžαŸ‹ αž’αžšαžŽαžΈαž˜αžΆαžαŸ’αžšαž€αžΆαž“αŸ‹αž€αžΆαž”αŸ‹αž…αŸ†αžŽαŸ‚αž€αžšαž”αžŸαŸ‹αžŸαžαŸ’αžœαžαŸ„αž“αŸƒαž€αžΌαžŠαŸ” αžαžΆαž„αž€αŸ’αžšαŸ„αž˜αž“αŸαŸ‡αž‚αžΊαž‡αžΆαžŸαŸ’αž‚αŸ’αžšαžΈαž” 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: [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 

αžŸαŸ’αž‚αŸ’αžšαžΈαž”αž“αŸαŸ‡αž€αŸαžšαŸ€αž”αž…αŸ†αž…αž“αŸ’αž›αŸ„αŸ‡αž‘αŸ†αž“αŸαžšαžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž”αŸŠαžΌαžαž»αž„αž˜αž»αžαž„αžΆαžšαž“αžΈαž˜αž½αž™αŸ—αŸ–

αžŸαŸ’αžαžΆαž“αžΈαž™αž€αžΆαžšαž„αžΆαžšαž‚αŸ’αžšαžΈαž”αžαžΌ αž•αŸ’αž’αŸ‚αž€αž›αžΎαžŸαŸ’αžαž„αŸ‹αžŠαžΆαžšαž‚αž“αŸ’αž›αžΉαŸ‡αžŸαžΆαž’αžΆαžšαžŽαŸˆαžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž”αŸ’αžšαž–αŸαž“αŸ’αž’αž”αŸ’αžšαžαž·αž”αžαŸ’αžαž·αž€αžΆαžš Android

αž…αž“αŸ’αž›αŸ„αŸ‡β€‹αž‘αž‘αŸβ€‹αžαŸ’αžšαžΌαžœβ€‹αž”αžΆαž“β€‹αž”αŸ†αž–αŸαž‰β€‹αžŠαŸ„αž™β€‹αž’αžΆαžαž»β€‹αž€αŸ’αžšαžΆαž αŸ’αžœαž·αž€β€‹αž”αž»αžšαžΆαžŽ αž“αž·αž„β€‹αžαžΆαž˜β€‹αž”αŸ’αžšαž’αžΆαž“αž”αž‘ (labelframe αž”αŸŠαžΌαžαž»αž„αŸ”αž›αŸ”)αŸ” αž…αž“αŸ’αž›αŸ„αŸ‡αž‘αž‘αŸαž˜αž½αž™αž€αŸ’αž“αž»αž„αž…αŸ†αžŽαŸ„αž˜αž…αž“αŸ’αž›αŸ„αŸ‡αž‘αžΆαŸ†αž„αž“αŸαŸ‡αž’αžΆαž…αž˜αžΎαž›αžƒαžΎαž‰αž“αŸ…αž€αŸ’αž“αž»αž„αžšαžΌαž”αžαžαž’αŸαž€αŸ’αžšαž„αŸ‹αžŠαŸ†αž”αžΌαž„αž“αŸ…αžαžΆαž„αžŸαŸ’αžαžΆαŸ†αŸ” αž…αžΆαž”αŸ‹αžαžΆαŸ†αž„αž–αžΈαž“αŸ…αžŠαŸ†αžŽαžΆαž€αŸ‹αž€αžΆαž›αžŠαŸ†αž”αžΌαž„ αž™αžΎαž„αž”αžΆαž“αž•αŸ’αžαŸ„αžαž›αžΎαž€αžΆαžšαž’αŸ’αžœαžΎαž€αžΆαžšαž‡αžΆαž˜αž½αž™αž€αž»αž„αžαžΊαž“αŸαžš PKCS#12 αž›αŸαžαž€αžΌαžŠαžαŸ’αžšαžΌαžœαž”αžΆαž“αž”αŸ’αžšαžΎαž”αŸ’αžšαžΆαžŸαŸ‹αžŸαŸ’αž‘αžΎαžšαžαŸ‚αž˜αž·αž“αž•αŸ’αž›αžΆαžŸαŸ‹αž”αŸ’αžαžΌαžšαžŸαž˜αŸ’αžšαžΆαž”αŸ‹ cryptoarmpkcs-AαŸ” αž“αŸ…αžŠαŸ†αžŽαžΆαž€αŸ‹αž€αžΆαž›αž“αŸαŸ‡ αž˜αž»αžαž„αžΆαžšαžαžΆαž„αž€αŸ’αžšαŸ„αž˜αžαŸ’αžšαžΌαžœαž”αžΆαž“αž’αž“αž»αžœαžαŸ’αžαŸ–

  • αž…αž»αŸ‡αž αžαŸ’αžαž›αŸαžαžΆαž›αžΎαž―αž€αžŸαžΆαžš (Cades-BES, CAdes-T, CAdes-XLT1);
  • αž™αžΎαž„αž’αŸ’αžœαžΎαž€αžΆαžšαž‡αžΆαž˜αž½αž™αž αžαŸ’αžαž›αŸαžαžΆαž’αŸαž‘αž·αž…αžαŸ’αžšαžΌαž“αž·αž€ (PKCS7) αžšαž½αž˜αž‘αžΆαŸ†αž„αž€αžΆαžšαž”αž“αŸ’αžαŸ‚αž˜αž’αŸ’αž“αž€αž…αž»αŸ‡αž αžαŸ’αžαž›αŸαžαžΆαŸ”
  • αž˜αžΎαž›αž€αžΆαžšαžŸαŸ’αž“αžΎαžŸαž»αŸ†αžœαž·αž‰αŸ’αž‰αžΆαž”αž“αž”αžαŸ’αžš/αžœαž·αž‰αŸ’αž‰αžΆαž”αž“αž”αžαŸ’αžšαŸ–

    αžŸαŸ’αžαžΆαž“αžΈαž™αž€αžΆαžšαž„αžΆαžšαž‚αŸ’αžšαžΈαž”αžαžΌ αž•αŸ’αž’αŸ‚αž€αž›αžΎαžŸαŸ’αžαž„αŸ‹αžŠαžΆαžšαž‚αž“αŸ’αž›αžΉαŸ‡αžŸαžΆαž’αžΆαžšαžŽαŸˆαžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž”αŸ’αžšαž–αŸαž“αŸ’αž’αž”αŸ’αžšαžαž·αž”αžαŸ’αžαž·αž€αžΆαžš Android

  • αž™αžΎαž„αž’αŸ’αžœαžΎαž€αžΆαžšαž‡αžΆαž˜αž½αž™ PKCS12/PFX;
  • αž’αŸ†αž–αžΈαž§αž”αž€αžšαžŽαŸαž”αŸ’αžšαžΎαž”αŸ’αžšαžΆαžŸαŸ‹/αž€αžΆαžšαž…αŸ‚αž€αž…αžΆαž™αŸ–

    αžŸαŸ’αžαžΆαž“αžΈαž™αž€αžΆαžšαž„αžΆαžšαž‚αŸ’αžšαžΈαž”αžαžΌ αž•αŸ’αž’αŸ‚αž€αž›αžΎαžŸαŸ’αžαž„αŸ‹αžŠαžΆαžšαž‚αž“αŸ’αž›αžΉαŸ‡αžŸαžΆαž’αžΆαžšαžŽαŸˆαžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž”αŸ’αžšαž–αŸαž“αŸ’αž’αž”αŸ’αžšαžαž·αž”αžαŸ’αžαž·αž€αžΆαžš Android

αž˜αž»αžαž„αžΆαžšαžŠαŸ‚αž›αž“αŸ…αžŸαž›αŸ‹αž‚αžΊαž‘αžΆαž€αŸ‹αž‘αž„αž“αžΉαž„ PKCS#11 tokensαŸ” αž…αŸ’αžšαž€αžšαž”αžŸαŸ‹αž–αž½αž€αž‚αŸαžαŸ’αžšαžΌαžœαž”αžΆαž“αž–αž“αŸ’αž™αžΆαžšαž–αŸαž›αžšαž αžΌαžαžŠαž›αŸ‹αž†αŸ’αž“αžΆαŸ†αžαŸ’αž˜αžΈαŸ” αžœαžΆβ€‹αžαŸ’αžšαžΌαžœβ€‹αž”αžΆαž“β€‹αž‚αŸβ€‹αž‚αŸ’αžšαŸ„αž„β€‹αžŠαžΎαž˜αŸ’αž”αžΈβ€‹αžαž—αŸ’αž‡αžΆαž”αŸ‹β€‹αžŸαž‰αŸ’αž‰αžΆβ€‹αžŸαž˜αŸ’αž„αžΆαžαŸ‹β€‹αž€αž˜αŸ’αž˜αžœαž·αž’αžΈβ€‹αž“αž·αž„β€‹αž€αžΆαžšβ€‹αžαž—αŸ’αž‡αžΆαž”αŸ‹β€‹αž‘αŸ…β€‹ αž“αž·αž˜αž·αžαŸ’αžαžŸαž‰αŸ’αž‰αžΆαž–αž–αž€.

αžαžΆαž˜αž‘αžŸαŸ’αžŸαž“αŸˆαž˜αž»αžαž„αžΆαžš αž’αŸ’αžœαžΈαŸ—αžŸαŸ’αž‘αžΎαžšαžαŸ‚αž‘αžΆαŸ†αž„αž’αžŸαŸ‹αž‚αžΊαžŸαŸ’αžšαžŠαŸ€αž„αž“αžΉαž„αž§αž”αž€αžšαžŽαŸαž”αŸ’αžšαžΎαž”αŸ’αžšαžΆαžŸαŸ‹ 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

αž”αž“αŸ’αžαŸ‚αž˜αž˜αžαž·αž™αŸ„αž”αž›αŸ‹