рд╣рдо GOST рдХреНрд░рд┐рдкреНрдЯреЛрдЧреНрд░рд╛рдлрд┐рдХ рдкреНрд░рджрд╛рддрд╛ рд▓рд┐рдЦрддреЗ рд╣реИрдВ

рдЕрдВрдЬреАрд░ред  1
рд╡рд┐рдВрдбреЛрдЬ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕реАрдПрд╕рдкреА рдмрдирд╛рдиреЗ рдХреЗ рд░рд╣рд╕реНрдпреЛрдВ рдХрд╛ рдЦреБрд▓рд╛рд╕рд╛ рдпреВ.рдПрд╕. рдЬрд╝рд╛рдпрд░реАрдиреЛрд╡ рдХреЗ рдПрдХ рд▓реЗрдЦ рдореЗрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ ред

GOST рд░реВрд╕реА рдХреНрд░рд┐рдкреНрдЯреЛрдЧреНрд░рд╛рдлрд┐рдХ рдПрд▓реНрдЧреЛрд░рд┐рджрдо рдУрдкрдирдПрд╕рдПрд╕рдПрд▓ рдЧреЛрд╕реНрдЯ рдореЗрдВ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рд┐рдд рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВред

рдореБрдЭреЗ рдЖрд╢реНрдЪрд░реНрдп рд╣реИ рдХрд┐ рдЗрдВрдЯрд░рдиреЗрдЯ рдкрд░ рдпрд╣ рдкреБрд╖реНрдЯрд┐ рдХрд░рдирд╛ рд╕рдВрднрд╡ рдирд╣реАрдВ рдерд╛ рдХрд┐ рдХрд┐рд╕реА рдиреЗ рдЙрдкрд░реЛрдХреНрдд рдЯреВрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╡рд┐рдВрдбреЛрдЬ рдХреЗ рд▓рд┐рдП GOST рдХреНрд░рд┐рдкреНрдЯреЛрдЧреНрд░рд╛рдлрд╝рд┐рдХ рдкреНрд░рджрд╛рддрд╛ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдмрдирд╛рдпрд╛ рдерд╛ред

рдЖрдк рд╕реЛрдЪ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рд╕реВрдЪрдирд╛ рд╕реБрд░рдХреНрд╖рд╛ рдореЗрдВ рд╡реНрдпрд╛рдкрдХ рдЕрдиреБрднрд╡ рд╡рд╛рд▓реА рдХреЗрд╡рд▓ рдмрдбрд╝реА рд╡рд╛рдгрд┐рдЬреНрдпрд┐рдХ рдХрдВрдкрдирд┐рдпрд╛рдВ рдпрд╣ рдХрд╛рд░реНрдп рдХрд░ рд╕рдХрддреА рд╣реИрдВ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЬреИрд╕реЗ:рдЦрдВрдбрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдХрдо рд╕реЗ рдХрдо рдЖрдВрд╢рд┐рдХ рд░реВрдк рд╕реЗ, рдпрд╣ рдХрдерди рдЗрд╕ рд▓реЗрдЦ рдХрд╛ рдХрд╛рд░реНрдп рд╣реЛрдЧрд╛ред

рд╢реБрд░реВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдо рдЕрдкрдиреЗ рдЖрдк рдХреЛ рдЫреЛрдЯреЗ рддрдХ рд╕реАрдорд┐рдд рдХрд░ рд▓реЗрдВрдЧреЗ, рд╣рдо рдорд╛рдирдХ рд╡рд┐рдВрдбреЛрдЬ рдЯреВрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ GOST рдкреНрд░рдорд╛рдгрдкрддреНрд░реЛрдВ рдХреА рдЕрдЦрдВрдбрддрд╛ рдХреЛ рд╕рддреНрдпрд╛рдкрд┐рдд рдХрд░рдирд╛ рд╕рдВрднрд╡ рдмрдирд╛ рджреЗрдВрдЧреЗ, рдЬреИрд╕рд╛ рдХрд┐ рдЖрдВрдХрдбрд╝реЗ рдореЗрдВ рд╣реИред рд╕рд╛рджрдЧреА рдХреЗ рд▓рд┐рдП, рд╣рдо рдИрдбреАрдПрд╕ рдХреЗ рдирд┐рд░реНрдорд╛рдг рдкрд░ рд╡рд┐рдЪрд╛рд░ рдирд╣реАрдВ рдХрд░реЗрдВрдЧреЗ, рд╣рдо рдореБрдЦреНрдп рдкреАрдврд╝реА рдХреЗ рд╡рд┐рд╖рдп рдкрд░ рд╕реНрдкрд░реНрд╢ рдирд╣реАрдВ рдХрд░реЗрдВрдЧреЗред рдкреНрд░рджрд╛рддрд╛ рдХреЗ рд╕рднреА рд╕реНрдерд╛рдиреЛрдВ рдореЗрдВ, рдбрд┐рдЬрд┐рдЯрд▓ рд╣рд╕реНрддрд╛рдХреНрд╖рд░ рдФрд░ рд╣реИрд╢ рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдЫреЛрдбрд╝рдХрд░, рд╡рд╛рдкрд╕реА TRUE рдХреЗ рд░реВрдк рдореЗрдВ рд╕реНрдЯрдмреНрд╕, рдЖрджрд┐, рдкрд╣рд▓реЗ рд╕реЗ рд╣реА Microsoft рд╕реЗ рдЙрджрд╛рд╣рд░рдг рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред рд▓реЗрдЦрдХ рдПрдХ рдХреНрд░рд┐рдкреНрдЯреЛрдЧреНрд░рд╛рдлрд┐рдХ рдкреНрд░рджрд╛рддрд╛ рдмрдирд╛рдиреЗ рдХреЗ рд╡рд┐рд╖рдп рдкрд░ рд▓реЗрдЦреЛрдВ рдХреА рдПрдХ рд╢реНрд░реГрдВрдЦрд▓рд╛ рд▓рд┐рдЦрдиреЗ рдХреА рдпреЛрдЬрдирд╛ рдмрдирд╛ рд░рд╣рд╛ рд╣реИ рдФрд░ рднрд╡рд┐рд╖реНрдп рдореЗрдВ рдЗрди рд╕рднреА рдХрдорд┐рдпреЛрдВ рдХреЛ рдзреАрд░реЗ-рдзреАрд░реЗ рд╕рдорд╛рдкреНрдд рдХрд░ рджрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред

рдкрд╣рд▓реЗ рдЪрд░рдг рдореЗрдВ, рд╣рдореЗрдВ рдЗрддрдирд╛ рдХреБрдЫ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ, рдЕрд░реНрдерд╛рддреН, рдкрд╣рд▓реЗ рд▓реЗрдЦ рдореЗрдВ рд╡рд░реНрдгрд┐рдд рдЪрд░рдгреЛрдВ рдХрд╛ рдкреНрд░рджрд░реНрд╢рди рдХрд░реЗрдВред рдпреВ.рдПрд╕. рдЬреНрдпрд╛рд░реНрдпрд╛рдиреЛрд╡, рдлрд┐рд░ рдЖрд░рдПрдлрд╕реА -4357 рд╕реЗ рдУрдЖрдИрдбреА рд╕реВрдЪреА рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВ, рдУрдкрдирдПрд╕рдПрд╕рдПрд▓ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХреЛ GOST рдХреНрд░рд┐рдкреНрдЯреЛрдЧреНрд░рд╛рдлрд╝рд┐рдХ рдПрд▓реНрдЧреЛрд░рд┐рджрдо рдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕рдВрдХрд▓рд┐рдд рдХрд░реЗрдВ, рдФрд░ рдЕрдВрдд рдореЗрдВ, рдвреВрдВрдвреЗрдВред рдЕрд╕рд▓реА рд╕реАрдП рд░реВрдЯ рдкреНрд░рдорд╛рдг рдкрддреНрд░ , рдФрд░ рди рдХреЗрд╡рд▓ рд░реВрдЯ рд╡рд╛рд▓реЗ, рдкрд░реАрдХреНрд╖рдг рдХреЗ рд▓рд┐рдП рдХрд┐ рд╣рдореЗрдВ рдХреНрдпрд╛ рдорд┐рд▓рд╛ред

рддреЛ рдЪрд▓рд┐рдП рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВред

рд╕реНрд░реЛрдд рдбрд╛рдЙрдирд▓реЛрдб рдХрд░реЗрдВ


рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ рдЖрдкрдХреЛ рд╣рд░реЗ рд░рдВрдЧ рдХреЗ рдбрд╛рдЙрдирд▓реЛрдб рдирд╛рдЙ рдмрдЯрди рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░рдХреЗ Microsoft рдХреНрд░рд┐рдкреНрдЯреЛрдЧреНрд░рд╛рдлрд┐рдХ рд╕рд░реНрд╡рд┐рд╕ рдкреНрд░реЛрд╡рд╛рдЗрдбрд░ рдбреЗрд╡рд▓рдкрдореЗрдВрдЯ рдХрд┐рдЯ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░рдиреА рд╣реЛрдЧреАред

рдореИрдВ рдЕрдкреНрд░рддреНрдпрдХреНрд╖ рд▓рд┐рдВрдХ рдХреЗ рд▓рд┐рдП рдорд╛рдлреА рдЪрд╛рд╣рддрд╛ рд╣реВрдВ, рд▓реЗрдХрд┐рди рд╕рд╛рдЗрдЯ www.microsoft.com рдкрд░ CSPDK рдирд╣реАрдВ рдкрд╛рдпрд╛ рдЬрд╛ рд╕рдХрд╛ред рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЗрд╕реЗ рд╕рд╛рдЗрдЯ рд╕реЗ рд╣рдЯрд╛ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдФрд░ рдКрдкрд░ рджрд┐рдП рдЧрдП рд▓рд┐рдВрдХ рдореЗрдВ 2001 рд╕реЗ рдкреБрд░рд╛рдирд╛ рд╕рдВрд╕реНрдХрд░рдг рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рдпрд╣ рд╣рдорд╛рд░реЗ рд▓рд┐рдП рдХрд╛рдлреА рдЙрдкрдпреБрдХреНрдд рд╣реИред рдбрд╛рдЙрдирд▓реЛрдб рдХрд░рдиреЗ рдФрд░ рдЕрдирдкреИрдХ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рд╣рдо рд╕реНрд░реЛрддреЛрдВ рдореЗрдВ csp.c рдлрд╝рд╛рдЗрд▓ рдЦреЛрдЬреЗрдВрдЧреЗ рдФрд░ рдмрд╛рдж рдХреЗ рд╕рдВрд╢реЛрдзрдиреЛрдВ, csp.def рдФрд░ csp.rc, рдХреНрд░рдорд╢рдГ xyzcsp.def рдФрд░ xyzcsp.rc рдореЗрдВ xyzcsp.c рдХреЗ рд▓рд┐рдП рдЗрд╕рдХрд╛ рдирд╛рдо рдмрджрд▓ рджреЗрдВрдЧреЗред

рдЗрд╕рдХреЗ рдмрд╛рдж, рдУрдкрдирдПрд╕рдПрд╕рдПрд▓ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдбрд╛рдЙрдирд▓реЛрдб рдХрд░реЗрдВред рд▓реЗрдЦрди рдХреЗ рд╕рдордп, рдЗрд╕рдХрд╛ рд╕рдВрд╕реНрдХрд░рдг 1.0.0e рд╣реИ

рдХреНрд░рд┐рдкреНрдЯреЛрдЧреНрд░рд╛рдлрд┐рдХ рдкреНрд░рджрд╛рддрд╛ xyzcsp.dll рдХрд╛ рдкрдВрдЬреАрдХрд░рдг


рд░рдЬрд┐рд╕реНрдЯреНрд░реА рдореЗрдВ рдХреНрд░рд┐рдкреНрдЯреЛрдЧреНрд░рд╛рдлрд┐рдХ рдкреНрд░рджрд╛рддрд╛ рдХреЛ рдкрдВрдЬреАрдХреГрдд рдХрд░реЗрдВред рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдХрдорд╛рдВрдб рдкреНрд░рд╢рд╛рд╕рдХ "regedit xyzcsp.reg" рдХреЗ рд╕рд╛рде рдирд┐рдореНрди рдлрд╝рд╛рдЗрд▓ рдХреЛ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░реЗрдВ (рдкреНрд░рд╢рд╛рд╕рдХ рдЕрдзрд┐рдХрд╛рд░реЛрдВ рдХреЗ рд╕рд╛рде)

рдлрд╝рд╛рдЗрд▓ xyzcsp.reg:
Windows Registry Editor Version 5.00 [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Cryptography\Defaults\Provider\XYZ Provider] "Image Path"="xyzcsp.dll" "Type"=dword:0000007B [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Cryptography\Defaults\Provider Types\Type 123] "Name"="XYZ Provider" [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Cryptography\OID\EncodingType 0\CryptDllFindOIDInfo] [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Cryptography\OID\EncodingType 0\CryptDllFindOIDInfo\1.2.643.2.2.19!1] "Name"="GOST R 34.10-2001" "Algid"=dword:00002036 "ExtraInfo"=hex:00,00,00,00 [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Cryptography\OID\EncodingType 0\CryptDllFindOIDInfo\1.2.643.2.2.3!2] "Name"="GOST R 34.11/34.10-2001" "Algid"=dword:00008037 "ExtraInfo"=hex:36,20,00,00,00,00,00,00 [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Cryptography\OID\EncodingType 1\CryptDllConvertPublicKeyInfo] [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Cryptography\OID\EncodingType 1\CryptDllConvertPublicKeyInfo\1.2.643.2.2.19] "Dll"="xyzcsp.dll" "FuncName"="xyz_ConvertPublicKeyInfo" [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Cryptography\OID\EncodingType 1\CryptDllConvertPublicKeyInfo\1.2.643.2.2.98] "Dll"="xyzcsp.dll" "FuncName"="xyz_ConvertPublicKeyInfo" 


рдУрдкрдирдПрд╕рдПрд╕рдПрд▓ рд▓рд╛рдЗрдмреНрд░реЗрд░реА


рд╣рдо рдУрдкрдирдПрд╕рдПрд╕рдПрд▓ рдХреЗ рдЕрд╕реЗрдВрдмрд▓реА рдХреЛ рдкрд░реНрджреЗ рдХреЗ рдкреАрдЫреЗ рдХреЗ рд╕реНрд░реЛрддреЛрдВ рд╕реЗ рдЫреЛрдбрд╝рддреЗ рд╣реИрдВ, рд╣рдо рдХреЗрд╡рд▓ рдпрд╣ рдзреНрдпрд╛рди рджреЗрддреЗ рд╣реИрдВ рдХрд┐ рдпрд╣ рдореБрд╢реНрдХрд┐рд▓ рдирд╣реАрдВ рд╣реИ, рдЖрдкрдХреЛ рдкрд░реНрд▓ рдФрд░ рдПрдордПрд╕ рд╡рд┐рдЬрд╝реБрдЕрд▓ рд╕реНрдЯреВрдбрд┐рдпреЛ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рд╕рдВрдХрд▓рди рдХреЗ рд▓рд┐рдП рдЖрдкрдХреЛ рдЗрдВрд╕реНрдЯрд╛рд▓ .32 рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рджрд┐рдП рдЧрдП рдирд┐рд░реНрджреЗрд╢реЛрдВ рдХрд╛ рдкрд╛рд▓рди рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдЗрд╕рдХреЗ рдмрд╛рдж рд╣рдо рдбрд╛рдпрд░реЗрдХреНрдЯрд░реА рдореЗрдВ рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВрдЧреЗ C: \ xyzcsp \ opensl-1.0.0e \ tmp32dll рдСрдмреНрдЬреЗрдХреНрдЯ рдлрд╝рд╛рдЗрд▓реЛрдВ рдХрд╛ рдПрдХ рд╕реЗрдЯ рд╣реИ, рдЬрд┐рд╕реЗ рдореИрдВрдиреЗ рд╕рд░рд▓рддрд╛ рдХреЗ рд▓рд┐рдП рдПрдХ Opensl.lib рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдПрдХрддреНрд░ рдХрд┐рдпрд╛ рд╣реИ, рдЬрд┐рд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдореИрдВрдиреЗ рдЕрдкрдиреЗ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдореЗрдВ рдХрд┐рдпрд╛ рдерд╛ред

рдлрд╝рд╛рдЗрд▓ flist.txt:
 bf_buff.obj aes_core.obj aes_wrap.obj ameth_lib.obj asn1_gen.obj asn1_lib.obj asn1_par.obj asn_mime.obj asn_moid.obj asn_pack.obj a_bitstr.obj a_bool.obj a_bytes.obj a_d2i_fp.obj a_digest.obj a_dup.obj a_enum.obj a_gentm.obj a_i2d_fp.obj a_int.obj a_mbstr.obj a_object.obj a_octet.obj a_print.obj a_set.obj a_sign.obj a_strex.obj a_strnid.obj a_time.obj a_type.obj a_utctm.obj a_utf8.obj a_verify.obj bio_asn1.obj bio_b64.obj bio_cb.obj bio_enc.obj bio_err.obj bio_lib.obj bio_md.obj bio_ndef.obj bio_ok.obj bio_pk7.obj bio_ssl.obj bn_add.obj bn_asm.obj bn_blind.obj bn_const.obj bn_ctx.obj bn_depr.obj bn_div.obj bn_err.obj bn_exp.obj bn_exp2.obj bn_gcd.obj bn_gf2m.obj bn_kron.obj bn_lib.obj bn_mod.obj bn_mont.obj bn_mpi.obj bn_mul.obj bn_nist.obj bn_prime.obj bn_print.obj bn_rand.obj bn_recp.obj bn_shift.obj bn_sqr.obj bn_sqrt.obj bn_word.obj bss_dgram.obj bss_fd.obj bss_file.obj bss_log.obj bss_mem.obj bss_null.obj bss_sock.obj buffer.obj buf_err.obj by_dir.obj by_file.obj b_dump.obj b_print.obj b_sock.obj ca.obj camellia.obj cbc128.obj cbc_cksm.obj cbc_enc.obj cfb128.obj cfb64ede.obj cfb64enc.obj cfb_enc.obj ciphers.obj cmll_cbc.obj cmll_cfb.obj cmll_ctr.obj cmll_ecb.obj cmll_misc.obj cmll_ofb.obj cms.obj cms_asn1.obj cms_att.obj cms_cd.obj cms_dd.obj cms_enc.obj cms_env.obj cms_err.obj cms_ess.obj cms_io.obj cms_lib.obj cms_sd.obj cms_smime.obj comp_err.obj comp_lib.obj conf_api.obj conf_def.obj conf_err.obj conf_lib.obj conf_mall.obj conf_mod.obj conf_sap.obj cpt_err.obj crl.obj crl2p7.obj cryptlib.obj ctr128.obj cts128.obj cversion.obj c_all.obj c_allc.obj c_alld.obj c_cfb64.obj c_ecb.obj c_enc.obj c_ofb64.obj c_rle.obj c_skey.obj c_zlib.obj d1_both.obj d1_clnt.obj d1_enc.obj d1_lib.obj d1_meth.obj d1_pkt.obj d1_srvr.obj d2i_pr.obj d2i_pu.obj des_enc.obj des_old.obj des_old2.obj dgst.obj dh.obj dhparam.obj dh_ameth.obj dh_asn1.obj dh_check.obj dh_depr.obj dh_err.obj dh_gen.obj dh_key.obj dh_lib.obj dh_pmeth.obj dh_prn.obj digest.obj dsa.obj dsaparam.obj dsa_ameth.obj dsa_asn1.obj dsa_depr.obj dsa_err.obj dsa_gen.obj dsa_key.obj dsa_lib.obj dsa_ossl.obj dsa_pmeth.obj dsa_prn.obj dsa_sign.obj dsa_vrf.obj dso_beos.obj dso_dl.obj dso_dlfcn.obj dso_err.obj dso_lib.obj dso_null.obj dso_openssl.obj dso_vms.obj dso_win32.obj ebcdic.obj ec.obj ec2_mult.obj ec2_smpl.obj ecb3_enc.obj ecb_enc.obj ech_err.obj ech_key.obj ech_lib.obj ech_ossl.obj eck_prn.obj ecparam.obj ecp_mont.obj ecp_nist.obj ecp_smpl.obj ecs_asn1.obj ecs_err.obj ecs_lib.obj ecs_ossl.obj ecs_sign.obj ecs_vrf.obj ec_ameth.obj ec_asn1.obj ec_check.obj ec_curve.obj ec_cvt.obj ec_err.obj ec_key.obj ec_lib.obj ec_mult.obj ec_pmeth.obj ec_print.obj ede_cbcm_enc.obj enc.obj encode.obj enc_read.obj enc_writ.obj engine.obj eng_all.obj eng_cnf.obj eng_cryptodev.obj eng_ctrl.obj eng_dyn.obj eng_err.obj eng_fat.obj eng_init.obj eng_lib.obj eng_list.obj eng_openssl.obj eng_pkey.obj eng_table.obj err.obj errstr.obj err_all.obj err_prn.obj evp_acnf.obj evp_asn1.obj evp_enc.obj evp_err.obj evp_key.obj evp_lib.obj evp_pbe.obj evp_pkey.obj ex_data.obj e_aes.obj e_bf.obj e_camellia.obj e_cast.obj e_des.obj e_des3.obj e_gost_err.obj e_idea.obj e_null.obj e_old.obj e_rc2.obj e_rc4.obj e_rc5.obj e_seed.obj e_xcbc_d.obj fcrypt.obj fcrypt_b.obj f_enum.obj f_int.obj f_string.obj gendh.obj gendsa.obj genpkey.obj genrsa.obj gost2001.obj gost2001_keyx.obj gost89.obj gost94_keyx.obj gosthash.obj gost_ameth.obj gost_asn1.obj gost_crypt.obj gost_ctl.obj gost_eng.obj gost_keywrap.obj gost_md.obj gost_params.obj gost_pmeth.obj gost_sign.obj hmac.obj hm_ameth.obj hm_pmeth.obj i2d_pr.obj i2d_pu.obj i_cbc.obj i_cfb64.obj i_ecb.obj i_ofb64.obj i_skey.obj krb5_asn.obj kssl.obj lhash.obj lh_stats.obj md4_dgst.obj md4_one.obj md5_dgst.obj md5_one.obj mdc2dgst.obj mdc2_one.obj md_rand.obj mem.obj mem_clr.obj mem_dbg.obj m_dss.obj m_dss1.obj m_ecdsa.obj m_md4.obj m_md5.obj m_mdc2.obj m_null.obj m_ripemd.obj m_sha.obj m_sha1.obj m_sigver.obj m_wp.obj names.obj nseq.obj nsseq.obj n_pkey.obj obj_dat.obj obj_err.obj obj_lib.obj obj_xref.obj ocsp.obj ocsp_asn.obj ocsp_cl.obj ocsp_err.obj ocsp_ext.obj ocsp_ht.obj ocsp_lib.obj ocsp_prn.obj ocsp_srv.obj ocsp_vfy.obj ofb128.obj ofb64ede.obj ofb64enc.obj ofb_enc.obj o_dir.obj o_names.obj o_str.obj o_time.obj p12_add.obj p12_asn.obj p12_attr.obj p12_crpt.obj p12_crt.obj p12_decr.obj p12_init.obj p12_key.obj p12_kiss.obj p12_mutl.obj p12_npas.obj p12_p8d.obj p12_p8e.obj p12_utl.obj p5_crpt.obj p5_crpt2.obj p5_pbe.obj p5_pbev2.obj p8_pkey.obj passwd.obj pcbc_enc.obj pcy_cache.obj pcy_data.obj pcy_lib.obj pcy_map.obj pcy_node.obj pcy_tree.obj pem_all.obj pem_err.obj pem_info.obj pem_lib.obj pem_oth.obj pem_pk8.obj pem_pkey.obj pem_seal.obj pem_sign.obj pem_x509.obj pem_xaux.obj pk12err.obj pk7_asn1.obj pk7_attr.obj pk7_doit.obj pk7_lib.obj pk7_mime.obj pk7_smime.obj pkcs12.obj pkcs7.obj pkcs7err.obj pkcs8.obj pkey.obj pkeyparam.obj pkeyutl.obj pmeth_fn.obj pmeth_gn.obj pmeth_lib.obj pqueue.obj prime.obj pvkfmt.obj p_dec.obj p_enc.obj p_lib.obj p_open.obj p_seal.obj p_sign.obj p_verify.obj qud_cksm.obj rand.obj randfile.obj rand_egd.obj rand_err.obj rand_key.obj rand_lib.obj rand_nw.obj rand_os2.obj rand_unix.obj rand_win.obj rc2cfb64.obj rc2ofb64.obj rc2_cbc.obj rc2_ecb.obj rc2_skey.obj rc4_enc.obj rc4_skey.obj read2pwd.obj req.obj rmd_dgst.obj rmd_one.obj rpc_enc.obj rsa.obj rsautl.obj rsa_ameth.obj rsa_asn1.obj rsa_chk.obj rsa_depr.obj rsa_eay.obj rsa_err.obj rsa_gen.obj rsa_lib.obj rsa_none.obj rsa_null.obj rsa_oaep.obj rsa_pk1.obj rsa_pmeth.obj rsa_prn.obj rsa_pss.obj rsa_saos.obj rsa_sign.obj rsa_ssl.obj rsa_x931.obj s23_clnt.obj s23_lib.obj s23_meth.obj s23_pkt.obj s23_srvr.obj s2_clnt.obj s2_enc.obj s2_lib.obj s2_meth.obj s2_pkt.obj s2_srvr.obj s3_both.obj s3_clnt.obj s3_enc.obj s3_lib.obj s3_meth.obj s3_pkt.obj s3_srvr.obj seed.obj seed_cbc.obj seed_cfb.obj seed_ecb.obj seed_ofb.obj sess_id.obj set_key.obj sha1dgst.obj sha1_one.obj sha256.obj sha512.obj sha_dgst.obj sha_one.obj smime.obj speed.obj spkac.obj ssl_algs.obj ssl_asn1.obj ssl_cert.obj ssl_ciph.obj ssl_err.obj ssl_err2.obj ssl_lib.obj ssl_rsa.obj ssl_sess.obj ssl_stat.obj ssl_txt.obj stack.obj str2key.obj s_cb.obj s_client.obj s_server.obj s_socket.obj s_time.obj t1_clnt.obj t1_enc.obj t1_lib.obj t1_meth.obj t1_reneg.obj t1_srvr.obj tasn_dec.obj tasn_enc.obj tasn_fre.obj tasn_new.obj tasn_prn.obj tasn_typ.obj tasn_utl.obj tb_asnmth.obj tb_cipher.obj tb_dh.obj tb_digest.obj tb_dsa.obj tb_ecdh.obj tb_ecdsa.obj tb_pkmeth.obj tb_rand.obj tb_rsa.obj tb_store.obj ts.obj ts_asn1.obj ts_conf.obj ts_err.obj ts_lib.obj ts_req_print.obj ts_req_utils.obj ts_rsp_print.obj ts_rsp_sign.obj ts_rsp_utils.obj ts_rsp_verify.obj ts_verify_ctx.obj txt_db.obj t_bitst.obj t_crl.obj t_pkey.obj t_req.obj t_spki.obj t_x509.obj t_x509a.obj uid.obj ui_compat.obj ui_err.obj ui_lib.obj ui_openssl.obj ui_util.obj uplink.obj v3err.obj v3_addr.obj v3_akey.obj v3_akeya.obj v3_alt.obj v3_asid.obj v3_bcons.obj v3_bitst.obj v3_conf.obj v3_cpols.obj v3_crld.obj v3_enum.obj v3_extku.obj v3_genn.obj v3_ia5.obj v3_info.obj v3_int.obj v3_lib.obj v3_ncons.obj v3_ocsp.obj v3_pci.obj v3_pcia.obj v3_pcons.obj v3_pku.obj v3_pmaps.obj v3_prn.obj v3_purp.obj v3_skey.obj v3_sxnet.obj v3_utl.obj verify.obj version.obj wp_block.obj wp_dgst.obj x509.obj x509cset.obj x509name.obj x509rset.obj x509spki.obj x509type.obj x509_att.obj x509_cmp.obj x509_d2.obj x509_def.obj x509_err.obj x509_ext.obj x509_lu.obj x509_obj.obj x509_r2x.obj x509_req.obj x509_set.obj x509_trs.obj x509_txt.obj x509_v3.obj x509_vfy.obj x509_vpm.obj xcbc_enc.obj x_algor.obj x_all.obj x_attrib.obj x_bignum.obj x_crl.obj x_exten.obj x_info.obj x_long.obj x_name.obj x_nx509.obj x_pkey.obj x_pubkey.obj x_req.obj x_sig.obj x_spki.obj x_val.obj x_x509.obj x_x509a.obj 


рдореИрдВ рдЗрддрдиреА рд▓рдВрдмреА рд╕реВрдЪреА рдХреЗ рд▓рд┐рдП рдорд╛рдлреА рдорд╛рдВрдЧрддрд╛ рд╣реВрдВ, рд▓реЗрдХрд┐рди рдореБрдЭреЗ рдпрд╣ рдкрддрд╛ рд▓рдЧрд╛рдиреЗ рдХрд╛ рдПрдХ рдЖрд╕рд╛рди рддрд░реАрдХрд╛ рдирд╣реАрдВ рд╣реИ рдХрд┐ рд╡рд┐рдзрд╛рдирд╕рднрд╛ рдХреЗ рд▓рд┐рдП рдЗрд╕ рдХрд╛рдо рдХреЗ рд▓рд┐рдП рдХреМрди рд╕реА рдлрд╛рдЗрд▓реЗрдВ рдЬрд░реВрд░реА рд╣реИрдВ рдФрд░ рдЬреЛ рдирд╣реАрдВ рд╣реИрдВред рдореИрдк рдлрд╝рд╛рдЗрд▓ рдмрдирд╛рдирд╛ рдорджрдж рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдореБрдЭреЗ tmp32dll рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рд╕реЗ obj рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреА рд▓рдЧрднрдЧ рдкреВрд░реА рд╕реВрдЪреА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдкрдбрд╝рд╛ред

Make_lib.bat рдХрдорд╛рдВрдб рдХреЗ рд╕рд╛рде Opensl.lib рдмрдирд╛рдПрдБ

make_lib.bat:
 call "C:\Program Files\Microsoft Visual Studio 10.0\VC\vcvarsall.bat" lib /out:openssl.lib @flist.txt 

рдЖрдЗрдП рдЙрди рд╣реИрд╢ рдлрд╝рдВрдХреНрд╢рдВрд╕ рдХреЛ рд▓рд┐рдЦрдирд╛ рд╢реБрд░реВ рдХрд░реЗрдВ рдЬрд┐рдиреНрд╣реЗрдВ рд╣рдореЗрдВ GOST рдХреЗ рдЕрдиреБрд╕рд╛рд░ рдбрд┐рдЬрд┐рдЯрд▓ рд╣рд╕реНрддрд╛рдХреНрд╖рд░ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдФрд░ рд╕рддреНрдпрд╛рдкрд┐рдд рдХрд░реЗрдВред

рдЙрдиреНрд╣реЗрдВ рдХреНрд░рдорд╢рдГ my_hash_gost () рдФрд░ my_verify_gost () рдХреЙрд▓ рдХрд░реЗрдВред рдЙрдиреНрд╣реЗрдВ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдордиреЗ рдУрдкрдирдПрд╕рдПрд╕рдПрд▓ рдкрд╛рда рд╕реЗ рддреИрдпрд╛рд░ рдЯреБрдХрдбрд╝реЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛, рд▓реЗрдХрд┐рди рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдбреАрдмрдЧ рдХрд░рдиреЗ рдореЗрдВ рдмрд╣реБрдд рд╕рдордп рд▓рдЧрд╛, рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдпрд╣ рд╕рдордЭрдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐ рдЬрдм рд╣рдо рдПрдХ рдбреЗрдЯрд╛ "рдлреНрд▓рд┐рдк" рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдмрд╛рдЗрдЯ рдСрд░реНрдбрд░ рдХреЛ рдмрджрд▓рддреЗ рд╣реБрдП, рд╣рдореЗрдВ рд╣реИрд╢ рдХреЛ рдлреНрд▓рд┐рдк рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рдмрд╛рдХреА рд╕рдм рдХреБрдЫ рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рдХреБрдВрдЬреА рдФрд░ рдбрд┐рдЬрд┐рдЯрд▓ рд╣рд╕реНрддрд╛рдХреНрд╖рд░ рд╕рд╣рд┐рдд - рдХреА рдЬрд░реВрд░рдд рд╣реИред

рдереЛрдбрд╝рд╛ рдЗрддрд┐рд╣рд╛рд╕ред рдкреНрд░рд╛рд░рдВрдн рдореЗрдВ, my_verify_gost рдлрд╝рдВрдХреНрд╢рди рдХреЛ рд╕рднреА 32 рдмрд╛рдЗрдЯреНрд╕ рдореЗрдВ рдПрдХ рд╕реНрдерд┐рд░ рдХреЗ рдмрд░рд╛рдмрд░ рд╣реИрд╢ рдХреЗ рд╕рд╛рде рдкрд░реАрдХреНрд╖рдг рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред рдФрд░ рдЗрд╕рдиреЗ рдореБрдЭреЗ рдмрдЪрд╛ рд▓рд┐рдпрд╛ред рдХреНрдпреЛрдВрдХрд┐ рдлрд╝рдВрдХреНрд╢рди рдиреЗ рдЬрд▓реНрджреА рд╕реЗ рдкрд░реНрдпрд╛рдкреНрдд рдХрд╛рдо рдХрд┐рдпрд╛, рд▓реЗрдХрд┐рди рдЬрдм рдПрдХ рдЕрд╕рд▓реА рд╣реИрд╢ рдбрд╛рд▓рд╛ рдЧрдпрд╛, рдЬрд┐рд╕рдореЗрдВ рдмрд╛рдЗрдЯреНрд╕ рдХрд╛ рдХрд╛рдлреА рдпрд╛рджреГрдЪреНрдЫрд┐рдХ рд╕реЗрдЯ рд╢рд╛рдорд┐рд▓ рдерд╛, рддреЛ рдЙрд╕рдХреЗ рддреБрд░рдВрдд рдмрд╛рдж рдбрд┐рдЬрд┐рдЯрд▓ рд╣рд╕реНрддрд╛рдХреНрд╖рд░ рдиреЗ рдЬрд╛рдВрдЪ рдмрдВрдж рдХрд░ рджреАред рд▓рдВрдмреЗ рд╕рдордп рддрдХ рдореИрдВ рдпрд╣ рдирд╣реАрдВ рд╕рдордЭ рд╕рдХрд╛ рдХрд┐ рдПрдХ рд╕реНрдерд┐рд░ рд╣реИрд╢ рдХреЛ рдкреНрд░рддрд┐рдмрд┐рдВрдмрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдпрд╣ рдлрд╝рдВрдХреНрд╢рди рдХреЗ рд▓рд┐рдП рдмрд┐рдирд╛ рдлрд╝реНрд▓рд┐рдк рдХрд┐рдП рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреБрдХреНрдд рд╣реИред рдореИрдВ рднрд╛рдЧреНрдпрд╢рд╛рд▓реА рдерд╛ рдпрджрд┐ рдкрд░реАрдХреНрд╖рдг рдЕрд╕рд▓реА рд╣реИрд╢ рдХреЗ рд╕рд╛рде рд╢реБрд░реВ рд╣реБрдЖ, рддреЛ рдУрдкрдирдПрд╕рдПрд╕рдПрд▓ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдИрдбреАрдПрд╕ рдкреНрд░рдорд╛рдгрдкрддреНрд░реЛрдВ рдХреА рдЬрд╛рдВрдЪ рдХреЗ рд▓рд┐рдП рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рдХрдард┐рди рд╣реЛрдЧрд╛, рдХреНрдпреЛрдВрдХрд┐ рд╣реИрд╢ рдХрд╛ рдРрд╕рд╛ "рдореБрд╢реНрдХрд┐рд▓" рд╡реНрдпрд╡рд╣рд╛рд░ рдкрд░реНрдпрд╛рдкреНрдд рд░реВрдк рд╕реЗ рд╕реНрдкрд╖реНрдЯ рдирд╣реАрдВ рд╣реИред

рдЗрди рд▓рд╛рдЗрдиреЛрдВ рдХреЛ рд╕рднреА #include рдХреЗ рддреБрд░рдВрдд рдмрд╛рдж xyzcsp.c рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдкреЗрд╕реНрдЯ рдХрд░реЗрдВ
 #include "gosthash.h" #include "gost_lcl.h" static void perevorot_buf(unsigned char *obj, int k) { char buf[64]; int i; for( i = 0; i < k; i++ ) buf[i] = obj[k-1-i]; memcpy(obj, buf, k); } static int pkey_gost01_cp_verify(EC_KEY* pub_key, const unsigned char *sig, size_t siglen, unsigned char *tbs, size_t tbs_len) { int ok = 0; DSA_SIG *s=unpack_cp_signature(sig,siglen); if (!s) return 0; if (pub_key) ok = gost2001_do_verify(tbs,tbs_len,s,pub_key); DSA_SIG_free(s); return ok; } int my_verify_gost(char *in_hash, const BYTE *in_sign, char *in_pub1, char *in_pub2, int nid) { int res, errcode; EC_KEY *eckey = NULL; unsigned char sig[64], tbs[32]; int siglen=64, tbs_len=32; BIGNUM *X=NULL,*Y=NULL; char perevorot_pub[32]; EC_POINT *pub_key; //  memcpy(tbs, in_pub1, 32); perevorot_buf(tbs, 32); X= getbnfrombuf((const unsigned char*)tbs,32); memcpy(tbs, in_pub2, 32); perevorot_buf(tbs, 32); Y= getbnfrombuf((const unsigned char*)tbs,32); memcpy(tbs, in_hash, 32); //   !   perevorot_buf(tbs, 32); memcpy(sig, in_sign, 64); perevorot_buf(sig, 64); //  if (!(eckey = EC_KEY_new())) { errcode = 1; goto err_exit; } if (!fill_GOST2001_params(eckey, nid)) { errcode = 2; goto err_exit; } if (!(pub_key = EC_POINT_new(EC_KEY_get0_group(eckey)))) { errcode = 3; goto err_exit; } if (!EC_POINT_set_affine_coordinates_GFp(EC_KEY_get0_group(eckey) ,pub_key,X,Y,NULL)) { errcode = 4; goto err_exit; } if (!EC_KEY_set_public_key(eckey,pub_key)) { errcode = 5; goto err_exit; } if (!pkey_gost01_cp_verify(eckey, sig, siglen, tbs, tbs_len)) { errcode = 6; goto err_exit; } else errcode = 0; //success err_exit: if (pub_key) EC_POINT_free(pub_key); if (X) BN_free(X); if (Y) BN_free(Y); if (eckey) EC_KEY_free(eckey); return errcode; } void my_hash_gost(const BYTE *buf, int buflen, char *hash_res) { gost_subst_block *b= &GostR3411_94_CryptoProParamSet; gost_hash_ctx ctx; init_gost_hash_ctx(&ctx,b); start_hash(&ctx); hash_block(&ctx,buf,buflen); finish_hash(&ctx,(byte *)hash_res); } //       char hash_gost[32]; char hash_sha1[20]; char public_key[64]; 


XYZ рдкреНрд░рджрд╛рддрд╛


рдЕрдм рдЕрдВрдд рдореЗрдВ рдкреНрд░рджрд╛рддрд╛ рдХрд╛ рдЦреНрдпрд╛рд▓ рд░рдЦреЗрдВред рдЙрд╕рдХрд╛ рдирд╛рдо рдЪреБрдиреЗрдВ: "XYZ рдкреНрд░рджрд╛рддрд╛"ред рддрджрдиреБрд╕рд╛рд░, рдореБрдЦреНрдп рдлрд╝рд╛рдЗрд▓ рдХреЛ xyzcsp.c рдХрд╣рд╛ рдЬрд╛рдПрдЧрд╛, рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ xyzcsp.def рдФрд░ xyzcsp.rc рдХреА рднреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред

рдореВрд▓ рдирдореВрдиреЗ рдореЗрдВ, рдЬреЛ CSPDK рдореЗрдВ рдкрд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, csp.c рдлрд╝рд╛рдЗрд▓ рдореЗрдВ, рд╣рдо рдХреЗрд╡рд▓ CPAcquireContext, CPHashData, CPGetHashParam, CPVercSignature рдХрд╛рд░реНрдпреЛрдВ рдореЗрдВ рд░реБрдЪрд┐ рд░рдЦрддреЗ рд╣реИрдВред рдпрд╣ рджреЗрдЦрдирд╛ рдЖрд╕рд╛рди рд╣реИ рдХрд┐ рдпреЗ рдкреНрд░рджрд╛рддрд╛ рдХреЗ рд╣реИрдВрдбрд▓ рдХреЛ рдмрдирд╛рдиреЗ, рд╣реИрд╢ рдлрд╝рдВрдХреНрд╢рди рдФрд░ рдбрд┐рдЬрд┐рдЯрд▓ рд╣рд╕реНрддрд╛рдХреНрд╖рд░ рдХреА рдЬрд╛рдВрдЪ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд╛рд░реНрдп рд╣реИрдВред рдиреАрдЪреЗ рджрд┐рдП рдЧрдП рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рд╕рд╛рде рдЗрди рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рдмрджрд▓реЗрдВред

рдЙрдирдХреЗ рдЕрд▓рд╛рд╡рд╛, рд╣рдо рдПрдХ рдорд╣рд╛рди рдлрд╝рдВрдХреНрд╢рди, xyz_ConvertPublicKeyInfo рд▓рд┐рдЦреЗрдВрдЧреЗ, рдЬреЛ рдбрд┐рдЬрд┐рдЯрд▓ рд╣рд╕реНрддрд╛рдХреНрд╖рд░ рдХреА рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рдХреБрдВрдЬреА рдХреЛ рдкрд░рд┐рд╡рд░реНрддрд┐рдд рдХрд░рдиреЗ рдореЗрдВ рд▓рдЧреЗ рд░рд╣реЗрдВрдЧреЗред Xyzcsp.def рдлрд╝рд╛рдЗрд▓ рдореЗрдВ xyz_ConvertPublicKeyInfo рдХреЛ рдЬреЛрдбрд╝рдирд╛ рди рднреВрд▓реЗрдВ рддрд╛рдХрд┐ рд▓рд┐рдВрдХрд░ рдЗрд╕ рдирд╛рдо рдХреЛ рдирд┐рд░реНрдпрд╛рдд рдХрд░реЗред рд░реВрдкрд╛рдВрддрд░рдг рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рдХреБрдВрдЬреА рд╕рдВрдХреЗрддрди рдХреЗ ASN1 рд░рд┐рдХреЙрд░реНрдб рдореЗрдВ рдкрд╣рд▓реЗ рджреЛ рдмрд╛рдЗрдЯреНрд╕ рдХреЛ рдирдЬрд░рдЕрдВрджрд╛рдЬ рдХрд░рдиреЗ рдореЗрдВ рд╢рд╛рдорд┐рд▓ рд╣реЛрдЧрд╛, рдЬрд┐рд╕рд╕реЗ рдЗрд╕рдХреЗ рд╢реБрджреНрдз рд░реВрдк рдореЗрдВ рдХреБрдВрдЬреА рдкреНрд░рд╛рдкреНрдд рд╣реЛрдЧреА, рдкреНрд░рддреНрдпреЗрдХ 32 рдмрд╛рдЗрдЯреНрд╕ рдХреЗ рджреЛ рд╣рд┐рд╕реНрд╕реЛрдВ рдореЗрдВред

рдЪрд▓реЛ DllMain рдлрд╝рдВрдХреНрд╢рди рдХреЛ рд╣рдЯрд╛ рджреЗрдВ, рд╕рд╛рде рд╣реА рдкреБрд░рд╛рдиреЗ CPAcquireContext, CPHashData, CPGetHashParam, xyzcsp.c рд╕реЗ CPVerifySignature, рдЕрдкреНрд░рддреНрдпрдХреНрд╖CRCRTTION рдХрдорд╛рдВрдб рдХреЛ рд╣рдЯрд╛ рджреЗрдВ рдФрд░ XllzegisterServer рдФрд░ DllUnregisterServer рдХреЛ xzz рд╕реЗ рд╣рдЯрд╛ рджреЗрдВред

рдлрд╝рд╛рдЗрд▓ рдХреЗ рдЕрдВрдд рдореЗрдВ xyzcsp.c рдЬреЛрдбрд╝реЗрдВ:
 BOOL WINAPI CPAcquireContext( OUT HCRYPTPROV *phProv, IN LPCSTR szContainer, IN DWORD dwFlags, IN PVTableProvStruc pVTable) { *phProv = 123; return TRUE; } BOOL WINAPI CPHashData( IN HCRYPTPROV hProv, IN HCRYPTHASH hHash, IN CONST BYTE *pbData, IN DWORD cbDataLen, IN DWORD dwFlags) { my_hash_gost(pbData, cbDataLen, hash_gost); SHA1(pbData, cbDataLen, hash_sha1); return TRUE; } BOOL WINAPI CPGetHashParam( IN HCRYPTPROV hProv, IN HCRYPTHASH hHash, IN DWORD dwParam, OUT LPBYTE pbData, IN OUT LPDWORD pcbDataLen, IN DWORD dwFlags) { switch(dwParam) { case HP_HASHVAL: if(*pcbDataLen == 20) //     sha1 { memcpy(pbData, hash_sha1, 20); break; } default: *pcbDataLen = 0; SetLastError(E_INVALIDARG); return FALSE; } return TRUE; } BOOL WINAPI CPVerifySignature( IN HCRYPTPROV hProv, IN HCRYPTHASH hHash, IN CONST BYTE *pbSignature, IN DWORD cbSigLen, IN HCRYPTKEY hPubKey, IN LPCWSTR szDescription, IN DWORD dwFlags) { #define NTE_IC_ERROR_PREDEF 0x89900000L INT err; err = my_verify_gost(hash_gost, pbSignature, public_key, public_key+32, NID_id_GostR3410_2001_CryptoPro_A_ParamSet); if ( err ) { SetLastError( NTE_IC_ERROR_PREDEF | err ); return FALSE; } return TRUE; } BOOL WINAPI xyz_ConvertPublicKeyInfo( DWORD dwCertEncodingType, VOID *EncodedKeyInfo, DWORD dwAlg, DWORD dwFlags, BYTE** ppStructInfo, DWORD* StructLen ) { memcpy(public_key, ((CERT_PUBLIC_KEY_INFO*)EncodedKeyInfo)->PublicKey.pbData + 2, 64); return TRUE; } 


рдореБрдЭреЗ рдирд╣реАрдВ рд▓рдЧрддрд╛ рдХрд┐ рдХреНрд░рд┐рдкреНрдЯреЛ рдкреНрд░рджрд╛рддрд╛ рдХреЗ рд╕реНрд░реЛрддреЛрдВ рдкрд░ рд╡рд┐рд╕реНрддрд╛рд░ рд╕реЗ рдЯрд┐рдкреНрдкрдгреА рдХрд░рдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реИред рдкрд╛рда рд╕реЗ рд╕рдм рдХреБрдЫ рд╕реНрдкрд╖реНрдЯ рд╣реИред

рдПрдХ рдкрд░реАрдХреНрд╖рдг рдХрд╛рд░реНрдпрдХреНрд░рдо рд▓рд┐рдЦрдирд╛


рдореБрдЭреЗ рдПрдХ рдЕрд▓рдЧ рдкрд░реАрдХреНрд╖рдг рдХрд╛рд░реНрдпрдХреНрд░рдо рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХреНрдпреЛрдВ рд╣реИ? рд░рдирд┐рдВрдЧ рдЯреЗрд╕реНрдЯ рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдпрд╣ ADFAPI32.dll рдореЗрдВ SystemFunction035 рдлрд╝рдВрдХреНрд╢рдВрд╕ рдХреЛ рдмрджрд▓рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рд┐рд╕реНрдЯрдо рдХреЛ рдкреИрдЪ рдХрд░реЗрдЧрд╛ рдФрд░ CR_PT32.dll рдореЗрдВ I_CryptGetDefaultCryptProv рдХреЛ рдЙрдирдХреЗ "рд╕рд╣реА" рд╕рдВрд╕реНрдХрд░рдг рдореЗрдВ рдмрджрд▓ рджреЗрдЧрд╛ред рдпрд╣ рдкреНрд░реЛрдЧреНрд░рд╛рдо рд╡рд┐рдВрдбреЛрдЬ рдПрдХреНрд╕рдкреА рдФрд░ рд╡рд┐рдВрдбреЛрдЬ 7 рджреЛрдиреЛрдВ рдореЗрдВ рд╕рдлрд▓рддрд╛рдкреВрд░реНрд╡рдХ рдХрд╛рдо рдХрд░реЗрдЧрд╛ред

рд▓реЗрдЦ рдХреЗ рдЕрдВрдд рдореЗрдВ, рдпрд╣ рджрд┐рдЦрд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ рдХрд┐ рд╡рд┐рдВрдбреЛрдЬ рдПрдХреНрд╕рдкреА рдПрд╕рдкреА 3 рдореЗрдВ рд╕рд┐рд╕реНрдЯрдо рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рдХреИрд╕реЗ рдкреИрдЪ рдХрд┐рдпрд╛ рдЬрд╛рдП, рдЬрд┐рд╕ рд╕реНрдерд┐рддрд┐ рдореЗрдВ рдПрдХ рд╡рд┐рд╢реЗрд╖ рдкрд░реАрдХреНрд╖рдг рдХрд╛рд░реНрдпрдХреНрд░рдо рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реЛрдЧреАред

рдлрд╝рд╛рдЗрд▓ testcsp.cpp:
 #include "stdafx.h" #include <windows.h> #include <wincrypt.h> typedef HCRYPTPROV (WINAPI *pI_CryptGetDefaultCryptProv)(ALG_ID algid); HCRYPTPROV hProv = NULL; typedef int (__stdcall *def_CryptExtOpenCER)( HWND hwnd, HINSTANCE hinst, LPSTR lpszCmdLine, int nCmdShow); def_CryptExtOpenCER CryptExtOpenCER; typedef int (__stdcall *def_MyProc)(void); def_MyProc MyProc; #define PATCH_NUM 2 char *patch_list[2*PATCH_NUM]={ "ADVAPI32.dll","SystemFunction035", "CRYPT32.dll","I_CryptGetDefaultCryptProv" }; void WriteMem(int pos, char *patch, int len) { DWORD my_id = GetCurrentProcessId(); HANDLE p_hand = OpenProcess(PROCESS_VM_WRITE | PROCESS_VM_OPERATION, NULL, my_id); if (WriteProcessMemory(p_hand, (LPDWORD)pos, patch, len, NULL)==0) { printf("Error write to memory\nHint: run from Administrator rigths"); } CloseHandle(p_hand); } HCRYPTPROV PASCAL old_I_CryptGetDefaultCryptProv(int AlgID) //call MS Provider { __asm mov eax,0; //,  10  __asm mov eax,0; return NULL; } HCRYPTPROV PASCAL my_I_CryptGetDefaultCryptProv(int AlgID) { if (AlgID!=0 && AlgID!=0x2036) return old_I_CryptGetDefaultCryptProv(AlgID); //old MS return hProv; } int StartPatch(void) { BYTE *p; HMODULE h_dll; char buf[10]; DWORD new_addr; for(int i=0;i<PATCH_NUM;i++) { h_dll = LoadLibrary(patch_list[i*2]); if (h_dll==NULL) { printf("Error! Can not LoadLibrary(%s)\n", patch_list[i*2]); return 1; } MyProc = (def_MyProc)GetProcAddress(h_dll, patch_list[i*2+1]); if (MyProc==NULL) { printf("Error! Can not GetProcAddress(%s)\n", patch_list[i*2+1]); return 1; } p = (BYTE*)MyProc; if (i==1) { memcpy(buf, p, 5); buf[5]=0xe9; new_addr = (DWORD)p; new_addr -= (DWORD)old_I_CryptGetDefaultCryptProv; new_addr -= 5; memcpy(buf+6, &new_addr, 4); WriteMem((DWORD)old_I_CryptGetDefaultCryptProv, buf, 10); buf[0]=0xe9; new_addr = (DWORD)my_I_CryptGetDefaultCryptProv; new_addr -= (DWORD)MyProc; new_addr -= 5; memcpy(buf+1, &new_addr, 4); WriteMem((DWORD)MyProc, buf, 5); } else { WriteMem((int)p, "\xb8\x01\x00\x00\x00\xC2\x04\x00", 8); //mov ax,1 - ret 4 } } return 0; } int RunCert(char *certName) { HMODULE h_dll; h_dll = LoadLibrary("C:\\windows\\system32\\CRYPTEXT.dll"); if (h_dll==NULL) return 1; CryptExtOpenCER = (def_CryptExtOpenCER)GetProcAddress(h_dll, "CryptExtOpenCER"); if (CryptExtOpenCER==NULL) return 2; CryptExtOpenCER(NULL, NULL, certName, SW_SHOW); FreeLibrary(h_dll); return 0; } int _tmain(int argc, _TCHAR* argv[]) { if (StartPatch()) { printf("Error Patch\n"); return 1; } if (RCRYPT_FAILED(CryptAcquireContext(&hProv, "test", NULL, 123, 0))) { printf("CryptAcquireConext returned error %x\n", GetLastError()); printf("FAILED\n"); return 1; } printf("SUCCEED\n"); RunCert("gnivc_2006.cer"); RunCert("rootsber.cer"); return 0; } 


рдлрд╝рд╛рдЗрд▓ рд╕рдВрдХрд▓рди


рдкреНрд░рджрд╛рддрд╛ рд╕рдВрдХрд▓рди рдлрд╝рд╛рдЗрд▓ comp_xyzcsp.bat:
 call "C:\Program Files\Microsoft Visual Studio 10.0\VC\vcvarsall.bat" cl /I"..\include" /nologo /MT /O2 /c xyzcsp.c rc /I"..\include" xyzcsp.rc link /SUBSYSTEM:WINDOWS",5.0" /NODEFAULTLIB /DLL /DEF:xyzcsp.def /MACHINE:x86 /OUT:xyzcsp.dll xyzcsp.obj openssl.lib advapi32.lib kernel32.lib msvcrt.lib gdi32.lib user32.lib xyzcsp.res copy xyzcsp.dll ..\testcsp\ rem copy xyzcsp.dll c:\windows\system32 

рдкрд░реАрдХреНрд╖рдг рд╕рдВрдХрд▓рди рдлрд╝рд╛рдЗрд▓ comp_test.bat:
 call "C:\Program Files\Microsoft Visual Studio 10.0\VC\vcvarsall.bat" cl /I"..\include" testcsp.cpp advapi32.lib 


рдкрд░реАрдХреНрд╖рдг рдкреНрд░рдорд╛рдг рдкрддреНрд░


Gnivc_2006.cer рдлрд╝рд╛рдЗрд▓, рдЬрд┐рд╕рдореЗрдВ рд╕рдВрдШреАрдп рдХрд░ рд╕реЗрд╡рд╛ рдХрд╛ рдореВрд▓ рдкреНрд░рдорд╛рдгрдкрддреНрд░ рд╢рд╛рдорд┐рд▓ рд╣реИ:
 -----BEGIN CERTIFICATE----- MIIDGjCCAsegAwIBAgIQPx2a1ZtKRIBLiHKukksltTAKBgYqhQMCAgMFADCBwDEe MBwGCSqGSIb3DQEJARYPdWNpbmZvQGduaXZjLnJ1MQswCQYDVQQGEwJSVTEVMBMG A1UEBwwM0JzQvtGB0LrQstCwMTAwLgYDVQQKDCfQpNCT0KPQnyDQk9Cd0JjQktCm INCk0J3QoSDQoNC+0YHRgdC40LgxMDAuBgNVBAsMJ9Cj0LTQvtGB0YLQvtCy0LXR gNGP0Y7RidC40Lkg0YbQtdC90YLRgDEWMBQGA1UEAxMNR05JVkMgRk5TIFJVUzAe Fw0wNjA5MjcwOTI5NTdaFw0xMjA5MjcwOTM4MjdaMIHAMR4wHAYJKoZIhvcNAQkB Fg91Y2luZm9AZ25pdmMucnUxCzAJBgNVBAYTAlJVMRUwEwYDVQQHDAzQnNC+0YHQ utCy0LAxMDAuBgNVBAoMJ9Ck0JPQo9CfINCT0J3QmNCS0KYg0KTQndChINCg0L7R gdGB0LjQuDEwMC4GA1UECwwn0KPQtNC+0YHRgtC+0LLQtdGA0Y/RjtGJ0LjQuSDR htC10L3RgtGAMRYwFAYDVQQDEw1HTklWQyBGTlMgUlVTMGMwHAYGKoUDAgITMBIG ByqFAwICIwEGByqFAwICHgEDQwAEQCzY8VGw9ged02ijaj2KWOMXJVvzY1FEcg7G xedUtKx0wqyTVti0kmodEmm2cVfAbDkp0xAdBS9/mdDfeIrKXLajgZYwgZMwCwYD VR0PBAQDAgGGMA8GA1UdEwEB/wQFMAMBAf8wHQYDVR0OBBYEFBMQt5JPv+eiD7j1 nYkVJssQ6/RfMBAGCSsGAQQBgjcVAQQDAgEAMEIGCCsGAQUFBwEBBDYwNDAyBggr BgEFBQcwAoYmaHR0cDovL3d3dy5nbml2Yy5ydS91Yy9HTklWQ0ZOU1JVUy5jcnQw CgYGKoUDAgIDBQADQQDgEyWPI+fdXXiTYMLHdV76v8kVFIxCHCYtastcvZiM3cG1 wTFhio8fDx6sLgHHriOwQFg0zRUYHIs9nZEptLvM -----END CERTIFICATE----- 

Rootber.cer рдлрд╝рд╛рдЗрд▓, рдЬрд┐рд╕рдореЗрдВ Sberbank рдХрд╛ рдореВрд▓ рдкреНрд░рдорд╛рдгрдкрддреНрд░ рд╣реИ:
 -----BEGIN CERTIFICATE----- MIIDKjCCAtmgAwIBAgIGMDBDQT0HMAgGBiqFAwICAzCBwTELMAkGA1UEBhMCUlUx LTArBgNVBAoMJNCh0LHQtdGA0LHQsNC90Log0KDQvtGB0YHQuNC4INCe0JDQnjE4 MDYGA1UECwwv0JTQtdC/0LDRgNGC0LDQvNC10L3RgiDQsdC10LfQvtC/0LDRgdC9 0L7RgdGC0LgxJjAkBgNVBAMMHdCh0LHQtdGA0LHQsNC90Log0KDQvtGB0YHQuNC4 MSEwHwYJKoZIhvcNAQkBFhJjYXNicmZAc2JlcmJhbmsucnUwHhcNMDkwODA1MDAw MDAwWhcNMTcwODA1MDAwMDAwWjCBwTELMAkGA1UEBhMCUlUxLTArBgNVBAoMJNCh 0LHQtdGA0LHQsNC90Log0KDQvtGB0YHQuNC4INCe0JDQnjE4MDYGA1UECwwv0JTQ tdC/0LDRgNGC0LDQvNC10L3RgiDQsdC10LfQvtC/0LDRgdC90L7RgdGC0LgxJjAk BgNVBAMMHdCh0LHQtdGA0LHQsNC90Log0KDQvtGB0YHQuNC4MSEwHwYJKoZIhvcN AQkBFhJjYXNicmZAc2JlcmJhbmsucnUwYzAcBgYqhQMCAhMwEgYHKoUDAgIjAgYH KoUDAgIeAQNDAARAaYzyi29YQ9NC5cb/kq//J1kKhOgcvGWqsQu50mldjADTGfrl JUVXwu4fMUTHoF9TjY0O1kgrLYWT/kI4jABAWKOBsjCBrzAdBgNVHQ4EFgQUZmHo Zo41vw/U74ZlC8k/bcQODuowDAYDVR0TBAUwAwEB/zAzBgNVHR8ELDAqMCigJqAk hiJodHRwOi8vd3d3LnNicmYucnUvY2EvMDAwMHg1MDkuY3JsMAsGA1UdDwQEAwIC hDA+BgcqhQMDewMBBDMMMTAwQ0ExODUzetCa0L7RgNC90LXQstC+0Lkg0LrQu9GO 0Ycg0KPQpiDQodCRINCg0KQwCAYGKoUDAgIDA0EAD9Umnh/EZgjgQvpypdVwe0wa GnTi+dHhVwoNAX1tquxQNbAptbBs2OKzkRU7/mrBfDD4EdVV5xC1f2DTcH8NAg== -----END CERTIFICATE----- 


рдХрд╛рдо рдХреЗ рдкрд░рд┐рдгрд╛рдо


рдкрд░реАрдХреНрд╖рдг рдХрд╛рд░реНрдпрдХреНрд░рдо рдЪрд▓рд╛рдПрдВ, рд╣рдореЗрдВ рдЗрд╕рдХрд╛ рдкрд░рд┐рдгрд╛рдо рдорд┐рд▓рддрд╛ рд╣реИ:


рдЕрдВрддрд┐рдо рдмрд╛рдзрд╛ рдХреЛ рд╣рдЯрд╛рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдо рдЕрдиреБрд╢рдВрд╕рд┐рдд рд▓реЛрдЧреЛрдВ рдХреА рд╕реВрдЪреА рдореЗрдВ рдкреНрд░рдорд╛рдг рдкрддреНрд░ рдХреЛ рд╢рд╛рдорд┐рд▓ рдХрд░реЗрдВрдЧреЗ, рдЬреИрд╕рд╛ рдХрд┐ рдЕрдиреБрд╢рдВрд╕рд┐рдд рд╣реИред рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдкреНрд░рдорд╛рдгрдкрддреНрд░ рдмрдЯрди рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░реЗрдВ рдФрд░ рдЕрдЧрд▓рд╛ рдХрдИ рдмрд╛рд░ рдХреНрд▓рд┐рдХ рдХрд░реЗрдВред рдкрд░реАрдХреНрд╖рдг рдХреЗ рдЕрдВрдд рдореЗрдВ, рдЖрдкрдХреЛ рд╡рд┐рд╢реНрд╡рд╕рдиреАрдп рд░реВрдЯ рд╕реНрдЯреЛрд░ рд╕реЗ рдкрд░реАрдХреНрд╖рдг рдкреНрд░рдорд╛рдгрдкрддреНрд░ рдХреЛ рд╣рдЯрд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рддрд╛рдХрд┐ рдЖрдкрдХреЗ рд╕рд┐рд╕реНрдЯрдо рдХреЛ рдЦрддрд░реЗ рдореЗрдВ рди рдбрд╛рд▓реЗрдВред

рдкрд░реАрдХреНрд╖рдг рдХреЛ рдлрд┐рд░ рд╕реЗ рд╢реБрд░реВ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рд╣рдо рдПрдХ рдЕрд▓рдЧ рддрд╕реНрд╡реАрд░ рджреЗрдЦрддреЗ рд╣реИрдВ:


рдЬрд┐рд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛ рдЖрд╡рд╢реНрдпрдХ рдерд╛ред

рд╕рд░реНрдмреИрдВрдХ рд░реВрдЯ рдкреНрд░рдорд╛рдг рдкрддреНрд░


Sberbank рдХреЗ рдкреНрд░рдорд╛рдг рдкрддреНрд░ рдХреЗ рд╕рд╛рде, рдпрд╣ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ:


рдпрд╣ рдЗрд╕ рддрдереНрдп рдХреЗ рдХрд╛рд░рдг рд╣реИ рдХрд┐ Sberbank RFC 4357 рд╕реЗ рдирд┐рд░рдВрддрд░ B рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ, рдЕрд░реНрдерд╛рддреН GostR3410_2001_CryptoPro_B_ParamSetред

рдлрд┐рд░ рд╣рдо CPVerifySignature рдлрд╝рдВрдХреНрд╢рди рдореЗрдВ рдЕрдкрдиреЗ xyzcsp.c рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдирд┐рд░рдВрддрд░ A рдХреЛ B рдореЗрдВ рдмрджрд▓рддреЗ рд╣реИрдВ, рдЕрд░реНрдерд╛рдд, my_verify_gost рдХреЛ рдХреЙрд▓ рдХрд░рддреЗ рд╕рдордп, рд╣рдо рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдкреИрд░рд╛рдореАрдЯрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВрдЧреЗ: NID_id_GostRe1010_2001_CryptoPro_B_ParamSetред

рдкреНрд░рджрд╛рддрд╛ рдХреЛ рд╕рдВрдХрд▓рд┐рдд рдХрд░рдиреЗ рдФрд░ рдкрд░реАрдХреНрд╖рдг рд╢реБрд░реВ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рд╣рдо рд╡рд┐рдкрд░реАрдд рддрд╕реНрд╡реАрд░ рдХрд╛ рдирд┐рд░реАрдХреНрд╖рдг рдХрд░рддреЗ рд╣реИрдВ, рд╕рдВрдШреАрдп рдХрд░ рд╕реЗрд╡рд╛ рдкреНрд░рдорд╛рдгрдкрддреНрд░ рд╕рддреНрдпрд╛рдкрд┐рдд рдирд╣реАрдВ рд╣реИ, рдФрд░ Sberbank рдареАрдХ рдХрд╛рдо рдХрд░ рд░рд╣рд╛ рд╣реИред рдпрд╣ рдПрдХ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдХрдореА рд╣реЛрдЧреА, рд▓реЗрдХрд┐рди рд╕рд░рд▓рддрдо рдХреНрд░рд┐рдкреНрдЯреЛрдЧреНрд░рд╛рдлрд┐рдХ рдкреНрд░рджрд╛рддрд╛ рдХреЗ рд▓рд┐рдП рдпрд╣ рдмрд╣рд╛рдирд╛ рд╣реИред

рдмреЗрд╢рдХ, рдпрд╣ рд╡рд┐рдХрд▓реНрдк рд╕рдВрднрд╡ рд╣реИ: рдПрдХ рдмрд╛рд░ рдореЗрдВ рджреЛ рдИрдбреАрдПрд╕ рдХреА рдЬрд╛рдВрдЪ рдХрд░реЗрдВ рдФрд░, рдпрджрд┐ рдЙрдирдореЗрдВ рд╕реЗ рдХрдо рд╕реЗ рдХрдо рдПрдХ рдЕрднрд┐рд╕рд░рдг рдХрд░рддрд╛ рд╣реИ, рддреЛ рдШреЛрд╖рдгрд╛ рдХрд░реЗрдВ рдХрд┐ рдИрдбреАрдПрд╕ рд╕рд╣реА рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рдореМрд▓рд┐рдХ рд░реВрдк рд╕реЗ рдЧрд▓рдд рд╣реИред рдЖрдкрдХреЛ рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рдХреБрдВрдЬреА рдХреЗ рдУрдЖрдИрдбреА рдХреЛ рджреЗрдЦрдиреЗ рдХреА рдЬрд░реВрд░рдд рд╣реИ рдФрд░ рдЙрд╕рдореЗрдВ рд╕реЗ рдЕрдгреНрдбрд╛рдХрд╛рд░ рд╡рдХреНрд░ рдХреЗ рдЖрд╡рд╢реНрдпрдХ рдорд╛рдкрджрдВрдбреЛрдВ рдХреА рддрд▓рд╛рд╢ рдХрд░реЗрдВред

рдЕрдЧрд▓реЗ рд▓реЗрдЦ рдореЗрдВ, рдЬреЛ рдЕрдм рдкреНрд░рдХрд╛рд╢рди рдХреЗ рд▓рд┐рдП рддреИрдпрд╛рд░ рдХрд┐рдпрд╛ рдЬрд╛ рд░рд╣рд╛ рд╣реИ, рд╣рдо рд╡рд┐рд╕реНрддрд╛рд░ рд╕реЗ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВрдЧреЗ рдХрд┐ рдЗрд╕ рд╕реНрдерд┐рддрд┐ рд╕реЗ рдХреИрд╕реЗ рдмрдЪрд╛ рдЬрд╛рдП, рдФрд░ рд╡рд┐рднрд┐рдиреНрди рдорд╛рдкрджрдВрдбреЛрдВ рдХреЗ рд╕рд╛рде рдИрдбреАрдПрд╕ рдХреБрдВрдЬреА рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдлрд╝рдВрдХреНрд╢рди рднреА рд▓рд┐рдЦреЗрдВред

рдПрдХ рд╕рд╛рд░реНрд╡рднреМрдорд┐рдХ рдкреИрдЪ рдмрдирд╛рдПрдВ


рдирд┐рд╖реНрдХрд░реНрд╖ рдореЗрдВ, рдПрдХ рд╕рд╛рд░реНрд╡рднреМрдорд┐рдХ рдкреИрдЪ рдмрдирд╛рдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреБрдЫ рд╢рдмреНрджред

Windows XP SP3 рдХреЗ рд▓рд┐рдП, рдмрд╕ рдирд┐рдореНрди рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рдмрджрд▓реЗрдВ:
c: \ windows \ system32 \ advapi32.dll
c: \ windows \ system32 \ dllcache \ advapi32.dll
c: \ windows \ system32 \ crypt32.dll
c: \ windows \ system32 \ dllcache \ crypt32.dll

рдЖрдкрдХреЛ рдЗрд╕реЗ рдХрд┐рд╕реА рдЕрдиреНрдп рдбрд┐рд╕реНрдХ рд╕реЗ рдмреВрдЯ рдХрд░рдХреЗ рдкреИрдЪ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ рддрд╛рдХрд┐ рд╕рд┐рд╕реНрдЯрдо рдПрдХ рдореБрдХреНрдд рд╣реЛ (рдЖрдк рдкреБрдирд░реНрдкреНрд░рд╛рдкреНрддрд┐ рдореЛрдб рдореЗрдВ рд╡рд┐рдВрдбреЛрдЬ рдмреВрдЯ рдбрд┐рд╕реНрдХ рд╕реЗ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ), рдлрд┐рд░ рд╣рдо рдЗрди рджреЛ рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рд╕рд┐рд╕реНрдЯрдо 32 рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдФрд░ рд╕рд┐рд╕реНрдЯрдо 32 \ dllcache, рджреЛрдиреЛрдВ рдореЗрдВ рдмрджрд▓ рджреЗрддреЗ рд╣реИрдВ, рдЬрд╣рд╛рдВ рдЙрдирдХреА рдкреНрд░рддрд┐рдпрд╛рдВ рд╕рдВрдЧреНрд░рд╣реАрдд рдХреА рдЬрд╛рддреА рд╣реИрдВред рдПрдХ рд░рдирд┐рдВрдЧ рд╕рд┐рд╕реНрдЯрдо рдкрд░ рдкреИрдЪ рд▓рдЧрд╛рдиреЗ рд╕реЗ рдХрд╛рдо рдирд╣реАрдВ рдЪрд▓реЗрдЧрд╛, рдХреНрдпреЛрдВрдХрд┐ рдлрд╛рдЗрд▓реЗрдВ "рд▓реЙрдХ рдЕрдк" рд╣реИрдВ рдФрд░ рдЙрдиреНрд╣реЗрдВ рдмрджрд▓рд╛ рдирд╣реАрдВ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред

рдЙрд╕рдХреЗ рдмрд╛рдж, рдлрд╝рд╛рдЗрд▓ рдХреЛ рдХреНрд░рд┐рдкреНрдЯреЛрдЧреНрд░рд╛рдлрд╝рд┐рдХ рдкреНрд░рджрд╛рддрд╛ xyzcsp.dll рдХреЗ рд╕рд╛рде рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ c: \ windows \ system32 рдХреЗ рд╕рд╛рде рдХреЙрдкреА рдХрд░рдирд╛ рди рднреВрд▓реЗрдВ рддрд╛рдХрд┐ рд╕рд┐рд╕реНрдЯрдо рдЗрд╕реЗ рдвреВрдВрдв рд╕рдХреЗред

рдЕрдм рдЖрдк рдкреНрд░рдорд╛рдг рдкрддреНрд░ рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдЗрд╕реЗ рд╡рд┐рд╢реЗрд╖ рдХрд╛рд░реНрдпрдХреНрд░рдореЛрдВ рдХреЛ рд▓реЙрдиреНрдЪ рдХрд┐рдП рдмрд┐рдирд╛ рд╕реАрдзреЗ рдСрдкрд░реЗрдЯрд┐рдВрдЧ рд╕рд┐рд╕реНрдЯрдо рдореЗрдВ рдЪреЗрдХ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред

рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рдЙрдирдХреЗ рдкреИрдЪ рдХрд┐рдП рдЧрдП рд╕рдВрд╕реНрдХрд░рдг рд╕реЗ рдмрджрд▓реЗрдВ:
   advapi32.dll  C:\xyzcsp\PATCH\ADVAPI32.DLL 00017585: 8B B8 00017586: FF 01 00017587: 55 00 00017588: 8B 00 00017589: EC 00 0001758A: 81 C2 0001758B: EC 04 0001758C: 50 00   crypt32.dll  C:\xyzcsp\PATCH\CRYPT32.DLL 00008F66: 8B E9 00008F67: FF 47 00008F68: 55 09 00008F69: 8B 00 00008F6A: EC 00 000098B2: 90 55 000098B3: 90 8B 000098B4: 90 EC 000098B5: 90 8B 000098B6: 90 45 000098B7: 90 08 000098B8: 53 83 000098B9: 00 F8 000098BA: 6F 00 000098BB: 00 74 000098BC: 66 21 000098BD: 00 3D 000098BE: 74 36 000098BF: 00 20 000098C0: 77 00 000098C2: 61 74 000098C3: 00 1A 000098C4: 72 3D 000098C5: 00 35 000098C6: 65 66 000098C8: 5C 00 000098C9: 00 74 000098CA: 50 13 000098CB: 00 3D 000098CC: 6F 37 000098CD: 00 80 000098CE: 6C 00 000098D0: 69 74 000098D1: 00 0C 000098D2: 63 3D 000098D3: 00 38 000098D4: 69 AA 000098D6: 65 00 000098D7: 00 74 000098D8: 73 05 000098D9: 00 E9 000098DA: 5C 8D 000098DB: 00 F6 000098DC: 4D FF 000098DD: 00 FF 000098DE: 69 6A 000098E0: 63 68 000098E1: 00 7B 000098E2: 72 00 000098E4: 6F 00 000098E5: 00 6A 000098E6: 73 00 000098E7: 00 8D 000098E8: 6F 05 000098E9: 00 40 000098EA: 66 A5 000098EB: 00 A7 000098EC: 74 77 000098ED: 00 50 000098EE: 5C 8D 000098EF: 00 45 000098F0: 53 08 000098F1: 00 50 000098F2: 79 FF 000098F3: 00 15 000098F4: 73 00 000098F5: 00 10 000098F6: 74 A7 000098F7: 00 77 000098F8: 65 83 000098F9: 00 F8 000098FA: 6D 00 000098FB: 00 74 000098FC: 43 DC 000098FD: 00 8B 000098FE: 65 45 000098FF: 00 08 00009900: 72 C9 00009901: 00 C2 00009902: 74 04 


рд╡рд┐рдВрдбреЛрдЬ 7 рдХреЗ рд▓рд┐рдП, рдЖрдк рдПрдХ рд╕рд╛рд░реНрд╡рднреМрдорд┐рдХ рдкреИрдЪ рднреА рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВ, рдЬреЛ рд▓реЛрдЧ рдЪрд╛рд╣рддреЗ рд╣реИрдВ рд╡реЗ рдЗрд╕реЗ рд╕реНрд╡рдпрдВ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

рдПрдХ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдкреНрд░рдгрд╛рд▓реА рдЬрд┐рд╕рдореЗрдВ GOST рдХреНрд░рд┐рдкреНрдЯреЛрдЧреНрд░рд╛рдлрд┐рдХ рдкреНрд░рджрд╛рддрд╛ рд╕реНрдерд╛рдкрд┐рдд рд╣реИ, рдкреИрдЪ рдХреЗ рд╕рд╛рде рд╕рдорд╕реНрдпрд╛рдУрдВ рдХреЛ рдЖрдорддреМрд░ рдкрд░ рдПрдХ рд╡рд┐рд╢реЗрд╖ рдкреИрдЪрд╡рд╛рдЗрди рдбреНрд░рд╛рдЗрд╡рд░ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдХреЗ рд╣рд▓ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬреЛ рд╕рд┐рд╕реНрдЯрдо DLL рдХреЗ рд▓реЛрдбрд┐рдВрдЧ рдХреА рдирд┐рдЧрд░рд╛рдиреА рдХрд░рддрд╛ рд╣реИ рдФрд░ рдЙрдиреНрд╣реЗрдВ рдордХреНрдЦреА рдкрд░ рдкреИрдЪ рдХрд░рддрд╛ рд╣реИред

рдПрдХ рд╕рдВрдЧреНрд░рд╣ рдореЗрдВ рд╕рднреА рдлрд╛рдЗрд▓реЗрдВ


рдЕрдВрдд рдореЗрдВ, рдореИрдВ рдПрдХ рд▓рд┐рдВрдХ рдкреНрд░рджрд╛рди рдХрд░реВрдВрдЧрд╛ рдЬрд╣рд╛рдВ рдЗрд╕ рд▓реЗрдЦ рдХреА рд╕рднреА рдлрд╛рдЗрд▓реЗрдВ рдПрдХ рд╕рдВрдЧреНрд░рд╣ рдореЗрдВ рдбрд╛рдЙрдирд▓реЛрдб рдХреА рдЬрд╛ рд╕рдХрддреА рд╣реИрдВ:
files.mail.ru/1OVVDB

Source: https://habr.com/ru/post/In134037/


All Articles