рдиреЗрдЯрд╡рд░реНрдХ рд╕реБрд░рдХреНрд╖рд╛ рд╕реЗрд╡рд╛рдПрдБ рдФрд░ рд╕реБрдВрджрд░-рдкреНрд░рд┐рдВрдЯ рдЙрдкрдпреЛрдЧрд┐рддрд╛

рдиреЗрдЯрд╡рд░реНрдХ рд╕рд┐рдХреНрдпреЛрд░рд┐рдЯреА рд╕рд░реНрд╡рд┐рд╕реЗрдЬ ( рдПрдирдПрд╕рдПрд╕ ) рд╕реБрд░рдХреНрд╖рд┐рдд рдХреНрд▓рд╛рдЗрдВрдЯ рдФрд░ рд╕рд░реНрд╡рд░ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЗ рдХреНрд░реЙрд╕-рдкреНрд▓реЗрдЯрдлреЙрд░реНрдо рд╡рд┐рдХрд╛рд╕ рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЬрд╛рдиреЗ рд╡рд╛рд▓реЗ рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдХрд╛ рдПрдХ рд╕рдореВрд╣ рд╣реИред

рдПрдирдПрд╕рдПрд╕ рдкреИрдХреЗрдЬ, рдУрдкрдирдПрд╕рдПрд╕рдПрд▓ рдХреА рддрд░рд╣, рд╡рд┐рднрд┐рдиреНрди рдкреАрдХреЗрдЖрдИ рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрдорд╛рдВрдб-рд▓рд╛рдЗрди рдЙрдкрдпреЛрдЧрд┐рддрд╛рдУрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИ (рдореБрдЦреНрдп рдкреАрдврд╝реА, x509v3 рдкреНрд░рдорд╛рдг рдкрддреНрд░ рдЬрд╛рд░реА рдХрд░рдирд╛, рдЗрд▓реЗрдХреНрдЯреНрд░реЙрдирд┐рдХ рд╣рд╕реНрддрд╛рдХреНрд╖рд░, рдЯреАрдПрд▓рдПрд╕ рд╕рдорд░реНрдерди, рдЖрджрд┐ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдирд╛)ред рдЗрди рдЙрдкрдпреЛрдЧрд┐рддрд╛рдУрдВ рдореЗрдВ рд╕реЗ рдПрдХ, рдЕрд░реНрдерд╛рддреН рд╕реБрдВрджрд░-рдкреНрд░рд┐рдВрдЯ (рдкреАрдкреА), рдЖрдкрдХреЛ рдПрдХреНрд╕ 509 рд╡реА 3 рдкреНрд░рдорд╛рдгрдкрддреНрд░ рдФрд░ рдЗрд▓реЗрдХреНрдЯреНрд░реЙрдирд┐рдХ рд╣рд╕реНрддрд╛рдХреНрд╖рд░ (рдкреАрдХреЗрд╕реА # 7), рдЖрджрд┐ рдХреА рд╕рд╛рдордЧреНрд░реА рдХреЛ рдЖрд╕рд╛рдиреА рд╕реЗ рджреЗрдЦрдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдкреНрд░рдорд╛рдгрдкрддреНрд░ рдбреАрдИрдЖрд░ рдФрд░ рдкреАрдИрдПрдо рдПрдиреНрдХреЛрдбрд┐рдВрдЧ рджреЛрдиреЛрдВ рдореЗрдВ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ:

bash-4.3$ pp -h Usage: pp [-t type] [-a] [-i input] [-o output] [-w] [-u] Pretty prints a file containing ASN.1 data in DER or ascii format. -t type Specify input and display type: public-key (pk), certificate (c), certificate-request (cr), certificate-identity (ci), pkcs7 (p7), crl or name (n). (Use either the long type name or the shortcut.) -a Input is in ascii encoded form (RFC1113) -i input Define an input file to use (default is stdin) -o output Define an output file to use (default is stdout) -w Don't wrap long output lines -u Use UTF-8 (default is to show non-ascii as .) bash-4.3$ 

рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, -u рдкреИрд░рд╛рдореАрдЯрд░ (UTF-8 рдПрдиреНрдХреЛрдбрд┐рдВрдЧ) рдХреА рдЙрдкрд╕реНрдерд┐рддрд┐ рд░реВрд╕реА рдПрдиреНрдХреЛрдбрд┐рдВрдЧ рдореЗрдВ рдкреНрд░рдорд╛рдг рдкрддреНрд░ рджреЗрдЦрдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддреА рд╣реИред рд▓реЗрдХрд┐рди рдЬреАрдпреВрдЖрдИ рдХреЗ рд╕реНрдХреНрд░реАрдирд╢реЙрдЯ рдХреЛ рдПрдирдПрд╕рдПрд╕ рдкреИрдХреЗрдЬ рдХреА рдХрдорд╛рдВрдб рд▓рд╛рдЗрди рдЙрдкрдпреЛрдЧрд┐рддрд╛рдУрдВ рдХреЛ рдзреНрдпрд╛рди рд╕реЗ рджреЗрдЦрддреЗ рд╣реБрдП, рдЖрдк рдзреНрдпрд╛рди рджреЗрддреЗ рд╣реИрдВ рдХрд┐ рдХреБрдЫ рдкреНрд░рдорд╛рдг рдкрддреНрд░ рдбреЗрдЯрд╛ рдмрд╕ рдЧрд╛рдпрдм рд╣реЛ рдЧрдП рд╣реИрдВ:

рдЫрд╡рд┐

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

 $pp тАУ certificate тАУu тАУi _.cer тАж Subject: "CN=   ,INN=007710474375,OGRN=1047702026701,O=    ,STREET="125375 . , .  , . 7",L=,ST=77 . ,C=RU,E=dit@minsvya z.ru" тАж. $ 

рдкрд░рд┐рдгрд╛рдо рдиреЗ рдбреЗрдЯрд╛ рдХреЗ рдиреБрдХрд╕рд╛рди рдХреА рдкреБрд╖реНрдЯрд┐ рдХреАред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рд╕реНрдХреНрд░реАрди рдкрд░ рджреЛ рдЧреИрд░-рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдиреЗ рдпреЛрдЧреНрдп рдкреНрд░рддреАрдХ рджрд┐рдЦрд╛рдИ рджрд┐рдП (рдПрдХ рдкреНрд░рд╢реНрди рдХреЗ рд╕рд╛рде рдХрд╛рд▓реЗ рд░рдВрдЧ рдХрд╛ рдПрдХ рддрд░рдлрд╛ рдЭреВрдорд░)ред рд╡рд┐рд╢реНрд▓реЗрд╖рдг рд╕реЗ рдкрддрд╛ рдЪрд▓рд╛ рдХрд┐ рдЗрди рдЧреИрд░-рдкреНрд░рджрд░реНрд╢рди рдпреЛрдЧреНрдп рд╡рд░реНрдгреЛрдВ рдореЗрдВ рдХреНрд░рдорд╢рдГ 0xD0 рдФрд░ 0xBE рдХреЛрдб рд╣реИрдВ:

рдЫрд╡рд┐

рд░реВрд╕реА рдкрддреНрд░ "рдУ" UTX-8 рдПрдиреНрдХреЛрдбрд┐рдВрдЧ рдореЗрдВ рд╣реЗрдХреНрд╕рд╛рдбреЗрд╕рд┐рдорд▓ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдХреЗ рд╕рд╛рде 0xD00xBE рдХреЗ рд░реВрдк рдореЗрдВ рдЧрд╛рдпрдм рд╣реЛ рдЧрдпрд╛ред рдФрд░ рдХреЛрдб 0xD0 рдФрд░ 0xBE рд╣рдорд╛рд░реЗ рдЧреИрд░-рдкреНрд░рджрд░реНрд╢рди рдпреЛрдЧреНрдп рд╡рд░реНрдг рд╣реИрдВред рдФрд░ рдЗрди рдмрд╛рдЗрдЯреНрд╕ рдХреЗ рдмреАрдЪ рдХрд┐рд╕ рддрд░рд╣ рдХреЗ рдкрд╛рддреНрд░ рджрд┐рдЦрд╛рдИ рджрд┐рдП? рдФрд░ рдпрд╣ рдПрдХ "рд╕реБрдВрджрд░" рдкреНрд░рд┐рдВрдЯ - рдореБрджреНрд░рд┐рдд рдкрд╛рда рдХреЗ рд╕рдВрд░реЗрдЦрдг рдкреНрд░рддреАрдХ рд╣реИред

рдХреНрдпрд╛ рд╣реБрдЖ рдерд╛? "рдЕрдЪреНрдЫрд╛" рдкреНрд░рд┐рдВрдЯ (рдлрд╝рд╛рдЗрд▓ /ns/cmd/lib/secutil.c, рдлрд╝рдВрдХреНрд╢рди secu_PrintRawStringQuotesOptional) рдХрд╛ рдЗрдирдкреБрдЯ SECITEM рдХреЗ рд░реВрдк рдореЗрдВ рдбреЗрдЯрд╛ рдкреНрд░рд╛рдкреНрдд рдХрд░рддрд╛ рд╣реИ, рдЕрд░реНрдерд╛рддред рдкреНрд░рддрд┐ рдмрд╛рдЗрдЯ рд╕рд░рдгреА рдФрд░ рдЗрд╕рдХреА рд▓рдВрдмрд╛рдИ рдХреЗ рдкрддреЗ:

  for (i = 0; i < si->len; i++) { unsigned char val = si->data[i]; unsigned char c; if (SECU_GetWrapEnabled() && column > 76) { SECU_Newline(out); SECU_Indent(out, level); column = level * INDENT_MULT; } if (utf8DisplayEnabled) { if (val < 32) c = '.'; else c = val; } else { c = printable[val]; } fprintf(out, "%c", c); column++; } 

рдФрд░ рдЕрдЧрд░ (SECU_GetWrapEnabled () == рдЯреНрд░реВ) рдЕрдЪреНрдЫреА рдЫрдкрд╛рдИ рдХреЗ рд▓рд┐рдП рдкреНрд░рджрд╛рди рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ (рдкреАрдкреА рдЙрдкрдпреЛрдЧрд┐рддрд╛ рдореЗрдВ рдХреЛрдИ рдкреИрд░рд╛рдореАрдЯрд░ рдирд╣реАрдВ рд╣реИ) рдФрд░ рдПрдХ рдкрдВрдХреНрддрд┐ рдореЗрдВ рдмрд╛рдЗрдЯреНрд╕ рдХреА рд╕рдВрдЦреНрдпрд╛ 76 (рдХреЙрд▓рдо> 76) рд╕реЗ рдЕрдзрд┐рдХ рд╣реИ, рддреЛ рдЕрдЧрд▓реЗ рдЪрд░рд┐рддреНрд░ рдХреЗ рдмрд╛рдж рдПрдХ рдирдИ рд▓рд╛рдЗрди (SECU_Newline) рдФрд░ рдЖрд╡рд╢реНрдпрдХ рд╕рдВрдХреЗрддрдХ (SECU_Indent) )ред рдЙрд╕реА рд╕рдордп, рдХрд┐рд╕реА рднреА рдбреЗрд╡рд▓рдкрд░реНрд╕ рдиреЗ рдпрд╣ рдирд╣реАрдВ рд╕реЛрдЪрд╛ рдХрд┐ рдЕрдЧрд░ рдпреВрдЯреАрдПрдл -8 рдПрдиреНрдХреЛрдбрд┐рдВрдЧ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ (utf8DisplayEnabled), рддреЛ рд╕реБрдВрджрд░рддрд╛ рдХреЛ рдХреЗрд╡рд▓ рдЕрдЧрд▓реЗ рдЪрд░рд┐рддреНрд░ рдХреЗ рдмрд╛рдж рд╣реА рдкреНрд░реЗрд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдФрд░ рдмрд╛рдЗрдЯ рдирд╣реАрдВ, рдХреНрдпреЛрдВрдХрд┐ рдпреВрдЯреАрдПрдл -8 рдПрдиреНрдХреЛрдбрд┐рдВрдЧ рдореЗрдВ рдПрдХ рдмрд╛рдЗрдЯ рдФрд░ рдПрдХ рдЪрд░рд┐рддреНрд░ рдХреА рдЕрд╡рдзрд╛рд░рдгрд╛ рд╕рдВрдпреЛрдЧ рдирд╣реАрдВ рд╣реЛ рд╕рдХрддреА рд╣реИред ред рдпрджрд┐ рд╣рдо рд░реВрд╕реА рдЕрдХреНрд╖рд░реЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдЙрдирдореЗрдВ рд╕реЗ рдкреНрд░рддреНрдпреЗрдХ рджреЛ рдмрд╛рдЗрдЯреНрд╕ рдореЗрдВ рдПрдиреНрдХреЛрдбреЗрдб рд╣реИ ред рд╣рдорд╛рд░реЗ рд░реВрд╕реА рдкрддреНрд░ "рдУ" (0xD00xBE) рдХреЗ рд╕рд╛рде рдмрд╕ рдЗрддрдирд╛ рд╣реА рдЕрдВрддрд░ рдерд╛ред

рд░рд╛рд╕реНрддрд╛ рдХреНрдпрд╛ рд╣реИ? рд▓рд╛рдЗрди рдХреЛ рдмрджрд▓рдиреЗ рдХреЗ рд▓рд┐рдП secu_PrintRawStringQuotesOptional рдлрд╝рдВрдХреНрд╢рди рдореЗрдВ рд╕рдм рдХреБрдЫ рдмрд╣реБрдд рд╕рд░рд▓ рд╣реИ:

 if (SECU_GetWrapEnabled() && column > 76) { 

рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдлреЙрд░реНрдо рдХреА рдПрдХ рдкрдВрдХреНрддрд┐ рдкрд░:

 if (SECU_GetWrapEnabled() && column > 76 && (val <= 0x7F || val == 0xD0 || val == 0xD1)) { 

рдпрджрд┐ рдЖрдк рдЕрдм рдкреАрдкреА рдЙрдкрдпреЛрдЧрд┐рддрд╛ рдХрд╛ рдкреБрдирд░реНрдирд┐рд░реНрдорд╛рдг рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдЗрд╕реЗ рд╕рд┐рд╕реНрдЯрдо рдореЗрдВ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рддреЗ рд╣реИрдВ, рддреЛ "рдЕрдЪреНрдЫрд╛" рдкреНрд░рд┐рдВрдЯ "рдорд╣рд╛рди, рд╢рдХреНрддрд┐рд╢рд╛рд▓реА, рд╕рддреНрдп рдФрд░ рдореБрдХреНрдд рд░реВрд╕реА рднрд╛рд╖рд╛" рдХреЗ рд▓рд┐рдП рдЕрдкрдиреЗ рдирд╛рдо рдХреЛ рд╕рд╣реА рдард╣рд░рд╛рдПрдЧрд╛! (рдЖрдИ.рдПрд╕. рддреБрд░реНрдЧрдиреЗрд╡):

рдЫрд╡рд┐

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

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

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


All Articles