Я просканировал API-интерфейс Security Framework на сайте, который вы разместили, и я ничего не могу найти, чтобы дать вам вызов API, который позволит вам подписать сообщение SOAP. Платформа безопасности документирована здесь:
http://developer.apple.com/library/mac/#documentation/Security/Reference/SecurityFrameworkReference/_index.html#//apple_ref/doc/uid/TP40004330
Позволит вам проверять сертификаты, а также загружать сертификаты и пары ключей. Это позволит вам настроить некоторые SSL-компоненты и различные виды авторизации.
Но он даже не кивает на выполнение цифровых подписей и не находит места рядом с подписями SOAP - которые являются их собственным особым видом подписей, которые должны быть правильно отформатированы, чтобы быть приемлемыми для службы, на которую вы отправляете.
Существует довольно много API, которые позволят вам подписывать SOAP-сообщения:
- открыть SSL
- Надувной Замок
- различные решения Java EE - Axis2, JAX-WS
- почти наверняка что-то в .NET
Я бы подумал, что для приложения для iPhone будет что-то , но я ничего не копаю и нашел хотя бы один сайт, на котором написано, что ничего не существует, и несколько других делают серьезные раскопки на способность iPhone обрабатывать SOAP в целом. Если анализ XML в этой среде сложен, то создание подписи SOAP будет чем-то более или менее обязательным с нуля.
Если вы отчаянно хотите сделать это в контексте Apple, я бы порекомендовал:
- убедитесь, что у вас под рукой есть пара сертификатов и ключей - "client.cer" предполагает, что у вас есть только сертификат X509, вам понадобится что-то вроде PKCS12 (часто называемое * .p12, * .pfx, * .pem или * .der где * - имя файла без суффикса). Вам нужен закрытый ключ для подписи, поэтому одного сертификата будет недостаточно.
- Получить библиотеку, которая позволит вам получить низкий уровень. Есть три основные части, чтобы сделать подпись:
- объединить исходные данные для создания хеша
- выполнить криптографию для шифрования хэша с помощью вашего личного ключа
- поместите исходные данные, зашифрованный хеш (т. Е. Подпись) и информацию, необходимую для проверки подписи, вместе в правильном формате.
Для подписи SOAP стандарт для надлежащего формата определяется стандартом XMLDSIG, поддерживаемым W3C. Существует множество способов хэширования данных, поэтому лучшим способом обычно является поиск потребностей службы, которую вы пытаетесь использовать. Большинство веб-сервисов определяют политику, которая сообщит вам, каковы приемлемые способы создания подписи SOAP. Есть даже стандарт для определения этой политики (WS-Policy от OASIS), но это не универсально реализованное решение.
Существуют предположения, что модуль AppleCSP будет выполнять ту криптографию (и, возможно, даже базовое хеширование), которая вам нужна, но похоже, что в итоге вы получите необработанный вывод и переформатируете его в стандарт подписи SOAP, потому что Я получил четкое указание на то, что в этой области может быть очень мало готовых API.