1 |
<?xml version="1.0" encoding="UTF-8"?>
|
- |
|
2 |
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
1 |
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
3 |
<html xmlns="http://www.w3.org/1999/xhtml">
|
2 |
<html xmlns="http://www.w3.org/1999/xhtml">
|
4 |
<head>
|
3 |
<head>
|
5 |
<!-- template designed by Marco Von Ballmoos -->
|
4 |
<!-- template designed by Marco Von Ballmoos -->
|
6 |
<title>Docs For Class DiffieHellmanUtil</title>
|
5 |
<title>Docs For Class DiffieHellmanUtil</title>
|
7 |
<meta http-equiv='Content-Type' content='text/html; charset=UTF-8'/>
|
6 |
<meta http-equiv='Content-Type' content='text/html; charset=UTF-8'/>
|
8 |
<link rel="stylesheet" href="../media/stylesheet.css" />
|
7 |
<link rel="stylesheet" href="../media/stylesheet.css" />
|
9 |
<script src="../media/lib/classTree.js"></script>
|
8 |
<script src="../media/lib/classTree.js"></script>
|
10 |
<script language="javascript" type="text/javascript">
|
9 |
<script language="javascript" type="text/javascript">
|
11 |
var imgPlus = new Image();
|
10 |
var imgPlus = new Image();
|
12 |
var imgMinus = new Image();
|
11 |
var imgMinus = new Image();
|
13 |
imgPlus.src = "../media/images/plus.png";
|
12 |
imgPlus.src = "../media/images/plus.png";
|
14 |
imgMinus.src = "../media/images/minus.png";
|
13 |
imgMinus.src = "../media/images/minus.png";
|
15 |
|
14 |
|
16 |
function showNode(Node){
|
15 |
function showNode(Node){
|
17 |
switch(navigator.family){
|
16 |
switch(navigator.family){
|
18 |
case 'nn4':
|
17 |
case 'nn4':
|
19 |
// Nav 4.x code fork...
|
18 |
// Nav 4.x code fork...
|
20 |
var oTable = document.layers["span" + Node];
|
19 |
var oTable = document.layers["span" + Node];
|
21 |
var oImg = document.layers["img" + Node];
|
20 |
var oImg = document.layers["img" + Node];
|
22 |
break;
|
21 |
break;
|
23 |
case 'ie4':
|
22 |
case 'ie4':
|
24 |
// IE 4/5 code fork...
|
23 |
// IE 4/5 code fork...
|
25 |
var oTable = document.all["span" + Node];
|
24 |
var oTable = document.all["span" + Node];
|
26 |
var oImg = document.all["img" + Node];
|
25 |
var oImg = document.all["img" + Node];
|
27 |
break;
|
26 |
break;
|
28 |
case 'gecko':
|
27 |
case 'gecko':
|
29 |
// Standards Compliant code fork...
|
28 |
// Standards Compliant code fork...
|
30 |
var oTable = document.getElementById("span" + Node);
|
29 |
var oTable = document.getElementById("span" + Node);
|
31 |
var oImg = document.getElementById("img" + Node);
|
30 |
var oImg = document.getElementById("img" + Node);
|
32 |
break;
|
31 |
break;
|
33 |
}
|
32 |
}
|
34 |
oImg.src = imgMinus.src;
|
33 |
oImg.src = imgMinus.src;
|
35 |
oTable.style.display = "block";
|
34 |
oTable.style.display = "block";
|
36 |
}
|
35 |
}
|
37 |
|
36 |
|
38 |
function hideNode(Node){
|
37 |
function hideNode(Node){
|
39 |
switch(navigator.family){
|
38 |
switch(navigator.family){
|
40 |
case 'nn4':
|
39 |
case 'nn4':
|
41 |
// Nav 4.x code fork...
|
40 |
// Nav 4.x code fork...
|
42 |
var oTable = document.layers["span" + Node];
|
41 |
var oTable = document.layers["span" + Node];
|
43 |
var oImg = document.layers["img" + Node];
|
42 |
var oImg = document.layers["img" + Node];
|
44 |
break;
|
43 |
break;
|
45 |
case 'ie4':
|
44 |
case 'ie4':
|
46 |
// IE 4/5 code fork...
|
45 |
// IE 4/5 code fork...
|
47 |
var oTable = document.all["span" + Node];
|
46 |
var oTable = document.all["span" + Node];
|
48 |
var oImg = document.all["img" + Node];
|
47 |
var oImg = document.all["img" + Node];
|
49 |
break;
|
48 |
break;
|
50 |
case 'gecko':
|
49 |
case 'gecko':
|
51 |
// Standards Compliant code fork...
|
50 |
// Standards Compliant code fork...
|
52 |
var oTable = document.getElementById("span" + Node);
|
51 |
var oTable = document.getElementById("span" + Node);
|
53 |
var oImg = document.getElementById("img" + Node);
|
52 |
var oImg = document.getElementById("img" + Node);
|
54 |
break;
|
53 |
break;
|
55 |
}
|
54 |
}
|
56 |
oImg.src = imgPlus.src;
|
55 |
oImg.src = imgPlus.src;
|
57 |
oTable.style.display = "none";
|
56 |
oTable.style.display = "none";
|
58 |
}
|
57 |
}
|
59 |
|
58 |
|
60 |
function nodeIsVisible(Node){
|
59 |
function nodeIsVisible(Node){
|
61 |
switch(navigator.family){
|
60 |
switch(navigator.family){
|
62 |
case 'nn4':
|
61 |
case 'nn4':
|
63 |
// Nav 4.x code fork...
|
62 |
// Nav 4.x code fork...
|
64 |
var oTable = document.layers["span" + Node];
|
63 |
var oTable = document.layers["span" + Node];
|
65 |
break;
|
64 |
break;
|
66 |
case 'ie4':
|
65 |
case 'ie4':
|
67 |
// IE 4/5 code fork...
|
66 |
// IE 4/5 code fork...
|
68 |
var oTable = document.all["span" + Node];
|
67 |
var oTable = document.all["span" + Node];
|
69 |
break;
|
68 |
break;
|
70 |
case 'gecko':
|
69 |
case 'gecko':
|
71 |
// Standards Compliant code fork...
|
70 |
// Standards Compliant code fork...
|
72 |
var oTable = document.getElementById("span" + Node);
|
71 |
var oTable = document.getElementById("span" + Node);
|
73 |
break;
|
72 |
break;
|
74 |
}
|
73 |
}
|
75 |
return (oTable && oTable.style.display == "block");
|
74 |
return (oTable && oTable.style.display == "block");
|
76 |
}
|
75 |
}
|
77 |
|
76 |
|
78 |
function toggleNodeVisibility(Node){
|
77 |
function toggleNodeVisibility(Node){
|
79 |
if (nodeIsVisible(Node)){
|
78 |
if (nodeIsVisible(Node)){
|
80 |
hideNode(Node);
|
79 |
hideNode(Node);
|
81 |
}else{
|
80 |
}else{
|
82 |
showNode(Node);
|
81 |
showNode(Node);
|
83 |
}
|
82 |
}
|
84 |
}
|
83 |
}
|
85 |
</script>
|
84 |
</script>
|
86 |
</head>
|
85 |
</head>
|
87 |
<body>
|
86 |
<body>
|
88 |
<div class="page-body">
|
87 |
<div class="page-body">
|
89 |
<h2 class="class-name">Class DiffieHellmanUtil</h2>
|
88 |
<h2 class="class-name">Class DiffieHellmanUtil</h2>
|
90 |
|
89 |
|
91 |
<a name="sec-description"></a>
|
90 |
<a name="sec-description"></a>
|
92 |
<div class="info-box">
|
91 |
<div class="info-box">
|
93 |
<div class="info-box-title">Description</div>
|
92 |
<div class="info-box-title">Description</div>
|
94 |
<div class="nav-bar">
|
93 |
<div class="nav-bar">
|
95 |
<span class="disabled">Description</span> |
|
94 |
<span class="disabled">Description</span> |
|
96 |
<a href="#sec-method-summary">Methods</a> (<a href="#sec-methods">details</a>)
|
95 |
<a href="#sec-method-summary">Methods</a> (<a href="#sec-methods">details</a>)
|
97 |
|
96 |
|
98 |
<a href="#sec-const-summary">Constants</a> (<a href="#sec-consts">details</a>)
|
97 |
<a href="#sec-const-summary">Constants</a> (<a href="#sec-consts">details</a>)
|
99 |
|
98 |
|
100 |
</div>
|
99 |
</div>
|
101 |
<div class="info-box-body">
|
100 |
<div class="info-box-body">
|
102 |
<!-- ========== Info from phpDoc block ========= -->
|
101 |
<!-- ========== Info from phpDoc block ========= -->
|
103 |
<p class="short-description">Classe utilitaire proposant des fonctions permettant la réalisation d'un échange de clé Diffie Hellman</p>
|
102 |
<p class="short-description">Classe utilitaire proposant des fonctions permettant la réalisation d'un échange de clé Diffie Hellman</p>
|
104 |
<p class="description"><p>"En cryptographie, l'échange de clés Diffie-Hellman, du nom de ses auteurs Whitfield Diffie et Martin Hellman, est une méthode par laquelle deux personnes peuvent se mettre d'accord sur un nombre (qu'ils peuvent utiliser comme clé pour chiffrer la conversation suivante) sans qu'une troisième personne appelée Ève puisse découvrir le nombre, même en ayant écouté tous leurs échanges."</p><p>Voir http://fr.wikipedia.org/wiki/%C3%89change_de_cl%C3%A9s_Diffie-Hellman</p></p>
|
103 |
<p class="description"><p>"En cryptographie, l'échange de clés Diffie-Hellman, du nom de ses auteurs Whitfield Diffie et Martin Hellman, est une méthode par laquelle deux personnes peuvent se mettre d'accord sur un nombre (qu'ils peuvent utiliser comme clé pour chiffrer la conversation suivante) sans qu'une troisième personne appelée Ève puisse découvrir le nombre, même en ayant écouté tous leurs échanges."</p><p>Voir http://fr.wikipedia.org/wiki/%C3%89change_de_cl%C3%A9s_Diffie-Hellman</p></p>
|
105 |
<p class="notes">
|
104 |
<p class="notes">
|
106 |
Located in <a class="field" href="_utilitaires---DiffieHellmanUtil.php.html">/utilitaires/DiffieHellmanUtil.php</a> (line <span class="field"><a href="../__filesource/fsource_Framework__utilitairesDiffieHellmanUtil.php.html#a17">17</a></span>)
|
105 |
Located in <a class="field" href="_utilitaires---DiffieHellmanUtil.php.html">/utilitaires/DiffieHellmanUtil.php</a> (line <span class="field"><a href="../__filesource/fsource_Framework__utilitairesDiffieHellmanUtil.php.html#a17">17</a></span>)
|
107 |
</p>
|
106 |
</p>
|
108 |
|
107 |
|
109 |
|
108 |
|
110 |
<pre></pre>
|
109 |
<pre></pre>
|
111 |
|
110 |
|
112 |
</div>
|
111 |
</div>
|
113 |
</div>
|
112 |
</div>
|
114 |
|
113 |
|
115 |
|
114 |
|
116 |
<a name="sec-const-summary"></a>
|
115 |
<a name="sec-const-summary"></a>
|
117 |
<div class="info-box">
|
116 |
<div class="info-box">
|
118 |
<div class="info-box-title">Class Constant Summary</span></div>
|
117 |
<div class="info-box-title">Class Constant Summary</span></div>
|
119 |
<div class="nav-bar">
|
118 |
<div class="nav-bar">
|
120 |
<a href="#sec-description">Description</a> |
|
119 |
<a href="#sec-description">Description</a> |
|
121 |
<span class="disabled">Constants</span> (<a href="#sec-consts">details</a>)
|
120 |
<span class="disabled">Constants</span> (<a href="#sec-consts">details</a>)
|
122 |
|
|
121 |
|
|
123 |
<a href="#sec-method-summary">Methods</a> (<a href="#sec-methods">details</a>)
|
122 |
<a href="#sec-method-summary">Methods</a> (<a href="#sec-methods">details</a>)
|
124 |
|
123 |
|
125 |
</div>
|
124 |
</div>
|
126 |
<div class="info-box-body">
|
125 |
<div class="info-box-body">
|
127 |
<div class="const-summary">
|
126 |
<div class="const-summary">
|
128 |
<div class="const-title">
|
127 |
<div class="const-title">
|
129 |
<img src="../media/images/Constant.png" alt=" " />
|
128 |
<img src="../media/images/Constant.png" alt=" " />
|
130 |
<a href="#DH_G" title="details" class="const-name">DH_G</a> = <span class="var-type"> '02'</span>
|
129 |
<a href="#DH_G" title="details" class="const-name">DH_G</a> = <span class="var-type"> '02'</span>
|
131 |
|
130 |
|
132 |
</div>
|
131 |
</div>
|
133 |
<div class="const-title">
|
132 |
<div class="const-title">
|
134 |
<img src="../media/images/Constant.png" alt=" " />
|
133 |
<img src="../media/images/Constant.png" alt=" " />
|
135 |
<a href="#DH_P" title="details" class="const-name">DH_P</a> = <span class="var-type"> 'dcf93a0b883972ec0e19989ac5a2ce310e1d37717e8d9571bb7623731866e61ef75a2e27898b057f9891c2e27a639c3f29b60814581cd3b2ca3986d2683705577d45c2e7e52dc81c7a171876e5cea74b1448bfdfaf18828efd2519f14e45e3826634af1949e5b535cc829a483b8a76223e5d490a257f05bdff16f2fb22c583ab'</span>
|
134 |
<a href="#DH_P" title="details" class="const-name">DH_P</a> = <span class="var-type"> 'dcf93a0b883972ec0e19989ac5a2ce310e1d37717e8d9571bb7623731866e61ef75a2e27898b057f9891c2e27a639c3f29b60814581cd3b2ca3986d2683705577d45c2e7e52dc81c7a171876e5cea74b1448bfdfaf18828efd2519f14e45e3826634af1949e5b535cc829a483b8a76223e5d490a257f05bdff16f2fb22c583ab'</span>
|
136 |
|
135 |
|
137 |
</div>
|
136 |
</div>
|
138 |
</div>
|
137 |
</div>
|
139 |
</div>
|
138 |
</div>
|
140 |
</div>
|
139 |
</div>
|
141 |
|
140 |
|
142 |
|
141 |
|
143 |
<a name="sec-method-summary"></a>
|
142 |
<a name="sec-method-summary"></a>
|
144 |
<div class="info-box">
|
143 |
<div class="info-box">
|
145 |
<div class="info-box-title">Method Summary</span></div>
|
144 |
<div class="info-box-title">Method Summary</span></div>
|
146 |
<div class="nav-bar">
|
145 |
<div class="nav-bar">
|
147 |
<a href="#sec-description">Description</a> |
|
146 |
<a href="#sec-description">Description</a> |
|
148 |
<a href="#sec-const-summary">Constants</a> (<a href="#sec-consts">details</a>)
|
147 |
<a href="#sec-const-summary">Constants</a> (<a href="#sec-consts">details</a>)
|
149 |
|
148 |
|
150 |
<span class="disabled">Methods</span> (<a href="#sec-methods">details</a>)
|
149 |
<span class="disabled">Methods</span> (<a href="#sec-methods">details</a>)
|
151 |
</div>
|
150 |
</div>
|
152 |
<div class="info-box-body">
|
151 |
<div class="info-box-body">
|
153 |
<div class="method-summary">
|
152 |
<div class="method-summary">
|
154 |
|
153 |
|
155 |
<div class="method-definition">
|
154 |
<div class="method-definition">
|
156 |
static <span class="method-result">mixed</span>
|
155 |
static <span class="method-result">mixed</span>
|
157 |
<a href="#createDhKey" title="details" class="method-name">createDhKey</a>
|
156 |
<a href="#createDhKey" title="details" class="method-name">createDhKey</a>
|
158 |
(<span class="var-type">string</span> <span class="var-name">$p</span>, <span class="var-type">string</span> <span class="var-name">$g</span>, [<span class="var-type">string</span> <span class="var-name">$priv_key</span> = <span class="var-default">null</span>])
|
157 |
(<span class="var-type">string</span> <span class="var-name">$p</span>, <span class="var-type">string</span> <span class="var-name">$g</span>, [<span class="var-type">string</span> <span class="var-name">$priv_key</span> = <span class="var-default">null</span>])
|
159 |
</div>
|
158 |
</div>
|
160 |
|
159 |
|
161 |
<div class="method-definition">
|
160 |
<div class="method-definition">
|
162 |
static <span class="method-result">array</span>
|
161 |
static <span class="method-result">array</span>
|
163 |
<a href="#getDhKeyDetails" title="details" class="method-name">getDhKeyDetails</a>
|
162 |
<a href="#getDhKeyDetails" title="details" class="method-name">getDhKeyDetails</a>
|
164 |
(<span class="var-type">mixed</span> <span class="var-name">$dh</span>)
|
163 |
(<span class="var-type">mixed</span> <span class="var-name">$dh</span>)
|
165 |
</div>
|
164 |
</div>
|
166 |
|
165 |
|
167 |
<div class="method-definition">
|
166 |
<div class="method-definition">
|
168 |
static <span class="method-result">int</span>
|
167 |
static <span class="method-result">int</span>
|
169 |
<a href="#strlen" title="details" class="method-name">strlen</a>
|
168 |
<a href="#strlen" title="details" class="method-name">strlen</a>
|
170 |
(<span class="var-type">string</span> <span class="var-name">$str</span>)
|
169 |
(<span class="var-type">string</span> <span class="var-name">$str</span>)
|
171 |
</div>
|
170 |
</div>
|
172 |
|
171 |
|
173 |
<div class="method-definition">
|
172 |
<div class="method-definition">
|
174 |
<span class="method-result">mixed</span>
|
173 |
<span class="method-result">mixed</span>
|
175 |
<a href="#binToBigNum" title="details" class="method-name">binToBigNum</a>
|
174 |
<a href="#binToBigNum" title="details" class="method-name">binToBigNum</a>
|
176 |
(<span class="var-type">string</span> <span class="var-name">$bin</span>)
|
175 |
(<span class="var-type">string</span> <span class="var-name">$bin</span>)
|
177 |
</div>
|
176 |
</div>
|
178 |
|
177 |
|
179 |
<div class="method-definition">
|
178 |
<div class="method-definition">
|
180 |
<span class="method-result">string</span>
|
179 |
<span class="method-result">string</span>
|
181 |
<a href="#btwoc" title="details" class="method-name">btwoc</a>
|
180 |
<a href="#btwoc" title="details" class="method-name">btwoc</a>
|
182 |
(<span class="var-type">string</span> <span class="var-name">$str</span>)
|
181 |
(<span class="var-type">string</span> <span class="var-name">$str</span>)
|
183 |
</div>
|
182 |
</div>
|
184 |
|
183 |
|
185 |
<div class="method-definition">
|
184 |
<div class="method-definition">
|
186 |
<span class="method-result">string</span>
|
185 |
<span class="method-result">string</span>
|
187 |
<a href="#computeDhSecret" title="details" class="method-name">computeDhSecret</a>
|
186 |
<a href="#computeDhSecret" title="details" class="method-name">computeDhSecret</a>
|
188 |
(<span class="var-type">string</span> <span class="var-name">$pub_key</span>, <span class="var-type">mixed</span> <span class="var-name">$dh</span>)
|
187 |
(<span class="var-type">string</span> <span class="var-name">$pub_key</span>, <span class="var-type">mixed</span> <span class="var-name">$dh</span>)
|
189 |
</div>
|
188 |
</div>
|
190 |
|
189 |
|
191 |
<div class="method-definition">
|
190 |
<div class="method-definition">
|
192 |
<span class="method-result">string</span>
|
191 |
<span class="method-result">string</span>
|
193 |
<a href="#randomBytes" title="details" class="method-name">randomBytes</a>
|
192 |
<a href="#randomBytes" title="details" class="method-name">randomBytes</a>
|
194 |
(<span class="var-type">integer</span> <span class="var-name">$len</span>)
|
193 |
(<span class="var-type">integer</span> <span class="var-name">$len</span>)
|
195 |
</div>
|
194 |
</div>
|
196 |
</div>
|
195 |
</div>
|
197 |
</div>
|
196 |
</div>
|
198 |
</div>
|
197 |
</div>
|
199 |
|
198 |
|
200 |
|
199 |
|
201 |
<a name="sec-methods"></a>
|
200 |
<a name="sec-methods"></a>
|
202 |
<div class="info-box">
|
201 |
<div class="info-box">
|
203 |
<div class="info-box-title">Methods</div>
|
202 |
<div class="info-box-title">Methods</div>
|
204 |
<div class="nav-bar">
|
203 |
<div class="nav-bar">
|
205 |
<a href="#sec-description">Description</a> |
|
204 |
<a href="#sec-description">Description</a> |
|
206 |
<a href="#sec-const-summary">Constants</a> (<a href="#sec-consts">details</a>)
|
205 |
<a href="#sec-const-summary">Constants</a> (<a href="#sec-consts">details</a>)
|
207 |
|
206 |
|
208 |
<a href="#sec-method-summary">Methods</a> (<span class="disabled">details</span>)
|
207 |
<a href="#sec-method-summary">Methods</a> (<span class="disabled">details</span>)
|
209 |
|
208 |
|
210 |
</div>
|
209 |
</div>
|
211 |
<div class="info-box-body">
|
210 |
<div class="info-box-body">
|
212 |
<A NAME='method_detail'></A>
|
211 |
<A NAME='method_detail'></A>
|
213 |
<a name="methodcreateDhKey" id="createDhKey"><!-- --></a>
|
212 |
<a name="methodcreateDhKey" id="createDhKey"><!-- --></a>
|
214 |
<div class="evenrow">
|
213 |
<div class="evenrow">
|
215 |
|
214 |
|
216 |
<div class="method-header">
|
215 |
<div class="method-header">
|
217 |
<span class="method-title">static createDhKey</span> (line <span class="line-number"><a href="../__filesource/fsource_Framework__utilitairesDiffieHellmanUtil.php.html#a40">40</a></span>)
|
216 |
<span class="method-title">static createDhKey</span> (line <span class="line-number"><a href="../__filesource/fsource_Framework__utilitairesDiffieHellmanUtil.php.html#a40">40</a></span>)
|
218 |
</div>
|
217 |
</div>
|
219 |
|
218 |
|
220 |
<!-- ========== Info from phpDoc block ========= -->
|
219 |
<!-- ========== Info from phpDoc block ========= -->
|
221 |
<p class="short-description">Performs the first step of a Diffie-Hellman key exchange by generating</p>
|
220 |
<p class="short-description">Performs the first step of a Diffie-Hellman key exchange by generating</p>
|
222 |
<p class="description"><p>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.</p></p>
|
221 |
<p class="description"><p>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.</p></p>
|
223 |
<ul class="tags">
|
222 |
<ul class="tags">
|
224 |
<li><span class="field">access:</span> public</li>
|
223 |
<li><span class="field">access:</span> public</li>
|
225 |
</ul>
|
224 |
</ul>
|
226 |
|
225 |
|
227 |
<div class="method-signature">
|
226 |
<div class="method-signature">
|
228 |
static <span class="method-result">mixed</span>
|
227 |
static <span class="method-result">mixed</span>
|
229 |
<span class="method-name">
|
228 |
<span class="method-name">
|
230 |
createDhKey
|
229 |
createDhKey
|
231 |
</span>
|
230 |
</span>
|
232 |
(<span class="var-type">string</span> <span class="var-name">$p</span>, <span class="var-type">string</span> <span class="var-name">$g</span>, [<span class="var-type">string</span> <span class="var-name">$priv_key</span> = <span class="var-default">null</span>])
|
231 |
(<span class="var-type">string</span> <span class="var-name">$p</span>, <span class="var-type">string</span> <span class="var-name">$g</span>, [<span class="var-type">string</span> <span class="var-name">$priv_key</span> = <span class="var-default">null</span>])
|
233 |
</div>
|
232 |
</div>
|
234 |
|
233 |
|
235 |
<ul class="parameters">
|
234 |
<ul class="parameters">
|
236 |
<li>
|
235 |
<li>
|
237 |
<span class="var-type">string</span>
|
236 |
<span class="var-type">string</span>
|
238 |
<span class="var-name">$p</span><span class="var-description">: prime number in binary representation</span> </li>
|
237 |
<span class="var-name">$p</span><span class="var-description">: prime number in binary representation</span> </li>
|
239 |
<li>
|
238 |
<li>
|
240 |
<span class="var-type">string</span>
|
239 |
<span class="var-type">string</span>
|
241 |
<span class="var-name">$g</span><span class="var-description">: generator in binary representation</span> </li>
|
240 |
<span class="var-name">$g</span><span class="var-description">: generator in binary representation</span> </li>
|
242 |
<li>
|
241 |
<li>
|
243 |
<span class="var-type">string</span>
|
242 |
<span class="var-type">string</span>
|
244 |
<span class="var-name">$priv_key</span><span class="var-description">: private key in binary representation</span> </li>
|
243 |
<span class="var-name">$priv_key</span><span class="var-description">: private key in binary representation</span> </li>
|
245 |
</ul>
|
244 |
</ul>
|
246 |
|
245 |
|
247 |
|
246 |
|
248 |
</div>
|
247 |
</div>
|
249 |
<a name="methodgetDhKeyDetails" id="getDhKeyDetails"><!-- --></a>
|
248 |
<a name="methodgetDhKeyDetails" id="getDhKeyDetails"><!-- --></a>
|
250 |
<div class="oddrow">
|
249 |
<div class="oddrow">
|
251 |
|
250 |
|
252 |
<div class="method-header">
|
251 |
<div class="method-header">
|
253 |
<span class="method-title">static getDhKeyDetails</span> (line <span class="line-number"><a href="../__filesource/fsource_Framework__utilitairesDiffieHellmanUtil.php.html#a87">87</a></span>)
|
252 |
<span class="method-title">static getDhKeyDetails</span> (line <span class="line-number"><a href="../__filesource/fsource_Framework__utilitairesDiffieHellmanUtil.php.html#a87">87</a></span>)
|
254 |
</div>
|
253 |
</div>
|
255 |
|
254 |
|
256 |
<!-- ========== Info from phpDoc block ========= -->
|
255 |
<!-- ========== Info from phpDoc block ========= -->
|
257 |
<p class="short-description">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'.</p>
|
256 |
<p class="short-description">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'.</p>
|
258 |
<ul class="tags">
|
257 |
<ul class="tags">
|
259 |
<li><span class="field">access:</span> public</li>
|
258 |
<li><span class="field">access:</span> public</li>
|
260 |
</ul>
|
259 |
</ul>
|
261 |
|
260 |
|
262 |
<div class="method-signature">
|
261 |
<div class="method-signature">
|
263 |
static <span class="method-result">array</span>
|
262 |
static <span class="method-result">array</span>
|
264 |
<span class="method-name">
|
263 |
<span class="method-name">
|
265 |
getDhKeyDetails
|
264 |
getDhKeyDetails
|
266 |
</span>
|
265 |
</span>
|
267 |
(<span class="var-type">mixed</span> <span class="var-name">$dh</span>)
|
266 |
(<span class="var-type">mixed</span> <span class="var-name">$dh</span>)
|
268 |
</div>
|
267 |
</div>
|
269 |
|
268 |
|
270 |
<ul class="parameters">
|
269 |
<ul class="parameters">
|
271 |
<li>
|
270 |
<li>
|
272 |
<span class="var-type">mixed</span>
|
271 |
<span class="var-type">mixed</span>
|
273 |
<span class="var-name">$dh</span><span class="var-description">: Diffie-Hellman key</span> </li>
|
272 |
<span class="var-name">$dh</span><span class="var-description">: Diffie-Hellman key</span> </li>
|
274 |
</ul>
|
273 |
</ul>
|
275 |
|
274 |
|
276 |
|
275 |
|
277 |
</div>
|
276 |
</div>
|
278 |
<a name="methodstrlen" id="strlen"><!-- --></a>
|
277 |
<a name="methodstrlen" id="strlen"><!-- --></a>
|
279 |
<div class="evenrow">
|
278 |
<div class="evenrow">
|
280 |
|
279 |
|
281 |
<div class="method-header">
|
280 |
<div class="method-header">
|
282 |
<span class="method-title">static strlen</span> (line <span class="line-number"><a href="../__filesource/fsource_Framework__utilitairesDiffieHellmanUtil.php.html#a183">183</a></span>)
|
281 |
<span class="method-title">static strlen</span> (line <span class="line-number"><a href="../__filesource/fsource_Framework__utilitairesDiffieHellmanUtil.php.html#a183">183</a></span>)
|
283 |
</div>
|
282 |
</div>
|
284 |
|
283 |
|
285 |
<!-- ========== Info from phpDoc block ========= -->
|
284 |
<!-- ========== Info from phpDoc block ========= -->
|
286 |
<p class="short-description">Returns lenght of binary string in bytes</p>
|
285 |
<p class="short-description">Returns lenght of binary string in bytes</p>
|
287 |
<ul class="tags">
|
286 |
<ul class="tags">
|
288 |
<li><span class="field">return:</span> the string lenght</li>
|
287 |
<li><span class="field">return:</span> the string lenght</li>
|
289 |
<li><span class="field">access:</span> public</li>
|
288 |
<li><span class="field">access:</span> public</li>
|
290 |
</ul>
|
289 |
</ul>
|
291 |
|
290 |
|
292 |
<div class="method-signature">
|
291 |
<div class="method-signature">
|
293 |
static <span class="method-result">int</span>
|
292 |
static <span class="method-result">int</span>
|
294 |
<span class="method-name">
|
293 |
<span class="method-name">
|
295 |
strlen
|
294 |
strlen
|
296 |
</span>
|
295 |
</span>
|
297 |
(<span class="var-type">string</span> <span class="var-name">$str</span>)
|
296 |
(<span class="var-type">string</span> <span class="var-name">$str</span>)
|
298 |
</div>
|
297 |
</div>
|
299 |
|
298 |
|
300 |
<ul class="parameters">
|
299 |
<ul class="parameters">
|
301 |
<li>
|
300 |
<li>
|
302 |
<span class="var-type">string</span>
|
301 |
<span class="var-type">string</span>
|
303 |
<span class="var-name">$str</span> </li>
|
302 |
<span class="var-name">$str</span> </li>
|
304 |
</ul>
|
303 |
</ul>
|
305 |
|
304 |
|
306 |
|
305 |
|
307 |
</div>
|
306 |
</div>
|
308 |
<a name="methodbinToBigNum" id="binToBigNum"><!-- --></a>
|
307 |
<a name="methodbinToBigNum" id="binToBigNum"><!-- --></a>
|
309 |
<div class="oddrow">
|
308 |
<div class="oddrow">
|
310 |
|
309 |
|
311 |
<div class="method-header">
|
310 |
<div class="method-header">
|
312 |
<span class="method-title">binToBigNum</span> (line <span class="line-number"><a href="../__filesource/fsource_Framework__utilitairesDiffieHellmanUtil.php.html#a202">202</a></span>)
|
311 |
<span class="method-title">binToBigNum</span> (line <span class="line-number"><a href="../__filesource/fsource_Framework__utilitairesDiffieHellmanUtil.php.html#a202">202</a></span>)
|
313 |
</div>
|
312 |
</div>
|
314 |
|
313 |
|
315 |
<!-- ========== Info from phpDoc block ========= -->
|
314 |
<!-- ========== Info from phpDoc block ========= -->
|
316 |
<p class="short-description">Converts binary representation into ext/gmp or ext/bcmath big integer representation.</p>
|
315 |
<p class="short-description">Converts binary representation into ext/gmp or ext/bcmath big integer representation.</p>
|
317 |
<ul class="tags">
|
316 |
<ul class="tags">
|
318 |
<li><span class="field">throws:</span> Zend_OpenId_Exception</li>
|
317 |
<li><span class="field">throws:</span> Zend_OpenId_Exception</li>
|
319 |
<li><span class="field">access:</span> protected</li>
|
318 |
<li><span class="field">access:</span> protected</li>
|
320 |
</ul>
|
319 |
</ul>
|
321 |
|
320 |
|
322 |
<div class="method-signature">
|
321 |
<div class="method-signature">
|
323 |
<span class="method-result">mixed</span>
|
322 |
<span class="method-result">mixed</span>
|
324 |
<span class="method-name">
|
323 |
<span class="method-name">
|
325 |
binToBigNum
|
324 |
binToBigNum
|
326 |
</span>
|
325 |
</span>
|
327 |
(<span class="var-type">string</span> <span class="var-name">$bin</span>)
|
326 |
(<span class="var-type">string</span> <span class="var-name">$bin</span>)
|
328 |
</div>
|
327 |
</div>
|
329 |
|
328 |
|
330 |
<ul class="parameters">
|
329 |
<ul class="parameters">
|
331 |
<li>
|
330 |
<li>
|
332 |
<span class="var-type">string</span>
|
331 |
<span class="var-type">string</span>
|
333 |
<span class="var-name">$bin</span><span class="var-description">: binary representation of big number</span> </li>
|
332 |
<span class="var-name">$bin</span><span class="var-description">: binary representation of big number</span> </li>
|
334 |
</ul>
|
333 |
</ul>
|
335 |
|
334 |
|
336 |
|
335 |
|
337 |
</div>
|
336 |
</div>
|
338 |
<a name="methodbtwoc" id="btwoc"><!-- --></a>
|
337 |
<a name="methodbtwoc" id="btwoc"><!-- --></a>
|
339 |
<div class="evenrow">
|
338 |
<div class="evenrow">
|
340 |
|
339 |
|
341 |
<div class="method-header">
|
340 |
<div class="method-header">
|
342 |
<span class="method-title">btwoc</span> (line <span class="line-number"><a href="../__filesource/fsource_Framework__utilitairesDiffieHellmanUtil.php.html#a152">152</a></span>)
|
341 |
<span class="method-title">btwoc</span> (line <span class="line-number"><a href="../__filesource/fsource_Framework__utilitairesDiffieHellmanUtil.php.html#a152">152</a></span>)
|
343 |
</div>
|
342 |
</div>
|
344 |
|
343 |
|
345 |
<!-- ========== Info from phpDoc block ========= -->
|
344 |
<!-- ========== Info from phpDoc block ========= -->
|
346 |
<p class="short-description">Takes an arbitrary precision integer and returns its shortest big-endian two's complement representation.</p>
|
345 |
<p class="short-description">Takes an arbitrary precision integer and returns its shortest big-endian two's complement representation.</p>
|
347 |
<p class="description"><p>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.</p></p>
|
346 |
<p class="description"><p>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.</p></p>
|
348 |
<ul class="tags">
|
347 |
<ul class="tags">
|
349 |
<li><span class="field">return:</span> big-endian signed representation</li>
|
348 |
<li><span class="field">return:</span> big-endian signed representation</li>
|
350 |
<li><span class="field">access:</span> public</li>
|
349 |
<li><span class="field">access:</span> public</li>
|
351 |
</ul>
|
350 |
</ul>
|
352 |
|
351 |
|
353 |
<div class="method-signature">
|
352 |
<div class="method-signature">
|
354 |
<span class="method-result">string</span>
|
353 |
<span class="method-result">string</span>
|
355 |
<span class="method-name">
|
354 |
<span class="method-name">
|
356 |
btwoc
|
355 |
btwoc
|
357 |
</span>
|
356 |
</span>
|
358 |
(<span class="var-type">string</span> <span class="var-name">$str</span>)
|
357 |
(<span class="var-type">string</span> <span class="var-name">$str</span>)
|
359 |
</div>
|
358 |
</div>
|
360 |
|
359 |
|
361 |
<ul class="parameters">
|
360 |
<ul class="parameters">
|
362 |
<li>
|
361 |
<li>
|
363 |
<span class="var-type">string</span>
|
362 |
<span class="var-type">string</span>
|
364 |
<span class="var-name">$str</span><span class="var-description">: binary representation of arbitrary precision integer</span> </li>
|
363 |
<span class="var-name">$str</span><span class="var-description">: binary representation of arbitrary precision integer</span> </li>
|
365 |
</ul>
|
364 |
</ul>
|
366 |
|
365 |
|
367 |
|
366 |
|
368 |
</div>
|
367 |
</div>
|
369 |
<a name="methodcomputeDhSecret" id="computeDhSecret"><!-- --></a>
|
368 |
<a name="methodcomputeDhSecret" id="computeDhSecret"><!-- --></a>
|
370 |
<div class="oddrow">
|
369 |
<div class="oddrow">
|
371 |
|
370 |
|
372 |
<div class="method-header">
|
371 |
<div class="method-header">
|
373 |
<span class="method-title">computeDhSecret</span> (line <span class="line-number"><a href="../__filesource/fsource_Framework__utilitairesDiffieHellmanUtil.php.html#a112">112</a></span>)
|
372 |
<span class="method-title">computeDhSecret</span> (line <span class="line-number"><a href="../__filesource/fsource_Framework__utilitairesDiffieHellmanUtil.php.html#a112">112</a></span>)
|
374 |
</div>
|
373 |
</div>
|
375 |
|
374 |
|
376 |
<!-- ========== Info from phpDoc block ========= -->
|
375 |
<!-- ========== Info from phpDoc block ========= -->
|
377 |
<p class="short-description">Computes the shared secret from the private DH value $dh and the other party's public value in $pub_key</p>
|
376 |
<p class="short-description">Computes the shared secret from the private DH value $dh and the other party's public value in $pub_key</p>
|
378 |
<ul class="tags">
|
377 |
<ul class="tags">
|
379 |
<li><span class="field">throws:</span> Zend_OpenId_Exception</li>
|
378 |
<li><span class="field">throws:</span> Zend_OpenId_Exception</li>
|
380 |
<li><span class="field">access:</span> public</li>
|
379 |
<li><span class="field">access:</span> public</li>
|
381 |
</ul>
|
380 |
</ul>
|
382 |
|
381 |
|
383 |
<div class="method-signature">
|
382 |
<div class="method-signature">
|
384 |
<span class="method-result">string</span>
|
383 |
<span class="method-result">string</span>
|
385 |
<span class="method-name">
|
384 |
<span class="method-name">
|
386 |
computeDhSecret
|
385 |
computeDhSecret
|
387 |
</span>
|
386 |
</span>
|
388 |
(<span class="var-type">string</span> <span class="var-name">$pub_key</span>, <span class="var-type">mixed</span> <span class="var-name">$dh</span>)
|
387 |
(<span class="var-type">string</span> <span class="var-name">$pub_key</span>, <span class="var-type">mixed</span> <span class="var-name">$dh</span>)
|
389 |
</div>
|
388 |
</div>
|
390 |
|
389 |
|
391 |
<ul class="parameters">
|
390 |
<ul class="parameters">
|
392 |
<li>
|
391 |
<li>
|
393 |
<span class="var-type">string</span>
|
392 |
<span class="var-type">string</span>
|
394 |
<span class="var-name">$pub_key</span><span class="var-description">: other party's public value</span> </li>
|
393 |
<span class="var-name">$pub_key</span><span class="var-description">: other party's public value</span> </li>
|
395 |
<li>
|
394 |
<li>
|
396 |
<span class="var-type">mixed</span>
|
395 |
<span class="var-type">mixed</span>
|
397 |
<span class="var-name">$dh</span><span class="var-description">: Diffie-Hellman key</span> </li>
|
396 |
<span class="var-name">$dh</span><span class="var-description">: Diffie-Hellman key</span> </li>
|
398 |
</ul>
|
397 |
</ul>
|
399 |
|
398 |
|
400 |
|
399 |
|
401 |
</div>
|
400 |
</div>
|
402 |
<a name="methodrandomBytes" id="randomBytes"><!-- --></a>
|
401 |
<a name="methodrandomBytes" id="randomBytes"><!-- --></a>
|
403 |
<div class="evenrow">
|
402 |
<div class="evenrow">
|
404 |
|
403 |
|
405 |
<div class="method-header">
|
404 |
<div class="method-header">
|
406 |
<span class="method-title">randomBytes</span> (line <span class="line-number"><a href="../__filesource/fsource_Framework__utilitairesDiffieHellmanUtil.php.html#a168">168</a></span>)
|
405 |
<span class="method-title">randomBytes</span> (line <span class="line-number"><a href="../__filesource/fsource_Framework__utilitairesDiffieHellmanUtil.php.html#a168">168</a></span>)
|
407 |
</div>
|
406 |
</div>
|
408 |
|
407 |
|
409 |
<!-- ========== Info from phpDoc block ========= -->
|
408 |
<!-- ========== Info from phpDoc block ========= -->
|
410 |
<p class="short-description">Produces string of random byte of given length.</p>
|
409 |
<p class="short-description">Produces string of random byte of given length.</p>
|
411 |
<ul class="tags">
|
410 |
<ul class="tags">
|
412 |
<li><span class="field">return:</span> RAW random binary string</li>
|
411 |
<li><span class="field">return:</span> RAW random binary string</li>
|
413 |
<li><span class="field">access:</span> public</li>
|
412 |
<li><span class="field">access:</span> public</li>
|
414 |
</ul>
|
413 |
</ul>
|
415 |
|
414 |
|
416 |
<div class="method-signature">
|
415 |
<div class="method-signature">
|
417 |
<span class="method-result">string</span>
|
416 |
<span class="method-result">string</span>
|
418 |
<span class="method-name">
|
417 |
<span class="method-name">
|
419 |
randomBytes
|
418 |
randomBytes
|
420 |
</span>
|
419 |
</span>
|
421 |
(<span class="var-type">integer</span> <span class="var-name">$len</span>)
|
420 |
(<span class="var-type">integer</span> <span class="var-name">$len</span>)
|
422 |
</div>
|
421 |
</div>
|
423 |
|
422 |
|
424 |
<ul class="parameters">
|
423 |
<ul class="parameters">
|
425 |
<li>
|
424 |
<li>
|
426 |
<span class="var-type">integer</span>
|
425 |
<span class="var-type">integer</span>
|
427 |
<span class="var-name">$len</span><span class="var-description">: length of requested string</span> </li>
|
426 |
<span class="var-name">$len</span><span class="var-description">: length of requested string</span> </li>
|
428 |
</ul>
|
427 |
</ul>
|
429 |
|
428 |
|
430 |
|
429 |
|
431 |
</div>
|
430 |
</div>
|
432 |
|
431 |
|
433 |
</div>
|
432 |
</div>
|
434 |
</div>
|
433 |
</div>
|
435 |
|
434 |
|
436 |
<a name="sec-consts"></a>
|
435 |
<a name="sec-consts"></a>
|
437 |
<div class="info-box">
|
436 |
<div class="info-box">
|
438 |
<div class="info-box-title">Class Constants</div>
|
437 |
<div class="info-box-title">Class Constants</div>
|
439 |
<div class="nav-bar">
|
438 |
<div class="nav-bar">
|
440 |
<a href="#sec-description">Description</a> |
|
439 |
<a href="#sec-description">Description</a> |
|
441 |
<a href="#sec-var-summary">Constants</a> (<span class="disabled">details</span>)
|
440 |
<a href="#sec-var-summary">Constants</a> (<span class="disabled">details</span>)
|
442 |
|
441 |
|
443 |
|
442 |
|
444 |
|
|
443 |
|
|
445 |
<a href="#sec-method-summary">Methods</a> (<a href="#sec-methods">details</a>)
|
444 |
<a href="#sec-method-summary">Methods</a> (<a href="#sec-methods">details</a>)
|
446 |
|
445 |
|
447 |
</div>
|
446 |
</div>
|
448 |
<div class="info-box-body">
|
447 |
<div class="info-box-body">
|
449 |
<a name="constDH_G" id="DH_G"><!-- --></A>
|
448 |
<a name="constDH_G" id="DH_G"><!-- --></A>
|
450 |
<div class="oddrow">
|
449 |
<div class="oddrow">
|
451 |
|
450 |
|
452 |
<div class="const-header">
|
451 |
<div class="const-header">
|
453 |
<img src="../media/images/Variable.png" />
|
452 |
<img src="../media/images/Variable.png" />
|
454 |
<span class="const-title">
|
453 |
<span class="const-title">
|
455 |
<span class="const-name">DH_G</span>
|
454 |
<span class="const-name">DH_G</span>
|
456 |
= <span class="const-default"> '02'</span>
|
455 |
= <span class="const-default"> '02'</span>
|
457 |
(line <span class="line-number"><a href="../__filesource/fsource_Framework__utilitairesDiffieHellmanUtil.php.html#a23">23</a></span>)
|
456 |
(line <span class="line-number"><a href="../__filesource/fsource_Framework__utilitairesDiffieHellmanUtil.php.html#a23">23</a></span>)
|
458 |
</span>
|
457 |
</span>
|
459 |
</div>
|
458 |
</div>
|
460 |
|
459 |
|
461 |
<!-- ========== Info from phpDoc block ========= -->
|
460 |
<!-- ========== Info from phpDoc block ========= -->
|
462 |
|
461 |
|
463 |
|
462 |
|
464 |
</div>
|
463 |
</div>
|
465 |
<a name="constDH_P" id="DH_P"><!-- --></A>
|
464 |
<a name="constDH_P" id="DH_P"><!-- --></A>
|
466 |
<div class="evenrow">
|
465 |
<div class="evenrow">
|
467 |
|
466 |
|
468 |
<div class="const-header">
|
467 |
<div class="const-header">
|
469 |
<img src="../media/images/Variable.png" />
|
468 |
<img src="../media/images/Variable.png" />
|
470 |
<span class="const-title">
|
469 |
<span class="const-title">
|
471 |
<span class="const-name">DH_P</span>
|
470 |
<span class="const-name">DH_P</span>
|
472 |
= <span class="const-default"> 'dcf93a0b883972ec0e19989ac5a2ce310e1d37717e8d9571bb7623731866e61ef75a2e27898b057f9891c2e27a639c3f29b60814581cd3b2ca3986d2683705577d45c2e7e52dc81c7a171876e5cea74b1448bfdfaf18828efd2519f14e45e3826634af1949e5b535cc829a483b8a76223e5d490a257f05bdff16f2fb22c583ab'</span>
|
471 |
= <span class="const-default"> 'dcf93a0b883972ec0e19989ac5a2ce310e1d37717e8d9571bb7623731866e61ef75a2e27898b057f9891c2e27a639c3f29b60814581cd3b2ca3986d2683705577d45c2e7e52dc81c7a171876e5cea74b1448bfdfaf18828efd2519f14e45e3826634af1949e5b535cc829a483b8a76223e5d490a257f05bdff16f2fb22c583ab'</span>
|
473 |
(line <span class="line-number"><a href="../__filesource/fsource_Framework__utilitairesDiffieHellmanUtil.php.html#a20">20</a></span>)
|
472 |
(line <span class="line-number"><a href="../__filesource/fsource_Framework__utilitairesDiffieHellmanUtil.php.html#a20">20</a></span>)
|
474 |
</span>
|
473 |
</span>
|
475 |
</div>
|
474 |
</div>
|
476 |
|
475 |
|
477 |
<!-- ========== Info from phpDoc block ========= -->
|
476 |
<!-- ========== Info from phpDoc block ========= -->
|
478 |
|
477 |
|
479 |
|
478 |
|
480 |
</div>
|
479 |
</div>
|
481 |
|
480 |
|
482 |
</div>
|
481 |
</div>
|
483 |
</div>
|
482 |
</div>
|
484 |
|
483 |
|
485 |
<p class="notes" id="credit">
|
484 |
<p class="notes" id="credit">
|
486 |
Documentation generated on Tue, 18 Jan 2011 15:13:13 +0100 by <a href="http://www.phpdoc.org" target="_blank">phpDocumentor 1.4.3</a>
|
485 |
Documentation generated on Tue, 18 Jan 2011 15:30:48 +0100 by <a href="http://www.phpdoc.org" target="_blank">phpDocumentor 1.4.3</a>
|
487 |
</p>
|
486 |
</p>
|
488 |
</div></body>
|
487 |
</div></body>
|
489 |
</html>
|
488 |
</html>
|