This "util" directory is provided for utility header files and implementations that are internally used in the DNS library (libdns++). The functionality provided in these tools is generally available in other external or perhaps system supplied libraries. The basic development policy of BIND 10 is to avoid "reinventing wheels" unless they belong to the exact technology area that BIND 10 targets (e.g., DNS). However, libdns++ is a very core part of BIND 10, and is also intended to be used as a public library, so dependency from libdns++ to external libraries should be minimized. The utilities in this directory are provided balancing two policies and as a kind of compromise. The header files in this directory are therefore not intended to be installed. Likewise, classes and public functions defined in this directory are not intended to be used outside libdns++, although we cannot prohibit it at the language level. They are not even expected to be used in other modules of BIND 10 than libdns++ based on the basic policy explained above. Other modules should only rely on the DNS specific interface that may internally rely on these utility interfaces, or should use external libraries if the other module really needs to use the utility feature directly. There seem to be some violations as of this writing, but we should eventually fix it. A notable example is the SHA1 interfaces. They are defined here in the context of NSEC3 processing, but, in fact, they are not even used from any of the other libdns++ classes or functions. The SHA1 related interfaces should be moved to the application that needs it or the application should only access it through DNS specific interfaces defined in libdns++.