рдСрдлрд┐рд╕ рд╕реБрдЗрдЯ рд▓рд┐рдмреНрд░реЗ рдСрдлрд┐рд╕ рдореЗрдВ рдкреАрдбреАрдПрдл рджрд╕реНрддрд╛рд╡реЗрдЬреЛрдВ рдХреЗ GOST R 34.10 рдЗрд▓реЗрдХреНрдЯреНрд░реЙрдирд┐рдХ рд╣рд╕реНрддрд╛рдХреНрд╖рд░

рд╕рднреА рдЖрдЧ рдХреЗ рдмрд╛рд╡рдЬреВрдж, рд╣рдорд╛рд░реЗ рдирд╛рдЧрд░рд┐рдХ рдХрд░реНрддрд╡реНрдп рдХреЛ рдкреВрд░рд╛ рдХрд░рдиреЗ рдХрд╛ рд╕рдордп рдЖ рдЧрдпрд╛ рд╣реИ - рдХрд░реЛрдВ рдХрд╛ рднреБрдЧрддрд╛рди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдПред рд╣рдо рд░рд╛рдЬреНрдп рд╕реЗрд╡рд╛ рдкреЛрд░реНрдЯрд▓ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдХрд░реЛрдВ рдХрд╛ рднреБрдЧрддрд╛рди рдХрд░реЗрдВрдЧреЗред рд╣рдо рдЗрд▓реЗрдХреНрдЯреНрд░реЙрдирд┐рдХ рд╣рд╕реНрддрд╛рдХреНрд╖рд░ (рд░рд╛рдЬреНрдп рд╕реЗрд╡рд╛ рдкреЛрд░реНрдЯрд▓ рдХреА рд╢рдмреНрджрд╛рд╡рд▓реА) рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд░рд╛рдЬреНрдп рд╕реЗрд╡рд╛ рдкреЛрд░реНрдЯрд▓ рдХреЗ рд╡реНрдпрдХреНрддрд┐рдЧрдд рдЦрд╛рддреЗ рдореЗрдВ рдкреНрд░рд╡реЗрд╢ рдХрд░реЗрдВрдЧреЗ, рдЕрд░реНрдерд╛рддред рдПрдХ рдорд╛рдиреНрдпрддрд╛ рдкреНрд░рд╛рдкреНрдд рдкреНрд░рдорд╛рдгреАрдХрд░рдг рдХреЗрдВрджреНрд░ (рд╕реАрдП), рдФрд░ рдПрдХ рдирд┐рдЬреА рдХреБрдВрдЬреА рдкрд░ рдкреНрд░рд╛рдкреНрдд рдкреНрд░рдорд╛рдг рдкрддреНрд░ рд╣рд╛рде рдореЗрдВ рд╣реЛрдиреЗ рдкрд░ред рдореИрдВ рдЙрди рджреЛрдиреЛрдВ рдХреЛ PKCS # 11 рдЯреЛрдХрди рдкрд░ рд░реВрд╕реА рдХреНрд░рд┐рдкреНрдЯреЛрдЧреНрд░рд╛рдлреА рдХреЗ рд▓рд┐рдП рд╕рдорд░реНрдерди рдХреЗ рд╕рд╛рде рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рддрд╛ рд╣реВрдВ:



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

рдореИрдВрдиреЗ рдРрд╕рд╛ рдХрд░рдиреЗ рдХрд╛ рдлреИрд╕рд▓рд╛ рдХреНрдпреЛрдВ рдХрд┐рдпрд╛? рд░рд╛рдЬреНрдп рд╕реЗрд╡рд╛ рдкреЛрд░реНрдЯрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдореИрдВ рд▓рд┐рдирдХреНрд╕ рдФрд░ рд░реЗрдбрдлреЙрдХреНрд╕ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реВрдВ, рдЬреЛ рдХрд┐ рд░реВрд╕реА рдХреНрд░рд┐рдкреНрдЯреЛрдЧреНрд░рд╛рдлреА рд╕рдорд░реНрдерди рдХреЗ рд╕рд╛рде рд╕рдВрд╢реЛрдзрд┐рдд рдореЛрдЬрд╝рд┐рд▓рд╛ рдлрд╝рд╛рдпрд░рдлрд╝реЙрдХреНрд╕ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рд╣реИред рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рдЬрд╛рдирддреЗ рд╣реИрдВ, рд▓рд┐рдмрд░реЗрдСрдлрд┐рд╕ рдСрдлрд┐рд╕ рд╕реБрдЗрдЯ рднреА рдкреНрд░рдорд╛рдг рдкрддреНрд░ рдХреА рджреБрдХрд╛рди рдХреЗ рд░реВрдк рдореЗрдВ рдПрдирдПрд╕рдПрд╕ рд╕реНрдЯреЛрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИред

Redfox-52 рдмреНрд░рд╛рдЙрдЬрд╝рд░ / usr / рд╕реНрдерд╛рдиреАрдп / lib64 / рдлрд╝рд╛рдпрд░рдлрд╝реЙрдХреНрд╕ -52 рдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ рд╕реНрдерд╛рдкрд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред

GOST рдПрд▓реНрдЧреЛрд░рд┐рджрдо рдХреЗ рд╕рдорд░реНрдерди рдХреЗ рд╕рд╛рде рдПрдирдПрд╕рдПрд╕ (рдиреЗрдЯрд╡рд░реНрдХ рд╕реБрд░рдХреНрд╖рд╛ рд╕реЗрд╡рд╛) рдкреИрдХреЗрдЬ рдХреЗ рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдХреЛ рдЬреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП, LD_LIBRARY_PATH рдЪрд░ рдХрд╛ рдорд╛рди рдирд┐рдореНрдирд╛рдиреБрд╕рд╛рд░ рд╕реЗрдЯ рдХрд░реЗрдВ:

$export LD_LIBRARY_PATH=/usr/local/lib64/firefox-52:$LD_LIBRARY_PATH $ 

рдПрдХ рдкреНрд░рдорд╛рдг рдкрддреНрд░ рдХреА рджреБрдХрд╛рди рдХреЗ рд░реВрдк рдореЗрдВ, libreoffice рдЖрдо рддреМрд░ рдкрд░ рдлрд╝рд╛рдпрд░рдлрд╝реЙрдХреНрд╕, рдердВрдбрд░рдмрд░реНрдб рдИрдореЗрд▓ рдХреНрд▓рд╛рдЗрдВрдЯ, рдпрд╛ рдПрдХреАрдХреГрдд рд╕реАрдореЙрдиреНрдХреА рдкреИрдХреЗрдЬ рд╕реЗ рдПрдХ рдкреНрд░рдорд╛рдгрдкрддреНрд░ рд╕реНрдЯреЛрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИред GoogleChrome / Cromium рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдкреНрд░рдорд╛рдгрдкрддреНрд░ рд╕реНрдЯреЛрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдпрд╛ рдЕрдкрдирд╛ рд╕реНрд╡рддрдВрддреНрд░ рд╕реНрдЯреЛрд░ рдмрдирд╛рдиреЗ рд╕реЗ рдХреБрдЫ рднреА рдирд╣реАрдВ рд░реЛрдХрддрд╛ рд╣реИ (рдЙрдкрдХрд░рдг-> рд╡рд┐рдХрд▓реНрдк-> рд╕реБрд░рдХреНрд╖рд╛-> рдкреНрд░рдорд╛рдгрдкрддреНрд░):



рднрдВрдбрд╛рд░рдг рдХрд╛ рдЪрдпрди рд╣реЛрдиреЗ рдХреЗ рдмрд╛рдж, рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХрдиреЗрдХреНрдЯ рд╣реЛрддреА рд╣реИрдВ, рдХрд╛рдореЗрдЪреНрдЫрд╛ рдХреЛ рдЪрд▓рд╛рддреЗ рд╣реИрдВ, рдПрдХ рдУрдЯреНрдЯ рдлрд╝рд╛рдЗрд▓ рдмрдирд╛рддреЗ рд╣реИрдВ рдФрд░ рдЙрд╕ рдкрд░ рд╣рд╕реНрддрд╛рдХреНрд╖рд░ рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░рддреЗ рд╣реИрдВ (рдлрд╛рдЗрд▓-> рдбрд┐рдЬрд┐рдЯрд▓ рд╣рд╕реНрддрд╛рдХреНрд╖рд░-> рдбрд┐рдЬрд┐рдЯрд▓ рд╣рд╕реНрддрд╛рдХреНрд╖рд░)ред

рдлрд╝рд╛рдпрд░рдлрд╝реЙрдХреНрд╕ / рдПрдирдПрд╕рдПрд╕ рднрдВрдбрд╛рд░ рдореЗрдВ рдкреНрд░рдорд╛рдг рдкрддреНрд░ рд╕рдлрд▓рддрд╛рдкреВрд░реНрд╡рдХ рдкреНрд░рджрд░реНрд╢рд┐рдд рдФрд░ рд╕рддреНрдпрд╛рдкрд┐рдд рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВ:



рд╣рд╛рд▓рд╛рдБрдХрд┐, рдкреНрд░рдорд╛рдгрдкрддреНрд░ рдХрд╛ рдЪрдпрди рдХрд░рдиреЗ рдФрд░ рдУрдХреЗ рдмрдЯрди рджрдмрд╛рдиреЗ рдХреЗ рдмрд╛рдж рд╣рд╕реНрддрд╛рдХреНрд╖рд░ рдирд╣реАрдВ рдмрдирддрд╛ рд╣реИ:



рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ libreoffice рд░реВрд╕реА рдХреНрд░рд┐рдкреНрдЯреЛрдЧреНрд░рд╛рдлрд┐рдХ рдПрд▓реНрдЧреЛрд░рд┐рджрдо рдХреЛ рд╕рдордЭрдирд╛ рдирд╣реАрдВ рдЪрд╛рд╣рддрд╛ рд╣реИ, рдЗрд╕ рддрдереНрдп рдХреЗ рдмрд╛рд╡рдЬреВрдж рдХрд┐ рдПрдирдПрд╕рдПрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ Redfox рдмреНрд░рд╛рдЙрдЬрд╝рд░ рд╕реЗ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬреЛ GOST рдПрд▓реНрдЧреЛрд░рд┐рджрдо рдХреЛ рд╕рдордЭрддрд╛ рд╣реИ, рдЬреЛ рдПрдХ рд╕рдлрд▓ рдкреНрд░рдорд╛рдгрдкрддреНрд░ рд╕рддреНрдпрд╛рдкрди рджреНрд╡рд╛рд░рд╛ рдкреБрд╖реНрдЯрд┐ рдХреА рдЬрд╛рддреА рд╣реИред

рд╣рдо рджреВрд╕рд░рд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░рддреЗ рд╣реИрдВ: рдЗрд╕ рдмрд╛рд░ рд╣рдо рдкреАрдбреАрдПрдл рдлрд╛рдЗрд▓ рдкрд░ рд╣рд╕реНрддрд╛рдХреНрд╖рд░ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░реЗрдВрдЧреЗред рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рддреИрдпрд╛рд░ рдХрд┐рдП рдЧрдП рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдХреЛ рдкреАрдбреАрдПрдл рдкреНрд░рд╛рд░реВрдк рдореЗрдВ рдирд┐рд░реНрдпрд╛рдд рдХрд░реЗрдВред рдкреАрдбреАрдПрдл рдлрд╛рдЗрд▓ рдкрд░ рд╣рд╕реНрддрд╛рдХреНрд╖рд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рд╕реНрд╡рд╛рднрд╛рд╡рд┐рдХ рд░реВрдк рд╕реЗ рдЗрд╕реЗ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░рдирд╛ рд╣реЛрдЧрд╛ (рдлрд╛рдЗрд▓-> рдбрд┐рдЬрд┐рдЯрд▓ рд╣рд╕реНрддрд╛рдХреНрд╖рд░-> рд╕рд╛рдЗрди рдкреАрдбреАрдПрдл)ред рдЗрд╕реЗ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рд╣рдо рдЗрд╕ рдкрд░ рд╣рд╕реНрддрд╛рдХреНрд╖рд░ рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░рддреЗ рд╣реИрдВ (рдлрд╝рд╛рдЗрд▓-> рдбрд┐рдЬрд┐рдЯрд▓ рд╣рд╕реНрддрд╛рдХреНрд╖рд░-> рдбрд┐рдЬрд┐рдЯрд▓ рд╣рд╕реНрддрд╛рдХреНрд╖рд░) (рдКрдкрд░ рджреЗрдЦреЗрдВ, рдкреНрд░рдорд╛рдг рдкрддреНрд░ рдХрд╛ рдЪрдпрди рдХрд░реЗрдВ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдкрд░ рд╣рд╕реНрддрд╛рдХреНрд╖рд░ рдХрд░рдиреЗ рдХрд╛ рдЙрджреНрджреЗрд╢реНрдп):



рдФрд░ рд╣рд╕реНрддрд╛рдХреНрд╖рд░ рдмрдирддрд╛ рд╣реИ !!! рд╣рдо рджреЗрдЦрддреЗ рд╣реИрдВ рдХрд┐ рд╣рд╕реНрддрд╛рдХреНрд╖рд░, GOST R 34.10-2012 512 рдмрд┐рдЯреНрд╕ рдХреЗ рд╕рд╛рде рдкреНрд░рдорд╛рдг рдкрддреНрд░ "рдЯреЗрд╕реНрдЯ 12 512" рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдмрдирддрд╛ рд╣реИред рд╣рд╕реНрддрд╛рдХреНрд╖рд░ рд╕рд╣реА рд╣реИред

рдХрд╛рдорд╡рд╛рд╕рдирд╛ рд╕реЗ рдмрд╛рд╣рд░ рдирд┐рдХрд▓рдирд╛ред рдлрд┐рд░ рд╕реЗ рдХрд╛рдореЗрдЪреНрдЫрд╛ рдЪрд▓рд╛рдПрдВ, рд╣рд╕реНрддрд╛рдХреНрд╖рд░рд┐рдд рдкреАрдбреАрдПрдл-рдлрд╛рдЗрд▓ рдХреЛ рд▓реЛрдб рдХрд░реЗрдВ, рд╣рд╕реНрддрд╛рдХреНрд╖рд░ рдЬрд╛рдВрдЪреЗрдВред рд╕рдм рдХреБрдЫ рдареАрдХ рд╣реИред рд╣рд╕реНрддрд╛рдХреНрд╖рд░рдХрд░реНрддрд╛рдУрдВ рдХреЗ рдкреНрд░рдорд╛рдг рдкрддреНрд░ рджреЗрдЦреЗрдВред рд╕рдм рдХреБрдЫ рдареАрдХ рд╣реИред рдЪрдорддреНрдХрд╛рд░! рдкреАрдбреАрдПрдл рдкрд░ рд╣рд╕реНрддрд╛рдХреНрд╖рд░ рдХрд░рдирд╛ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред рд╣рдордиреЗ рджреВрд╕рд░рд╛, рддреАрд╕рд░рд╛ рд╣рд╕реНрддрд╛рдХреНрд╖рд░ рдХрд┐рдпрд╛ ... рд╕рдм рдХреБрдЫ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред рд▓реЗрдХрд┐рди рдХреБрдЫ рд╕рддрд╛ рд░рд╣рд╛ рд╣реИред рд╣рдо рдПрдХ рдЕрддрд┐рд░рд┐рдХреНрдд рдЬрд╛рдВрдЪ рдХрд░рддреЗ рд╣реИрдВред

рд╣рд╕реНрддрд╛рдХреНрд╖рд░рд┐рдд рдкреАрдбреАрдПрдл-рдлрд╛рдЗрд▓ рдЦреЛрд▓реЗрдВ (рдореИрдВрдиреЗ mc рд╕реЗ рдирд┐рд░реНрдорд┐рдд рд╕рдВрдкрд╛рджрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ - рдорд┐рдбрдирд╛рдЗрдЯ рдХрдорд╛рдВрдбрд░ - рд▓рд┐рдирдХреНрд╕ рдХреЗ рд▓рд┐рдП рдХрдВрд╕реЛрд▓ рдлрд╝рд╛рдЗрд▓ рдкреНрд░рдмрдВрдзрдХ)ред рдЗрд▓реЗрдХреНрдЯреНрд░реЙрдирд┐рдХ рд╣рд╕реНрддрд╛рдХреНрд╖рд░ рдЦреЛрдЬреЗрдВ (/ рдЯрд╛рдЗрдк / рд╕рд┐рдЧ /):



рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ, рд╣рд╕реНрддрд╛рдХреНрд╖рд░ рдкреНрд░рддреАрдХрд╛рддреНрдордХ рд╣реЗрдХреНрд╕рд╛рдбреЗрд╕рд┐рдорд▓ рд░реВрдк рдореЗрдВ рд╕рдВрдЧреНрд░рд╣реАрдд рд╣реИред рд╣рдо рдЗрд╕реЗ рдХреЙрдкреА рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдЗрд╕реЗ рдПрдХ рдлрд╛рдЗрд▓ рдореЗрдВ рд╕реЗрд╡ рдХрд░рддреЗ рд╣реИрдВред рдлрд╝рд╛рдЗрд▓ рдХреЛ рдмрд╛рдЗрдирд░реА (DER рдПрдиреНрдХреЛрдбрд┐рдВрдЧ) рдореЗрдВ рдмрджрд▓рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдо xxd рдЙрдкрдпреЛрдЧрд┐рддрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ:

 $xxd тАУp тАУr <    PDF> > <>.der $ 

рдкрд░рд┐рдгрд╛рдореА рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдбрд┐рд╕реНрдХрдиреЗрдХреНрдЯ рдХрд┐рдпрд╛ рдЧрдпрд╛ DER- рдПрдиреНрдХреЛрдбреЗрдб PKCS # 7 рдкреНрд░рд╛рд░реВрдк рд╣рд╕реНрддрд╛рдХреНрд╖рд░ рд╣реИред рдЕрдм рдЗрд╕ рд╣рд╕реНрддрд╛рдХреНрд╖рд░ рдХреЛ рдХрд┐рд╕реА рднреА asn1-prase рдХреЗ рд╕рд╛рде рджреЗрдЦрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдУрдкрдирд╕реЗрд▓ рдЙрдкрдпреЛрдЧрд┐рддрд╛ рдХреЗ рд╕рд╛рдеред рд▓реЗрдХрд┐рди рдЬрдм рд╕реЗ рд╣рдо рдПрдирдПрд╕рдПрд╕ рдкреИрдХреЗрдЬ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рд╣рдо рд╡реНрдпреБрддреНрдкрдиреНрди рдЙрдкрдпреЛрдЧрд┐рддрд╛ рдпрд╛ рдкреАрдкреА рдЙрдкрдпреЛрдЧрд┐рддрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВрдЧреЗ:

 $pp тАУt p7 тАУu тАУi pkcs7_detach.p7 PKCS #7 Content Info: PKCS #7 Signed Data: Version: 1 (0x1) Digest Algorithm List: Digest Algorithm (1): SHA-256 Content Information: PKCS #7 Data: <no content> Certificate List: Certificate (1): Data: Version: 3 (0x2) Serial Number: 4107 (0x100b) Signature Algorithm: GOST R 34.10-2012 signature with GOST R 34.11-2012-512 Issuer: "E=ca_12_512@lissi.ru,OGRN=1234567890123,INN=1234 56789012,CN= 12_512,O= 12_512,L=GnuPG  -2012-512,ST= ,C=RU" Validity: Not Before: Sat Sep 08 07:17:56 2018 Not After : Tue Sep 12 07:17:56 2023 Subject: "C=RU,ST= ,CN=  ,SN=,givenName= ,E=xx@xx.ru,L= ,STREET=,INN=123456789012,SNILS=12345678901" Subject Public Key Info: Public Key Algorithm: GOST R 34.10-2012 512 Public Key: . . . Digest Encryption Algorithm: GOST R 34.10-2012 Key 512 Encrypted Digest: 34:9d:6f:37:e6:60:00:ed:fe:ef:f7:96:db:52:66:e1: 47:4c:5d:da:7f:9f:f3:20:50:ac:73:6c:97:db:f9:8d: 43:9b:8f:40:61:99:d3:4b:17:08:b8:34:e3:1e:92:76: b1:0c:dd:37:01:1e:2a:30:45:68:06:af:3d:33:5e:2f: 71:c8:17:b3:a9:8a:6b:2f:78:9e:e4:b2:00:59:6f:5a: a0:c5:9e:be:1e:4b:ca:d5:64:25:50:1a:6f:f9:55:b8: 3a:cf:37:a0:04:eb:89:b4:6c:39:77:27:92:de:61:c7: b1:d3:a5:2f:ef:66:9b:f5:71:42:77:0a:d2:10:7f:50 $ 

рдФрд░ рдлрд┐рд░ рдпрд╣ рд╕реНрдкрд╖реНрдЯ рд╣реЛ рдЧрдпрд╛ рдХрд┐ рд╕рдм рдХреБрдЫ рдЗрддрдирд╛ рдЕрдЪреНрдЫрд╛ рдирд╣реАрдВ рд╣реИред рд╣рд╛рдВ, рдбрд╛рдЗрдЬреЗрд╕реНрдЯ рдПрдиреНрдХреНрд░рд┐рдкреНрд╢рди рдПрд▓реНрдЧреЛрд░рд┐рдердо: GOST R 34.10-2012 рдХреБрдВрдЬреА 512 рд╣рд╕реНрддрд╛рдХреНрд╖рд░ рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рд╣рд╕реНрддрд╛рдХреНрд╖рд░ рдХреЗ рд▓рд┐рдП рдЪрдпрдирд┐рдд рдкреНрд░рдорд╛рдг рдкрддреНрд░ рдХреЗ рдЕрдиреБрд╕рд╛рд░, рд▓реЗрдХрд┐рди рд╣рд╕реНрддрд╛рдХреНрд╖рд░ SHA-256 рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо (рдбрд╛рдЗрдЬреЗрд╕реНрдЯ рдПрд▓реНрдЧреЛрд░рд┐рдердо (1: SHA-256) рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЧрдгрдирд╛ рдХреА рдЧрдИ рд╣реИрд╢ рд╕реЗ рдЙрддреНрдкрдиреНрди рд╣реЛрддрд╛ рд╣реИред рдФрд░ рдпрд╣ рдмрд╛рдд рдЧрд▓рдд рд╣реИ: GOST R 34.10-2012 рдХреЗ рд▓рд┐рдП рд╣реИрд╢ рдХреЛ 512 рдХреЗ GOST R 34.11-2012-512 рдПрд▓реНрдЧреЛрд░рд┐рдердо рдХреЗ рдЕрдиреБрд╕рд╛рд░ рдорд╛рдирд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред

рдЪрд▓реЛ рд▓реЗрдмрд░рдСрдлрд╝рд┐рд╕ рд╕реЛрд░реНрд╕ рдХреЛрдб рдХреЗ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХреЗ рд▓рд┐рдП рдиреАрдЪреЗ рдЖрддреЗ рд╣реИрдВ: рд╢реИрддрд╛рди рдЗрддрдирд╛ рднрдпрд╛рдирдХ рдирд╣реАрдВ рд╣реИ рдЬрд┐рддрдирд╛ рдХрд┐ рдЗрд╕реЗ рдЪрд┐рддреНрд░рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдЗрд╕ рд▓реЗрдЦ рдореЗрдВ, рд╣рдо рдЗрд▓реЗрдХреНрдЯреНрд░реЙрдирд┐рдХ рд╣рд╕реНрддрд╛рдХреНрд╖рд░ рдЙрддреНрдкрдиреНрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдирдПрд╕рдПрд╕ рдкреИрдХреЗрдЬ рдХреЗ рдЙрдкрдпреЛрдЧ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░рддреЗ рд╣реИрдВред рдпрджрд┐ рдХреЛрдИ MS Windows рдкреНрд▓реЗрдЯрдлрд╝реЙрд░реНрдо рдкрд░ рдкрд╕рдВрдж рдХрд░рддрд╛ рд╣реИ, рддреЛ CryptoAPI рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ (рдФрд░, рддрджрдиреБрд╕рд╛рд░, GOST-CSP), рдЗрд╕ рд╕рд╛рдордЧреНрд░реА рдХреЗ рд╕рд╛рде рд╕рд╛рджреГрд╢реНрдп рджреНрд╡рд╛рд░рд╛, рдЗрд╕реА рд╕рдВрд╢реЛрдзрди рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

рд╡рд┐рд╢реНрд▓реЗрд╖рдг рд╕реЗ рдкрддрд╛ рдЪрд▓рд╛ рд╣реИ рдХрд┐ рдкрд░рд┐рд╡рд░реНрддрди рдХреЗрд╡рд▓ рджреЛ рдлрд╛рдЗрд▓реЛрдВ рдореЗрдВ рдХрд░рдирд╛ рд╣реЛрдЧрд╛:
- ~ / libreoffice-5.3.7.2 / vcl / source / gdi / pdfwriter_impl.cxx
- ~ / libreoffice-5.3.7.2 / xmlsecurity / source / pdfio / pdfdocument.cxx

рдпреЗ рдкрд░рд┐рд╡рд░реНрддрди GOST рдкреНрд░рдорд╛рдгрдкрддреНрд░ рдХреЗ рд▓рд┐рдП рд╣реИрд╢ рдлрд╝рдВрдХреНрд╢рди рдХреЗ рд╕рд╣реА рдЪрдпрди рд╕реЗ рдЬреБрдбрд╝реЗ рд╣реИрдВред рдкреНрд░рдорд╛рдгрдкрддреНрд░ рдХреБрдВрдЬреА рдХреЗ рдкреНрд░рдХрд╛рд░ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рд╣реИрд╢ рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рд╡рд┐рдХрд▓реНрдк рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, PDFWriter :: рд╕рд╛рдЗрди (рдлрд╝рд╛рдЗрд▓ pdfwriter_impl.cxx) рдореЗрдВ рд╣реИрд╢ рдПрд▓реНрдЧреЛрд░рд┐рджрдо рдЪреБрдирдирд╛, рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрд╛рдИ рджреЗрдЧрд╛:

 bool PDFWriter::Sign(PDFSignContext& rContext) { #ifndef _WIN32 /* */ SECKEYPublicKey *pubk = NULL; SECOidTag hashAlgTag; HASH_HashType hashType; int hashLen; CERTCertificate *cert = CERT_DecodeCertFromPackage(reinterpret_cast<char *>(rContext.m_pDerEncoded), rContext.m_nDerEncoded); if (!cert) { SAL_WARN("vcl.pdfwriter", "CERT_DecodeCertFromPackage failed"); return false; } /*    */ pubk = CERT_ExtractPublicKey(cert); if (pubk == NULL) return NULL; /*   */ switch(pubk->keyType){ case gost3410Key: hashAlgTag = SEC_OID_GOSTHASH; hashType = HASH_AlgGOSTHASH; hashLen = SHA256_LENGTH; break; case gost3410Key_256: hashAlgTag = SEC_OID_GOST3411_2012_256; hashType = HASH_AlgGOSTHASH_12_256; hashLen = SHA256_LENGTH; break; case gost3410Key_512: hashAlgTag = SEC_OID_GOST3411_2012_512; hashLen = SHA256_LENGTH * 2; hashType = HASH_AlgGOSTHASH_12_512; break; default: hashAlgTag = SEC_OID_SHA256; hashType = HASH_AlgSHA256; hashLen = SHA256_LENGTH; break; } /* */ HashContextScope hc(HASH_Create(hashType)); . . . } 

рддрд░реНрдХ рдореЗрдВ рдЕрдиреНрдп рдкрд░рд┐рд╡рд░реНрддрди рдЗрди рдХреЗ рд╕рдорд╛рди рд╣реИрдВред рдлрд╝рд╛рдЗрд▓ рдХреЗ рд▓рд┐рдП рдкреИрдЪ ~ / libreoffice-5.3.7.2 / vcl / source / gdi / pdfwriter_impl.cxx рд╕реНрдерд┐рдд рд╣реИ

рдпрд╣рд╛рдВ:
 --- pdfwriter_impl_ORIG.cxx 2017-10-25 17:25:39.000000000 +0300 +++ pdfwriter_impl.cxx 2018-10-31 19:48:32.078482227 +0300 @@ -6698,6 +6698,9 @@ CERTCertificate *cert, SECItem *digest) { + SECKEYPublicKey *pubk = NULL; + SECOidTag hashAlgTag; + NSSCMSMessage *result = NSS_CMSMessage_Create(nullptr); if (!result) { @@ -6732,8 +6735,31 @@ NSS_CMSMessage_Destroy(result); return nullptr; } - + pubk = CERT_ExtractPublicKey(cert); + if (pubk == NULL) + return NULL; + switch(pubk->keyType){ + case gost3410Key: + hashAlgTag = SEC_OID_GOSTHASH; +fprintf(stderr, "CreateCMSMessage: gost3410Key Use HASH_AlgGOSTHASH_=%d\n", hashAlgTag); + break; + case gost3410Key_256: + hashAlgTag = SEC_OID_GOST3411_2012_256; +fprintf(stderr, "CreateCMSMessage: gost3410Key_256 Use HASH_AlgGOSTHASH_=%d\n", hashAlgTag); + break; + case gost3410Key_512: + hashAlgTag = SEC_OID_GOST3411_2012_512; +fprintf(stderr, "CreateCMSMessage: gost3410Key_512 Use HASH_AlgGOSTHASH_=%d\n", hashAlgTag); + break; + default: + hashAlgTag = SEC_OID_SHA256; + break; + } +/* *cms_signer = NSS_CMSSignerInfo_Create(result, cert, SEC_OID_SHA256); +*/ + *cms_signer = NSS_CMSSignerInfo_Create(result, cert, hashAlgTag); + if (!*cms_signer) { SAL_WARN("vcl.pdfwriter", "NSS_CMSSignerInfo_Create failed"); @@ -6773,8 +6799,8 @@ NSS_CMSMessage_Destroy(result); return nullptr; } + if (NSS_CMSSignedData_SetDigestValue(*cms_sd, hashAlgTag, digest) != SECSuccess) - if (NSS_CMSSignedData_SetDigestValue(*cms_sd, SEC_OID_SHA256, digest) != SECSuccess) { SAL_WARN("vcl.pdfwriter", "NSS_CMSSignedData_SetDigestValue failed"); NSS_CMSSignedData_Destroy(*cms_sd); @@ -6982,6 +7008,10 @@ bool PDFWriter::Sign(PDFSignContext& rContext) { #ifndef _WIN32 + SECKEYPublicKey *pubk = NULL; + SECOidTag hashAlgTag; + HASH_HashType hashType; + int hashLen; CERTCertificate *cert = CERT_DecodeCertFromPackage(reinterpret_cast<char *>(rContext.m_pDerEncoded), rContext.m_nDerEncoded); @@ -6990,8 +7020,33 @@ SAL_WARN("vcl.pdfwriter", "CERT_DecodeCertFromPackage failed"); return false; } + pubk = CERT_ExtractPublicKey(cert); + if (pubk == NULL) + return NULL; + switch(pubk->keyType){ + case gost3410Key: + hashAlgTag = SEC_OID_GOSTHASH; + hashType = HASH_AlgGOSTHASH; + hashLen = SHA256_LENGTH; + break; + case gost3410Key_256: + hashAlgTag = SEC_OID_GOST3411_2012_256; + hashType = HASH_AlgGOSTHASH_12_256; + hashLen = SHA256_LENGTH; + break; + case gost3410Key_512: + hashAlgTag = SEC_OID_GOST3411_2012_512; + hashLen = SHA256_LENGTH * 2; + hashType = HASH_AlgGOSTHASH_12_512; + break; + default: + hashAlgTag = SEC_OID_SHA256; + hashType = HASH_AlgSHA256; + hashLen = SHA256_LENGTH; + break; + } + HashContextScope hc(HASH_Create(hashType)); - HashContextScope hc(HASH_Create(HASH_AlgSHA256)); if (!hc.get()) { SAL_WARN("vcl.pdfwriter", "HASH_Create failed"); @@ -7005,15 +7060,18 @@ HASH_Update(hc.get(), static_cast<const unsigned char*>(rContext.m_pByteRange2), rContext.m_nByteRange2); SECItem digest; - unsigned char hash[SHA256_LENGTH]; + unsigned char hash[SHA256_LENGTH * 2]; + digest.data = hash; - HASH_End(hc.get(), digest.data, &digest.len, SHA256_LENGTH); + HASH_End(hc.get(), digest.data, &digest.len, hashLen); + hc.clear(); #ifdef DBG_UTIL { FILE *out = fopen("PDFWRITER.hash.data", "wb"); - fwrite(hash, SHA256_LENGTH, 1, out); + fwrite(hash, hashLen, 1, out); + fclose(out); } #endif @@ -7078,8 +7136,8 @@ fclose(out); } #endif + HashContextScope ts_hc(HASH_Create(hashType)); - HashContextScope ts_hc(HASH_Create(HASH_AlgSHA256)); if (!ts_hc.get()) { SAL_WARN("vcl.pdfwriter", "HASH_Create failed"); @@ -7090,16 +7148,19 @@ HASH_Begin(ts_hc.get()); HASH_Update(ts_hc.get(), ts_cms_signer->encDigest.data, ts_cms_signer->encDigest.len); SECItem ts_digest; - unsigned char ts_hash[SHA256_LENGTH]; + unsigned char ts_hash[SHA256_LENGTH * 2]; + ts_digest.type = siBuffer; ts_digest.data = ts_hash; - HASH_End(ts_hc.get(), ts_digest.data, &ts_digest.len, SHA256_LENGTH); + HASH_End(ts_hc.get(), ts_digest.data, &ts_digest.len, hashLen); + ts_hc.clear(); #ifdef DBG_UTIL { FILE *out = fopen("PDFWRITER.ts_hash.data", "wb"); - fwrite(ts_hash, SHA256_LENGTH, 1, out); + fwrite(ts_hash, hashLen, 1, out); + fclose(out); } #endif @@ -7111,7 +7172,8 @@ src.messageImprint.hashAlgorithm.algorithm.data = nullptr; src.messageImprint.hashAlgorithm.parameters.data = nullptr; - SECOID_SetAlgorithmID(nullptr, &src.messageImprint.hashAlgorithm, SEC_OID_SHA256, nullptr); + SECOID_SetAlgorithmID(nullptr, &src.messageImprint.hashAlgorithm, hashAlgTag, nullptr); + src.messageImprint.hashedMessage = ts_digest; src.reqPolicy.type = siBuffer; @@ -7340,11 +7402,13 @@ // Write ESSCertIDv2.hashAlgorithm. aCertID.hashAlgorithm.algorithm.data = nullptr; aCertID.hashAlgorithm.parameters.data = nullptr; - SECOID_SetAlgorithmID(nullptr, &aCertID.hashAlgorithm, SEC_OID_SHA256, nullptr); + SECOID_SetAlgorithmID(nullptr, &aCertID.hashAlgorithm, hashAlgTag, nullptr); + // Write ESSCertIDv2.certHash. SECItem aCertHashItem; - unsigned char aCertHash[SHA256_LENGTH]; - HashContextScope aCertHashContext(HASH_Create(HASH_AlgSHA256)); + unsigned char aCertHash[SHA256_LENGTH*2]; + HashContextScope aCertHashContext(HASH_Create(hashType)); + if (!aCertHashContext.get()) { SAL_WARN("vcl.pdfwriter", "HASH_Create() failed"); @@ -7354,7 +7418,8 @@ HASH_Update(aCertHashContext.get(), reinterpret_cast<const unsigned char *>(rContext.m_pDerEncoded), rContext.m_nDerEncoded); aCertHashItem.type = siBuffer; aCertHashItem.data = aCertHash; - HASH_End(aCertHashContext.get(), aCertHashItem.data, &aCertHashItem.len, SHA256_LENGTH); + HASH_End(aCertHashContext.get(), aCertHashItem.data, &aCertHashItem.len, hashLen); + aCertID.certHash = aCertHashItem; // Write ESSCertIDv2.issuerSerial. IssuerSerial aSerial; 


рдлрд╝рд╛рдЗрд▓ рдХреЗ рд▓рд┐рдП рдкреИрдЪ ~ / libreoffice-5.3.7.2 / xmlsecurity / source / pdfio / pdfdocument.cxx рд╕реНрдерд┐рдд рд╣реИ

рдпрд╣рд╛рдВ:
 --- pdfdocument_ORIG.cxx 2017-10-25 17:25:39.000000000 +0300 +++ pdfdocument.cxx 2018-10-31 19:49:34.174485641 +0300 @@ -2400,6 +2400,19 @@ case SEC_OID_PKCS1_SHA512_WITH_RSA_ENCRYPTION: eOidTag = SEC_OID_SHA512; break; + case SEC_OID_GOST3410_SIGN_256: + case SEC_OID_GOST3411_2012_256: + eOidTag = SEC_OID_GOST3411_2012_256; + break; + case SEC_OID_GOST3410_SIGN_512: + case SEC_OID_GOST3411_2012_512: + eOidTag = SEC_OID_GOST3411_2012_512; + break; + case SEC_OID_GOST3410_SIGNATURE: + case SEC_OID_GOSTHASH: + eOidTag = SEC_OID_GOSTHASH; + break; + default: break; } @@ -2453,6 +2466,16 @@ case SEC_OID_SHA512: nMaxResultLen = msfilter::SHA512_HASH_LENGTH; break; + case SEC_OID_GOST3411_2012_256: + nMaxResultLen = msfilter::SHA256_HASH_LENGTH; + break; + case SEC_OID_GOST3411_2012_512: + nMaxResultLen = msfilter::SHA512_HASH_LENGTH; + break; + case SEC_OID_GOSTHASH: + nMaxResultLen = msfilter::SHA256_HASH_LENGTH; + break; + default: SAL_WARN("xmlsecurity.pdfio", "PDFDocument::ValidateSignature: unrecognized algorithm"); return false; 


рдкрд░рд┐рд╡рд░реНрддрди рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рд╣рдо libreoffice рдкреИрдХреЗрдЬ рдмрдирд╛рддреЗ рд╣реИрдВред рдЗрди рдкрд░рд┐рд╡рд░реНрддрдиреЛрдВ рдиреЗ рддреАрди рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ (/ usr / lib64 / libreoffice / program) рдХреЛ рдкреНрд░рднрд╛рд╡рд┐рдд рдХрд┐рдпрд╛:

  • libvcllo.so ;
  • libxmlsecurity.so ;
  • libxsec-xmlsec.so

рдЗрди рддреАрди рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдХреЛ рд╕реНрдерд╛рдкрд┐рдд рдкрд░рд┐рд╡рд╛рдж рд╡рд┐рддрд░рдг (/ usr / lib64 / libreoffice / program) рдореЗрдВ рдмрджрд▓ рджрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред

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



рдпрд╣ рдпрд╛рдж рд░рдЦрдиреЗ рдпреЛрдЧреНрдп рд╣реИ рдХрд┐ рдЖрдкрдХреЛ рд╣рд╕реНрддрд╛рдХреНрд╖рд░ рдкреНрд░рдорд╛рдгрдкрддреНрд░ рдХреЗ рд▓рд┐рдП рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рдореЗрдВ рд╡рд┐рд╢реНрд╡рд╕рдиреАрдп рдкреНрд░рдорд╛рдг рдкрддреНрд░ рдХреА рдПрдХ рд╢реНрд░реГрдВрдЦрд▓рд╛ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдирд╣реАрдВ рднреВрд▓рдирд╛ рдЪрд╛рд╣рд┐рдПред рд▓реЗрдХрд┐рди рдпрд╣ рд╕реНрд╡рд╛рднрд╛рд╡рд┐рдХ рд╣реИред

рдпрд╣ рд╕рдм рд╣реИ, рдЕрдм рдкреАрдбреАрдПрдл рдлрд╛рдЗрд▓реЛрдВ рдореЗрдВ рдЗрд▓реЗрдХреНрдЯреНрд░реЙрдирд┐рдХ рд╣рд╕реНрддрд╛рдХреНрд╖рд░ (рдПрдХ рдпрд╛ рдЕрдзрд┐рдХ) рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рд╕рдВрднрд╛рд╡рдирд╛ рд╣реИред рджрд╕реНрддрд╛рд╡реЗрдЬреЛрдВ рдХреЗ рд╕рдордиреНрд╡рдп рдФрд░ рджрд╕реНрддрд╛рд╡реЗрдЬреЛрдВ рдХреЛ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рддреЗ рд╕рдордп рдпрд╣ рдмрд╣реБрдд рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд╣реИред

рдФрд░ рдЕрдЧрд░ рдХрд┐рд╕реА рдХреЛ PKCS # 7 рдкреНрд░рд╛рд░реВрдк рдореЗрдВ рдХреНрд▓рд╛рд╕рд┐рдХ рдЗрд▓реЗрдХреНрдЯреНрд░реЙрдирд┐рдХ рд╣рд╕реНрддрд╛рдХреНрд╖рд░ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рджреЛрдиреЛрдВ рдЬреБрдбрд╝реЗ рдФрд░ рдбрд┐рд╕реНрдХрдиреЗрдХреНрдЯ рд╣реЛ рдЬрд╛рддреЗ рд╣реИрдВ, рддреЛ GUINSSPY рдЧреНрд░рд╛рдлрд┐рдХреНрд╕ рдкреИрдХреЗрдЬ рдХрд╛ рдПрдХ рдЕрджреНрдпрддрди рд╕рдВрд╕реНрдХрд░рдг (рд▓рд┐рдирдХреНрд╕ рдФрд░ рд╡рд┐рдВрдбреЛрдЬ рдкреНрд▓реЗрдЯрдлрд╛рд░реНрдореЛрдВ рдХреЗ рд▓рд┐рдП) рддреИрдпрд╛рд░ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ :



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

рдЗрд╕ рдЙрдкрдпреЛрдЧрд┐рддрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ, рдЖрдк libreoffice рдХреЗ рд▓рд┐рдП рдПрдХ рдкреНрд░рдорд╛рдг рдкрддреНрд░ рд╕реНрдЯреЛрд░ рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВ, рдкреНрд░рдорд╛рдг рдкрддреНрд░ рдкреНрд░рдмрдВрдзрд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдлрд╛рдЗрд▓реЛрдВ рдкрд░ рд╣рд╕реНрддрд╛рдХреНрд╖рд░ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред



рдЙрдкрдпреЛрдЧрд┐рддрд╛ рдЖрдкрдХреЛ рдПрдХ рдкреНрд░рдореБрдЦ рдЬреЛрдбрд╝реА рдХреА рдкреАрдврд╝реА рдХреЗ рд╕рд╛рде рдПрдХ рдкреНрд░рдорд╛рдгрдкрддреНрд░ рдЕрдиреБрд░реЛрдз рдмрдирд╛рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддреА рд╣реИ, рдЬрд┐рд╕реЗ рдмрд╛рдж рдореЗрдВ рдкреНрд░рдорд╛рдгрди рдХреЗрдВрджреНрд░ рдореЗрдВ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдФрд░ рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рдореЗрдВ рдкреНрд░рд╛рдкреНрдд рдкреНрд░рдорд╛рдг рдкрддреНрд░ рд╕реНрдерд╛рдкрд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:



рдФрд░ рдЕрдЧрд░ рдШрд░реЗрд▓реВ рд▓рд┐рдирдХреНрд╕ рдХрд╛рдВрдЯреЛрдВ рдХреЗ рдирд┐рд░реНрдорд╛рддрд╛рдУрдВ рдиреЗ рд░реВрд╕реА рдХреНрд░рд┐рдкреНрдЯреЛрдЧреНрд░рд╛рдлреА рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╡рд┐рднрд┐рдиреНрди рдкреИрдХреЗрдЬреЛрдВ (рдПрдирдПрд╕рдПрд╕, рдлрд╝рд╛рдпрд░рдлрд╝реЙрдХреНрд╕, рдердВрдбрд░рдмрд░реНрдб, GnuPG / SMIME, SSH, KMail, Kleopatra, LibreOffice, OpenSSL, рдЖрджрд┐) рдХреЛ рд╕рдВрд╢реЛрдзрд┐рдд рдХрд┐рдпрд╛ рд╣реИ, рддреЛ рдЖрдк рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдпрд╣ рдХреНрд░рд┐рдкреНрдЯреЛрдЧреНрд░рд╛рдлреА рдХреЗ рдХреНрд╖реЗрддреНрд░ рдореЗрдВ рдЖрдпрд╛рдд рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрди рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╣реЛрдЧрд╛ред

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


All Articles