PageRenderTime 40ms CodeModel.GetById 24ms app.highlight 12ms RepoModel.GetById 1ms app.codeStats 0ms

/lib/bouncycastle/docs/org/bouncycastle/jce/provider/JCEDHKeyAgreement.html

https://bitbucket.org/arkban/somersault
HTML | 401 lines | 332 code | 47 blank | 22 comment | 0 complexity | eb69aae22ed85cc315718fb48f55eb19 MD5 | raw file
Possible License(s): LGPL-2.1, BSD-3-Clause, Apache-2.0
  1<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
  2<!--NewPage-->
  3<HTML>
  4<HEAD>
  5<!-- Generated by javadoc (build 1.6.0) on Mon Jan 11 13:46:37 EST 2010 -->
  6<TITLE>
  7JCEDHKeyAgreement (Bouncy Castle Library 1.45 API Specification)
  8</TITLE>
  9
 10<META NAME="date" CONTENT="2010-01-11">
 11
 12<LINK REL ="stylesheet" TYPE="text/css" HREF="../../../../stylesheet.css" TITLE="Style">
 13
 14<SCRIPT type="text/javascript">
 15function windowTitle()
 16{
 17    if (location.href.indexOf('is-external=true') == -1) {
 18        parent.document.title="JCEDHKeyAgreement (Bouncy Castle Library 1.45 API Specification)";
 19    }
 20}
 21</SCRIPT>
 22<NOSCRIPT>
 23</NOSCRIPT>
 24
 25</HEAD>
 26
 27<BODY BGCOLOR="white" onload="windowTitle();">
 28<HR>
 29
 30
 31<!-- ========= START OF TOP NAVBAR ======= -->
 32<A NAME="navbar_top"><!-- --></A>
 33<A HREF="#skip-navbar_top" title="Skip navigation links"></A>
 34<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
 35<TR>
 36<TD COLSPAN=2 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
 37<A NAME="navbar_top_firstrow"><!-- --></A>
 38<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
 39  <TR ALIGN="center" VALIGN="top">
 40  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
 41  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
 42  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
 43  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
 44  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
 45  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
 46  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
 47  </TR>
 48</TABLE>
 49</TD>
 50<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
 51<b>Bouncy Castle Cryptography Library 1.45</b></EM>
 52</TD>
 53</TR>
 54
 55<TR>
 56<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
 57&nbsp;<A HREF="../../../../org/bouncycastle/jce/provider/JCEBlockCipher.XTEA.html" title="class in org.bouncycastle.jce.provider"><B>PREV CLASS</B></A>&nbsp;
 58&nbsp;<A HREF="../../../../org/bouncycastle/jce/provider/JCEDHPrivateKey.html" title="class in org.bouncycastle.jce.provider"><B>NEXT CLASS</B></A></FONT></TD>
 59<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
 60  <A HREF="../../../../index.html?org/bouncycastle/jce/provider/JCEDHKeyAgreement.html" target="_top"><B>FRAMES</B></A>  &nbsp;
 61&nbsp;<A HREF="JCEDHKeyAgreement.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
 62&nbsp;<SCRIPT type="text/javascript">
 63  <!--
 64  if(window==top) {
 65    document.writeln('<A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>');
 66  }
 67  //-->
 68</SCRIPT>
 69<NOSCRIPT>
 70  <A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>
 71</NOSCRIPT>
 72
 73
 74</FONT></TD>
 75</TR>
 76<TR>
 77<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
 78  SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
 79<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
 80DETAIL:&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
 81</TR>
 82</TABLE>
 83<A NAME="skip-navbar_top"></A>
 84<!-- ========= END OF TOP NAVBAR ========= -->
 85
 86<HR>
 87<!-- ======== START OF CLASS DATA ======== -->
 88<H2>
 89<FONT SIZE="-1">
 90org.bouncycastle.jce.provider</FONT>
 91<BR>
 92Class JCEDHKeyAgreement</H2>
 93<PRE>
 94java.lang.Object
 95  <IMG SRC="../../../../resources/inherit.gif" ALT="extended by ">javax.crypto.KeyAgreementSpi
 96      <IMG SRC="../../../../resources/inherit.gif" ALT="extended by "><B>org.bouncycastle.jce.provider.JCEDHKeyAgreement</B>
 97</PRE>
 98<HR>
 99<DL>
100<DT><PRE>public class <B>JCEDHKeyAgreement</B><DT>extends javax.crypto.KeyAgreementSpi</DL>
101</PRE>
102
103<P>
104Diffie-Hellman key agreement. There's actually a better way of doing this
105 if you are using long term public keys, see the light-weight version for
106 details.
107<P>
108
109<P>
110<HR>
111
112<P>
113
114<!-- ======== CONSTRUCTOR SUMMARY ======== -->
115
116<A NAME="constructor_summary"><!-- --></A>
117<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
118<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
119<TH ALIGN="left" COLSPAN="2"><FONT SIZE="+2">
120<B>Constructor Summary</B></FONT></TH>
121</TR>
122<TR BGCOLOR="white" CLASS="TableRowColor">
123<TD><CODE><B><A HREF="../../../../org/bouncycastle/jce/provider/JCEDHKeyAgreement.html#JCEDHKeyAgreement()">JCEDHKeyAgreement</A></B>()</CODE>
124
125<BR>
126&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
127</TR>
128</TABLE>
129&nbsp;
130<!-- ========== METHOD SUMMARY =========== -->
131
132<A NAME="method_summary"><!-- --></A>
133<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
134<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
135<TH ALIGN="left" COLSPAN="2"><FONT SIZE="+2">
136<B>Method Summary</B></FONT></TH>
137</TR>
138<TR BGCOLOR="white" CLASS="TableRowColor">
139<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
140<CODE>protected &nbsp;java.security.Key</CODE></FONT></TD>
141<TD><CODE><B><A HREF="../../../../org/bouncycastle/jce/provider/JCEDHKeyAgreement.html#engineDoPhase(java.security.Key, boolean)">engineDoPhase</A></B>(java.security.Key&nbsp;key,
142              boolean&nbsp;lastPhase)</CODE>
143
144<BR>
145&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
146</TR>
147<TR BGCOLOR="white" CLASS="TableRowColor">
148<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
149<CODE>protected &nbsp;byte[]</CODE></FONT></TD>
150<TD><CODE><B><A HREF="../../../../org/bouncycastle/jce/provider/JCEDHKeyAgreement.html#engineGenerateSecret()">engineGenerateSecret</A></B>()</CODE>
151
152<BR>
153&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
154</TR>
155<TR BGCOLOR="white" CLASS="TableRowColor">
156<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
157<CODE>protected &nbsp;int</CODE></FONT></TD>
158<TD><CODE><B><A HREF="../../../../org/bouncycastle/jce/provider/JCEDHKeyAgreement.html#engineGenerateSecret(byte[], int)">engineGenerateSecret</A></B>(byte[]&nbsp;sharedSecret,
159                     int&nbsp;offset)</CODE>
160
161<BR>
162&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
163</TR>
164<TR BGCOLOR="white" CLASS="TableRowColor">
165<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
166<CODE>protected &nbsp;javax.crypto.SecretKey</CODE></FONT></TD>
167<TD><CODE><B><A HREF="../../../../org/bouncycastle/jce/provider/JCEDHKeyAgreement.html#engineGenerateSecret(java.lang.String)">engineGenerateSecret</A></B>(java.lang.String&nbsp;algorithm)</CODE>
168
169<BR>
170&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
171</TR>
172<TR BGCOLOR="white" CLASS="TableRowColor">
173<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
174<CODE>protected &nbsp;void</CODE></FONT></TD>
175<TD><CODE><B><A HREF="../../../../org/bouncycastle/jce/provider/JCEDHKeyAgreement.html#engineInit(java.security.Key, java.security.spec.AlgorithmParameterSpec, java.security.SecureRandom)">engineInit</A></B>(java.security.Key&nbsp;key,
176           java.security.spec.AlgorithmParameterSpec&nbsp;params,
177           java.security.SecureRandom&nbsp;random)</CODE>
178
179<BR>
180&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
181</TR>
182<TR BGCOLOR="white" CLASS="TableRowColor">
183<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
184<CODE>protected &nbsp;void</CODE></FONT></TD>
185<TD><CODE><B><A HREF="../../../../org/bouncycastle/jce/provider/JCEDHKeyAgreement.html#engineInit(java.security.Key, java.security.SecureRandom)">engineInit</A></B>(java.security.Key&nbsp;key,
186           java.security.SecureRandom&nbsp;random)</CODE>
187
188<BR>
189&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
190</TR>
191</TABLE>
192&nbsp;<A NAME="methods_inherited_from_class_java.lang.Object"><!-- --></A>
193<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
194<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
195<TH ALIGN="left"><B>Methods inherited from class java.lang.Object</B></TH>
196</TR>
197<TR BGCOLOR="white" CLASS="TableRowColor">
198<TD><CODE>clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait</CODE></TD>
199</TR>
200</TABLE>
201&nbsp;
202<P>
203
204<!-- ========= CONSTRUCTOR DETAIL ======== -->
205
206<A NAME="constructor_detail"><!-- --></A>
207<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
208<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
209<TH ALIGN="left" COLSPAN="1"><FONT SIZE="+2">
210<B>Constructor Detail</B></FONT></TH>
211</TR>
212</TABLE>
213
214<A NAME="JCEDHKeyAgreement()"><!-- --></A><H3>
215JCEDHKeyAgreement</H3>
216<PRE>
217public <B>JCEDHKeyAgreement</B>()</PRE>
218<DL>
219</DL>
220
221<!-- ============ METHOD DETAIL ========== -->
222
223<A NAME="method_detail"><!-- --></A>
224<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
225<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
226<TH ALIGN="left" COLSPAN="1"><FONT SIZE="+2">
227<B>Method Detail</B></FONT></TH>
228</TR>
229</TABLE>
230
231<A NAME="engineDoPhase(java.security.Key, boolean)"><!-- --></A><H3>
232engineDoPhase</H3>
233<PRE>
234protected java.security.Key <B>engineDoPhase</B>(java.security.Key&nbsp;key,
235                                          boolean&nbsp;lastPhase)
236                                   throws java.security.InvalidKeyException,
237                                          java.lang.IllegalStateException</PRE>
238<DL>
239<DD><DL>
240<DT><B>Specified by:</B><DD><CODE>engineDoPhase</CODE> in class <CODE>javax.crypto.KeyAgreementSpi</CODE></DL>
241</DD>
242<DD><DL>
243
244<DT><B>Throws:</B>
245<DD><CODE>java.security.InvalidKeyException</CODE>
246<DD><CODE>java.lang.IllegalStateException</CODE></DL>
247</DD>
248</DL>
249<HR>
250
251<A NAME="engineGenerateSecret()"><!-- --></A><H3>
252engineGenerateSecret</H3>
253<PRE>
254protected byte[] <B>engineGenerateSecret</B>()
255                               throws java.lang.IllegalStateException</PRE>
256<DL>
257<DD><DL>
258<DT><B>Specified by:</B><DD><CODE>engineGenerateSecret</CODE> in class <CODE>javax.crypto.KeyAgreementSpi</CODE></DL>
259</DD>
260<DD><DL>
261
262<DT><B>Throws:</B>
263<DD><CODE>java.lang.IllegalStateException</CODE></DL>
264</DD>
265</DL>
266<HR>
267
268<A NAME="engineGenerateSecret(byte[], int)"><!-- --></A><H3>
269engineGenerateSecret</H3>
270<PRE>
271protected int <B>engineGenerateSecret</B>(byte[]&nbsp;sharedSecret,
272                                   int&nbsp;offset)
273                            throws java.lang.IllegalStateException,
274                                   javax.crypto.ShortBufferException</PRE>
275<DL>
276<DD><DL>
277<DT><B>Specified by:</B><DD><CODE>engineGenerateSecret</CODE> in class <CODE>javax.crypto.KeyAgreementSpi</CODE></DL>
278</DD>
279<DD><DL>
280
281<DT><B>Throws:</B>
282<DD><CODE>java.lang.IllegalStateException</CODE>
283<DD><CODE>javax.crypto.ShortBufferException</CODE></DL>
284</DD>
285</DL>
286<HR>
287
288<A NAME="engineGenerateSecret(java.lang.String)"><!-- --></A><H3>
289engineGenerateSecret</H3>
290<PRE>
291protected javax.crypto.SecretKey <B>engineGenerateSecret</B>(java.lang.String&nbsp;algorithm)</PRE>
292<DL>
293<DD><DL>
294<DT><B>Specified by:</B><DD><CODE>engineGenerateSecret</CODE> in class <CODE>javax.crypto.KeyAgreementSpi</CODE></DL>
295</DD>
296<DD><DL>
297</DL>
298</DD>
299</DL>
300<HR>
301
302<A NAME="engineInit(java.security.Key, java.security.spec.AlgorithmParameterSpec, java.security.SecureRandom)"><!-- --></A><H3>
303engineInit</H3>
304<PRE>
305protected void <B>engineInit</B>(java.security.Key&nbsp;key,
306                          java.security.spec.AlgorithmParameterSpec&nbsp;params,
307                          java.security.SecureRandom&nbsp;random)
308                   throws java.security.InvalidKeyException,
309                          java.security.InvalidAlgorithmParameterException</PRE>
310<DL>
311<DD><DL>
312<DT><B>Specified by:</B><DD><CODE>engineInit</CODE> in class <CODE>javax.crypto.KeyAgreementSpi</CODE></DL>
313</DD>
314<DD><DL>
315
316<DT><B>Throws:</B>
317<DD><CODE>java.security.InvalidKeyException</CODE>
318<DD><CODE>java.security.InvalidAlgorithmParameterException</CODE></DL>
319</DD>
320</DL>
321<HR>
322
323<A NAME="engineInit(java.security.Key, java.security.SecureRandom)"><!-- --></A><H3>
324engineInit</H3>
325<PRE>
326protected void <B>engineInit</B>(java.security.Key&nbsp;key,
327                          java.security.SecureRandom&nbsp;random)
328                   throws java.security.InvalidKeyException</PRE>
329<DL>
330<DD><DL>
331<DT><B>Specified by:</B><DD><CODE>engineInit</CODE> in class <CODE>javax.crypto.KeyAgreementSpi</CODE></DL>
332</DD>
333<DD><DL>
334
335<DT><B>Throws:</B>
336<DD><CODE>java.security.InvalidKeyException</CODE></DL>
337</DD>
338</DL>
339<!-- ========= END OF CLASS DATA ========= -->
340<HR>
341
342
343<!-- ======= START OF BOTTOM NAVBAR ====== -->
344<A NAME="navbar_bottom"><!-- --></A>
345<A HREF="#skip-navbar_bottom" title="Skip navigation links"></A>
346<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
347<TR>
348<TD COLSPAN=2 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
349<A NAME="navbar_bottom_firstrow"><!-- --></A>
350<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
351  <TR ALIGN="center" VALIGN="top">
352  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
353  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
354  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
355  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
356  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
357  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
358  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
359  </TR>
360</TABLE>
361</TD>
362<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
363<b>Bouncy Castle Cryptography Library 1.45</b></EM>
364</TD>
365</TR>
366
367<TR>
368<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
369&nbsp;<A HREF="../../../../org/bouncycastle/jce/provider/JCEBlockCipher.XTEA.html" title="class in org.bouncycastle.jce.provider"><B>PREV CLASS</B></A>&nbsp;
370&nbsp;<A HREF="../../../../org/bouncycastle/jce/provider/JCEDHPrivateKey.html" title="class in org.bouncycastle.jce.provider"><B>NEXT CLASS</B></A></FONT></TD>
371<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
372  <A HREF="../../../../index.html?org/bouncycastle/jce/provider/JCEDHKeyAgreement.html" target="_top"><B>FRAMES</B></A>  &nbsp;
373&nbsp;<A HREF="JCEDHKeyAgreement.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
374&nbsp;<SCRIPT type="text/javascript">
375  <!--
376  if(window==top) {
377    document.writeln('<A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>');
378  }
379  //-->
380</SCRIPT>
381<NOSCRIPT>
382  <A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>
383</NOSCRIPT>
384
385
386</FONT></TD>
387</TR>
388<TR>
389<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
390  SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
391<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
392DETAIL:&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
393</TR>
394</TABLE>
395<A NAME="skip-navbar_bottom"></A>
396<!-- ======== END OF BOTTOM NAVBAR ======= -->
397
398<HR>
399
400</BODY>
401</HTML>