Если быть совсем уж точным - сертификат это свойство ключевого контейнера. Это свойство можно прочитать и записать. При записи можно проверять что именно записывается в контейнер, можно и не делать этого. Если записать в контейнер сертификат, не соответсвующий ключевой паре, то использование этой ключевой пары будет невозможно в некоторых случаях (например, создание подписанного сообщения).
Относительно Rutoken CSP.
Крипто-провайдер, исходя из архитектуры CryptoAPI, - это модуль реализующий некоторый криптографический функционал. Весь этот функционал можно поделить на две большие группы: реализация криптографических алгоритмов и хранение ключевой информации. Основное назначение Aktiv ruToken CSP - позволять пользователям CryptoAPI хранить ключевую информацию на Rutoken. При этом, чтобы крипто-провайдер имел тип PROV_RSA_FULL, необходима поддержка соответсвующих алгоритмов. Мы не писали свою реализацию этих алгоритмов, а просто перенаправили соответсвующие вызовы к Microsoft Enhanced Cryptographic Provider. Это сделано для того чтобы дать пользователям больше возможностей по использованию ключевой информации, хранимой на Rutoken.
По-поводу ГОСТ.
Если мы говорим о ГОСТ 28147-89, поддерживаемом Rutoken, то ситуация следующая: архитектура CryptoAPI не поддразумевает долговременное использование одного и тоже ключа симметричного алгоритма, для шифрования разных сообщений. По этому особого смысла поддержки в Aktiv ruToken CSP нет.
Если говорить ГОСТ 34.10-94 или ГОСТ 34.10-2001, то поддержка имела бы смысл, если эти алгоритмы были реализованы аппаратно на Rutoken. На сегодняшний день, Rutoken не содержит аппаратную реализацию этих алгоритмов.