Hello there! You probably found this page
because you typed "hifn 7751" into your favorite search engine. We've
noticed, finally, and I'm updating this page to make things more
informative. I'm interested in, finally, updating the Windows driver
to work on at least 32-bit Windows 2000/XP/Vista/7, though it will not
happen immediately. Watch this space for developments. -lee
Hi/fn 7751 Driver for NT and Unix
1. What is it?
This driver is a open-source, beta-quality driver for the Hi/fn 7751
encryption/compression coprocessor. It supports most 7751 add-in boards,
including:
- Hi/fn's own 7751 Reference Hardware (DRAM)
- Invertex AEON [no longer made] (DRAM or SRAM) [1]
- GTGI PowerCrypt (512K SRAM)
- Other add-in boards used in VPN appiances, made by NETSEC and others.
[1] The Aeon boards may require changes to
the onboard EEPROM to work with this driver. The other boards listed use the
Hi/fn Reference Hardware's PCI ID, and use an export key of all zeroes -- I
do not currently know if Invertex did things differently, as the one Aeon
board I've seen was received at GTGI with a zeroed EEPROM.
We currently support the following OSes:
- Windows NT 4.0
FreeBSD 2.x and 4.x/5.xnot recommended, see below
Linux 2.2.x and 2.4.x (any distribution)not recommended, see below
2. Getting the driver
The latest version of the code is always available by anonymous CVS from
cvs.hifn7751.sourceforge.net:/cvsroot/hifn7751. You'll want to check out
the src module.
If you're unfamiliar with CVS, or don't have the time or desire to track the
latest code, drops of the code are made on a semi-regular basis. The can be
found on our project page
here on Sourceforge.
Precompiled binaries will be available soon.
3. Building the driver
These instructions assume you have the driver source unpacked or a
On Windows NT:
- Copy the .c and .h files from the PORTABLE directory into the NTSPECFC and NTUMI directories.
- Run BUILD -zE in the NTSPECFC directory. Once it finishes, go to the NTUMI directory and run the build there.
- The finished drivers will be in the I386\ (where build-type is FREE OR CHECKED, depending on which environment you
chose) in each subdirectory. Copy each one into %NtDir%\SYSTEM32\DRIVERS.
- Run the two REG files in the NTSPECFC directory, either by double-clicking them from Windows Explorer, or rom the command line using
START. This will add two Services entries under HKeyLocalMachine\System\CurrentControlSet:
PwrCrypt
PcrptUMI
Both are normal kernel-mode drivers, set to be started manually. PcrptUMI depends on PwrCrypt.
(The names are the originals used for the driver, and will be changed eventually to something more generic.)
- When I get the time, this will all be changed to run more smoothly.
In particular, the "PORTABLE" directory can likly be built as a static
library. I will also include project and solution files from Visual
Studio 6 and Visual Studio 2008 that allow building with the
DDKBUILD script.
4. Stuff I need to do
Since I haven't updated this code in a long time, there are some
things I need to do to it to make it presentable:
- The NT port of the driver is very old, and is in serious need of a
cleanup. In particular, the whole thing needs to be ported to WDM, the
build structure changed as I noted above, and the user and kernel modules
combined into a unified whole. The original plan was that the first driver
provided a kernel-mode DLL interface, and the second provided an I/O Manager
interface (a device object); since we're an actual device and really
shouldn't be getting called at anything except DISPATCH_LEVEL, we should
only be communicating by DeviceIoControl IRPs no matter what.
- None of the drivers do board memory type and size auto-detection. The
7751 supports several different configurations of context memory and memory
management, and at the moment, the settings must be changed manually. The
Invertex boards in particular came in both DRAM and SRAM versions, each with
different memory options available. OpenBSD has working auto-detect code,
which should be easy enough to integrate once we verify that READ RAM is
usable. This is not an issue on the 795x since they do not use or support
external context RAM, and the RAM that is present is mainly used by
the LZS processor.
- Drop Unix support completely. The BSDs have their own driver
that is well-supported and has stood up to years of scrutiny, and GTGI also
has a port of the OpenBSD driver available for people that want it. Also,
newer versions of Linux 2.6 support the Hifn 795x boards directly.
Add support for the Hifn 795x series, including support for the true
RNG and the public-key offload system. Eventually, I'd like the public-key
stuff to be supported as an RSA offload module to Windows' CAPI subsystem
(which isn't nearly as nice as OpenBSD's cryptodev system -- it's basically
a clone of PKCS#11, meant for use by things like web browsers -- but it's
there, so why not).
-
- The later HIPP-only processors, such as the 7814, 7851 and 8100 series,
aren't supported at all. We can support the ones that have code in the OpenBSD
tree, but no others. Also, the GMII-based accelerators will probably never be
supported, as they work entirely differently.
5. If you have problems...
If you are having trouble with the driver, email me at the address below.
I'll try to help as quickly as I can.
6. Credits
This page is maintained by Lee Cremeans <leec@gtgi.com>.
The drivers were provided to the open source community by
Global Technologies Group, Inc., and bear
this copyright notice:
(C) 1999-2001 Global Technologies Group, Inc.
(C) 1998-1999 Ashley-Laurent, Inc.
All rights reserved.
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions
are met:
1. Redistributions of source code must retain the above copyright
notice, this list of conditions and the following disclaimer.
2. Redistributions in binary form must reproduce the above copyright
notice, this list of conditions and the following disclaimer in the
documentation and/or other materials provided with the distribution.
THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
SUCH DAMAGE.
Last modified 30 September 2009.