| ||||
| ||||
Я работаю с низкоуровневыми функциями, получаю ЭЦП через CryptSignHash. Требуется построить сообщение такого вида: 0 328: SEQUENCE { 4 9: OBJECT IDENTIFIER signedData (1 2 840 113549 1 7 2) 15 313: [0] { 19 309: SEQUENCE { 23 1: INTEGER 1 26 12: SET { 28 10: SEQUENCE { 30 6: OBJECT IDENTIFIER GOST R 34.11-94 (1 2 643 2 2 9) 38 0: NULL : } : } 40 11: SEQUENCE { 42 9: OBJECT IDENTIFIER data (1 2 840 113549 1 7 1) : } 53 275: SET { 57 271: SEQUENCE { 61 1: INTEGER 1 64 175: SEQUENCE { 67 160: SEQUENCE { 70 26: SET { 72 24: SEQUENCE { 74 9: OBJECT IDENTIFIER : emailAddress (1 2 840 113549 1 9 1) 85 11: IA5String 'ca@uopi.ogv' : } : } 98 11: SET { 100 9: SEQUENCE { 102 3: OBJECT IDENTIFIER countryName (2 5 4 6) 107 2: PrintableString 'RU' : } : } 111 21: SET { 113 19: SEQUENCE { 115 3: OBJECT IDENTIFIER stateOrProvinceName (2 5 4 8) 120 12: BMPString '...>.A.:.2.0' : } : } 134 21: SET { 136 19: SEQUENCE { 138 3: OBJECT IDENTIFIER localityName (2 5 4 7) 143 12: BMPString '...>.A.:.2.0' : } : } 157 29: SET { 159 27: SEQUENCE { 161 3: OBJECT IDENTIFIER organizationName (2 5 4 10) 166 20: BMPString '.$.!.. . .>.A.A.8.8' : } : } 188 27: SET { 190 25: SEQUENCE { 192 3: OBJECT IDENTIFIER : organizationalUnitName (2 5 4 11) 197 18: BMPString '.!.?.5.F.A.2.O.7.L' : } : } 217 11: SET { 219 9: SEQUENCE { 221 3: OBJECT IDENTIFIER commonName (2 5 4 3) 226 2: PrintableString 'CA' : } : } : } 230 10: INTEGER 11 5F 9A 41 00 00 00 00 00 9B : } 242 10: SEQUENCE { 244 6: OBJECT IDENTIFIER GOST R 34.11-94 (1 2 643 2 2 9) 252 0: NULL : } 254 10: SEQUENCE { 256 6: OBJECT IDENTIFIER GOST R 34.10-2001 (1 2 643 2 2 19) 264 0: NULL : } 266 64: OCTET STRING : 2E C0 D9 BA 35 0A 70 A7 94 82 D1 69 5B 60 12 68 : 97 92 46 3B 8F 7C CF 07 77 37 1D 75 33 CD 43 5F : 35 25 DE B8 27 D4 C0 AF 0A 2D 22 72 DA 3A 4F 7D : 6A BB FC F7 B5 B5 EB 12 52 86 94 AB C1 F2 49 C8 : } : } : } : } : } Как мне построить такой формат? Не нашел среди флагов функции CryptEncodeObject ничего подходящего, что бы получить signedData. Чем надо пользоваться? | ||||
Ответы: | ||||
| ||||
Самый подходящий который есть - X509_SEQUENCE_OF_ANY. Кодровать надо в соответствии с RFC 2315, Signed-data content type. | ||||