рдпрд╣ рдпреВрдирд┐рдлрд╝рд╛рдЗрдб
рдкреЛрд░реНрдЯрд▓ рдСрдлрд╝ рд╕реНрдЯреЗрдЯ рд╕рд░реНрд╡рд┐рд╕реЗрдЬ (EPGU) рдФрд░ eToken-GOST рдбрд┐рдЬрд┐рдЯрд▓ рд╣рд╕реНрддрд╛рдХреНрд╖рд░ рдХреА рд╣рд╛рд░реНрдбрд╡реЗрдпрд░ рдХреБрдВрдЬрд┐рдпреЛрдВ рдХреЗ
рдмрд╛рд░реЗ рдореЗрдВ рдкрд┐рдЫрд▓реЗ рдкреЛрд╕реНрдЯ рдореЗрдВ рдЙрдард╛рдП рдЧрдП рд╡рд┐рд╖рдп рдХрд╛ рдПрдХ рд╕рд┐рд▓рд╕рд┐рд▓рд╛ рд╣реИред
рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рд░реЗрдХ рдХрд╛ рдкрд╛рд░рдВрдкрд░рд┐рдХ рд╡рд┐рд╡рд░рдгред
рдХреНрд╡реЗрд╕реНрдЯ рд╕рдВрдЦреНрдпрд╛ 1
рдЯреЛрдХрди рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рдореИрдВ рдЙрд╕рдореЗрдВ рд╕реЗ рдореБрдЦреНрдп рдкреНрд░рдорд╛рдгрдкрддреНрд░ рдирд┐рдХрд╛рд▓рдирд╛ рдЪрд╛рд╣рддрд╛ рдерд╛, рддрд╛рдХрд┐ рдЬрд┐рд╕ рд╕реНрдерд┐рддрд┐ рдореЗрдВ рдореИрдВ рдЕрдкрдиреЗ рдбрд┐рдЬрд┐рдЯрд▓ рд╣рд╕реНрддрд╛рдХреНрд╖рд░ рдХреА рдЬрд╛рдВрдЪ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЗрдЪреНрдЫреБрдХ рдкрд╛рд░реНрдЯрд┐рдпреЛрдВ рдХреЛ рджреЗ рд╕рдХреВрдВред
рдкрд╣рд▓реА рд░реЗрдХ - рди рддреЛ рдПрд╕рдбреАрдХреЗ 4.55 рдФрд░ рди рд╣реА рдПрд╕рдбреАрдХреЗ 5.1 рдИрдЯреЛрдХрди GOST рдХреЛ рдкреНрд░рд╛рд░рдВрднрд┐рдХ рд░реВрдк рд╕реЗ рдФрд░ рдореМрдЬреВрджрд╛ рдХреБрдВрдЬреА рдХреЗ рд╕рд╛рде рдкрд╣рдЪрд╛рдирдирд╛ рдирд╣реАрдВ рдЪрд╛рд╣рддреА рдереАред
рджреВрд╕рд░реА рд░реЗрдХ - рдХреНрд░рд┐рдкреНрдЯреЛрдкреНрд░реЛ 3.6 - рднреАред рдХреНрдпрд╛ рдЕрдЬреАрдм рд╣реИ - рдкреНрд░рдорд╛рдг рдкрддреНрд░ рдХреЗ рд░реВрдк рдореЗрдВ рдпрд╣ рд╕рдВрдХреЗрдд рджрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ рдХрд┐ рдХреБрдВрдЬреА CryptoPro CSP 3.6 рджреНрд╡рд╛рд░рд╛ рдЙрддреНрдкрдиреНрди рдХреА рдЧрдИ рдереАред
рд╕рддреНрдп рдХреА рдЦреЛрдЬ рдореЗрдВ
, рдХрдо рд╕реЗ рдХрдо рдХреБрдЫ рдРрд╕рд╛ рдЬреЛ рдЯреЛрдХрди рдХреА рд╕рд╛рдордЧреНрд░реА рддрдХ рдкрд╣реБрдВрдЪрдиреЗ рдореЗрдВ рдорджрдж рдХрд░ рд╕рдХрддрд╛ рд╣реИ, рдореИрдВ рдЕрд▓рд╛рджреАрди рдореЗрдВ рдЬреЗрд╕реА-рд╡реЗрдм рдкреНрд▓рдЧрдЗрди рдХреЗ рдкрд╛рд░ рдЖрдпрд╛ред
рдкреНрд▓рдЧрдЗрди рдиреЗ рдЯреЛрдХрди рдХреЛ рдкрд╣рдЪрд╛рди рд▓рд┐рдпрд╛, рдПрд╕рдПрди рдЬрд╛рд░реА рдХрд┐рдпрд╛, рдЖрдИрдбреА 1 рдХреЗ рд╕рд╛рде рдирдВрдмрд░ 1 рдХреЗ рд╕рд╛рде рдкреНрд░рдорд╛рдг рдкрддреНрд░ рдХреА рдПрдХ рд╕реВрдЪреА рдФрд░ рдирд╛рдо "рдкреНрд░рдорд╛рдг рдкрддреНрд░"ред рд▓реЗрдХрд┐рди рдЕрдм рдФрд░ рдирд╣реАрдВред рдкрд┐рди рдХреЛ рдлреАрдб рдХрд░рдиреЗ, рдпрд╛ рд╣рд╕реНрддрд╛рдХреНрд╖рд░ рдХреЛ рдбреЗрдЯрд╛ рд╣рд╕реНрддрд╛рдВрддрд░рд┐рдд рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдЕрдкрд╡рд╛рдж рдХрд╛ рдХрд╛рд░рдг рдмрдирд╛ред
рдЖрдЦрд┐рд░реА рдЙрдореНрдореАрдж рдмрдиреА рд░рд╣реА - рдкреНрд░рд╛рдзрд┐рдХрд░рдг рдЙрджреНрджреЗрд╢реНрдпреЛрдВ рдХреЗ рд▓рд┐рдП рдИрдкреАрдЬреАрдпреВ рджреНрд╡рд╛рд░рд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЧрдП рдкреНрд▓рдЧ-рдЗрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ред рдЕрдирд┐рд╡рд╛рд░реНрдп рд░реВрдк рд╕реЗ рдПрдХ рд╣реА рдЬреЗрд╕реА-рд╡реЗрдм, рдХреЗрд╡рд▓ рдмрд╣реБрдд рд╕рд░рд▓ред
рдФрд░ рдореИрдВ рд░рд╛рдЬреНрдп рд╕реЗрд╡рд╛рдУрдВ рдХреА рд╡реЗрдмрд╕рд╛рдЗрдЯ рдкрд░ рдЪрдврд╝ рдЧрдпрд╛ред
рдХреНрд╡реЗрд╕реНрдЯ рд╕рдВрдЦреНрдпрд╛ 2
рдХреНрд╡реЗрд╕реНрдЯ рдирдВрдмрд░ рджреЛ рдмрд╣реБрдд рд╕рд░рд▓ рдирд┐рдХрд▓рд╛ред
рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рд╕реЗрд╡рд╛ рдкреЛрд░реНрдЯрд▓ рдХреЗ рдореБрдЦреНрдп рдкреГрд╖реНрда рдХреЛ рдЙрдЬрд╛рдЧрд░ рдХрд░рдиреЗ рдкрд░, рдореБрдЭреЗ рдкрддрд╛ рдЪрд▓рд╛ рдХрд┐ рдкреНрд▓рдЧрдЗрди рдореЗрдВ 2 рдореВрд▓рднреВрдд рдЬреЗрдПрд╕ рд╡рд┐рдзрд┐рдпрд╛рдБ рд╣реИрдВ: etgSignData, рдФрд░ etgGetCertificateред рд╡рд╣рд╛рдБ рднреА рдЧреБрдг etgErrorCode, рдорд╛рдиреНрдп рдФрд░ рд╕рдВрд╕реНрдХрд░рдг рд╣реИрдВ, рд▓реЗрдХрд┐рди рдмрд╛рдж рдХреА рддреБрдЪреНрдЫрддрд╛ рдХреЗ рдХрд╛рд░рдг, рдореИрдВ рдЙрди рдкрд░ рд╡рд┐рдЪрд╛рд░ рдирд╣реАрдВ рдХрд░реВрдВрдЧрд╛ред
рдИрдкреАрдЬреАрдпреВ рдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдореЗрдВ рдпреЗ рддрд░реАрдХреЗ рдЙрди рдХрд╛рд░реНрдпреЛрдВ рд╕реЗ рд▓рд┐рдкрдЯреЗ рд╣реБрдП рд╣реИрдВ рдЬреЛ рд╡реЗрдм рдкреЗрдЬ рдХреЗ рд╕рдВрджрд░реНрдн рдореЗрдВ рдкреНрд▓рдЧрдЗрди рддрдХ рдкрд╣реБрдВрдЪ рдХреЛ рд╕рд░рд▓ рдмрдирд╛рддреЗ рд╣реИрдВред
рдореИрдВрдиреЗ рдИрдорд╛рдирджрд╛рд░реА рд╕реЗ рдЙрдирдХреА рдирдХрд▓ рдХреА, рдмрд╕ рдереЛрдбрд╝рд╛ рдЯреНрд╡рд┐рдХрд┐рдВрдЧ рдХрд┐рдпрд╛редрдирддреАрдЬрддрди, рд╣рдореЗрдВ рдПрдХ рдРрд╕рд╛ рд╕рд░рд▓ рд╡реЗрдм рдкреЗрдЬ рдорд┐рд▓рд╛, рдЬреЛ рдЖрдкрдХреЛ рдЗрд╕рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ: рдХ) рдЯреЛрдХрди рдзрд╛рд░рдХ рдкреНрд░рдорд╛рдгрдкрддреНрд░ (рдмреЗрд╕ 64 рдореЗрдВ рдЬрд╛рд░реА рдХрд┐рдпрд╛ рдЧрдпрд╛) рдмрд╛рд╣рд░ рдЦреАрдВрдЪреЛ рдФрд░ рдбреЗрдЯрд╛ рдкрд░ рд╣рд╕реНрддрд╛рдХреНрд╖рд░ рдХрд░реЗрдВред Base64 рдПрдиреНрдХреЛрдбрд┐рдВрдЧ рдореЗрдВ рд▓рд┐рдкрдЯреЗ PKCS # 7 рдХреЗ рд░реВрдк рдореЗрдВ рднреА рд╣рд╕реНрддрд╛рдХреНрд╖рд░ рдХрд╛ рдЧрдарди рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред
EPGU рдкреНрд▓рдЧрдЗрди рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ eToken GOST рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрджрд╛рд╣рд░рдг рдкреГрд╖реНрда рдХрд╛ рдХреЛрдб<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <meta http-equiv="Content-Type" content="text/html; charset=windows-1251"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <title> eToken </title> </head> <body style="font-size: 11px; font-family: Verdana;"> <object id="etoken" type="application/x-csuser" width="0" height="0" style="overflow: hidden; float: left;"> </object> <script type="text/javascript" language="javascript"> /** * Operations with eToken GOST using CSuser plugin * **/ // . - , - - // 1 (PKCS#7, Base64), 5 - window.SignDataByEToken = function(mess, pin) { var plugin = eTokenPlugin(); if (plugin.valid) { // var return_array = new Object(); return_array[1] = ""; //cms(base64) return_array[5] = ""; //errorCode if (mess == "") { alert(" "); return return_array; } try { // CMS return_array[1] = eTokenPlugin().etgSignData(1, 1, pin, mess, 0); if (eTokenPlugin().etgErrorCode == 28) return_array[1] = eTokenPlugin().etgSignData(1, 99, pin, mess, 0); } catch (e) { alert(" \r\n" + e.description); return return_array; } try { // return_array[5] = eTokenPlugin().etgErrorCode; } catch (e) { alert(e.description); return return_array; } return return_array; } } // . - - . Base64 window.GetCertificateByEToken = function(pin) { var cert = null; try { if (eTokenPlugin().valid) { cert = eTokenPlugin().etgGetCertificate(1, 1, pin); if (eTokenPlugin().etgErrorCode == 28) { cert = eTokenPlugin().etgGetCertificate(1, 99, pin); } } } catch (e) { alert(e.description); } return cert; } // window.eTokenPlugin = function() { return document.getElementById("etoken"); }; // . window.checkPluginVersion = function(version) { if (!(eTokenPlugin() && eTokenPlugin().valid)) return false; var plugin_version = eTokenPlugin().version.split('.'); var portal_version = version.split('.'); if (isNaN(parseInt(plugin_version[0]))) return false; if (isNaN(parseInt(plugin_version[1]))) return false; if (isNaN(parseInt(plugin_version[2]))) return false; if (isNaN(parseInt(portal_version[0]))) return false; if (isNaN(parseInt(portal_version[1]))) return false; if (isNaN(parseInt(portal_version[2]))) return false; if (parseInt(plugin_version[0]) > parseInt(portal_version[0])) return true; if (parseInt(plugin_version[0]) < parseInt(portal_version[0])) return false; if (parseInt(plugin_version[1]) > parseInt(portal_version[1])) return true; if (parseInt(plugin_version[1]) < parseInt(portal_version[1])) return false; if (parseInt(plugin_version[2]) == 11 && parseInt(portal_version[2]) == 9) return false; //9>11 O_o if (parseInt(plugin_version[2]) > parseInt(portal_version[2])) return true; if (parseInt(plugin_version[2]) < parseInt(portal_version[2])) return false; return true; } // , function doLogin() { var PIN = document.getElementById("pin").value; var rd = document.getElementById("cleartext").value; var cert = GetCertificateByEToken(PIN); var ds = SignDataByEToken(rd, PIN); var dstext = ""; document.getElementById("cert").value = cert; for (name in ds) { dstext = dstext + name + " : " + ds[name] + "\r\n"; } document.getElementById("dsig").value = dstext; } </script> <div> <a id="btnLogin" onclick="doLogin();" style="border : solid 1px black; width : 140px; height : 40 px;" href="#"></a><br/><br/> <b>PIN-</b><br/> <input type="password" id="pin" style="width : 250px; border : solid 1px black;"/><br/><br/> <b></b><br/> <input type="text" id="cleartext" style="width : 250px; border : solid 1px black;"/><br/><br/> <b></b><br/> <input type="text" id="cert" style="width : 250px; border : solid 1px black;"/><br/><br/> <b></b><br/> <textarea id="dsig" style="width : 600px; height : 300px; border : solid 1px black;"></textarea><br/><br/> </div> </body> </html>