Estoy intentando crear una biblioteca con estado para que OpenID se use como un complemento de Wordpress, me encuentro con un problema cuando intento calcular el valor secreto usando el función openssl openssl_dh_compute_key. Curioso si alguien tiene algunos pasos que podría intentar, sugerencias, etc ...Problemas con la computación secreto compartido de la clave Diffie Hellman para OpenID
Gracias!
Las constantes ...
const DH_DEFAULT_PRIME = "dcf93a0b883972ec0e19989ac5a2ce310e1d37717e8d9571bb7623731866e61ef75a2e27898b057f9891c2e27a639c3f29b60814581cd3b2ca3986d2683705577d45c2e7e52dc81c7a171876e5cea74b1448bfdfaf18828efd2519f14e45e3826634af1949e5b535cc829a483b8a76223e5d490a257f05bdff16f2fb22c583ab";
const DH_DEFAULT_GENERATOR = '02';
la creación de mi clave Diffie-Hellman
private function createDHKey($priv_key = false) {
if (!$priv_key) {
$details = array();
$details['p'] = pack('H*', self::DH_DEFAULT_PRIME);
$details['g'] = pack('H*', self::DH_DEFAULT_GENERATOR);
$this->dh = openssl_pkey_new(array(
'dh' => $details,
));
if ($this->dh) {
return true;
} else {
error('OpenSSL failed to export your private key, ensure you have a valid configuration file, and PHP can find it.');
}
} else {
$this->dh = openssl_pkey_get_private($priv_key);
return false;
}
}
El Ag == en el botón de ambas imágenes es el valor codificado en base64 de dh ['g'].
A continuación, guardo la clave privada generada en una base de datos para que persista, lo que me permite volver a crear la clave a través de la función openssl_pkey_get_private.
Sin embargo, tomando la volvió openid.dh_server_public de la solicitud de asociación, y que pasa, y mi clave de re-crea a partir de los resultados de clave privada en un falso por
var_dump(openssl_dh_compute_key($this->op_pubkey, $this->dh));
¡Realmente desearía que esta función estuviera mejor documentada! : \ –
Ahora es ... ver http://php.net/manual/en/function.openssl-dh-compute-key.php – velcrow