Newer
Older
<?php
Angie Byron
committed
/**
* @file
* Install, update and uninstall functions for the openid module.
*/
Dries Buytaert
committed
/**
Dries Buytaert
committed
* Implements hook_schema().
Dries Buytaert
committed
*/
function openid_schema() {
$schema['openid_association'] = array(
Dries Buytaert
committed
'description' => 'Stores temporary shared key association information for OpenID authentication.',
Dries Buytaert
committed
'fields' => array(
'idp_endpoint_uri' => array(
'type' => 'varchar',
'length' => 255,
Dries Buytaert
committed
'description' => 'URI of the OpenID Provider endpoint.',
),
'assoc_handle' => array(
'type' => 'varchar',
'length' => 255,
'not null' => TRUE,
Dries Buytaert
committed
'description' => 'Primary Key: Used to refer to this association in subsequent messages.',
),
'assoc_type' => array(
'type' => 'varchar',
'length' => 32,
Dries Buytaert
committed
'description' => 'The signature algorithm used: one of HMAC-SHA1 or HMAC-SHA256.',
),
'session_type' => array(
'type' => 'varchar',
'length' => 32,
Dries Buytaert
committed
'description' => 'Valid association session types: "no-encryption", "DH-SHA1", and "DH-SHA256".',
),
'mac_key' => array(
'type' => 'varchar',
'length' => 255,
Dries Buytaert
committed
'description' => 'The MAC key (shared secret) for this association.',
),
'created' => array(
'type' => 'int',
'not null' => TRUE,
'default' => 0,
Dries Buytaert
committed
'description' => 'UNIX timestamp for when the association was created.',
),
'expires_in' => array(
'type' => 'int',
'not null' => TRUE,
'default' => 0,
Dries Buytaert
committed
'description' => 'The lifetime, in seconds, of this association.',
Dries Buytaert
committed
),
'primary key' => array('assoc_handle'),
);
$schema['openid_nonce'] = array(
'description' => 'Stores received openid.response_nonce per OpenID endpoint URL to prevent replay attacks.',
'fields' => array(
'idp_endpoint_uri' => array(
'type' => 'varchar',
'length' => 255,
'description' => 'URI of the OpenID Provider endpoint.',
),
'nonce' => array(
'type' => 'varchar',
'length' => 255,
'description' => 'The value of openid.response_nonce.',
),
'expires' => array(
'type' => 'int',
'not null' => TRUE,
'default' => 0,
'description' => 'A Unix timestamp indicating when the entry should expire.',
),
),
'indexes' => array(
'nonce' => array('nonce'),
'expires' => array('expires'),
),
);
Dries Buytaert
committed
return $schema;
}
Dries Buytaert
committed
* Implements hook_requirements().
*/
function openid_requirements($phase) {
$requirements = array();
if ($phase == 'runtime') {
// Check for the PHP BC Math library.
Dries Buytaert
committed
if (!function_exists('bcadd') && !function_exists('gmp_add')) {
$requirements['openid_math'] = array(
'value' => t('Not installed'),
'severity' => REQUIREMENT_ERROR,
'description' => t('OpenID suggests the use of either the <a href="@gmp">GMP Math</a> (recommended for performance) or <a href="@bc">BC Math</a> libraries to enable OpenID associations.', array('@gmp' => 'http://php.net/manual/book.gmp.php', '@bc' => 'http://www.php.net/manual/book.bc.php')),
Dries Buytaert
committed
);
}
elseif (!function_exists('gmp_add')) {
$requirements['openid_math'] = array(
'value' => t('Not optimized'),
'severity' => REQUIREMENT_WARNING,
'description' => t('OpenID suggests the use of the GMP Math library for PHP for optimal performance. Check the <a href="@url">GMP Math Library documentation</a> for installation instructions.', array('@url' => 'http://www.php.net/manual/book.gmp.php')),
);
}
else {
Dries Buytaert
committed
$requirements['openid_math'] = array(
'value' => t('Installed'),
'severity' => REQUIREMENT_OK,
);
}
Dries Buytaert
committed
$requirements['openid_math']['title'] = t('OpenID Math library');
}
return $requirements;
}
/**
* @addtogroup updates-6.x-to-7.x
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
* @{
*/
/**
* Add a table to store nonces.
*/
function openid_update_6000() {
$schema['openid_nonce'] = array(
'description' => 'Stores received openid.response_nonce per OpenID endpoint URL to prevent replay attacks.',
'fields' => array(
'idp_endpoint_uri' => array(
'type' => 'varchar',
'length' => 255,
'description' => 'URI of the OpenID Provider endpoint.',
),
'nonce' => array(
'type' => 'varchar',
'length' => 255,
'description' => 'The value of openid.response_nonce'
),
'expires' => array(
'type' => 'int',
'not null' => TRUE,
'default' => 0,
'description' => 'A Unix timestamp indicating when the entry should expire.',
),
),
'indexes' => array(
'nonce' => array('nonce'),
'expires' => array('expires'),
),
);
db_create_table('openid_nonce', $schema['openid_nonce']);
}
/**
* @} End of "addtogroup updates-6.x-to-7.x"