Нет, упакованные данные CMS не содержат открытого ключа получателя.
(Зашифрованные данные и зашифрованные данные различаются, даже несмотря на то, что OpenSSL путано использует -шифровать
и -расшифровать
для бывшего и -EncryptedData_encrypt
и -EncryptedData_decrypt
для последнего!) В этом нет необходимости; сообщение отправляется получателю, и получатель знает свой собственный ключ (ключи).
В конвертированных данных для получателя с ключом ECC используется либо ES-ECDH, либо однопроходный ECMQV, и OpenSSL выбирает первое; видеть RFC5753 3.1. Как указано там, это означает, что RecipientInfo использует KeyAgreeRecipientInfo выбор (с тегом 1). Как реализовано OpenSSL, он состоит из:
версия
3
составитель
(тег 0 явный) выбор оригинаторКлюч
(тег 1 неявная ПОСЛЕДОВАТЕЛЬНОСТЬ), содержащий AlgorithmIdentifier и BITSTRING, который содержит, как говорится в RFC5753, «эфемерный открытый ключ EC агента-отправителя». Обратите внимание, что это ключ отправителя, а не получателя, и он эфемерен, поэтому его нет ни в одном сертификате даже для отправителя.
укм
(тег 1 явный) необязательный и не используется
ключШифрованиеАлгоритм
AlgorithmIdentifier для dhSinglePass и перенос симметричного ключа
получательEncryptedKeys
ПОСЛЕДОВАТЕЛЬНОСТЬ последовательностей, каждая из которых содержит эмитент и серийный номер
(DistinguishedName и INTEGER) и зашифрованный ключ
(BITSTRING, который представляет собой ключ данных, обернутый секретом DH). Этот идентифицирует ключ получателя, но не содержит его.
Вы, кажется, пропустили или скрыли по крайней мере часть получательEncryptedKeys
данные на вашем изображении, но трудно сказать наверняка. Вот точный отображение (включая KARI) сообщения, которое я создал:
0:d=0 hl=4 l= 280 минус: ПОСЛЕДОВАТЕЛЬНОСТЬ
4:d=1 hl=2 l= 9 prim: ОБЪЕКТ :pkcs7-envelopedData
15:d=1 hl=4 l= 265 минус: продолжение [ 0 ]
19:d=2 hl=4 l= 261 минус: ПОСЛЕДОВАТЕЛЬНОСТЬ
23:d=3 hl=2 l= 1 простое число: ЦЕЛОЕ ЧИСЛО :02
26:д=3 гл=3 л= 202 минус: СЕТ
29:d=4 hl=3 l= 199 минус: продолжение [ 1 ]
32:d=5 hl=2 l= 1 простое число: ЦЕЛОЕ ЧИСЛО :03
35:d=5 hl=2 l= 65 минус: продолжение [ 0 ]
37:d=6 hl=2 l= 63 минус: продолжение [ 1 ]
39:d=7 hl=2 l= 9 минус: ПОСЛЕДОВАТЕЛЬНОСТЬ
41:d=8 hl=2 l= 7 prim: ОБЪЕКТ :id-ecPublicKey
50:d=7 hl=2 l= 50 prim: БИТОВАЯ СТРОКА
102:d=5 hl=2 l= 28 минус: ПОСЛЕДОВАТЕЛЬНОСТЬ
104:d=6 hl=2 l= 9 prim: ОБЪЕКТ :dhSinglePass-stdDH-sha1kdf-scheme
115:d=6 hl=2 l= 15 минус: ПОСЛЕДОВАТЕЛЬНОСТЬ
117:d=7 hl=2 l= 11 prim: ОБЪЕКТ :id-smime-alg-CMS3DESwrap
130:d=7 hl=2 l= 0 первичное значение: NULL
132:d=5 hl=2 l= 97 минус: ПОСЛЕДОВАТЕЛЬНОСТЬ
134:d=6 hl=2 l= 95 минус: ПОСЛЕДОВАТЕЛЬНОСТЬ
136:d=7 hl=2 l= 51 минус: ПОСЛЕДОВАТЕЛЬНОСТЬ
138:d=8 hl=2 l= 45 минус: ПОСЛЕДОВАТЕЛЬНОСТЬ
140:д=9 гл=2 л= 43 минус: СЕТ
142:d=10 hl=2 l= 41 минус: ПОСЛЕДОВАТЕЛЬНОСТЬ
144:d=11 hl=2 l= 3 prim: ОБЪЕКТ :commonName
149:d=11 hl=2 l= 34 prim: PRINTABLESTRING :(УДАЛЕНО)
185:d=8 hl=2 l= 2 prim: INTEGER :(УДАЛЕНО)
189:d=7 hl=2 l= 40 prim: OCTET STRING [HEX DUMP]:847B0D796D954C05AF37E1AEFE11C7F6762FB8CE2A891AD22B5646E79E95B556EDEC5A240ACCC621
231:d=3 hl=2 l= 51 минус: ПОСЛЕДОВАТЕЛЬНОСТЬ
233:d=4 hl=2 l= 9 prim: ОБЪЕКТ :pkcs7-data
244:d=4 hl=2 l= 20 минус: ПОСЛЕДОВАТЕЛЬНОСТЬ
246:d=5 hl=2 l= 8 prim: ОБЪЕКТ :des-ede3-cbc
256:d=5 hl=2 l= 8 prim: OCTET STRING [HEX DUMP]:9780611D4883D5B1
266:d=4 hl=2 l= 16 prim: продолжение [ 0 ]