Сертификат содержит только ваш открытый ключ и дополнительную информацию, связывающую этот открытый ключ с вашей личностью (и целью, для которой он может использоваться).
.Net имеет класс X509Certificate2
, который моделирует сертификаты.Этот класс также имеет атрибут для хранения закрытого ключа, но на самом деле это просто для удобства: закрытый ключ не является частью фактического сертификата.
При использовании XML-Dsig (возможно, через WSDL), *Элемент 1006 *KeyInfo/X509Data/X509Certificate
содержит только сертификат X.509 в форме PEM.Это нормально, так как позволяет удаленной стороне сопоставлять подпись документа и идентичность: подпись документа проверяется по открытому ключу сертификата, а удостоверение подтверждается сертификатом, подпись которого проверяется по доверенным сертификатам CA.
Если у вас нет открытого ключа, удаленная сторона не сможет проверить подпись, не зная заранее, какой ключ ожидать.Если у вас нет сертификата, который содержит открытый ключ и удостоверения личности, удаленная сторона не сможет узнать, кто подписал документ.