Em C #, assine um xml com um certificado x. 509 e verifique a assinatura

Eu estou tentando assinar um arquivo XML usando um certificado x. 509, eu posso usar a chave privada para assinar o documento e, em seguida, use o método CheckSignature (ele tem uma sobrecarga que recebe um certificado como parâmetro) para verificar a assinatura.

O problema é que o usuário que valida a assinatura deve ter o certificado, minha preocupação é, se o usuário tiver o certificado então ele tem acesso à chave privada, e pelo que entendi, isso é privado e deve estar disponível apenas para o usuário quem assina.

o que estou perdendo?

Obrigado pela ajuda.

questionAnswers(3)

yourAnswerToTheQuestion