
рд╣рдо рдПрдХ рдирд┐рд░рдВрддрд░ рд╕реЙрдХреЗрдЯ рдХрдиреЗрдХреНрд╢рди рдХреЗ рд╕рд╛рде рдПрдХ рдХреНрд▓рд╛рдЗрдВрдЯ-рд╕рд░реНрд╡рд░ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЗ рд▓рд┐рдП рдПрдХ рдлреНрд▓реИрд╢ рдХреНрд▓рд╛рдЗрдВрдЯ рд╡рд┐рдХрд╕рд┐рдд рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рдФрд░ рдпрд╣ рд╣рдорд╛рд░реЗ рд▓рд┐рдП рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИ рдХрд┐ рд╣рдо рдЦреБрдж рдХреЛ рд╡рд╛рдпрд░рд┐рдВрдЧ рдЯреНрд░реИрдлрд┐рдХ рд╕реЗ рдмрдЪрд╛рдПрдВред рдРрд╕рд╛ рдХрд░рдиреЗ рдХрд╛ рдПрдХ рддрд░реАрдХрд╛ рдПрд╕рдПрд╕рдПрд▓ / рдЯреАрдПрд▓рдПрд╕ рдПрдиреНрдХреНрд░рд┐рдкреНрд╢рди рд╣реИред рдлреНрд▓реИрд╢ рдореЗрдВ, рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рджреЛ рддрд░реАрдХреЗ рд╣реИрдВ:
as3crypto рд▓рд╛рдЗрдмреНрд░реЗрд░реА рд╕реЗ рджреЗрд╢реА
SecureSocket рдпрд╛
TLSSocket рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВред рдиреАрдЪреЗ рд╣рдо рдкреЗрд╢реЗрд╡рд░реЛрдВ рдФрд░ рд╡рд┐рдкрдХреНрд╖, рдкреНрд░рджрд░реНрд╢рди, рдФрд░ рдЙрди рд╕рдорд╕реНрдпрд╛рдУрдВ рдкрд░ рднреА рдЪрд░реНрдЪрд╛ рдХрд░реЗрдВрдЧреЗ рдЬреЛ рд╣рдордиреЗ рджреЛрдиреЛрдВ рд╡рд┐рдХрд▓реНрдкреЛрдВ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рддреЗ рд╕рдордп рд╕рд╛рдордирд╛ рдХреА рдереАред
рддреБрд▓рдирд╛ рдЪрд╛рд░реНрдЯ
рдПрд╕рдПрд╕рдПрд▓ / рдЯреАрдПрд▓рдПрд╕ рд╕реЙрдХреЗрдЯ рдкрд░ рдПрдХ рдРрдб-рдСрди рд╣реИ рдЬреЛ рд╕реБрдирдиреЗ рдФрд░ рджреЛ рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рдХрд░рдиреЗ рд╕реЗ рд░реЛрдХрддрд╛ рд╣реИ - рдкреНрд░рддрд┐рднрд╛рдЧрд┐рдпреЛрдВ (рд╕рд░реНрд╡рд░ рдФрд░ рдХреНрд▓рд╛рдЗрдВрдЯ) рдХрд╛ рдкреНрд░рдорд╛рдгреАрдХрд░рдг рдФрд░ рдЯреНрд░реИрдлрд╝рд┐рдХ рдПрдиреНрдХреНрд░рд┐рдкреНрд╢рдиред рд╕реЙрдХреЗрдЯ рдХреА рдореБрдЦреНрдп рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рд╕реНрдкрд╖реНрдЯрддрд╛ рдХреЗ рд▓рд┐рдП рдПрдХ рддрд╛рд▓рд┐рдХрд╛ рдХреЗ рд░реВрдк рдореЗрдВ рдкреНрд░рд╕реНрддреБрдд рдХреА рдЧрдИ рд╣реИ:

SecureSocket рдФрд░ TLSSocket, "+" рдХреА рддреБрд▓рдирд╛ - рдХреЛрдИ рд╕рдорд╕реНрдпрд╛ рдирд╣реАрдВ рдорд┐рд▓реА, "-" - рд╕рдорд░реНрдерд┐рдд рдирд╣реАрдВ рд╣реИ рдпрд╛ рдХрд╛рдо рдирд╣реАрдВ рдХрд░ рд░рд╣рд╛ рд╣реИ, "," - рдХрд╛рдо рдХрд░ рд░рд╣рд╛ рд╣реИ рд▓реЗрдХрд┐рди рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреЗ рд╕рд╛рде рдпрд╛ рд╕рднреА рдорд╛рдорд▓реЛрдВ рдХреЗ рд▓рд┐рдП рдХрд╛рдо рдирд╣реАрдВ рдХрд░ рд░рд╣рд╛ рд╣реИ, "?" - рдкрд┐рдЫрд▓реА рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреЗ рдХрд╛рд░рдг рд╕рддреНрдпрд╛рдкрд┐рдд рдирд╣реАрдВ рдХрд┐рдП рдЬрд╛ рд╕рдХреЗ? , "-?" - рдпрд╣ рдХрд╣рд╛ рдЧрдпрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЗрд╕рдХреА рдкреБрд╖реНрдЯрд┐ рдирд╣реАрдВ рдХреА рдЬрд╛ рд╕рдХрддреА рд╣реИрд╡рд╕реНрддреБрдУрдВ рдкрд░ рд╡рд┐рд╡рд░рдг
SecureSocket
рдлреНрд▓реИрд╢ рдкреНрд▓реЗрдпрд░ рдХрд╛ рдиреНрдпреВрдирддрдо рд╕рдВрд╕реНрдХрд░рдг
рд╕рд┐рдХреНрдпреЛрд░рдХреЗрдЯ рдХреЛ рдлреНрд▓реИрд╢ рдкреНрд▓реЗрдпрд░ 11 рд╡реЗрдВ рд╕рдВрд╕реНрдХрд░рдг рдФрд░ рдЙрдЪреНрдЪрддрд░ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ, рдЬреЛ рдХреЗрд╡рд▓
75% рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдореЗрдВ рд╕реНрдерд╛рдкрд┐рдд рд╣реИ, рдЕрд░реНрдерд╛рддред рд╢реЗрд╖ 25% рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ
рд╡реИрд╕реЗ рднреА TLSSocket рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред
рдкреНрд░рдорд╛рдг рдкрддреНрд░ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░реЗрдВ
рд╕рд┐рдХреНрдпреЛрд░ рд╕реЙрдХреЗрдЯ рдХреЛ рд╕рд┐рд╕реНрдЯрдо рдореЗрдВ рдПрдХреАрдХреГрдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдЬреЛ рдЗрд╕реЗ рд╕рд┐рд╕реНрдЯрдо рд╕рд░реНрдЯрд┐рдлрд┐рдХреЗрдЯ рд╕реНрдЯреЛрд░реЗрдЬ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ рдФрд░ рд╕рд┐рд╕реНрдЯрдо рдЙрдирдХреА рдкреНрд░рд╛рдорд╛рдгрд┐рдХрддрд╛ рдХреЛ рд╕рддреНрдпрд╛рдкрд┐рдд рдХрд░рдиреЗ рдХрд╛ рд╕рд╛рдзрди рд╣реИ, рдЕрд░реНрдерд╛рддред рд╕рд░реНрд╡рд░ рдкреНрд░рдорд╛рдгрдкрддреНрд░ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдПрдХ рдкреНрд░рдорд╛рдгрдкрддреНрд░ рдкреНрд░рд╛рдзрд┐рдХрд╛рд░реА рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд╕рддреНрдпрд╛рдкрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛, рдЬреЛ
TLSSocket рдХрднреА рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛ рд╣реИред
SecureSocket рдЖрдкрдХреЛ рдЕрдкрдирд╛ рд╕реНрд╡рдпрдВ рдХрд╛ рдкреНрд░рдорд╛рдг рдкрддреНрд░ рдЬреЛрдбрд╝рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ, рдЬрд┐рд╕реЗ рд╡рд┐рд╢реНрд╡рд╕рдиреАрдп рдорд╛рдирд╛ рдЬрд╛рдПрдЧрд╛, рд▓реЗрдХрд┐рди рдлрд┐рд░ рднреА рдЗрд╕реЗ рдЕрдиреНрдп рддреНрд░реБрдЯрд┐рдпреЛрдВ (рд╕рдорд╛рдкреНрддрд┐ рддрд┐рдерд┐, рдкреНрд░рдорд╛рдг рдкрддреНрд░ рдФрд░ рд╕рд░реНрд╡рд░ рдирд╛рдо рдореЗрдВ рд╕рд╛рдорд╛рдиреНрдп рдирд╛рдо рдмреЗрдореЗрд▓) рдХреЗ рд▓рд┐рдП рдЬрд╛рдВрдЪреЗрдВ рдФрд░ рдЕрдЧрд░ рдХреБрдЫ рдЧрд▓рдд рд╣реЛрддрд╛ рд╣реИ, рддреЛ рдпрд╣ рдХрдиреЗрдХреНрд╢рди рдХрд╛рдЯ рджреЗрдЧрд╛, рдЗрд╕рд▓рд┐рдП рдкреБрд░рд╛рдиреЗ рдкрд░реАрдХреНрд╖рдг рдкреНрд░рдорд╛рдг рдкрддреНрд░ (рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ) рд▓рдЧрднрдЧ рд╣рд░ рдбреЗрд╡рд▓рдкрд░ рдХреЗ рдкрд╛рд╕ рдПрдХ рд╣реЛрдЧрд╛) рд╕рдмрд╕реЗ рдЕрдзрд┐рдХ рд╕рдВрднрд╛рд╡рдирд╛ рд╣реИ рдХрд┐ рдХрд╛рдо рдирд╣реАрдВ рдХрд░реЗрдЧрд╛ред
рдПрд╕рдПрд╕рдПрд▓
рдПрд╕рдПрд╕рдПрд▓ 3.0 (рдЗрд╕рдХреЗ рдмрд╛рдж рдПрд╕рдПрд╕рдПрд▓ рд╣рдореЗрд╢рд╛ рдПрд╕рдПрд╕рдПрд▓ 3.0 рдХрд╛ рдорддрд▓рдм рд╣реИ) рдХреЛ рдордЬрдмреВрд░ рдПрд╕рдПрд╕рдПрд▓ рдореЛрдб рдореЗрдВ рдЕрдкрдиреЗ рд╕рд░реНрд╡рд░ рдкрд░ рдкрд░реАрдХреНрд╖рдг рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред рдХреНрд▓рд╛рдЗрдВрдЯ рдиреЗ рд╕рднреА рдкреНрд░рдорд╛рдгрдкрддреНрд░реЛрдВ рдкрд░ рдПрдХ рдЧреИрд░-рдорд╛рдиреНрдпрддрд╛ рдкреНрд░рд╛рдкреНрдд рдкреНрд░рдорд╛рдгрдкрддреНрд░ рд╕рддреНрдпрд╛рдкрди рд╕реНрдерд┐рддрд┐ (serverCertificateStatus = рдЕрдорд╛рдиреНрдп) рдХреЗ рд╕рд╛рде рдХрдиреЗрдХреНрд╢рди рдХреЛ рдмрдВрдж рдХрд░ рджрд┐рдпрд╛, рдЬреЛ рд╣рдордиреЗ рдЖрдзрд┐рдХрд╛рд░рд┐рдХ рддреМрд░ рдкрд░ рд╣рд╕реНрддрд╛рдХреНрд╖рд░рд┐рдд рдПрдХ рд╕рд╣рд┐рдд рдХреЛрд╢рд┐рд╢ рдХреА рдереАред рдореИрдВ рдзреНрдпрд╛рди рджреЗрддрд╛ рд╣реВрдВ рдХрд┐ рд╕реЙрдХреЗрдЯ рд╕рдлрд▓рддрд╛рдкреВрд░реНрд╡рдХ рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рд╕рд░реНрд╡рд░ (google.com, yandex.ru) рдХреЗ 443 рд╡реЗрдВ рдкреЛрд░реНрдЯ рдореЗрдВ рдкреНрд░рд╡реЗрд╢ рдХрд░рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЯреАрдПрд▓рдПрд╕ рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рдХрд╛ рд╕рдмрд╕реЗ рдЕрдзрд┐рдХ рд╕рдВрднрд╛рд╡рдирд╛ рд╣реИ, рд╡рд╣рд╛рдВ рдЪрдпрди рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдФрд░
рд╕рд┐рдХреНрдпреЛрд░рдХреЗрдЯ рдХреЗрд╡рд▓ рджреЛ рдЯреАрдПрд▓рдПрд╕ рдпрд╛ рдПрд╕рдПрд╕рдПрд▓
рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рдореЗрдВ рд╕реЗ рдПрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдордЬрдмреВрд░ рдирд╣реАрдВ рдХрд░рддрд╛
рд╣реИ , рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдореЗрдВ TLS / SSL рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдкрд░ рдзреНрдпрд╛рди рджреЗрдирд╛ рдЬреЛ swf рдЪрд▓рд╛рддрд╛ рд╣реИред рдореИрдВ рдпрд╣ рдХрд╣рдиреЗ рдХрд╛ рдирд╛рдЯрдХ рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛ рдХрд┐ рд╕рд┐рджреНрдзрд╛рдВрдд рдореЗрдВ рдПрд╕рдПрд╕рдПрд▓ 3.0 рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ, рдлрд┐рд░ рднреА рдЖрдзрд┐рдХрд╛рд░рд┐рдХ рджрд╕реНрддрд╛рд╡реЗрдЬ рдореЗрдВ рдЗрд╕рдХрд╛ рд╕рдорд░реНрдерди рдмрддрд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рд╣рдо рдЗрд╕реЗ рдХрд╛рдо рдХрд░рдиреЗ рдореЗрдВ рдЕрд╕рдорд░реНрде рдереЗред
рдЯреАрдПрд▓рдПрд╕
рдЯреАрдПрд▓рдПрд╕ рдиреЗ рддреБрд░рдВрдд рдФрд░ рджреЛрдиреЛрдВ рдкреНрд░рдорд╛рдгрдкрддреНрд░реЛрдВ рдкрд░ рдЕрд░реНрдЬрд┐рдд рдХрд┐рдпрд╛ред рдПрдХ рдХрд╛рдо рдХрд░ рд░рд╣реЗ рд╕реЙрдХреЗрдЯ рдХреЗ рд╕рд╛рде, рд╣рдо рдПрдХ рдЕрд╕реБрд░рдХреНрд╖рд┐рдд рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдСрдкрд░реЗрд╢рди рдХреА рдЧрддрд┐ рдХрд╛ рдореВрд▓реНрдпрд╛рдВрдХрди рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рдереЗ, рдпрд╣рд╛рдВ рд╣рдо рдмрд╣реБрдд рдирд┐рд░рд╛рд╢ рдереЗ, рдЙрд╕ рдкрд░ рдФрд░ рдЕрдзрд┐рдХред
TLSSocket
рдкреНрд░рдорд╛рдг рдкрддреНрд░ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░реЗрдВ
рдкреНрд░рдорд╛рдгрдкрддреНрд░ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдореЗрдВ
TLSSocket рдХреА рдХрдИ рдХрдордЬреЛрд░рд┐рдпрд╛рдБ рд╣реИрдВ:
- рдХреБрдЫ рдкреНрд░рдХрд╛рд░ рдХреЗ рдкреНрд░рдорд╛рдгрдкрддреНрд░реЛрдВ рдХреЛ рдкрд╛рд░реНрд╕ рдХрд░рддреЗ рд╕рдордп рд╡рд┐рднрд┐рдиреНрди рдмрд┐рдирд╛ рдХрдЯреЗ рд╣реБрдП рдХреАрдбрд╝реЗ рд╣реЛрддреЗ рд╣реИрдВред рдкреНрд░рдорд╛рдгрди рдкреНрд░рд╛рдзрд┐рдХрд░рдг рдХреЗ рдкреНрд░рдорд╛рдгрдкрддреНрд░ рдХреЛ рдкрд╛рд░реНрд╕ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ рдФрд░ рдЕрдВрдХ 26 рдореЗрдВ рдкреНрд░рд╕реНрддрд╛рд╡рд┐рдд рдкреИрдЪ рдиреЗ рдорджрдж рдирд╣реАрдВ рдХреА
- рдЖрдк рдЕрдкрдирд╛ рд╕реНрд╡рдпрдВ рдХрд╛ рдкреНрд░рдорд╛рдг рдкрддреНрд░ рдирд╣реАрдВ рдЬреЛрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВ, рдЬрд┐рд╕реЗ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рд╡рд┐рд╢реНрд╡рд╕рдиреАрдп рдорд╛рдирд╛ рдЬрд╛рдПрдЧрд╛ред рдкрд┐рдЫрд▓реЗ рдкреИрд░рд╛рдЧреНрд░рд╛рдл рдХреЗ рд╕рд╛рде рдЬреЛрдбрд╝рд╛, рд╣рдо рдореВрд▓ рд░реВрдк рд╕реЗ рд╕рд░реНрд╡рд░ рдкреНрд░рдорд╛рдгрдкрддреНрд░ рдХреЛ рд╕рддреНрдпрд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рдЦреЛ рджреЗрддреЗ рд╣реИрдВред рдЖрдкрдХреЛ рд╕реНрд╡рдпрдВ рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХреЛ рдЬреЛрдбрд╝рдирд╛ рд╣реЛрдЧрд╛ (рдиреАрдЪреЗ рдПрдХ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдЙрджрд╛рд╣рд░рдг), рдпрд╛ рдПрдХ рд╕реБрд░рдХреНрд╖рд╛ рдЫреЗрдж рдХреЛ рдЫреЛрдбрд╝рдХрд░ TrustAllCertports рдореЛрдб рдореЗрдВ рдХрд╛рдо рдХрд░реЗрдВред
- рдХреНрд▓рд╛рдЗрдВрдЯ рд╕рд┐рд╕реНрдЯрдо рдкрд░ рд╕реНрдерд╛рдкрд┐рдд рдкреНрд░рдорд╛рдгрдкрддреНрд░реЛрдВ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХрд╛ рдХреЛрдИ рддрд░реАрдХрд╛ рдирд╣реАрдВ рд╣реИред TLSConfig :: localKeyStore рд╕рдВрдкрддреНрддрд┐ рдХреА рдЙрдкрд╕реНрдерд┐рддрд┐ рд╕реЗ рджреЗрдЦрддреЗ рд╣реБрдП , рд╡рд┐рдЪрд╛рд░ рдерд╛, рд▓реЗрдХрд┐рди, рдЬрд╛рд╣рд┐рд░ рд╣реИ, рдРрд╕реА рд╕реВрдЪреА рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП AS3 рдХреА рдЕрдХреНрд╖рдорддрд╛ рдиреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЛ рдзреАрдорд╛ рдХрд░ рджрд┐рдпрд╛ред
рд╣рд╛рд▓рд╛рдВрдХрд┐, рдПрдХ рд╕рдХрд╛рд░рд╛рддреНрдордХ рдмрд┐рдВрджреБ рд╣реИ, рдкреБрд╕реНрддрдХрд╛рд▓рдп рдЕрдорд╛рдиреНрдп рдкреНрд░рдорд╛рдг рдкрддреНрд░ рдХреЗ рд╕рд╛рде рднреА рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрдИ рдЭрдВрдбреЗ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИ (рдкреНрд░рдорд╛рдг рдкрддреНрд░ рдореЗрдВ рд╕рд░реНрд╡рд░ рдирд╛рдо рдХрд╛ рдмреЗрдореЗрд▓ рдФрд░ рд╕реНрд╡-рд╣рд╕реНрддрд╛рдХреНрд╖рд░рд┐рдд рдкреНрд░рдорд╛рдг рдкрддреНрд░) рдХреЛрдб рдХрд╛ рдЦреБрд▓рд╛рдкрди рдЕрдкреВрд░реНрдг рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХреЛ рдЬреЛрдбрд╝рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдкреНрд░рдорд╛рдг рдкрддреНрд░ рдХреА рд╕рдорд╛рдкреНрддрд┐ рдХреА рдЕрдирджреЗрдЦреА рдпрд╛ рдЕрдкрдиреЗ рд╕реНрд╡рдпрдВ рдХреЗ рдкреНрд░рдорд╛рдг рдкрддреНрд░ рдХреЗ рдЕрд▓рд╛рд╡рд╛)
рдЕрдкрдиреЗ рд╕реНрд╡рдпрдВ рдХреЗ рд╡рд┐рд╢реНрд╡рд╕рдиреАрдп рдкреНрд░рдорд╛рдг рдкрддреНрд░ рдЬреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП рдкреИрдЪрдПрдХ рдЫреЛрдЯрд╛ рдкреИрдЪ рдЬреЛ DER рдкреНрд░рд╛рд░реВрдк рдореЗрдВ рд╡рд┐рд╢реНрд╡рд╕рдиреАрдп рдХреЗ рд░реВрдк рдореЗрдВ рдмрд╛рд╣рд░реА рдкреНрд░рдорд╛рдгрдкрддреНрд░ рдХреЗ рд▓рд┐рдП рд╕рдорд░реНрдерди рдЬреЛрдбрд╝рддрд╛ рд╣реИред рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЗ рд▓рд┐рдП, рд╣рдо рдХреЗрд╡рд▓ рдкреВрд░реЗ рдкреНрд░рдорд╛рдг рдкрддреНрд░ рдХреЗ рдПрдордбреА 5 рд╣реИрд╢ рд▓реЗрддреЗ рд╣реИрдВ рдФрд░ рдЗрд╕рдХреА рддреБрд▓рдирд╛ рд╕рд░реНрд╡рд░ рд╕реЗ рдХреНрдпрд╛ рдХрд░рддреЗ рд╣реИрдВ, рдЕрдЧрд░ рдпрд╣ рдореЗрд▓ рдЦрд╛рддрд╛ рд╣реИ, рддреЛ рдкреНрд░рдорд╛рдг рдкрддреНрд░ рдкрд░ рднрд░реЛрд╕рд╛ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
- рд╡рд░реНрдЧ рдореЗрдВ com.hurlant.crypto.tls.TLSConfig рдЕрдкрдиреЗ рдкреНрд░рдорд╛рдгрдкрддреНрд░реЛрдВ рдХреЛ рдЬреЛрдбрд╝рдиреЗ рдФрд░ рд╕рддреНрдпрд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреЗ рддрд░реАрдХреЗ рдЬреЛрдбрд╝реЗрдВ
public function addTrustedCertificate(cert:ByteArray):void { var md5:String = Hex.fromArray(new MD5().hash(cert)); trustedCertificates[md5] = true; } public function isTrustedCertificate(cert:X509Certificate):Boolean { var md5:String = cert.md5; return trustedCertificates[md5]; }
- рд╡рд░реНрдЧ com.hurlant.crypto.cert.X509Certificate рдореЗрдВ md5 рд╣реИрд╢ рдФрд░ _bytes рд╕рдВрдкрддреНрддрд┐ (DER рдПрдиреНрдХреЛрдбрд┐рдВрдЧ рдореЗрдВ рдкреНрд░рдорд╛рдг рдкрддреНрд░) рдкрд░ рдПрдХ рдЧреЗрдЯреНрдЯрд░ рдЬреЛрдбрд╝реЗрдВред
private function load():void { ... } else if (p is ByteArray) { b = p; } _bytes = b; ... } private var _bytes:ByteArray; private var _md5:String; public function get md5():String { if(_md5) { return _md5; } if (_bytes) { _md5 = Hex.fromArray(new MD5().hash(_bytes)); } else { throw new Error("get md5: Invalid x509 Certificate parameter"); } return _md5; }
- in com .hurlant.crypto.tls.TLSEngine, рд╕рд░реНрдЯрд┐рдлрд┐рдХреЗрдЯ рдХреЗ рдкреНрд░реЙрдХреНрд╕реА рд╕рддреНрдпрд╛рдкрди рдХреЛ рд▓реЛрдб рд╕рд░реНрдЯрд┐рдлрд┐рдХреЗрдЯ рд╡рд┐рдзрд┐ рд▓рд╛рдЗрди 810 рдореЗрдВ рдЬреЛрдбрд╝реЗрдВ:
... } else if (_config.isTrustedCertificate(firstCert)) { certTrusted = true; } else if(_config.trustSelfSignedCertificates ) {
рдЙрдкрдпреЛрдЧ рдХрд╛ рдЙрджрд╛рд╣рд░рдг:
package { import com.hurlant.crypto.tls.TLSConfig; import com.hurlant.crypto.tls.TLSEngine; import com.hurlant.crypto.tls.TLSSecurityParameters; import com.hurlant.crypto.tls.TLSSocket; import com.hurlant.util.der.PEM; import flash.display.Sprite; import flash.events.Event; import flash.events.IOErrorEvent; import flash.events.SecurityErrorEvent; import flash.utils.ByteArray; public class addcerttest extends Sprite { [Embed(source="cert.pem", mimeType="application/octet-stream")] private static const cert_pem:Class; public function addcerttest() { var cert_pem_bytes:ByteArray = new cert_pem(); var cert_der:ByteArray = PEM.readCertIntoArray(cert_pem_bytes.readUTFBytes(cert_pem_bytes.bytesAvailable)); var config:TLSConfig = new TLSConfig(TLSEngine.CLIENT, null, null, null, null, null, TLSSecurityParameters.PROTOCOL_VERSION); config.addTrustedCertificate(cert_der); var socket:TLSSocket = new TLSSocket(null, 0, config); socket.addEventListener(Event.CONNECT, log); socket.addEventListener(Event.CLOSE, log); socket.addEventListener(IOErrorEvent.IO_ERROR, log); socket.addEventListener(SecurityErrorEvent.SECURITY_ERROR, log); socket.connect("my.app.server", 443); } private function log(event:Event):void { trace(event.type); } } }
рдПрд╕рдПрд╕рдПрд▓ / рдЯреАрдПрд▓рдПрд╕
TLSSocket рдкрд░ , рдЯреНрд░реИрдлрд╝рд┐рдХ рдПрдиреНрдХреНрд░рд┐рдкреНрд╢рди рджреЛрдиреЛрдВ рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рдореЗрдВ рдХрд╛рдо рдХрд░рддрд╛ рдерд╛, рд▓реЗрдХрд┐рди рдЧреНрд░рд╛рд╣рдХ рдХреЗ рдХрдИ рдорд┐рдирдЯреЛрдВ рдХреЗ рдмрд╛рдж рдкреИрдХреЗрдЯ рдореЗрдВ рдПрдиреНрдХреНрд░рд┐рдкреНрд╢рди рдПрдиреНрдХреНрд░рд┐рдкреНрд╢рди рдПрд╕рдПрд╕рдПрд▓ рдореЗрдВ рдЯреВрдЯ рдЬрд╛рддрд╛ рд╣реИред рд╕рдмрд╕реЗ рдЕрдзрд┐рдХ рд╕рдВрднрд╛рд╡рдирд╛ рд╣реИ рдХрд┐ рдпрд╣ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдореЗрдВ рдХрд┐рд╕реА рдкреНрд░рдХрд╛рд░ рдХреЗ рдХреАрдбрд╝реЗ рдХреЗ рдХрд╛рд░рдг рдЯреВрдЯ рдЬрд╛рддрд╛ рд╣реИ, рдЙрдиреНрд╣реЛрдВрдиреЗ рдЦреЛрдЬ рдирд╣реАрдВ рдХреА, рдХреНрдпреЛрдВрдХрд┐ рдЯреАрдПрд▓рдПрд╕ рд╕рдорд╕реНрдпрд╛рдУрдВ рдХреЗ рдмрд┐рдирд╛ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред
As3crypto рдореЗрдВ рдЖрдо рддреМрд░ рдкрд░
рдмрдЧ рдХреА рдПрдХ рдмрдбрд╝реА
рд╕реВрдЪреА рд╣реЛрддреА рд╣реИ рдФрд░ рд╕рдорд╕реНрдпрд╛ рдЗрд╕ рддрдереНрдп рд╕реЗ рдмрдврд╝ рдЬрд╛рддреА рд╣реИ рдХрд┐ рдбреЗрд╡рд▓рдкрд░реНрд╕ рдиреЗ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХреЛ рдЕрдкрдбреЗрдЯ рдХрд░рдирд╛ рдмрдВрдж рдХрд░ рджрд┐рдпрд╛ред
рдЙрддреНрдкрд╛рджрдХрддрд╛
SecureSocket
рд╕рд┐рдХреНрдпреЛрд░рдХреЗрдЯ рдХреЗ рд╕рд╛рде рдПрдХ рдирдИ рд╕рдорд╕реНрдпрд╛ рдЙрддреНрдкрдиреНрди рд╣реБрдИ - рд╕рдордп-рд╕рдордп рдкрд░ (рдкреНрд░рддреНрдпреЗрдХ 5-10 рдЕрдиреБрд░реЛрдз), рд╕реЙрдХреЗрдЯ "рд╕реНрд╡рдпрдВ рдореЗрдВ рдЪрд▓рд╛ рдЬрд╛рддрд╛ рд╣реИ" рдмрд┐рдирд╛ рдХрд┐рд╕реА рд╕реНрдкрд╖реНрдЯ рдХрд╛рд░рдг рдХреЗ 2-8 рд╕реЗрдХрдВрдб рдХреЗ рд▓рд┐рдПред рдореИрдВ рдпрд╣ рдХрд╣рдиреЗ рдХреЗ рд▓рд┐рдП рдирд╣реАрдВ рдХрд╣рддрд╛ рд╣реВрдВ рдХрд┐ рд╕рднреА рдХреЗ рдкрд╛рд╕ рдЗрд╕ рддрд░рд╣ рдХреЗ рдЕрдВрддрд░рд╛рд▓ рд╣реЛрдВрдЧреЗ, рд▓реЗрдХрд┐рди рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдЙрдиреНрд╣реЗрдВ, рдПрдХ рд╣реА рд╕рд░реНрд╡рд░ рдкрд░, рдерд╛ред рдЬрд┐рд╕ рдкрд░
рдЯреАрдПрд▓рдПрд╕рдПрд╕рдХреЗрдЯ рдиреЗ рддреЗрдЬреА рд╕реЗ рдХрд╛рдо рдХрд┐рдпрд╛, рдЕрд░реНрдерд╛рддреНред рдЧреНрд░рд╛рд╣рдХ рдкрдХреНрд╖ рдкрд░ рд╡реНрдпрд╛рдкрд╛рд░ред рдПрдХ рдЖрд╡реЗрджрди рдХреЗ рд░реВрдк рдореЗрдВ рдмрд╛рдзреНрдпрдХрд╛рд░реА рдмрд┐рдирд╛ рдПрдХ "рд╕рд╛рдл" рдбреЗрдореЛ рдореЗрдВ рдкрд░реАрдХреНрд╖рдг рдХрд┐рдпрд╛ рдЧрдпрд╛ред рдкреИрдХреЗрдЯ рдХреЗ рдЖрдХрд╛рд░ рдкрд░ рдкрд╛рд░реНрд╕рд┐рдВрдЧ рд╕рдордп рдХреА рдирд┐рд░реНрднрд░рддрд╛ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдирд╛ рд╕рдВрднрд╡ рдирд╣реАрдВ рдерд╛, рд╣рдордиреЗ 30 рдмрд╛рдЗрдЯ рд╕реЗ 5 рдХреЗрдмреА рддрдХ рдкреИрдХреЗрдЯ рдХреА рдХреЛрд╢рд┐рд╢ рдХреА, рд░реИрдВрдбрдо рдкреИрдХреЗрдЯ рдкрд░ рдлреНрд░реАрдЬ рдЕрд▓рдЧ-рдЕрд▓рдЧ рд╕рдордп рдкрд░ рджрд┐рдЦрд╛рдИ рджрд┐рдП, рдкреНрд░реЛрд╕реЗрд╕рд░ рдиреЗ рдлреНрд░реАрдЬ рдХреЗ рджреМрд░рд╛рди рд▓реЛрдб рдирд╣реАрдВ рдХрд┐рдпрд╛, рдПрдлрдкреАрдПрд╕ рдбреНрд░реЙрдк рдирд╣реАрдВ рд╣реБрдЖред рдкреИрдХреЗрдЯ рдкрд╛рд░реНрд╕рд┐рдВрдЧ рдЕрдкрдиреЗ рдЖрдк рдореЗрдВ рддреЗрдЬрд╝ рд╣реИ, рдпрджрд┐ рдЖрдк рдХреЗрд╡рд▓ рдкреИрдХреЗрдЯ рдмрд┐рдирд╛ рдХрд┐рд╕реА рд▓рдЯрдХреЗ рд▓реЗ рд▓реЗрддреЗ рд╣реИрдВ, рддреЛ
рд╕реЙрдХреЗрдЯ рдФрд░
рд╕рд┐рдХреНрдпреЛрд░ рд╕реЙрдХреЗрдЯ рдХреЗ рдмреАрдЪ рдЕрдВрддрд░
рдЕрд╕рдВрдЧрдд рд╣реИ , рдЬрдмрдХрд┐
TLSSocket рдЕрднреА рднреА
рд╕реЙрдХреЗрдЯ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдзреАрдорд╛ рд╣реИред рдореИрдВ рдмрд╛рдж рдореЗрдВ рдЗрд╕рд╕реЗ рдирд┐рдкрдЯрдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░реВрдВрдЧрд╛, рдХреНрдпреЛрдВрдХрд┐ рдореИрдВ рдЕрдм рднреА рдПрдХ рддреЗрдЬреА рд╕реЗ рдХрд╛рдо рдХрд░рдиреЗ рд╡рд╛рд▓рд╛ рджреЗрд╢реА рд╡рд┐рдХрд▓реНрдк рд▓реЗрдирд╛ рдЪрд╛рд╣реВрдВрдЧрд╛ред
TLSSocket
рдЪреВрдВрдХрд┐ рдкреВрд░реЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдпрд╣рд╛рдБ as3 рдкрд░ рдкрд╛рд░реНрд╕рд┐рдВрдЧ рдкреИрдХреЗрдЯ рдХрд╛ рд╕рдордп рдЖрдХрд╛рд░ рдХреЗ рд▓рд┐рдП рд░реИрдЦрд┐рдХ рд░реВрдк рд╕реЗ рдЖрдиреБрдкрд╛рддрд┐рдХ рд╣реИ рдФрд░ рдХреЛрд░ i7 рдкрд░ 2-7 рдХреЗрдмреА рдкреИрдХреЗрдЯ (рд╣рдорд╛рд░реА рдкрд░рд┐рдпреЛрдЬрдирд╛ рдореЗрдВ рдЕрдзрд┐рдХрддрдо) рдХреЗ рд▓рд┐рдП рдХреНрд░рдорд╢рдГ 40-120 рдПрдордПрд╕ рдерд╛, рд░рдирдЯрд╛рдЗрдо рдиреЛрдЯрд┐рдлрд┐рдХреЗрд╢рди рдХреЗ рд╕рд╛рде рдЫреЛрдЯреЗ рдкреИрдХреЗрдЯ рдкреИрдХреЗрдЯ рдХреЗ рд▓рд┐рдП рдкрд╛рд░реНрд╕ рдХрд┐рдП рдЧрдП (5-20 рдПрдордПрд╕)ред 100-500 рдмрд╛рдЗрдЯреНрд╕ рдореЗрдВ) рдФрд░ рдХрд┐рд╕реА рднреА рд▓реИрдЧ рдХрд╛ рдХрд╛рд░рдг рди рдмрдиреЗрдВред рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЗ рд▓рд┐рдП, рдПрд╕рдПрд╕рдПрд▓ / рдЯреАрдПрд▓рдПрд╕ рдХрд╛ рдЬреЛрдбрд╝ рдХреЗрд╡рд▓ рдмрдбрд╝реЗ рдкреИрдХреЗрдЯ рдкрд░ рдзреНрдпрд╛рди рджреЗрдиреЗ рдпреЛрдЧреНрдп рд╣реЛрдЧрд╛ред
Swf рд▓реЗрдЖрдЙрдЯ
рд╕рднреА рдЪреЗрдХ рдХрд┐рдП рдЧрдП рдФрд░ рдбреАрдмрдЧ рдХрд┐рдП рдЧрдП, рдЕрдм, рд╣рдо рдЕрд╕реЗрдВрдмрд▓реА рдХреЛ http рд╕рд░реНрд╡рд░ рдкрд░ рдкреЛрд╕реНрдЯ рдХрд░рддреЗ рд╣реИрдВ,
рд╕реЙрдХреЗрдЯ рдкреЙрд▓рд┐рд╕реА рд╕рд░реНрд╡рд░ рдХреЛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░рдирд╛ рдирд╣реАрдВ рднреВрд▓рддреЗ рд╣реИрдВред рд╣рдо рдЖрд╡реЗрджрди рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВ, рд╣рдо рджреЗрдЦрддреЗ рд╣реИрдВ рдХрд┐ рджреЛрдиреЛрдВ рд╕реЙрдХреЗрдЯ рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВред рдкреНрд░рддреНрдпреЗрдХ рдХреЗ рдЕрдкрдиреЗ рдХрд╛рд░рдг рд╣реИрдВ:
рдЯреАрдПрд▓рдПрд╕рдПрд╕рдХреЗрдЯ рд╕рдорд╕реНрдпрд╛ 4 рдХреЗ рдХрд╛рд░рдг рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ - рдХреНрд▓рд╛рдЗрдВрдЯ рдХрдиреЗрдХреНрд╢рди рд╕реНрдерд╛рдкрд┐рдд рд╣реЛрдиреЗ рд╕реЗ рдкрд╣рд▓реЗ "рд╣реИрдВрдбрд╢реЗрдХ" рдХреЗ рд▓рд┐рдП рдЕрдиреБрд░реЛрдз рднреЗрдЬрддрд╛ рд╣реИред
SecureSocket рдХреЗ рд╕рд╛рде
, рдлрд╝реНрд▓реИрд╢ рдкреНрд▓реЗрдпрд░ рдХреЗ рд▓рд┐рдП рдЖрдкрдХреЛ TLS / SSL рдХрдиреЗрдХреНрд╢рди рдЦреЛрд▓рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрдирд╛ рдереЛрдбрд╝рд╛ рдХрдард┐рди рд╣реИ, рдЖрдкрдХреЛ рд╕рд░реНрд╡рд░ рд╕реЗ TLS / SSL рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдиреАрддрд┐ рдлрд╝рд╛рдЗрд▓ рднреЗрдЬрдиреА рд╣реЛрдЧреА, рдЕрд░реНрдерд╛рдд рдЗрд╕ рдлрд╝рд╛рдЗрд▓ рдХреЗ рд╡рд┐рддрд░рдХ рдХреЛ рдЕрдВрддрд┐рдо рд░реВрдк рджреЗрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреАред
рдирд┐рд╖реНрдХрд░реНрд╖
рд╕рд┐рдХреНрдпреЛрд░рдХреЗрдЯ рдХреЛ рд╕рд┐рд╕реНрдЯрдо рдореЗрдВ рдПрдХреАрдХреГрдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдЬреЛ рдЗрд╕реЗ рд╕рд┐рд╕реНрдЯрдо рд╕рд░реНрдЯрд┐рдлрд┐рдХреЗрдЯ рд╕реНрдЯреЛрд░реЗрдЬ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ рдФрд░ рд╕рд┐рд╕реНрдЯрдо рдЕрдкрдиреА рдкреНрд░рд╛рдорд╛рдгрд┐рдХрддрд╛ рдХреЛ рд╕рддреНрдпрд╛рдкрд┐рдд рдХрд░рдиреЗ рдХрд╛ рд╕рд╛рдзрди
рдмрдирд╛рддрд╛ рд╣реИ , рдЬрд┐рд╕реЗ
рдЯреАрдПрд▓рдПрд╕рдПрд╕рдХреЗрдЯ рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛ред рд╣рд╛рд▓рд╛рдБрдХрд┐,
SecureSocket рдХреЗ рд▓рд╛рдн рд╡рд╣рд╛рдБ рд╕рдорд╛рдкреНрдд рд╣реЛрддреЗ рд╣реИрдВред рд╕реНрдкрд╖реНрдЯ рдХрдорд┐рдпреЛрдВ рдореЗрдВ рд╕реЗ, рдореИрдВ рдЖрдиреЗ рд╡рд╛рд▓реЗ рдбреЗрдЯрд╛ рдХреЛ рдкрд╛рд░реНрд╕ рдХрд░рддреЗ рд╕рдордп рджреВрд╕рд░реА рд▓реИрдЧреНрд╕ рдХреЛ рдиреЛрдЯ рдХрд░рддрд╛ рд╣реВрдВ, рдЯреВрдЯрд╛ рд╣реБрдЖ рдПрд╕рдПрд╕рдПрд▓ 3.0 рдФрд░ рдЖрдо рддреМрд░ рдкрд░ рдбрд┐рдмрдЧрд┐рдВрдЧ рд╕рд╛рдЗрд▓реЗрдВрд╕ рдЕрдЧрд░ рдХреБрдЫ рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ, рдЬреЛ рдХрд┐ рдХрдИ рджреЗрд╢реА as3 рд╕рдорд╛рдзрд╛рдиреЛрдВ рдХреА рд╡рд┐рд╢реЗрд╖рддрд╛ рд╣реИред
рдЯреАрдПрд▓рдПрд╕рдПрд╕рдХреЗрдЯ рдХреЛ рдЗрд╕рдХреА рддреЗрдЬ рдЧрддрд┐ рдФрд░ рдХрд╛рд░реНрдп рдореЗрдВ рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреЛ рдареАрдХ рдХрд░рдиреЗ (рдпрд╛ рдХрдо рд╕реЗ рдХрдо рдХрд╛рд░рдг рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рдиреЗ) рдХреА рдХреНрд╖рдорддрд╛ рд╕реЗ рдкрд╣рдЪрд╛рдирд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЗрд╕рдХрд╛ рд╕реНрд░реЛрдд рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИред
рдзрдиреНрдпрд╡рд╛рдж, рдЬреЛ рдЕрдВрдд рддрдХ рдкрдврд╝рддреЗ рд╣реИрдВ, рдореБрдЭреЗ рдЖрд╢рд╛ рд╣реИ рдХрд┐ рд╕рд╛рдордЧреНрд░реА рдЙрдкрдпреЛрдЧреА рд╣реЛрдЧреА рдФрд░ рдХреЛрдИ рд╕рдордп рдмрдЪрд╛рдПрдЧрд╛ред рдЯрд╛рдЗрдкреЛ рдФрд░ рддреНрд░реБрдЯрд┐рдпрд╛рдВ рд╡реНрдпрдХреНрддрд┐рдЧрдд рд░реВрдк рд╕реЗ рднреЗрдЬреЗрдВред рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдореЗрдВ рдЪрд░реНрдЪрд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрд╢реБрджреНрдзрд┐ рдФрд░ рдкрд░рд┐рд╡рд░реНрдзрди рдЦреБрд╢реА рд╣реЛрдЧреАред
GitHub рд╕реЗ рд▓рд┐рдВрдХ
as3crypto_patch рд▓реЗрдЦ рдореЗрдВ рдЙрд▓реНрд▓рд┐рдЦрд┐рдд рдкреИрдЪ рдФрд░ рдмрд╛рд╣рд░реА рд╡рд┐рд╢реНрд╡рд╕рдиреАрдп рдкреНрд░рдорд╛рдгрдкрддреНрд░ рдЬреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХреЗ рд╕рд╛рдеред