Для смарт-режима OpenID в спецификации используется обмен ключами Диффи-Хеллмана. Мне интересно, можно ли использовать общедоступные и закрытые ключи (при условии, что они не скомпрометированы), или если они должны создаваться для каждого запроса. Я использую PHP OpenSSL-библиотеку (мой код: $key = openssl_pkey_new(array('private_key_type' => OPENSSL_KEYTYPE_DH));
) для генерации ключей, и это ужасно медленно (в среднем 22 секунды для генерации ключа - очень неприемлемо для веб-сайта). Если ключи не могут быть повторно использованы, есть ли более быстрый способ генерировать ключи с помощью OpenSSL? Я бы предпочел не делать это вручную из-за зависимостей от математических библиотек и т. Д.Реализация информации о пользователе OpenID
EDIT: Чтобы быть ясным, я ищу две вещи в ответе: могу ли я повторно использовать ключи Диффи-Хеллмана в режиме ассоциации OpenID, и если нет, существует ли более быстрый способ генерации ключей с использованием OpenSSL, чем openssl_pkey_new()
, поскольку это занимает исключительно длительное время.
WOW, почему бы вам не использовать библиотеку OpenID, вместо того, чтобы делать транзакцию OpenID самостоятельно? – timdream
Потому что а) ни одна из моих потребностей не удовлетворяет и б) Мне не нравится использовать вещи, которые я не понимаю. Библиотека JanRain ужасно спроектирована и медленно загружается на моей установке - не говоря уже о том, что она не поддерживает PHP 5.3.5 (что я не буду компрометировать). LightOpenID использует preg по всему месту вместо правильных методов XML DOM, что ни к чему не приводит (не говоря уже о том, что он _still_ не поддерживает аутентификацию интеллектуального режима). Нет библиотек, поддерживающих как PHP 5.3.5, так и аутентификацию смарт-режима. –
Что такое OpenID OpenID? http://framework.zend.com/manual/en/zend.openid.consumer.html – Marc