Merge from vendor branch NTPD:
[dragonfly.git] / contrib / bind-9.2.4rc7 / bin / nsupdate / nsupdate.html
1 <!--
2  - Copyright (C) 2004  Internet Systems Consortium, Inc. ("ISC")
3  - Copyright (C) 2001, 2003  Internet Software Consortium.
4  -
5  - Permission to use, copy, modify, and distribute this software for any
6  - purpose with or without fee is hereby granted, provided that the above
7  - copyright notice and this permission notice appear in all copies.
8  -
9  - THE SOFTWARE IS PROVIDED "AS IS" AND ISC DISCLAIMS ALL WARRANTIES WITH
10  - REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
11  - AND FITNESS.  IN NO EVENT SHALL ISC BE LIABLE FOR ANY SPECIAL, DIRECT,
12  - INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
13  - LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE
14  - OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
15  - PERFORMANCE OF THIS SOFTWARE.
16 -->
17
18 <!-- $Id: nsupdate.html,v 1.9.2.5 2004/03/15 04:44:41 marka Exp $ -->
19
20 <HTML
21 ><HEAD
22 ><TITLE
23 >nsupdate</TITLE
24 ><META
25 NAME="GENERATOR"
26 CONTENT="Modular DocBook HTML Stylesheet Version 1.73
27 "></HEAD
28 ><BODY
29 CLASS="REFENTRY"
30 BGCOLOR="#FFFFFF"
31 TEXT="#000000"
32 LINK="#0000FF"
33 VLINK="#840084"
34 ALINK="#0000FF"
35 ><H1
36 ><A
37 NAME="AEN1"
38 >nsupdate</A
39 ></H1
40 ><DIV
41 CLASS="REFNAMEDIV"
42 ><A
43 NAME="AEN8"
44 ></A
45 ><H2
46 >Name</H2
47 >nsupdate&nbsp;--&nbsp;Dynamic DNS update utility</DIV
48 ><DIV
49 CLASS="REFSYNOPSISDIV"
50 ><A
51 NAME="AEN11"
52 ></A
53 ><H2
54 >Synopsis</H2
55 ><P
56 ><B
57 CLASS="COMMAND"
58 >nsupdate</B
59 >  [<TT
60 CLASS="OPTION"
61 >-d</TT
62 >] [<TT
63 CLASS="OPTION"
64 >-y <TT
65 CLASS="REPLACEABLE"
66 ><I
67 >keyname:secret</I
68 ></TT
69 ></TT
70 > | <TT
71 CLASS="OPTION"
72 >-k <TT
73 CLASS="REPLACEABLE"
74 ><I
75 >keyfile</I
76 ></TT
77 ></TT
78 >] [<TT
79 CLASS="OPTION"
80 >-v</TT
81 >] [filename]</P
82 ></DIV
83 ><DIV
84 CLASS="REFSECT1"
85 ><A
86 NAME="AEN26"
87 ></A
88 ><H2
89 >DESCRIPTION</H2
90 ><P
91 ><B
92 CLASS="COMMAND"
93 >nsupdate</B
94 >
95 is used to submit Dynamic DNS Update requests as defined in RFC2136
96 to a name server.
97 This allows resource records to be added or removed from a zone
98 without manually editing the zone file.
99 A single update request can contain requests to add or remove more than one
100 resource record.</P
101 ><P
102 >Zones that are under dynamic control via
103 <B
104 CLASS="COMMAND"
105 >nsupdate</B
106 >
107 or a DHCP server should not be edited by hand.
108 Manual edits could
109 conflict with dynamic updates and cause data to be lost.</P
110 ><P
111 >The resource records that are dynamically added or removed with
112 <B
113 CLASS="COMMAND"
114 >nsupdate</B
115 >
116 have to be in the same zone.
117 Requests are sent to the zone's master server.
118 This is identified by the MNAME field of the zone's SOA record.</P
119 ><P
120 >The
121 <TT
122 CLASS="OPTION"
123 >-d</TT
124 >
125 option makes
126 <B
127 CLASS="COMMAND"
128 >nsupdate</B
129 >
130 operate in debug mode.
131 This provides tracing information about the update requests that are
132 made and the replies received from the name server.</P
133 ><P
134 >Transaction signatures can be used to authenticate the Dynamic DNS
135 updates.
136 These use the TSIG resource record type described in RFC2845.
137 The signatures rely on a shared secret that should only be known to
138 <B
139 CLASS="COMMAND"
140 >nsupdate</B
141 >
142 and the name server.
143 Currently, the only supported encryption algorithm for TSIG is
144 HMAC-MD5, which is defined in RFC 2104.
145 Once other algorithms are defined for TSIG, applications will need to
146 ensure they select the appropriate algorithm as well as the key when
147 authenticating each other.
148 For instance suitable
149 <SPAN
150 CLASS="TYPE"
151 >key</SPAN
152 >
153 and
154 <SPAN
155 CLASS="TYPE"
156 >server</SPAN
157 >
158 statements would be added to
159 <TT
160 CLASS="FILENAME"
161 >/etc/named.conf</TT
162 >
163 so that the name server can associate the appropriate secret key
164 and algorithm with the IP address of the
165 client application that will be using TSIG authentication.
166 <B
167 CLASS="COMMAND"
168 >nsupdate</B
169 >
170 does not read
171 <TT
172 CLASS="FILENAME"
173 >/etc/named.conf</TT
174 >.</P
175 ><P
176 ><B
177 CLASS="COMMAND"
178 >nsupdate</B
179 >
180 uses the
181 <TT
182 CLASS="OPTION"
183 >-y</TT
184 >
185 or
186 <TT
187 CLASS="OPTION"
188 >-k</TT
189 >
190 option to provide the shared secret needed to generate a TSIG record
191 for authenticating Dynamic DNS update requests.
192 These options are mutually exclusive.
193 With the
194 <TT
195 CLASS="OPTION"
196 >-k</TT
197 >
198 option,
199 <B
200 CLASS="COMMAND"
201 >nsupdate</B
202 >
203 reads the shared secret from the file
204 <TT
205 CLASS="PARAMETER"
206 ><I
207 >keyfile</I
208 ></TT
209 >,
210 whose name is of the form 
211 <TT
212 CLASS="FILENAME"
213 >K{name}.+157.+{random}.private</TT
214 >.
215 For historical
216 reasons, the file 
217 <TT
218 CLASS="FILENAME"
219 >K{name}.+157.+{random}.key</TT
220 >
221 must also be present.  When the
222 <TT
223 CLASS="OPTION"
224 >-y</TT
225 >
226 option is used, a signature is generated from
227 <TT
228 CLASS="PARAMETER"
229 ><I
230 >keyname:secret.</I
231 ></TT
232 >
233 <TT
234 CLASS="PARAMETER"
235 ><I
236 >keyname</I
237 ></TT
238 >
239 is the name of the key,
240 and
241 <TT
242 CLASS="PARAMETER"
243 ><I
244 >secret</I
245 ></TT
246 >
247 is the base64 encoded shared secret.
248 Use of the
249 <TT
250 CLASS="OPTION"
251 >-y</TT
252 >
253 option is discouraged because the shared secret is supplied as a command
254 line argument in clear text.
255 This may be visible in the output from
256 <SPAN
257 CLASS="CITEREFENTRY"
258 ><SPAN
259 CLASS="REFENTRYTITLE"
260 >ps</SPAN
261 >(1)</SPAN
262 >
263 or in a history file maintained by the user's shell.</P
264 ><P
265 >By default
266 <B
267 CLASS="COMMAND"
268 >nsupdate</B
269 >
270 uses UDP to send update requests to the name server.
271 The
272 <TT
273 CLASS="OPTION"
274 >-v</TT
275 >
276 option makes
277 <B
278 CLASS="COMMAND"
279 >nsupdate</B
280 >
281 use a TCP connection.
282 This may be preferable when a batch of update requests is made.</P
283 ></DIV
284 ><DIV
285 CLASS="REFSECT1"
286 ><A
287 NAME="AEN65"
288 ></A
289 ><H2
290 >INPUT FORMAT</H2
291 ><P
292 ><B
293 CLASS="COMMAND"
294 >nsupdate</B
295 >
296 reads input from
297 <TT
298 CLASS="PARAMETER"
299 ><I
300 >filename</I
301 ></TT
302 >
303 or standard input.
304 Each command is supplied on exactly one line of input.
305 Some commands are for administrative purposes.
306 The others are either update instructions or prerequisite checks on the
307 contents of the zone.
308 These checks set conditions that some name or set of
309 resource records (RRset) either exists or is absent from the zone.
310 These conditions must be met if the entire update request is to succeed.
311 Updates will be rejected if the tests for the prerequisite conditions fail.</P
312 ><P
313 >Every update request consists of zero or more prerequisites
314 and zero or more updates.
315 This allows a suitably authenticated update request to proceed if some
316 specified resource records are present or missing from the zone.
317 A blank input line (or the <B
318 CLASS="COMMAND"
319 >send</B
320 > command) causes the
321 accumulated commands to be sent as one Dynamic DNS update request to the
322 name server.</P
323 ><P
324 >The command formats and their meaning are as follows:
325 <P
326 ></P
327 ><DIV
328 CLASS="VARIABLELIST"
329 ><DL
330 ><DT
331 ><P
332 ><B
333 CLASS="COMMAND"
334 >server</B
335 >  {servername} [port]</P
336 ></DT
337 ><DD
338 ><P
339 >Sends all dynamic update requests to the name server
340 <TT
341 CLASS="PARAMETER"
342 ><I
343 >servername</I
344 ></TT
345 >.
346 When no server statement is provided,
347 <B
348 CLASS="COMMAND"
349 >nsupdate</B
350 >
351 will send updates to the master server of the correct zone.
352 The MNAME field of that zone's SOA record will identify the master
353 server for that zone.
354 <TT
355 CLASS="PARAMETER"
356 ><I
357 >port</I
358 ></TT
359 >
360 is the port number on
361 <TT
362 CLASS="PARAMETER"
363 ><I
364 >servername</I
365 ></TT
366 >
367 where the dynamic update requests get sent.
368 If no port number is specified, the default DNS port number of 53 is
369 used.</P
370 ></DD
371 ><DT
372 ><P
373 ><B
374 CLASS="COMMAND"
375 >local</B
376 >  {address} [port]</P
377 ></DT
378 ><DD
379 ><P
380 >Sends all dynamic update requests using the local
381 <TT
382 CLASS="PARAMETER"
383 ><I
384 >address</I
385 ></TT
386 >.
387
388 When no local statement is provided,
389 <B
390 CLASS="COMMAND"
391 >nsupdate</B
392 >
393 will send updates using an address and port chosen by the system.
394 <TT
395 CLASS="PARAMETER"
396 ><I
397 >port</I
398 ></TT
399 >
400 can additionally be used to make requests come from a specific port.
401 If no port number is specified, the system will assign one.&#13;</P
402 ></DD
403 ><DT
404 ><P
405 ><B
406 CLASS="COMMAND"
407 >zone</B
408 >  {zonename}</P
409 ></DT
410 ><DD
411 ><P
412 >Specifies that all updates are to be made to the zone
413 <TT
414 CLASS="PARAMETER"
415 ><I
416 >zonename</I
417 ></TT
418 >.
419 If no
420 <TT
421 CLASS="PARAMETER"
422 ><I
423 >zone</I
424 ></TT
425 >
426 statement is provided,
427 <B
428 CLASS="COMMAND"
429 >nsupdate</B
430 >
431 will attempt determine the correct zone to update based on the rest of the input.</P
432 ></DD
433 ><DT
434 ><P
435 ><B
436 CLASS="COMMAND"
437 >class</B
438 >  {classname}</P
439 ></DT
440 ><DD
441 ><P
442 >Specify the default class.
443 If no <TT
444 CLASS="PARAMETER"
445 ><I
446 >class</I
447 ></TT
448 > is specified the default class is
449 <TT
450 CLASS="PARAMETER"
451 ><I
452 >IN</I
453 ></TT
454 >.</P
455 ></DD
456 ><DT
457 ><P
458 ><B
459 CLASS="COMMAND"
460 >key</B
461 >  {name} {secret}</P
462 ></DT
463 ><DD
464 ><P
465 >Specifies that all updates are to be TSIG signed using the
466 <TT
467 CLASS="PARAMETER"
468 ><I
469 >keyname</I
470 ></TT
471 > <TT
472 CLASS="PARAMETER"
473 ><I
474 >keysecret</I
475 ></TT
476 > pair.
477 The <B
478 CLASS="COMMAND"
479 >key</B
480 > command
481 overrides any key specified on the command line via
482 <TT
483 CLASS="OPTION"
484 >-y</TT
485 > or <TT
486 CLASS="OPTION"
487 >-k</TT
488 >.</P
489 ></DD
490 ><DT
491 ><P
492 ><B
493 CLASS="COMMAND"
494 >prereq nxdomain</B
495 >  {domain-name}</P
496 ></DT
497 ><DD
498 ><P
499 >Requires that no resource record of any type exists with name
500 <TT
501 CLASS="PARAMETER"
502 ><I
503 >domain-name</I
504 ></TT
505 >.</P
506 ></DD
507 ><DT
508 ><P
509 ><B
510 CLASS="COMMAND"
511 >prereq yxdomain</B
512 >  {domain-name}</P
513 ></DT
514 ><DD
515 ><P
516 >Requires that
517 <TT
518 CLASS="PARAMETER"
519 ><I
520 >domain-name</I
521 ></TT
522 >
523 exists (has as at least one resource record, of any type).</P
524 ></DD
525 ><DT
526 ><P
527 ><B
528 CLASS="COMMAND"
529 >prereq nxrrset</B
530 >  {domain-name} [class] {type}</P
531 ></DT
532 ><DD
533 ><P
534 >Requires that no resource record exists of the specified
535 <TT
536 CLASS="PARAMETER"
537 ><I
538 >type</I
539 ></TT
540 >,
541 <TT
542 CLASS="PARAMETER"
543 ><I
544 >class</I
545 ></TT
546 >
547 and
548 <TT
549 CLASS="PARAMETER"
550 ><I
551 >domain-name</I
552 ></TT
553 >.
554 If
555 <TT
556 CLASS="PARAMETER"
557 ><I
558 >class</I
559 ></TT
560 >
561 is omitted, IN (internet) is assumed.</P
562 ></DD
563 ><DT
564 ><P
565 ><B
566 CLASS="COMMAND"
567 >prereq yxrrset</B
568 >  {domain-name} [class] {type}</P
569 ></DT
570 ><DD
571 ><P
572 >This requires that a resource record of the specified
573 <TT
574 CLASS="PARAMETER"
575 ><I
576 >type</I
577 ></TT
578 >,
579 <TT
580 CLASS="PARAMETER"
581 ><I
582 >class</I
583 ></TT
584 >
585 and
586 <TT
587 CLASS="PARAMETER"
588 ><I
589 >domain-name</I
590 ></TT
591 >
592 must exist.
593 If
594 <TT
595 CLASS="PARAMETER"
596 ><I
597 >class</I
598 ></TT
599 >
600 is omitted, IN (internet) is assumed.</P
601 ></DD
602 ><DT
603 ><P
604 ><B
605 CLASS="COMMAND"
606 >prereq yxrrset</B
607 >  {domain-name} [class] {type} {data...}</P
608 ></DT
609 ><DD
610 ><P
611 >The
612 <TT
613 CLASS="PARAMETER"
614 ><I
615 >data</I
616 ></TT
617 >
618 from each set of prerequisites of this form
619 sharing a common
620 <TT
621 CLASS="PARAMETER"
622 ><I
623 >type</I
624 ></TT
625 >,
626 <TT
627 CLASS="PARAMETER"
628 ><I
629 >class</I
630 ></TT
631 >,
632 and 
633 <TT
634 CLASS="PARAMETER"
635 ><I
636 >domain-name</I
637 ></TT
638 >
639 are combined to form a set of RRs.  This set of RRs must
640 exactly match the set of RRs existing in the zone at the
641 given 
642 <TT
643 CLASS="PARAMETER"
644 ><I
645 >type</I
646 ></TT
647 >,
648 <TT
649 CLASS="PARAMETER"
650 ><I
651 >class</I
652 ></TT
653 >,
654 and 
655 <TT
656 CLASS="PARAMETER"
657 ><I
658 >domain-name</I
659 ></TT
660 >.
661 The
662 <TT
663 CLASS="PARAMETER"
664 ><I
665 >data</I
666 ></TT
667 >
668 are written in the standard text representation of the resource record's
669 RDATA.</P
670 ></DD
671 ><DT
672 ><P
673 ><B
674 CLASS="COMMAND"
675 >update delete</B
676 >  {domain-name} [ttl] [class] [type  [data...]]</P
677 ></DT
678 ><DD
679 ><P
680 >Deletes any resource records named
681 <TT
682 CLASS="PARAMETER"
683 ><I
684 >domain-name</I
685 ></TT
686 >.
687 If
688 <TT
689 CLASS="PARAMETER"
690 ><I
691 >type</I
692 ></TT
693 >
694 and
695 <TT
696 CLASS="PARAMETER"
697 ><I
698 >data</I
699 ></TT
700 >
701 is provided, only matching resource records will be removed.
702 The internet class is assumed if
703 <TT
704 CLASS="PARAMETER"
705 ><I
706 >class</I
707 ></TT
708 >
709 is not supplied.  The
710 <TT
711 CLASS="PARAMETER"
712 ><I
713 >ttl</I
714 ></TT
715 >
716 is ignored, and is only allowed for compatibility.</P
717 ></DD
718 ><DT
719 ><P
720 ><B
721 CLASS="COMMAND"
722 >update add</B
723 >  {domain-name} {ttl} [class] {type} {data...}</P
724 ></DT
725 ><DD
726 ><P
727 >Adds a new resource record with the specified
728 <TT
729 CLASS="PARAMETER"
730 ><I
731 >ttl</I
732 ></TT
733 >,
734 <TT
735 CLASS="PARAMETER"
736 ><I
737 >class</I
738 ></TT
739 >
740 and
741 <TT
742 CLASS="PARAMETER"
743 ><I
744 >data</I
745 ></TT
746 >.</P
747 ></DD
748 ><DT
749 ><P
750 ><B
751 CLASS="COMMAND"
752 >show</B
753 > </P
754 ></DT
755 ><DD
756 ><P
757 >Displays the current message, containing all of the prerequisites and
758 updates specified since the last send.</P
759 ></DD
760 ><DT
761 ><P
762 ><B
763 CLASS="COMMAND"
764 >send</B
765 > </P
766 ></DT
767 ><DD
768 ><P
769 >Sends the current message.  This is equivalent to entering a blank line.</P
770 ></DD
771 ></DL
772 ></DIV
773 >&#13;</P
774 ><P
775 >Lines beginning with a semicolon are comments and are ignored.</P
776 ></DIV
777 ><DIV
778 CLASS="REFSECT1"
779 ><A
780 NAME="AEN232"
781 ></A
782 ><H2
783 >EXAMPLES</H2
784 ><P
785 >The examples below show how
786 <B
787 CLASS="COMMAND"
788 >nsupdate</B
789 >
790 could be used to insert and delete resource records from the
791 <SPAN
792 CLASS="TYPE"
793 >example.com</SPAN
794 >
795 zone.
796 Notice that the input in each example contains a trailing blank line so that
797 a group of commands are sent as one dynamic update request to the
798 master name server for
799 <SPAN
800 CLASS="TYPE"
801 >example.com</SPAN
802 >.
803
804 <PRE
805 CLASS="PROGRAMLISTING"
806 ># nsupdate
807 &#62; update delete oldhost.example.com A
808 &#62; update add newhost.example.com 86400 A 172.16.1.1
809 &#62; send</PRE
810 ></P
811 ><P
812 >Any A records for
813 <SPAN
814 CLASS="TYPE"
815 >oldhost.example.com</SPAN
816 >
817 are deleted.
818 and an A record for
819 <SPAN
820 CLASS="TYPE"
821 >newhost.example.com</SPAN
822 >
823 it IP address 172.16.1.1 is added.
824 The newly-added record has a 1 day TTL (86400 seconds)
825 <PRE
826 CLASS="PROGRAMLISTING"
827 ># nsupdate
828 &#62; prereq nxdomain nickname.example.com
829 &#62; update add nickname.example.com 86400 CNAME somehost.example.com
830 &#62; send</PRE
831 ></P
832 ><P
833 >The prerequisite condition gets the name server to check that there
834 are no resource records of any type for
835 <SPAN
836 CLASS="TYPE"
837 >nickname.example.com</SPAN
838 >.
839
840 If there are, the update request fails.
841 If this name does not exist, a CNAME for it is added.
842 This ensures that when the CNAME is added, it cannot conflict with the
843 long-standing rule in RFC1034 that a name must not exist as any other
844 record type if it exists as a CNAME.
845 (The rule has been updated for DNSSEC in RFC2535 to allow CNAMEs to have
846 SIG, KEY and NXT records.)</P
847 ></DIV
848 ><DIV
849 CLASS="REFSECT1"
850 ><A
851 NAME="AEN245"
852 ></A
853 ><H2
854 >FILES</H2
855 ><P
856 ></P
857 ><DIV
858 CLASS="VARIABLELIST"
859 ><DL
860 ><DT
861 ><TT
862 CLASS="CONSTANT"
863 >/etc/resolv.conf</TT
864 ></DT
865 ><DD
866 ><P
867 >used to identify default name server</P
868 ></DD
869 ><DT
870 ><TT
871 CLASS="CONSTANT"
872 >K{name}.+157.+{random}.key</TT
873 ></DT
874 ><DD
875 ><P
876 >base-64 encoding of HMAC-MD5 key created by
877 <SPAN
878 CLASS="CITEREFENTRY"
879 ><SPAN
880 CLASS="REFENTRYTITLE"
881 >dnssec-keygen</SPAN
882 >(8)</SPAN
883 >.</P
884 ></DD
885 ><DT
886 ><TT
887 CLASS="CONSTANT"
888 >K{name}.+157.+{random}.private</TT
889 ></DT
890 ><DD
891 ><P
892 >base-64 encoding of HMAC-MD5 key created by
893 <SPAN
894 CLASS="CITEREFENTRY"
895 ><SPAN
896 CLASS="REFENTRYTITLE"
897 >dnssec-keygen</SPAN
898 >(8)</SPAN
899 >.</P
900 ></DD
901 ></DL
902 ></DIV
903 ></DIV
904 ><DIV
905 CLASS="REFSECT1"
906 ><A
907 NAME="AEN269"
908 ></A
909 ><H2
910 >SEE ALSO</H2
911 ><P
912 ><SPAN
913 CLASS="CITEREFENTRY"
914 ><SPAN
915 CLASS="REFENTRYTITLE"
916 >RFC2136</SPAN
917 ></SPAN
918 >,
919 <SPAN
920 CLASS="CITEREFENTRY"
921 ><SPAN
922 CLASS="REFENTRYTITLE"
923 >RFC3007</SPAN
924 ></SPAN
925 >,
926 <SPAN
927 CLASS="CITEREFENTRY"
928 ><SPAN
929 CLASS="REFENTRYTITLE"
930 >RFC2104</SPAN
931 ></SPAN
932 >,
933 <SPAN
934 CLASS="CITEREFENTRY"
935 ><SPAN
936 CLASS="REFENTRYTITLE"
937 >RFC2845</SPAN
938 ></SPAN
939 >,
940 <SPAN
941 CLASS="CITEREFENTRY"
942 ><SPAN
943 CLASS="REFENTRYTITLE"
944 >RFC1034</SPAN
945 ></SPAN
946 >,
947 <SPAN
948 CLASS="CITEREFENTRY"
949 ><SPAN
950 CLASS="REFENTRYTITLE"
951 >RFC2535</SPAN
952 ></SPAN
953 >,
954 <SPAN
955 CLASS="CITEREFENTRY"
956 ><SPAN
957 CLASS="REFENTRYTITLE"
958 >named</SPAN
959 >(8)</SPAN
960 >,
961 <SPAN
962 CLASS="CITEREFENTRY"
963 ><SPAN
964 CLASS="REFENTRYTITLE"
965 >dnssec-keygen</SPAN
966 >(8)</SPAN
967 >.&#13;</P
968 ></DIV
969 ><DIV
970 CLASS="REFSECT1"
971 ><A
972 NAME="AEN290"
973 ></A
974 ><H2
975 >BUGS</H2
976 ><P
977 >The TSIG key is redundantly stored in two separate files.
978 This is a consequence of nsupdate using the DST library
979 for its cryptographic operations, and may change in future
980 releases.</P
981 ></DIV
982 ></BODY
983 ></HTML
984 >