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

рдЗрд╕ рдЙрдкрдпреЛрдЧрд┐рддрд╛ рдХреА рдкреНрд░реЗрд░рдХ рд╢рдХреНрддрд┐
PKCS # 11 рдХреНрд░рд┐рдкреНрдЯреЛрдЧреНрд░рд╛рдлрд┐рдХ
рдЯреЛрдХрди рд╣реИ рдЬреЛ рдХрдо рд╕реЗ рдХрдо GOST R 34.10.12 рдкрд░ рд░реВрд╕реА рдХреНрд░рд┐рдкреНрдЯреЛрдЧреНрд░рд╛рдлреА рдХреЗ рд╕рдорд░реНрдерди рдХреЗ рд╕рд╛рде рд╣реИред рдпрджрд┐ рдЖрдк
рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рд╕реЗрд╡рд╛рдУрдВ рдЖрджрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рдЗрд░рд╛рджрд╛ рд░рдЦрддреЗ рд╣реИрдВ, рддреЛ рдЖрдкрдХреЛ рдЕрднреА рднреА рдПрдХ рдЯреЛрдХрди рдЦрд░реАрджрдирд╛ рд╣реЛрдЧрд╛ рдЬреЛ рд░реВрд╕ рдХреЗ рдПрдлрдПрд╕рдмреА рдХреЗ рдкреНрд░рдорд╛рдгрди рдкреНрд░рдгрд╛рд▓реА рдореЗрдВ рдкреНрд░рдорд╛рдгрд┐рдд рдкрд░реАрдХреНрд╖рдг рдкрд╛рд╕ рдХрд░ рдЪреБрдХрд╛ рд╣реЛред рдпрджрд┐ рдпрд╣ рдЖрдкрдХрд╛ рдЖрдВрддрд░рд┐рдХ рдЗрд▓реЗрдХреНрдЯреНрд░реЙрдирд┐рдХ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдкреНрд░рдмрдВрдзрди рд╣реИ, рддреЛ рдпрд╣, рдЬрд╝рд╛рд╣рд┐рд░ рд╣реИ, рдЖрдкрдХреЗ рд╡рд┐рд╡реЗрдХ рдкрд░ рд╣реИред PKCS # 11 рдЯреЛрдХрди рдЕрд▓рдЧ рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВ: рд╕реЙрдлреНрдЯрд╡реЗрдпрд░, рд╣рд╛рд░реНрдбрд╡реЗрдпрд░, рдпрд╛
рдХреНрд▓рд╛рдЙрдб рднреАред рдЙрдкрдпреЛрдЧрд┐рддрд╛ рдХреЛ рд╕реНрдХреНрд░рд┐рдкреНрдЯрд┐рдВрдЧ рднрд╛рд╖рд╛
Tcl / Tk рдореЗрдВ рд▓рд┐рдЦрд╛ рдЧрдпрд╛ рд╣реИред рдЬрдм рдЖрдк рдкреАрдХреЗрд╕реАрдПрд╕ # 11 рдЯреЛрдХрди рдЦрд░реАрджрддреЗ рд╣реИрдВ, рддреЛ рд╡рд┐рднрд┐рдиреНрди рдкреНрд▓реЗрдЯрдлрд╛рд░реНрдореЛрдВ рдХреЗ рд▓рд┐рдП рдЦрд░реАрджреЗ рдЧрдП рдЯреЛрдХрди рдХреЗ рд▓рд┐рдП рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдХреЛ рдХрд╣рд╛рдВ рд╕реЗ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдпрд╣ рдкреВрдЫрдирд╛ рдпрд╛ рдкреВрдЫрдирд╛ рди рднреВрд▓реЗрдВред рдкреБрд╕реНрддрдХрд╛рд▓рдп рдЖрдорддреМрд░ рдкрд░ рд╕реНрд╡рддрдВрддреНрд░ рд░реВрдк рд╕реЗ рдЙрдкрд▓рдмреНрдз рд╣реИрдВред рдЙрдкрдпреЛрдЧрд┐рддрд╛ рдХреНрд░рд┐рдкреНрдЯреЛрдЧреНрд░рд╛рдлрд┐рдХ рдФрд░ рдЕрдиреНрдп рдЯреЛрдХрди
рд╕реБрд╡рд┐рдзрд╛рдУрдВ рддрдХ рдкрд╣реБрдВрдЪрдиреЗ рдХреЗ рд▓рд┐рдП
TclPKCS11 рдкреИрдХреЗрдЬ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреА
рд╣реИ ред рдЙрдкрдпреЛрдЧрд┐рддрд╛ рдПрдХ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдХрд╛ рдЪрдпрди рдХрд░рдХреЗ рд╢реБрд░реВ рд╣реЛрддреА рд╣реИ рдЬреЛ рдЖрдкрдХреЗ рдЯреЛрдХрди рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддреА рд╣реИред рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдПрдХ рд╕рд╛рде рдХрдИ рдЯреЛрдХрди (рдХреЙрдореНрдмреЛрдХреНрд╕ "рдЪреБрдирд┐рдВрджрд╛ рдЯреЛрдХрди / рд╕реНрдорд╛рд░реНрдЯрдХрд╛рд░реНрдб") рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░ рд╕рдХрддреА рд╣реИрдВ:

рд╕рд╡рд╛рд▓ рдЙрда рд╕рдХрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЕрдЧрд░ рдЯреЛрдХрди рдХреЛ рдЗрдирд┐рд╢рд┐рдпрд▓рд╛рдЗрдЬрд╝ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рддреЛ рдореБрдЭреЗ рдХреНрдпрд╛ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП рдпрд╛ рдореБрдЭреЗ рдкрд┐рди рдХреЛрдб рдЖрджрд┐ рдмрджрд▓рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ? рдЙрддреНрддрд░ рд╕рд░рд▓ рд╣реИ -
p11conf рдЯреЛрдХрди рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдЙрдкрдпреЛрдЧрд┐рддрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВред
рдЯреЛрдХрди рдХреА рд╕реВрдЪреА рдХреЛ рдЕрдкрдбреЗрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП (рдЯреЛрдХрди рдХреЛ рдирд┐рд╖реНрдХреНрд░рд┐рдп рдХрд░реЗрдВ, рдПрдХ рдирдпрд╛ рдЬреЛрдбрд╝реЗрдВ) рдмрд╕ рдХреНрд▓рд┐рдХ рдХрд░реЗрдВ
рдЖрдЗрдХрди рджреНрд╡рд╛рд░рд╛

рдХреЙрдореНрдмреЛрдХреНрд╕ рдХреЗ рджрд╛рдИрдВ рдУрд░ рд╕реНрдерд┐рдд рд╣реИ "рдПрдХ рдЯреЛрдХрди / рд╕реНрдорд╛рд░реНрдЯ рдХрд╛рд░реНрдб рдЪреБрдиреЗрдВ"
рдХреЙрдореНрдмреЛрдХреНрд╕ "рдкреНрд░рдорд╛рдгрдкрддреНрд░" рдореЗрдВ рдЪрдпрдирд┐рдд (рд╡рд░реНрддрдорд╛рди) рдЯреЛрдХрди рдкрд░ рд╕рдВрдЧреНрд░рд╣реАрдд рд╕рднреА рдкреНрд░рдорд╛рдгрдкрддреНрд░реЛрдВ рдХреЗ рд▓реЗрдмрд▓ рд╢рд╛рдорд┐рд▓ рд╣реИрдВ:

рдпрджрд┐ рдЖрдк рдЖрдЗрдХрди рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░рддреЗ рд╣реИрдВ

рдХреЛрдореНрдмреЛрдХреНрд╕ рд╕рд░реНрдЯрд┐рдлрд┐рдХреЗрдЯ рдХреЗ рджрд╛рдИрдВ рдУрд░ рд╕реНрдерд┐рдд, рдПрдХ рд╡рд┐рдВрдбреЛ рдкреНрд░рдорд╛рдг рдкрддреНрд░ рдХреА рд╕рд╛рдордЧреНрд░реА рдХреЗ рд╕рд╛рде рджрд┐рдЦрд╛рдИ рджреЗрддреА рд╣реИ:

рдпрджрд┐ рдЖрдк рджреЗрдЦрдиреЗ рдХреЗ рд╡рд┐рдВрдбреЛ рдореЗрдВ "рд╕рд╣реЗрдЬреЗрдВ / рд╕рд╣реЗрдЬреЗрдВ" рдмрдЯрди рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдкрд╛рда рдкреНрд░рд╛рд░реВрдк рдореЗрдВ рдкрд╛рд░реНрд╕ рдХрд┐рдП рдЧрдП рдкреНрд░рдорд╛рдг рдкрддреНрд░ рдХреА рд╕рд╛рдордЧреНрд░реА рдЖрдкрдХреЗ рджреНрд╡рд╛рд░рд╛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рд╕рд╣реЗрдЬреА рдЬрд╛рдПрдЧреАред
рд╡рд░реНрддрдорд╛рди рдЯреЛрдХрди рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдирдХрд╛рд░реА рджреЗрдЦрдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдк "6. рдЯреЛрдХрди рдкрд░ рдЬрд╛рдирдХрд╛рд░реА" рдмрдЯрди рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдпрд╛ рдХрд░реНрд╕рд░ рдХреЛ рдЯреЛрдХрди рд╕рдорд╛рдзрд╛рди рдкрд░ рд▓реЗ рдЬрд╛ рд╕рдХрддреЗ рд╣реИрдВ:

рдпрд╣ рдЬрд╛рдирдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐ рд╡рд░реНрддрдорд╛рди рдореЗрдВ рдХреМрди рд╕реЗ рдХреНрд░рд┐рдкреНрдЯреЛрдЧреНрд░рд╛рдлрд╝рд┐рдХ рддрдВрддреНрд░ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реИ, рдмрдЯрди рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░реЗрдВ "5. рддрдВрддреНрд░ рдХреА рд╕реВрдЪреА":

рдкреНрд░рдорд╛рдгрдкрддреНрд░ рдЕрдиреБрд░реЛрдз рдмрдирд╛рдПрдБ
рд╣рдо рдЙрдкрдпреЛрдЧрд┐рддрд╛ рдХреЗ рдореБрдЦреНрдп рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рдкрд╛рд╕ рдХрд░рддреЗ рд╣реИрдВред рдФрд░ рдЗрд╕ рддрд░рд╣ рдХрд╛ рдкрд╣рд▓рд╛ рдлрд╝рдВрдХреНрд╢рди рдкреНрд░рдорд╛рдгрдкрддреНрд░ рдЕрдиреБрд░реЛрдз (рдмрдЯрди "3. рдкреНрд░рдорд╛рдгрдкрддреНрд░ рдЕрдиреБрд░реЛрдз") рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рд╣реИ:

рд╕рдВрджреЗрд╢ "рдЯреЛрдХрди рдХреБрдВрдЬреА рдХрд╛ рд╕рдорд░реНрдерди рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ ..." рджрд┐рдЦрд╛рдИ рджреЗрддрд╛ рд╣реИ рдпрджрд┐ рдЪрдпрдирд┐рдд рдЯреЛрдХрди рдЗрд╕ рдкреНрд░рдХрд╛рд░ рдХреА рдХреБрдВрдЬреА рдХреА рдкреАрдврд╝реА рдХрд╛ рд╕рдорд░реНрдерди рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, рдЖрдкрдХреЛ рдПрдХ рдЕрд▓рдЧ рдкреНрд░рдХрд╛рд░ рдХреА рдХреБрдВрдЬреА рдпрд╛ рдПрдХ рдЕрд▓рдЧ рдЯреЛрдХрди рдХрд╛ рдЪрдпрди рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдЗрд╕ рдЙрджрд╛рд╣рд░рдг рдореЗрдВ, рдЖрдк RuToken ECP 2.0 рдЯреЛрдХрди (рджреВрд╕рд░рд╛ рд╕реНрдХреНрд░реАрдирд╢реЙрдЯ рджреЗрдЦреЗрдВ) рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдХреЙрдореНрдмреЛрдХреНрд╕ "рд╕рд░реНрдЯрд┐рдлрд┐рдХреЗрдЯ рд╣реЛрд▓реНрдбрд░" рдЖрдкрдХреЛ рдпрд╣ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ рдХрд┐ рдХреМрди рдкреНрд░рдорд╛рдг рдкрддреНрд░ рдХрд╛ рдорд╛рд▓рд┐рдХ рд╣реЛрдЧрд╛: рдПрдХ рд╡реНрдпрдХреНрддрд┐, рдПрдХ рдХрд╛рдиреВрдиреА рдЗрдХрд╛рдИ рдпрд╛ рдПрдХ рд╡реНрдпрдХреНрддрд┐рдЧрдд рдЙрджреНрдпрдореАред рдЗрд╕рдХреЗ рдЖрдзрд╛рд░ рдкрд░, рднрд░реЗ рдЬрд╛рдиреЗ рд╡рд╛рд▓реЗ рдлрд╝реАрд▓реНрдб рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдкреГрд╖реНрдареЛрдВ рдкрд░ рдмрдирд╛рдП рдЬрд╛рдПрдВрдЧреЗред
рдпрд╣рд╛рдБ рдПрдХ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдХреНрд╖реЗрддреНрд░ "рдирд╛рдо CIPF" рдХреНрд╖реЗрддреНрд░ рд╣реИред рдпрд╣ рдПрдХ рдпреЛрдЧреНрдп рдкреНрд░рдорд╛рдг рдкрддреНрд░ рдХрд╛ рдПрдХ рдЕрднрд┐рдиреНрди рдЕрдВрдЧ рд╣реИ рдФрд░ рдЗрдВрдЧрд┐рдд рдХрд░рддрд╛ рд╣реИ рдХрд┐ рдХреНрд░рд┐рдкреНрдЯреЛрдЧреНрд░рд╛рдлрд┐рдХ рд╕реВрдЪрдирд╛ рд╕реБрд░рдХреНрд╖рд╛ рдкреНрд░рдгрд╛рд▓реА рдкреНрд░рдореБрдЦ рдЬреЛрдбрд╝реА рдХреИрд╕реЗ рдЙрддреНрдкрдиреНрди рдХрд░реЗрдЧреАред рдЖрдк рдЙрддреНрдкрд╛рдж рдХреЗ рд░реВрдк рдореЗрдВ рдпрд╛ рдЯреЛрдХрди рдЦрд░реАрдж рдХреЗ рд╕рдордп рдХреНрд░рд┐рдкреНрдЯреЛрдЧреНрд░рд╛рдлрд┐рдХ рд╕реВрдЪрдирд╛ рд╕реБрд░рдХреНрд╖рд╛ рдкреНрд░рдорд╛рдгрдкрддреНрд░ рдХрд╛ рдирд╛рдо рдкрддрд╛ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдХреНрдпрд╛ рдЯреЛрдХрди рдЬрд╛рдирдХрд╛рд░реА рдХрд╛ рдкреНрд░рдХрд╛рд░ рдХреНрд░рд┐рдкреНрдЯреЛрдЧреНрд░рд╛рдлрд┐рдХ рд╕реВрдЪрдирд╛ рд╕реБрд░рдХреНрд╖рд╛ рдкреНрд░рдгрд╛рд▓реА рдХреЗ рдирд╛рдо рд╕реЗ рдореЗрд▓ рдЦрд╛рддрд╛ рд╣реИ? рдЗрд╕рд▓рд┐рдП рдлреЙрд░реНрдо рдХреЛ рджреЗрдЦрдирд╛ рдмреЗрд╣рддрд░ рд╣реИред рдЕрдЧрд▓рд╛ рдХреНрд▓рд┐рдХ рдХрд░реЗрдВ рдФрд░ рдЖрд╡рд╢реНрдпрдХ рдлрд╝реАрд▓реНрдб рднрд░реЗрдВ:

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

"рдЕрдЧрд▓рд╛" рдмрдЯрди рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рдЖрдкрдХреЛ рдлрд┐рд░ рд╕реЗ рджреЗрдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдХрд╣рд╛ рдЬрд╛рдПрдЧрд╛ рдХрд┐ рдЖрдкрдиреЗ рдХреНрдпрд╛ рджрд░реНрдЬ рдХрд┐рдпрд╛ рд╣реИ рдФрд░ "рд╕рдорд╛рдкреНрдд" рдХреБрдВрдЬреА рджрдмрд╛рдХрд░ рдЕрдкрдиреЗ рдирд┐рд░реНрдгрдп рдХреА рдкреБрд╖реНрдЯрд┐ рдХрд░реЗрдВ:

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

рдФрд░ рдХреНрдпрд╛ рдЖрдк рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдХреБрдВрдЬреА рдЯреЛрдХрди рдкрд░ рдЙрддреНрдкрдиреНрди рдФрд░ рд╕рдВрдЧреНрд░рд╣реАрдд рд╣реИ? рд╣рд╛рдВред рд╣рдо "7. рдЯреЛрдХрди рдСрдмреНрдЬреЗрдХреНрдЯреНрд╕" рдмрдЯрди рджрдмрд╛рддреЗ рд╣реИрдВ, рдЯреЛрдХрди рдХреЛ рдПрдХреНрд╕реЗрд╕ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд┐рди рдХреЛрдб рджрд░реНрдЬ рдХрд░рддреЗ рд╣реИрдВ, рдФрд░ SKO_PRIVATE_KEY рдФрд░ CKO_PUBLIV_KEY рдСрдмреНрдЬреЗрдХреНрдЯреНрд╕ рдХреЛ рдЦреЛрдЬрддреЗ рд╣реИрдВ, рдЬрд┐рдирдХреЗ рд▓реЗрдмрд▓ "COMMON NANE" (CN) рдлрд╝реАрд▓реНрдб рд╕реЗ рдореЗрд▓ рдЦрд╛рддреЗ рд╣реИрдВ, рдЬрд┐рд╕реЗ рдЖрдкрдиреЗ рдкреНрд░рдорд╛рдгрдкрддреНрд░ рдЕрдиреБрд░реЛрдз рдмрдирд╛рддреЗ рд╕рдордп рднрд░рд╛ рдерд╛ред рд╣рдорд╛рд░реЗ рдЙрджрд╛рд╣рд░рдг рдореЗрдВ, рдпрд╣ "рд╕рд░реНрд╡рд╢рдХреНрддрд┐рдорд╛рди рд╣рдмрд░" рдерд╛:

рджреЗрдЦрд╛ рдФрд░ рддреБрд░рдВрдд рджреВрд╕рд░реЗ рдкреГрд╖реНрда рдкрд░ рдЬрд╛рдПрдБред рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛ рд╕рдмреВрдд рдЬреЛ рдПрдХ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдЬреЛрдбрд╝реА рд╕рдлрд▓рддрд╛рдкреВрд░реНрд╡рдХ рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ рд╡рд╣ рд╣рд╕реНрддрд╛рдХреНрд╖рд░рд┐рдд рдЕрдиреБрд░реЛрдз рдХреА рдЙрдкрд╕реНрдерд┐рддрд┐ рд╣реИред рдЗрд╕реЗ рд╕рддреНрдпрд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, "рдЕрдиреБрд░реЛрдз рджреЗрдЦреЗрдВ / рдкреНрд░рдорд╛рдгрдкрддреНрд░" рдмрдЯрди рджрдмрд╛рдПрдВ, рд╕рд╣реЗрдЬреЗ рдЧрдП рдЕрдиреБрд░реЛрдз рдХрд╛ рдЪрдпрди рдХрд░реЗрдВ, рдмрдЯрди "рдкреНрд░рдорд╛рдг рдкрддреНрд░ рдХреЗ рд▓рд┐рдП рдЕрдиреБрд░реЛрдз рджреЗрдЦреЗрдВ" рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░реЗрдВ рдФрд░ рдХреБрдВрдЬреА рдЬреЛрдбрд╝реА рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдирдХрд╛рд░реА рджреЗрдЦреЗрдВ:

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

рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЗ CA рдбреЗрдЯрд╛рдмреЗрд╕ рдореЗрдВ рдкреНрд░рд╡реЗрд╢ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рдЕрдзрд┐рдХреГрдд рд╡реНрдпрд╡рд╕реНрдерд╛рдкрдХ рдЗрд╕ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░рддрд╛ рд╣реИ рдФрд░ рдпрд╛ рддреЛ рдЙрд╕реЗ рдЕрд╕реНрд╡реАрдХрд╛рд░ рдпрд╛ рд╕реНрд╡реАрдХреГрдд рдХрд░рддрд╛ рд╣реИ:

рдЖрд╡реЗрджрди рд╕реНрд╡реАрдХреГрдд рд╣реЛрдиреЗ рдХреЗ рдмрд╛рдж, рдЖрд╡реЗрджрдХ, рд╕реАрдП рд╕реЗ рдЕрдзрд┐рдХреГрдд рд╡реНрдпрдХреНрддрд┐ рдХреЗ рд╕рд╛рде рдорд┐рд▓рдХрд░ рдкреНрд░рдорд╛рдг рдкрддреНрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рдЙрджреНрджреЗрд╢реНрдпреЛрдВ рдХреЛ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рддрд╛ рд╣реИ:

рдФрд░ рдЙрд╕рдХреЗ рдмрд╛рдж, рдХреБрдЫ рднреА рдкреНрд░рдорд╛рдг рдкрддреНрд░ рдЬрд╛рд░реА рдХрд░рдиреЗ рд╕реЗ рд░реЛрдХрддрд╛ рд╣реИ:

рдкреНрд░рдорд╛рдгрдкрддреНрд░ рдЬрд╛рд░реА рдХрд┐рдП рдЬрд╛рдиреЗ рдХреЗ рдмрд╛рдж, CA рдХрд░реНрдордЪрд╛рд░реА рдЬрд╛рд░реА рдХрд┐рдП рдЧрдП рдкреНрд░рдорд╛рдгрдкрддреНрд░ рдХреЛ рдорд╛рдирдиреАрдп Habr рдХреА рдлреНрд▓реИрд╢ рдбреНрд░рд╛рдЗрд╡ рдореЗрдВ рдирд┐рд░реНрдпрд╛рдд рдХрд░рддрд╛ рд╣реИ:

рд╣рдордиреЗ рдЯреЛрдХрди рд╕рд░реНрдЯрд┐рдлрд┐рдХреЗрдЯ рд▓рдЧрд╛рдпрд╛
рдФрд░ рдЗрд╕рд▓рд┐рдП рдкреНрд░рдорд╛рдгрдкрддреНрд░ рдХрд╛ рднрд╛рдЧреНрдпрд╢рд╛рд▓реА рдзрд╛рд░рдХ рдЕрдкрдиреА рдЬрдиреНрдорднреВрдорд┐ рдкрд░ рд▓реМрдЯрддрд╛ рд╣реИ рдФрд░ рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ рдореБрдЦреНрдп рдЬреЛрдбрд╝реА рдХреЗ рдмрдЧрд▓ рдореЗрдВ рдЯреЛрдХрди рдХреЗ рд▓рд┐рдП рдкреНрд░рдорд╛рдг рдкрддреНрд░ рд▓рдЧрд╛рдиреЗ рдХрд╛ рдлреИрд╕рд▓рд╛ рдХрд░рддрд╛ рд╣реИред рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЙрдкрдпреЛрдЧрд┐рддрд╛ рдХреА рдореБрдЦреНрдп рд╡рд┐рдВрдбреЛ рдкрд░, "4. рджреЗрдЦреЗрдВ рдЕрдиреБрд░реЛрдз / рдкреНрд░рдорд╛рдг рдкрддреНрд░" рдмрдЯрди рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░реЗрдВ, рдкреНрд░рдорд╛рдг рдкрддреНрд░ рдФрд░ рдСрдкрд░реЗрд╢рди "рдкреНрд░рдорд╛рдг рдкрддреНрд░ рджреЗрдЦреЗрдВ" рдХреЗ рд╕рд╛рде рдлрд╝рд╛рдЗрд▓ рдХрд╛ рдЪрдпрди рдХрд░реЗрдВ рдФрд░ рдСрдкрд░реЗрд╢рди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдмрдЯрди рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░реЗрдВ ":

рд╣рдо рдкреНрд░рдорд╛рдг рдкрддреНрд░ рдХреА рд╡реИрдзрддрд╛ рдХреА рдЬрд╛рдВрдЪ рднреА рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ (рд▓реЗрдХрд┐рди рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдЗрд╕реЗ рд░рджреНрдж рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрднреА рддрдХ рд╕рдордп рдирд╣реАрдВ рд╣реИ) рдпрд╛ рдЙрдкрдпреБрдХреНрдд рдСрдкрд░реЗрд╢рди рдХрд╛ рдЪрдпрди рдХрд░рдХреЗ рдЗрд╕рдХреЗ рд╣рд╕реНрддрд╛рдХреНрд╖рд░ рдХреА рд╢реБрджреНрдзрддрд╛:

рдкреНрд░рдорд╛рдгрдкрддреНрд░ рд╣рд╕реНрддрд╛рдХреНрд╖рд░ рд╕рддреНрдпрд╛рдкрди рдЙрдкрдпреЛрдЧрд┐рддрд╛ рдХреЛрдб#!/usr/bin/env tclsh package require pki load ./tclpkcs11.so Tclpkcs11 # PKCS#11 #set pkcs11_module "/usr/local/lib64/librtpkcs11ecp_2.0.so" set pkcs11_module "/usr/local/lib64/libls11sw2016.so" puts "Connect the Token and press Enter" gets stdin yes set handle [pki::pkcs11::loadmodule $pkcs11_module] set slots [pki::pkcs11::listslots $handle] set i 0 foreach slotinfo $slots { set slotid [lindex $slotinfo 0] set slotlabel [lindex $slotinfo 1] set slotflags [lindex $slotinfo 2] if {[lsearch -exact $slotflags TOKEN_PRESENT] != -1} { set token_slotlabel $slotlabel set token_slotid $slotid # incr i break } } if {$i == 0} { puts " . ." exit } # PEM DER proc ::cert_to_der {data} { if {[string first "-----BEGIN CERTIFICATE-----" $data] != -1} { set data [string map {"\r\n" "\n"} $data] } array set parsed_cert [::pki::_parse_pem $data "-----BEGIN CERTIFICATE-----" "-----END CERTIFICATE-----"] if {[string range $parsed_cert(data) 0 0 ] == "0" } { # DER- "0" == 0x30 set asnblock $parsed_cert(data) } else { set asnblock "" } return $asnblock } proc usage {use error} { puts "Copyright(C) Orlov Vladimir (http://museum.lissi-crypto.ru/) 2019" if {$use == 1} { puts $error puts "Usage:\nverify_cert_with_pkcs11 <file with certificate> \[<file with CA certificate>\]\n" } } set countcert [llength $argv] if { $countcert < 1 || $countcert > 2 } { usage 1 "Bad usage!" exit } set file [lindex $argv 0] if {![file exists $file]} { usage 1 "File $file not exist" exit } # cert_user puts "Loading user certificate: $file" set fd [open $file] chan configure $fd -translation binary set cert_user [read $fd] close $fd if {$cert_user == "" } { usage 1 "Bad file with certificate user: $file" exit } set cert_user [cert_to_der $cert_user] if {$cert_user == ""} { puts "User certificate bad" exit } catch {array set cert_parse [::pki::x509::parse_cert $cert_user]} if {![info exists cert_parse]} { puts "User certificate bad" exit } #parray cert_parse if {$countcert == 1} { if {$cert_parse(issuer) != $cert_parse(subject)} { puts "Bad usage: not self signed certificate" } else { set cert_CA $cert_user } } else { set fileca [lindex $argv 1] if {![file exists $fileca]} { usage 1 "File $fileca not exist" exit } # cert_CA puts "Loading CA certificate: $fileca" set fd [open $fileca] chan configure $fd -translation binary set cert_CA [read $fd] close $fd if {$cert_CA == "" } { usage 1 "Bad file with certificate CA=$fileca" exit } set cert_CA [cert_to_der $cert_CA] if {$cert_CA == ""} { puts "CA certificate bad" exit } } foreach slotinfo $slots { set slotid [lindex $slotinfo 0] set slotlabel [lindex $slotinfo 1] set slotflags [lindex $slotinfo 2] if {[lsearch -exact $slotflags TOKEN_PRESENT] != -1} { set token_slotlabel $slotlabel set token_slotid $slotid } } # catch {array set cert_parse_CA [::pki::x509::parse_cert $cert_CA]} if {![info exists cert_parse_CA]} { puts "CA certificate bad" exit } # if {$cert_parse(issuer) != $cert_parse_CA(subject)} { puts "Bad issuer" exit } set aa [dict create pkcs11_handle $handle pkcs11_slotid $token_slotid] set tbs_cert [binary format H* $cert_parse(cert)] catch {set signature_algo_number [::pki::_oid_name_to_number $cert_parse(signature_algo)]} if {![info exists signature_algo_number]} { set signature_algo_number $cert_parse(signature_algo) } switch -- $signature_algo_number { "1.2.643.2.2.3" - "1 2 643 2 2 3" { # "GOST R 34.10-2001 with GOST R 34.11-94" set digest_algo "gostr3411" } "1.2.643.7.1.1.3.2" - "1 2 643 7 1 1 3 2" { # "GOST R 34.10-2012-256 with GOSTR 34.11-2012-256" set digest_algo "stribog256" } "1.2.643.7.1.1.3.3" - "1 2 643 7 1 1 3 3" { # "GOST R 34.10-2012-512 with GOSTR 34.11-2012-512" set digest_algo "stribog512" } default { puts " :$signature_algo_number" exit } } # tbs-!!!! set digest_hex [pki::pkcs11::digest $digest_algo $tbs_cert $aa] # asn- # binary scan $cert_CA H* cert_CA_hex array set infopk [pki::pkcs11::pubkeyinfo $cert_CA_hex [list pkcs11_handle $handle pkcs11_slotid $token_slotid]] set lpk [dict create pkcs11_handle $handle pkcs11_slotid $token_slotid] # pybkeyinfo lappend lpk "pubkeyinfo" lappend lpk $infopk(pubkeyinfo) array set lpkar $lpk puts "Enter PIN user for you token \"$token_slotlabel\":" gets stdin password if { [pki::pkcs11::login $handle $token_slotid $password] == 0 } { puts "Bad PIN" exit } if {[catch {set verify [pki::pkcs11::verify $digest_hex $cert_parse(signature) $lpk]} res] } { puts " =$res" exit } if {$verify != 1} { puts "BAD SIGNATURE=$verify" } else { puts "SIGNATURE OK=$verify" }
рд▓реЗрдХрд┐рди рдЕрдм рд╣рдо рдЕрдкрдиреЗ рдЯреЛрдХрди рдХреЛ рдкреНрд░рд╛рдкреНрдд рдкреНрд░рдорд╛рдг рдкрддреНрд░ рдХреЛ рдЖрдпрд╛рдд рдХрд░рдиреЗ рдХреЗ рд╕рдВрдЪрд╛рд▓рди рдореЗрдВ рд░реБрдЪрд┐ рд░рдЦрддреЗ рд╣реИрдВред рдСрдкрд░реЗрд╢рди "рдЯреЛрдХрди рдХреЗ рд▓рд┐рдП рдкреНрд░рдорд╛рдгрдкрддреНрд░ рдЖрдпрд╛рдд рдХрд░реЗрдВ" рдЪреБрдиреЗрдВ рдФрд░ рдмрдЯрди "рдСрдкрд░реЗрд╢рди рдХрд░реЗрдВ" рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░реЗрдВред рдЙрдкрдпреЛрдЧрд┐рддрд╛ рдкреНрд░рдорд╛рдг рдкрддреНрд░ рдХреЗ рдЗрд▓реЗрдХреНрдЯреНрд░реЙрдирд┐рдХ рд╣рд╕реНрддрд╛рдХреНрд╖рд░ рдХреЛ рд╕рддреНрдпрд╛рдкрд┐рдд рдХрд░реЗрдЧреАред рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдЯреЛрдХрди рдХреЗ рд▓рд┐рдП рдкрд┐рди рдХреЛрдб рджрд░реНрдЬ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред рдФрд░ рдЕрдЧрд░ рд╕рдм рдХреБрдЫ рдареАрдХ рд░рд╣рд╛, рддреЛ рдкреНрд░рдорд╛рдгрдкрддреНрд░ рдЯреЛрдХрди рдХреЗ рд▓рд┐рдП рдЖрдпрд╛рдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛:

рдкреНрд░рдорд╛рдгрдкрддреНрд░ рдХрд╛ рд▓реЗрдмрд▓ (рдЙрдкрдирд╛рдо) рдкреНрд░рдорд╛рдг-рдкрддреНрд░реЛрдВ рдХреА рд╕реВрдЪреА рдореЗрдВ рджреЗрдЦрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ:

рдпрд╣ рд╣рдорд╛рд░рд╛ рд╡реНрдпрдХреНрддрд┐рдЧрдд рдкреНрд░рдорд╛рдг рдкрддреНрд░ рд╣реИ, рдПрдХ рдкреНрд░рдорд╛рдг рдкрддреНрд░ рд╣реИ рдЬрд┐рд╕рдХреЗ рд▓рд┐рдП рдПрдХ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдЬреЛрдбрд╝реА рд╣реИред рдФрд░ рдпрджрд┐ рдЖрдк рдлрд┐рд░ рд╕реЗ рдЯреЛрдХрди рдкрд░ рд╡рд╕реНрддреБрдУрдВ рдХреА рд╕реВрдЪреА рдХреЛ рджреЗрдЦрддреЗ рд╣реИрдВ, рддреЛ рд╣рдореЗрдВ рддреАрди рдСрдмреНрдЬреЗрдХреНрдЯ рдорд┐рд▓реЗрдВрдЧреЗ, рдЬрд┐рд╕рдореЗрдВ "рд╕рд░реНрд╡рд╢рдХреНрддрд┐рдорд╛рди рд╣реИрдмреНрд░рд╛ рдпреВрдЯреАрдПрд╕ 12_512" рдФрд░ рдЙрд╕реА CKA_ID рдХрд╛ рд▓реЗрдмрд▓ рд╣реЛрдЧрд╛ред рдпреЗ
рддреАрди рд╡рд╕реНрддреБрдПрдБ рд╕реНрд╡рдпрдВ рдкреНрд░рдорд╛рдгрдкрддреНрд░ (CKO_CERTIFICATE), рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ (CKO_PUBLIC_KEY) рдФрд░ рдирд┐рдЬреА (CKO_PRIVATE_KEY) рдХреБрдВрдЬрд┐рдпрд╛рдБ рд╣реИрдВред рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЗ рдЗрд╕ рдЯреНрд░рд┐рдкрд▓ рдХреЗ рд▓рд┐рдП рд▓реЗрдмрд▓ рдирд┐рдореНрдирд╛рдиреБрд╕рд╛рд░ рд╕реЗрдЯ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ:
<CN рдкреНрд░рдорд╛рдгрдкрддреНрд░ рдзрд╛рд░рдХ> <CN рдкреНрд░рдорд╛рдгрдкрддреНрд░ рдкреНрд░рдХрд╛рд╢рдХ> рд╕реЗред
рдиреАрдЪреЗ рд╣рдо рджрд┐рдЦрд╛рддреЗ рд╣реИрдВ рдХрд┐ рд▓реЗрдмрд▓ рдХреИрд╕реЗ рдмрджрд▓рдирд╛ рд╣реИред
рдЕрдм рдЬрдм рд╣рдордиреЗ рдкреНрд░рдорд╛рдгрдкрддреНрд░ рдХреЛ рдЯреЛрдХрди рдкрд░ рд░рдЦрд╛ рд╣реИ, рддреЛ рдЗрд╕реЗ рдХреИрд╕реЗ рдПрдХреНрд╕реЗрд╕ рдХрд░реЗрдВ? рдЯреЛрдХрди рдкрд░ рд╕реНрдерд┐рдд рдкреНрд░рдорд╛рдгрдкрддреНрд░реЛрдВ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рдХрд╛рд░реНрдпреЛрдВ рддрдХ рдкрд╣реБрдВрдЪрдиреЗ рдХреЗ рд▓рд┐рдП, рдмрд╕ рдХрд░реНрд╕рд░ рдХреЛ "рдкреНрд░рдорд╛рдгрдкрддреНрд░" рд▓реЗрдмрд▓ рдкрд░ рд▓реЗ рдЬрд╛рдПрдВ рдФрд░ рджрд╛рдПрдВ рдорд╛рдЙрд╕ рдмрдЯрди рджрдмрд╛рдПрдВ:

рд╣рдо рдЗрд▓реЗрдХреНрдЯреНрд░реЙрдирд┐рдХ рд╣рд╕реНрддрд╛рдХреНрд╖рд░ рдХреЗ рд╕рд╛рде рдкрд╣рд▓реЗ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдкрд░ рд╣рд╕реНрддрд╛рдХреНрд╖рд░ рдХрд░рддреЗ рд╣реИрдВ
рдЖрдЗрдП рдЕрдЧрд▓реЗ рд▓реЗрдЦ рдХреА рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд░реЗрдВред рдЖрдкрдХреЛ рдХреБрдЫ рджрд┐рди рдЗрдВрддрдЬрд╛рд░ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред рд╡рд╣рд╛рдБ рдХреНрдпрд╛ рдорд╛рдирд╛ рдЬрд╛рдПрдЧрд╛ рд╕реНрдХреНрд░реАрдирд╢реЙрдЯ рд╕реЗ рд╕рдордЭрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ:
рдпрд╣рд╛рдВ рдЬрд╛рд░реА рд╣реИ ред