rename target/linux/generic-2.6 to generic
[15.05/openwrt.git] / target / linux / generic / files / crypto / ocf / README
1 README - ocf-linux-20100325
2 ---------------------------
3
4 This README provides instructions for getting ocf-linux compiled and
5 operating in a generic linux environment.  For other information you
6 might like to visit the home page for this project:
7
8     http://ocf-linux.sourceforge.net/
9
10 Adding OCF to linux
11 -------------------
12
13     Not much in this file for now,  just some notes.  I usually build
14     the ocf support as modules but it can be built into the kernel as
15     well.  To use it:
16
17     * mknod /dev/crypto c 10 70
18
19     * to add OCF to your kernel source,  you have two options.  Apply
20       the kernel specific patch:
21
22           cd linux-2.4*; gunzip < ocf-linux-24-XXXXXXXX.patch.gz | patch -p1
23           cd linux-2.6*; gunzip < ocf-linux-26-XXXXXXXX.patch.gz | patch -p1
24     
25       if you do one of the above,  then you can proceed to the next step,
26       or you can do the above process by hand with using the patches against
27       linux-2.4.35 and 2.6.33 to include the ocf code under crypto/ocf.
28       Here's how to add it:
29
30       for 2.4.35 (and later)
31
32           cd linux-2.4.35/crypto
33           tar xvzf ocf-linux.tar.gz
34           cd ..
35           patch -p1 < crypto/ocf/patches/linux-2.4.35-ocf.patch
36
37       for 2.6.23 (and later),  find the kernel patch specific (or nearest)
38       to your kernel versions and then:
39
40           cd linux-2.6.NN/crypto
41           tar xvzf ocf-linux.tar.gz
42           cd ..
43           patch -p1 < crypto/ocf/patches/linux-2.6.NN-ocf.patch
44
45       It should be easy to take this patch and apply it to other more
46       recent versions of the kernels.  The same patches should also work
47       relatively easily on kernels as old as 2.6.11 and 2.4.18.
48       
49     * under 2.4 if you are on a non-x86 platform,  you may need to:
50
51         cp linux-2.X.x/include/asm-i386/kmap_types.h linux-2.X.x/include/asm-YYY
52
53       so that you can build the kernel crypto support needed for the cryptosoft
54       driver.
55
56     * For simplicity you should enable all the crypto support in your kernel
57       except for the test driver.  Likewise for the OCF options.  Do not
58       enable OCF crypto drivers for HW that you do not have (for example
59       ixp4xx will not compile on non-Xscale systems).
60
61     * make sure that cryptodev.h (from ocf-linux.tar.gz) is installed as
62       crypto/cryptodev.h in an include directory that is used for building
63       applications for your platform.  For example on a host system that
64       might be:
65
66               /usr/include/crypto/cryptodev.h
67
68     * patch your openssl-0.9.8n code with the openssl-0.9.8n.patch.
69       (NOTE: there is no longer a need to patch ssh). The patch is against:
70       openssl-0_9_8e
71
72       If you need a patch for an older version of openssl,  you should look
73       to older OCF releases.  This patch is unlikely to work on older
74       openssl versions.
75
76       openssl-0.9.8n.patch
77                 - enables --with-cryptodev for non BSD systems
78                 - adds -cpu option to openssl speed for calculating CPU load
79                   under linux
80                 - fixes null pointer in openssl speed multi thread output.
81                 - fixes test keys to work with linux crypto's more stringent
82                   key checking.
83                 - adds MD5/SHA acceleration (Ronen Shitrit), only enabled
84                   with the --with-cryptodev-digests option
85                 - fixes bug in engine code caching.
86
87     * build crypto-tools-XXXXXXXX.tar.gz if you want to try some of the BSD
88       tools for testing OCF (ie., cryptotest).
89
90 How to load the OCF drivers
91 ---------------------------
92
93     First insert the base modules:
94
95         insmod ocf
96         insmod cryptodev
97
98     You can then install the software OCF driver with:
99
100         insmod cryptosoft
101
102     and one or more of the OCF HW drivers with:
103
104         insmod safe
105         insmod hifn7751
106         insmod ixp4xx
107         ...
108
109     all the drivers take a debug option to enable verbose debug so that
110     you can see what is going on.  For debug you load them as:
111
112         insmod ocf crypto_debug=1
113         insmod cryptodev cryptodev_debug=1
114         insmod cryptosoft swcr_debug=1
115
116     You may load more than one OCF crypto driver but then there is no guarantee
117     as to which will be used.
118
119     You can also enable debug at run time on 2.6 systems with the following:
120
121         echo 1 > /sys/module/ocf/parameters/crypto_debug
122         echo 1 > /sys/module/cryptodev/parameters/cryptodev_debug
123         echo 1 > /sys/module/cryptosoft/parameters/swcr_debug
124         echo 1 > /sys/module/hifn7751/parameters/hifn_debug
125         echo 1 > /sys/module/safe/parameters/safe_debug
126         echo 1 > /sys/module/ixp4xx/parameters/ixp_debug
127         ...
128
129 Testing the OCF support
130 -----------------------
131
132     run "cryptotest",  it should do a short test for a couple of
133     des packets.  If it does everything is working.
134
135     If this works,  then ssh will use the driver when invoked as:
136
137         ssh -c 3des username@host
138
139     to see for sure that it is operating, enable debug as defined above.
140
141     To get a better idea of performance run:
142
143         cryptotest 100 4096
144
145     There are more options to cryptotest,  see the help.
146
147     It is also possible to use openssl to test the speed of the crypto
148     drivers.
149
150         openssl speed -evp des -engine cryptodev -elapsed
151         openssl speed -evp des3 -engine cryptodev -elapsed
152         openssl speed -evp aes128 -engine cryptodev -elapsed
153
154     and multiple threads (10) with:
155
156         openssl speed -evp des -engine cryptodev -elapsed -multi 10
157         openssl speed -evp des3 -engine cryptodev -elapsed -multi 10
158         openssl speed -evp aes128 -engine cryptodev -elapsed -multi 10
159
160     for public key testing you can try:
161
162         cryptokeytest
163         openssl speed -engine cryptodev rsa -elapsed
164         openssl speed -engine cryptodev dsa -elapsed
165
166 David McCullough
167 david_mccullough@mcafee.com