В двух словах, для .NET Вам нужен
КриптоПро CSP (криптопровайдер) и
КриптоПро .NET (обеспечивает взаимодействие .NET с криптопровайдером).
Автоматическая подпись возможна, но для нее нужен закрытый ключ. Ваш код (путём вызова соответствующих методов CryptoAPI) должен обеспечить поиск контейнера закрытого ключа и собственно создание и верификацию подписи. Можно указать параметры поиска в конфигурации, но такая реализация удобна, если используется один ключ, обновляемый раз в год (например, для подписи на стороне сервера). Для пользовательской подписи лучше использовать выбор пользователем нужного сертификата. Например, используя
КриптоПро ЭЦП Browser plug-in, если говорить о подписи данных посредством web-интерфейса.