Static class that contains common utility functions for {@link Zend_OpenId_Consumer} and {@link Zend_OpenId_Provider}.

This class implements common utility functions that are used by both Consumer and Provider. They include functions for Diffie-Hellman keys generation and exchange, URL normalization, HTTP redirection and some others.

category Zend
package Zend_OpenId
copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com)
license New BSD License

 Methods

Returns an absolute URL for the given one

absoluteUrl(string $url) : string
Static

Parameters

$url

string

absilute or relative URL

Returns

string

Takes an arbitrary precision integer and returns its shortest big-endian two's complement representation.

btwoc(string $str) : string
Static

Arbitrary precision integers MUST be encoded as big-endian signed two's complement binary strings. Henceforth, "btwoc" is a function that takes an arbitrary precision integer and returns its shortest big-endian two's complement representation. All integers that are used with Diffie-Hellman Key Exchange are positive. This means that the left-most bit of the two's complement representation MUST be zero. If it is not, implementations MUST add a zero byte at the front of the string.

Parameters

$str

string

binary representation of arbitrary precision integer

Returns

stringbig-endian signed representation

Computes the shared secret from the private DH value $dh and the other party's public value in $pub_key

computeDhSecret(string $pub_key, mixed $dh) : string
Static

Parameters

$pub_key

string

other party's public value

$dh

mixed

Diffie-Hellman key

Exceptions

\Zend_OpenId_Exception

Returns

string

Performs the first step of a Diffie-Hellman key exchange by generating private and public DH values based on given prime number $p and generator $g. Both sides of key exchange MUST have the same prime number and generator. In this case they will able to create a random shared secret that is never send from one to the other.

createDhKey(string $p, string $g, string $priv_key = null) : mixed
Static

Parameters

$p

string

prime number in binary representation

$g

string

generator in binary representation

$priv_key

string

private key in binary representation

Returns

mixed

Generates a hash value (message digest) according to given algorithm.

digest(string $func, string $data) : string
Static

It returns RAW binary string.

This is a wrapper function that uses one of available internal function dependent on given PHP configuration. It may use various functions from ext/openssl, ext/hash, ext/mhash or ext/standard.

Parameters

$func

string

digest algorithm

$data

string

data to sign

Exceptions

\Zend_OpenId_Exception

Returns

stringRAW digital signature

Returns an associative array with Diffie-Hellman key components in binary representation. The array includes original prime number 'p' and generator 'g', random private key 'priv_key' and corresponding public key 'pub_key'.

getDhKeyDetails(mixed $dh) : array
Static

Parameters

$dh

mixed

Diffie-Hellman key

Returns

array

Generates a keyed hash value using the HMAC method. It uses ext/hash if available or user-level PHP implementation, that is not significantly slower.

hashHmac(string $macFunc, string $data, string $secret) : string
Static

Parameters

$macFunc

string

name of selected hashing algorithm (sha1, sha256)

$data

string

data to sign

$secret

string

shared secret key used for generating the HMAC variant of the message digest

Returns

stringRAW HMAC value

Normalizes OpenID identifier that can be URL or XRI name.

normalize($id) : boolean
Static

Returns true on success and false of failure.

Normalization is performed according to the following rules:

  1. If the user's input starts with one of the "xri://", "xri://$ip", or "xri://$dns" prefixes, they MUST be stripped off, so that XRIs are used in the canonical form, and URI-authority XRIs are further considered URL identifiers.
  2. If the first character of the resulting string is an XRI Global Context Symbol ("=", "@", "+", "$", "!"), then the input SHOULD be treated as an XRI.
  3. Otherwise, the input SHOULD be treated as an http URL; if it does not include a "http" or "https" scheme, the Identifier MUST be prefixed with the string "http://".
  4. URL identifiers MUST then be further normalized by both following redirects when retrieving their content and finally applying the rules in Section 6 of [RFC3986] to the final destination URL.

Parameters

$id

Returns

boolean

Normalizes URL according to RFC 3986 to use it in comparison operations.

normalizeUrl($id) : boolean
Static

The function gets URL argument by reference and modifies it. It returns true on success and false of failure.

Parameters

$id

Returns

boolean

Converts variable/value pairs into URL encoded query string

paramsToQuery(array $params) : string
Static

Parameters

$params

array

variable/value pairs

Returns

stringURL encoded query string

Produces string of random byte of given length.

randomBytes(integer $len) : string
Static

Parameters

$len

integer

length of requested string

Returns

stringRAW random binary string

Performs a HTTP redirection to specified URL with additional data.

redirect(string $url, array $params = null, \Zend_Controller_Response_Abstract $response = null, string $method = 'GET'
Static

It may generate redirected request using GET or POST HTTP method. The function never returns.

Parameters

$url

string

URL to redirect to

$params

array

additional variable/value pairs to send

$response

\Zend_Controller_Response_Abstract

$method

string

redirection method ('GET' or 'POST')

Returns a full URL that was requested on current HTTP request.

selfUrl() : string
Static

Returns

string

Sets alternative request URL that can be used to override the default selfUrl() response

setSelfUrl(string $selfUrl = null) : string
Static

Parameters

$selfUrl

string

the URL to be set

Returns

stringthe old value of overriding URL

Returns lenght of binary string in bytes

strlen(string $str) : integer
Static

Parameters

$str

string

Returns

integerthe string lenght

Converts internal ext/gmp or ext/bcmath big integer representation into binary string.

bigNumToBin(mixed $bn) : string
Static

Parameters

$bn

mixed

big number

Exceptions

\Zend_OpenId_Exception

Returns

string

Converts binary representation into ext/gmp or ext/bcmath big integer representation.

binToBigNum(string $bin) : mixed
Static

Parameters

$bin

string

binary representation of big number

Exceptions

\Zend_OpenId_Exception

Returns

mixed

 Properties

 

Allows enable/disable stoping execution of PHP script after redirect()

$exitOnRedirect 

Default

true
Static
 

Alternative request URL that can be used to override the default selfUrl() response

$selfUrl 

Default

null
Static

 Constants

 

Default Diffie-Hellman prime number (should be 2 or 5)

DH_G = '02' 
 

Default Diffie-Hellman key generator (1024 bit)

DH_P = 'dcf93a0b883972ec0e19989ac5a2ce310e1d37717e8d9571bb7623731866e61ef75a2e27898b057f9891c2e27a639c3f29b60814581cd3b2ca3986d2683705577d45c2e7e52dc81c7a171876e5cea74b1448bfdfaf18828efd2519f14e45e3826634af1949e5b535cc829a483b8a76223e5d490a257f05bdff16f2fb22c583ab' 
 

OpenID 2.0 namespace. All OpenID 2.0 messages MUST contain variable openid.ns with its value.

NS_2_0 = 'http://specs.openid.net/auth/2.0'