| ||||
| ||||
На стороне web-сервиса я хочу проверить подпись, переданых данных. На клиенте подпись получена с помощь секретного ключа из клиентского сертификата и весь запрос передан web-сервису по SOAP’у по SSL (все на том же сертификате). (вообще конечно SSL сам (прозрачно) подписывает данные, но эта подпись нужна для сохранения ее в базе с самими данными, "для разбора полетов"). В web-сервисе я получаю клиентский сертификат X509Certificate из Context.Request.ClientCertificate и далее мне нужен public key для проверки подписи. Для подписи и ее проверки я сделал маленький COM, который используется на клиентской (чтобы подписать данные) и серверной стороне (чтобы проверить подпись). Клиент - "не управляемое" MFC приложение. В этом COM в методе проверки подписи мне нужен public key, который я передаю из web-сервиса. Т.е. я вызываю CryptImportKey в который передаю public key. Но CryptImportKey ругается, и пишет "Плохая версия поставщика". На сколько я понимаю проблема в том, что public key в web-сервисе я получаю методом X509Certificate.GetPublicKey() который возвращает ключ в каком-то другом формате, нежели ожидает CryptImportKey. Так вот и подобрались к вопросу: как привести из формата X509Certificate.GetPublicKey() в формат нужный CryptImportKey? И вообще, что за формат у GetPublicKey() (в MSDN ни слова об этом) |