Basi c Проблема в том, что я генерирую подписанный документ с помощью "openssl smime" и могу его проверить, но мой партнер этого не делает (использует другое программное обеспечение). Поэтому я попытался в этом разобраться и посмотреть, совпадают ли его и мой дайджест сообщения. Но - я даже не могу выяснить, какой дайджест сообщения действительно (и правильно) используется в моем документе.
У меня есть файл с именем "cleartext.txt", содержащий произвольный текст. Затем я делаю
$ openssl smime -sign -md sha256 -nocerts -inkey as2.key -signer as2.crt -outform PEM < cleartext.txt > signature.txt
$ openssl sha256 cleartext.txt
$ openssl asn1parse -in signature.txt
Второе утверждение генерирует значение ha sh:
SHA256(cleartext.txt)= c64df2df82cc1dab9f9b06d41fab458de976de7e149fe0854fe125a96ef151dd
Последнее утверждение показывает мне детали моего сертификата (поэтому, по крайней мере, что-то должно работать здесь) плюс
251:d=8 hl=2 l= 9 prim: OBJECT :pkcs7-data
262:d=6 hl=2 l= 28 cons: SEQUENCE
264:d=7 hl=2 l= 9 prim: OBJECT :signingTime
275:d=7 hl=2 l= 15 cons: SET
277:d=8 hl=2 l= 13 prim: UTCTIME :200107145037Z
292:d=6 hl=2 l= 47 cons: SEQUENCE
294:d=7 hl=2 l= 9 prim: OBJECT :messageDigest
305:d=7 hl=2 l= 34 cons: SET
307:d=8 hl=2 l= 32 prim: OCTET STRING [HEX DUMP]:0E68D5CC9A859736EEE842355C1FD73F3FC9B274657A97F4CAF38AD3344ACBC8
341:d=6 hl=2 l= 121 cons: SEQUENCE
343:d=7 hl=2 l= 9 prim: OBJECT :S/MIME Capabilities
354:d=7 hl=2 l= 108 cons: SET
356:d=8 hl=2 l= 106 cons: SEQUENCE
358:d=9 hl=2 l= 11 cons: SEQUENCE
360:d=10 hl=2 l= 9 prim: OBJECT :aes-256-cbc
371:d=9 hl=2 l= 11 cons: SEQUENCE
373:d=10 hl=2 l= 9 prim: OBJECT :aes-192-cbc
384:d=9 hl=2 l= 11 cons: SEQUENCE
386:d=10 hl=2 l= 9 prim: OBJECT :aes-128-cbc
397:d=9 hl=2 l= 10 cons: SEQUENCE
399:d=10 hl=2 l= 8 prim: OBJECT :des-ede3-cbc
409:d=9 hl=2 l= 14 cons: SEQUENCE
411:d=10 hl=2 l= 8 prim: OBJECT :rc2-cbc
421:d=10 hl=2 l= 2 prim: INTEGER :80
425:d=9 hl=2 l= 13 cons: SEQUENCE
427:d=10 hl=2 l= 8 prim: OBJECT :rc2-cbc
437:d=10 hl=2 l= 1 prim: INTEGER :40
440:d=9 hl=2 l= 7 cons: SEQUENCE
442:d=10 hl=2 l= 5 prim: OBJECT :des-cbc
449:d=9 hl=2 l= 13 cons: SEQUENCE
451:d=10 hl=2 l= 8 prim: OBJECT :rc2-cbc
461:d=10 hl=2 l= 1 prim: INTEGER :28
464:d=5 hl=2 l= 13 cons: SEQUENCE
466:d=6 hl=2 l= 9 prim: OBJECT :rsaEncryption
477:d=6 hl=2 l= 0 prim: NULL
479:d=5 hl=4 l= 256 prim: OCTET STRING [HEX DUMP]:4CBEA622925F2CD899D2B5A0D26F831C0D63DE88FC5CC1E89F8F164E84526E49194AD537426378D6932DA066425A117B9FA96A70E2000F603449095AAF8E0B93D0D4EB26FC2B3D86726F94928882C37ACEF0537555DEB4AF3D63943A05A109D49B941C8131A9734C15BA7418F2D34E6B63B710E975EDE1EB9A71A40C251D6D72A5C802F3CDAE123E5E47413DC414DF8A2B0BB6E225145224C33E64245F6E4BD3EC3A60E0B0D6FAA8F9BE69BFA0B27E4A3326E819EF8A1C13738CA1A02D08F74D22C52ABA84D6FD26BE8EA6461251162CD751DC6DC2A30FB45211AC28B371F5FEDB57C3845DA04C4C0FFC40760C623C574471CECD4681E7755277B8BFD8F31730
Почему я получаю "c64df2 ..." с одной из этих команд и "0e68d5 ..." с другой? Как я могу ожидать, что мой партнер проверит мои подписи, если я даже не смогу воспроизвести значение ha sh в моем открытом тексте?