char *str = "Привет мир!";
. их ответ отличается от ответа онлайн кодеров
For signed and non-negative a, if a * 2^b
is representable in the unsigned version of the return type, then that value, converted to signed, is the value of a << b (this makes it legal to create INT_MIN as 1<<31); otherwise the behavior is undefined.
Изначально очистки не было и из-за этого криво отображалось.
п.4.1.1.3 поле signatureValue (содержит подпись ЦА сертификата) "... поле tbsCertificate является входом для функции подписи...". Т.е. по сути подпись генерируется по полю tbsCertificate.
п.4.1.1.1 поле tbsCertificate: "Поле содержит имена субъекта и эмитента, открытый ключ связанный с субъектом, срок действия и другую сопутствующую информацию. Поля подробно описаны в разделе 4.1.2"
Если спуститься в п.4.1.2, то там можно увидеть расшифровку каждого поля, которое входит в tbsCertificate.
По сути поле tbsCertificate - это и есть вся информация о владельце сертификата, которая содержится в сертификате и возможно пачка расширений. В общем ЦА ставит подпись на весь сертификат.
Это можно понять просто посмотрев текст сертификата. Поля сертификата расположены в определенной иерархии. Все что в иерархии полей сертификата идет "внутри" поля "Signature Algorithm" подписывается ЦА. Сама подпись ниже на том же уровне.
Использовал свои сертификаты, сгенерированные с помощью openssl.