danielebarchiesi@0
|
1 <?php
|
danielebarchiesi@0
|
2
|
danielebarchiesi@0
|
3 /**
|
danielebarchiesi@0
|
4 * @file
|
danielebarchiesi@0
|
5 * Install, update and uninstall functions for the openid module.
|
danielebarchiesi@0
|
6 */
|
danielebarchiesi@0
|
7
|
danielebarchiesi@0
|
8 /**
|
danielebarchiesi@0
|
9 * Implements hook_schema().
|
danielebarchiesi@0
|
10 */
|
danielebarchiesi@0
|
11 function openid_schema() {
|
danielebarchiesi@0
|
12 $schema['openid_association'] = array(
|
danielebarchiesi@0
|
13 'description' => 'Stores temporary shared key association information for OpenID authentication.',
|
danielebarchiesi@0
|
14 'fields' => array(
|
danielebarchiesi@0
|
15 'idp_endpoint_uri' => array(
|
danielebarchiesi@0
|
16 'type' => 'varchar',
|
danielebarchiesi@0
|
17 'length' => 255,
|
danielebarchiesi@0
|
18 'description' => 'URI of the OpenID Provider endpoint.',
|
danielebarchiesi@0
|
19 ),
|
danielebarchiesi@0
|
20 'assoc_handle' => array(
|
danielebarchiesi@0
|
21 'type' => 'varchar',
|
danielebarchiesi@0
|
22 'length' => 255,
|
danielebarchiesi@0
|
23 'not null' => TRUE,
|
danielebarchiesi@0
|
24 'description' => 'Primary Key: Used to refer to this association in subsequent messages.',
|
danielebarchiesi@0
|
25 ),
|
danielebarchiesi@0
|
26 'assoc_type' => array(
|
danielebarchiesi@0
|
27 'type' => 'varchar',
|
danielebarchiesi@0
|
28 'length' => 32,
|
danielebarchiesi@0
|
29 'description' => 'The signature algorithm used: one of HMAC-SHA1 or HMAC-SHA256.',
|
danielebarchiesi@0
|
30 ),
|
danielebarchiesi@0
|
31 'session_type' => array(
|
danielebarchiesi@0
|
32 'type' => 'varchar',
|
danielebarchiesi@0
|
33 'length' => 32,
|
danielebarchiesi@0
|
34 'description' => 'Valid association session types: "no-encryption", "DH-SHA1", and "DH-SHA256".',
|
danielebarchiesi@0
|
35 ),
|
danielebarchiesi@0
|
36 'mac_key' => array(
|
danielebarchiesi@0
|
37 'type' => 'varchar',
|
danielebarchiesi@0
|
38 'length' => 255,
|
danielebarchiesi@0
|
39 'description' => 'The MAC key (shared secret) for this association.',
|
danielebarchiesi@0
|
40 ),
|
danielebarchiesi@0
|
41 'created' => array(
|
danielebarchiesi@0
|
42 'type' => 'int',
|
danielebarchiesi@0
|
43 'not null' => TRUE,
|
danielebarchiesi@0
|
44 'default' => 0,
|
danielebarchiesi@0
|
45 'description' => 'UNIX timestamp for when the association was created.',
|
danielebarchiesi@0
|
46 ),
|
danielebarchiesi@0
|
47 'expires_in' => array(
|
danielebarchiesi@0
|
48 'type' => 'int',
|
danielebarchiesi@0
|
49 'not null' => TRUE,
|
danielebarchiesi@0
|
50 'default' => 0,
|
danielebarchiesi@0
|
51 'description' => 'The lifetime, in seconds, of this association.',
|
danielebarchiesi@0
|
52 ),
|
danielebarchiesi@0
|
53 ),
|
danielebarchiesi@0
|
54 'primary key' => array('assoc_handle'),
|
danielebarchiesi@0
|
55 );
|
danielebarchiesi@0
|
56
|
danielebarchiesi@0
|
57 $schema['openid_nonce'] = array(
|
danielebarchiesi@0
|
58 'description' => 'Stores received openid.response_nonce per OpenID endpoint URL to prevent replay attacks.',
|
danielebarchiesi@0
|
59 'fields' => array(
|
danielebarchiesi@0
|
60 'idp_endpoint_uri' => array(
|
danielebarchiesi@0
|
61 'type' => 'varchar',
|
danielebarchiesi@0
|
62 'length' => 255,
|
danielebarchiesi@0
|
63 'description' => 'URI of the OpenID Provider endpoint.',
|
danielebarchiesi@0
|
64 ),
|
danielebarchiesi@0
|
65 'nonce' => array(
|
danielebarchiesi@0
|
66 'type' => 'varchar',
|
danielebarchiesi@0
|
67 'length' => 255,
|
danielebarchiesi@0
|
68 'description' => 'The value of openid.response_nonce.',
|
danielebarchiesi@0
|
69 ),
|
danielebarchiesi@0
|
70 'expires' => array(
|
danielebarchiesi@0
|
71 'type' => 'int',
|
danielebarchiesi@0
|
72 'not null' => TRUE,
|
danielebarchiesi@0
|
73 'default' => 0,
|
danielebarchiesi@0
|
74 'description' => 'A Unix timestamp indicating when the entry should expire.',
|
danielebarchiesi@0
|
75 ),
|
danielebarchiesi@0
|
76 ),
|
danielebarchiesi@0
|
77 'indexes' => array(
|
danielebarchiesi@0
|
78 'nonce' => array('nonce'),
|
danielebarchiesi@0
|
79 'expires' => array('expires'),
|
danielebarchiesi@0
|
80 ),
|
danielebarchiesi@0
|
81 );
|
danielebarchiesi@0
|
82
|
danielebarchiesi@0
|
83 return $schema;
|
danielebarchiesi@0
|
84 }
|
danielebarchiesi@0
|
85
|
danielebarchiesi@0
|
86 /**
|
danielebarchiesi@0
|
87 * Implements hook_requirements().
|
danielebarchiesi@0
|
88 */
|
danielebarchiesi@0
|
89 function openid_requirements($phase) {
|
danielebarchiesi@0
|
90 $requirements = array();
|
danielebarchiesi@0
|
91
|
danielebarchiesi@0
|
92 if ($phase == 'runtime') {
|
danielebarchiesi@0
|
93 // Check for the PHP BC Math library.
|
danielebarchiesi@0
|
94 if (!function_exists('bcadd') && !function_exists('gmp_add')) {
|
danielebarchiesi@0
|
95 $requirements['openid_math'] = array(
|
danielebarchiesi@0
|
96 'value' => t('Not installed'),
|
danielebarchiesi@0
|
97 'severity' => REQUIREMENT_ERROR,
|
danielebarchiesi@0
|
98 '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/en/book.gmp.php', '@bc' => 'http://www.php.net/manual/en/book.bc.php')),
|
danielebarchiesi@0
|
99 );
|
danielebarchiesi@0
|
100 }
|
danielebarchiesi@0
|
101 elseif (!function_exists('gmp_add')) {
|
danielebarchiesi@0
|
102 $requirements['openid_math'] = array(
|
danielebarchiesi@0
|
103 'value' => t('Not optimized'),
|
danielebarchiesi@0
|
104 'severity' => REQUIREMENT_WARNING,
|
danielebarchiesi@0
|
105 '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/en/book.gmp.php')),
|
danielebarchiesi@0
|
106 );
|
danielebarchiesi@0
|
107 }
|
danielebarchiesi@0
|
108 else {
|
danielebarchiesi@0
|
109 $requirements['openid_math'] = array(
|
danielebarchiesi@0
|
110 'value' => t('Installed'),
|
danielebarchiesi@0
|
111 'severity' => REQUIREMENT_OK,
|
danielebarchiesi@0
|
112 );
|
danielebarchiesi@0
|
113 }
|
danielebarchiesi@0
|
114 $requirements['openid_math']['title'] = t('OpenID Math library');
|
danielebarchiesi@0
|
115 }
|
danielebarchiesi@0
|
116
|
danielebarchiesi@0
|
117 return $requirements;
|
danielebarchiesi@0
|
118 }
|
danielebarchiesi@0
|
119
|
danielebarchiesi@0
|
120 /**
|
danielebarchiesi@0
|
121 * @addtogroup updates-6.x-to-7.x
|
danielebarchiesi@0
|
122 * @{
|
danielebarchiesi@0
|
123 */
|
danielebarchiesi@0
|
124
|
danielebarchiesi@0
|
125 /**
|
danielebarchiesi@0
|
126 * Add a table to store nonces.
|
danielebarchiesi@0
|
127 */
|
danielebarchiesi@0
|
128 function openid_update_6000() {
|
danielebarchiesi@0
|
129 $schema['openid_nonce'] = array(
|
danielebarchiesi@0
|
130 'description' => 'Stores received openid.response_nonce per OpenID endpoint URL to prevent replay attacks.',
|
danielebarchiesi@0
|
131 'fields' => array(
|
danielebarchiesi@0
|
132 'idp_endpoint_uri' => array(
|
danielebarchiesi@0
|
133 'type' => 'varchar',
|
danielebarchiesi@0
|
134 'length' => 255,
|
danielebarchiesi@0
|
135 'description' => 'URI of the OpenID Provider endpoint.',
|
danielebarchiesi@0
|
136 ),
|
danielebarchiesi@0
|
137 'nonce' => array(
|
danielebarchiesi@0
|
138 'type' => 'varchar',
|
danielebarchiesi@0
|
139 'length' => 255,
|
danielebarchiesi@0
|
140 'description' => 'The value of openid.response_nonce'
|
danielebarchiesi@0
|
141 ),
|
danielebarchiesi@0
|
142 'expires' => array(
|
danielebarchiesi@0
|
143 'type' => 'int',
|
danielebarchiesi@0
|
144 'not null' => TRUE,
|
danielebarchiesi@0
|
145 'default' => 0,
|
danielebarchiesi@0
|
146 'description' => 'A Unix timestamp indicating when the entry should expire.',
|
danielebarchiesi@0
|
147 ),
|
danielebarchiesi@0
|
148 ),
|
danielebarchiesi@0
|
149 'indexes' => array(
|
danielebarchiesi@0
|
150 'nonce' => array('nonce'),
|
danielebarchiesi@0
|
151 'expires' => array('expires'),
|
danielebarchiesi@0
|
152 ),
|
danielebarchiesi@0
|
153 );
|
danielebarchiesi@0
|
154
|
danielebarchiesi@0
|
155 db_create_table('openid_nonce', $schema['openid_nonce']);
|
danielebarchiesi@0
|
156 }
|
danielebarchiesi@0
|
157
|
danielebarchiesi@0
|
158 /**
|
danielebarchiesi@0
|
159 * @} End of "addtogroup updates-6.x-to-7.x".
|
danielebarchiesi@0
|
160 */
|