History log of /src/sys/opencrypto/cryptosoft_xform.c |
Revision | | Date | Author | Comments |
1.30 |
| 30-Jun-2020 |
riastradh | Rename enc_xform_rijndael128 -> enc_xform_aes.
Update netipsec dependency.
|
1.29 |
| 29-Jun-2020 |
riastradh | opencrypto: Switch from legacy rijndael API to new aes API.
While here, apply various rijndael->aes renames, reduce the size of aesxcbc_ctx by 480 bytes, and convert some malloc->kmem.
Leave in the symbol enc_xform_rijndael128 for now, though, so this doesn't break any kernel ABI.
|
1.28 |
| 12-Oct-2019 |
christos | add (void *) intermediate casts to elide gcc function cast warnings. This is the simplest solution; choices: - add pragmas, complex and ugly (need to be gcc-specific) - add -Wno to COPTS. Needs to be done in many makefiles because of rump - add intermediate functions: slows down things
|
1.27 |
| 27-Nov-2014 |
christos | branches: 1.27.20; simplify, no functional change
|
1.26 |
| 02-Feb-2013 |
christos | fix compilation
|
1.25 |
| 28-Nov-2011 |
tls | branches: 1.25.8; Remove arc4random() and arc4randbytes() from the kernel API. Replace arc4random() hacks in rump with stubs that call the host arc4random() to get numbers that are hopefully actually random (arc4random() keyed with stack junk is not). This should fix some of the currently failing anita tests -- we should no longer generate duplicate "random" MAC addresses in the test environment.
|
1.24 |
| 07-Jun-2011 |
drochner | branches: 1.24.2; use a simple counter as IV for AES-GMAC as suggested in RFC4543
|
1.23 |
| 26-May-2011 |
drochner | branches: 1.23.2; pull in AES-GCM/GMAC support from OpenBSD This is still somewhat experimental. Tested between 2 similar boxes so far. There is much potential for performance improvement. For now, I've changed the gmac code to accept any data alignment, as the "char *" pointer suggests. As the code is practically used, 32-bit alignment can be assumed, at the cost of data copies. I don't know whether bytewise access or copies are worse performance-wise. For efficient implementations using SSE2 instructions on x86, even stricter alignment requirements might arise.
|
1.22 |
| 24-May-2011 |
drochner | copy AES-XCBC-MAC support from KAME IPSEC to FAST_IPSEC For this to fit, an API change in cryptosoft was adopted from OpenBSD (addition of a "Setkey" method to hashes) which was done for GCM/GMAC support there, so it might be useful in the future anyway. tested against KAME IPSEC AFAICT, FAST_IPSEC now supports as much as KAME.
|
1.21 |
| 24-May-2011 |
drochner | move the "context size" struct member (which is a pure software implementation thing) from the abstract xform descriptor to the cryptosoft implementation part -- for sanity, and now clients of opencrypto don't depend on headers of cipher implementations anymore
|
1.20 |
| 24-May-2011 |
drochner | Change the way the IV is generated for AES-CTR: use a simple counter instead of arc4random(). AES-CTR is sensitive against IV recurrence (with the same key / nonce), and a random number doesn't give that guarantee. This needs a little API change in cryptosoft -- I've suggested it to Open/FreeBSD, might change it depending on feedback. Thanks to Steven Bellovin for hints.
|
1.19 |
| 23-May-2011 |
drochner | -remove references to crypto/arc4/arc4.* -- the code isn't used anywhere afaics (The confusion comes probably from use of arc4random() at various places, but this lives in libkern and doesn't share code with the former.) -g/c non-implementation of arc4 encryption in swcrypto(4) -remove special casing of ARC4 in crypto(4) -- the point is that it doesn't use an IV, and this fact is made explicit by the new "ivsize" property of xforms
|
1.18 |
| 23-May-2011 |
drochner | add an AES-CTR xform, from OpenBSD
|
1.17 |
| 23-May-2011 |
drochner | -in the descriptor for encryption xforms, split the "blocksize" field into "blocksize" and "IV size" -add an "reinit" function pointer which, if set, means that the xform does its IV handling itself and doesn't want the default CBC handling by the framework (poor name, but left that way to avoid unecessary differences) This syncs with Open/FreeBSD, purpose is to allow non-CBC transforms. Refer to ivsize instead of blocksize where appropriate. (At this point, blocksize and ivsize are identical.)
|
1.16 |
| 21-May-2011 |
drochner | check key size on initialization -- othwise the rijndael code can fail silently
|
1.15 |
| 05-May-2011 |
drochner | support camellia-cbc by swcrypt
|
1.14 |
| 24-Feb-2011 |
drochner | small modifications in dealing with the unknown result size of compression/ decompression: -seperate the IPCOMP specific rule that compression must not grow the data from general compression semantics: Introduce a special name CRYPTO_DEFLATE_COMP_NOGROW/comp_algo_deflate_nogrow to describe the IPCOMP semantics and use it there. (being here, fix the check so that equal size is considered failure as well as required by RFC2393) Customers of CRYPTO_DEFLATE_COMP/comp_algo_deflate now always get deflated data back, even if they are not smaller than the original. -allow to pass a "size hint" to the DEFLATE decompression function which is used for the initial buffer allocation. Due to the changes done there, additional allocations and extra copies are avoided if the initial allocation is sufficient. Set the size hint to MCLBYTES (=2k) in IPCOMP which should be good for many use cases.
|
1.13 |
| 18-Feb-2011 |
drochner | more "const"
|
1.12 |
| 25-Mar-2009 |
darran | branches: 1.12.4; 1.12.6; 1.12.8; Fixes PR kern/41069 and PR kern/41070.
Extends the Opencrypto API to allow the destination buffer size to be specified when its not the same size as the input buffer (i.e. for operations like compress and decompress). The crypto_op and crypt_n_op structures gain a u_int dst_len field. The session_op structure gains a comp_alg field to specify a compression algorithm. Moved four ioctls to new ids; CIOCGSESSION, CIOCNGSESSION, CIOCCRYPT, and CIOCNCRYPTM. Added four backward compatible ioctls; OCIOCGSESSION, OCIOCNGSESSION, OCIOCCRYPT, and OCIOCNCRYPTM.
Backward compatibility is maintained in ocryptodev.h and ocryptodev.c which implement the original ioctls and set dst_len and comp_alg to 0.
Adds user-space access to compression features.
Adds software gzip support (CRYPTO_GZIP_COMP).
Adds the fast version of crc32 from zlib to libkern. This should be generally useful and provide a place to start normalizing the various crc32 routines in the kernel. The crc32 routine is used in this patch to support GZIP.
With input and support from tls@NetBSD.org.
|
1.11 |
| 18-Mar-2009 |
cegger | bzero -> memset
|
1.10 |
| 14-Mar-2009 |
dsl | Change about 4500 of the K&R function definitions to ANSI ones. There are still about 1600 left, but they have ',' or /* ... */ in the actual variable definitions - which my awk script doesn't handle. There are also many that need () -> (void). (The script does handle misordered arguments.)
|
1.9 |
| 17-Dec-2008 |
cegger | branches: 1.9.2; kill MALLOC and FREE macros.
|
1.8 |
| 04-Feb-2008 |
tls | branches: 1.8.6; 1.8.10; 1.8.18; 1.8.20; 1.8.26; Rework opencrypto to use a spin mutex (crypto_mtx) instead of "splcrypto" (actually splnet) and condvars instead of tsleep/wakeup. Fix a few miscellaneous problems and add some debugging printfs while there.
Restore set of CRYPTO_F_DONE in crypto_done() which was lost at some point after this code came from FreeBSD -- it made it impossible to wait properly for a condition.
Add flags analogous to the "crp" flags to the key operation's krp struct. Add a new flag, CRYPTO_F_ONRETQ which tells us a request finished before the kthread had a chance to dequeue it and call its callback -- this was letting requests stick on the queues before even though done and copied out.
Callers of crypto_newsession() or crypto_freesession() must now take the mutex. Change netipsec to do so. Dispatch takes the mutex itself as needed.
This was tested fairly extensively with the cryptosoft backend and lightly with a new hardware driver. It has not been tested with FAST_IPSEC; I am unable to ascertain whether FAST_IPSEC currently works at all in our tree.
pjd@FreeBSD.ORG, ad@NetBSD.ORG, and darran@snark.us pointed me in the right direction several times in the course of this. Remaining bugs are mine alone.
|
1.7 |
| 02-Feb-2008 |
tls | From Darran Hunt at Coyote Point: don't truncate HMAC to 96 bits unless actually asked to.
Fixed in FreeBSD a while ago, discussed on tech-kern and tech-crypto.
|
1.6 |
| 01-Feb-2008 |
tls | don't allocate AES keys with M_WAITOK!
|
1.5 |
| 04-Mar-2007 |
christos | branches: 1.5.16; 1.5.22; Kill caddr_t; there will be some MI fallout, but it will be fixed shortly.
|
1.4 |
| 16-Nov-2006 |
christos | branches: 1.4.4; __unused removal on arguments; approved by core.
|
1.3 |
| 27-Oct-2006 |
christos | Merge kernel and userland rmd160 and sha2 implementation. XXX: We still install rmd160.h and sha2.h in /usr/include/crypto, unlike the other hash functions which get installed in /usr/include for compatibility.
|
1.2 |
| 12-Oct-2006 |
christos | - sprinkle __unused on function decls. - fix a couple of unused bugs - no more -Wno-unused for i386
|
1.1 |
| 25-Nov-2005 |
thorpej | branches: 1.1.2; 1.1.4; 1.1.22; 1.1.26; 1.1.28; - De-couple the software crypto implementation from the rest of the framework. There is no need to waste the space if you are only using algoritms provided by hardware accelerators. To get the software implementations, add "pseudo-device swcr" to your kernel config. - Lazily initialize the opencrypto framework when crypto drivers (either hardware or swcr) register themselves with the framework.
|
1.1.28.2 |
| 10-Dec-2006 |
yamt | sync with head.
|
1.1.28.1 |
| 22-Oct-2006 |
yamt | sync with head
|
1.1.26.1 |
| 18-Nov-2006 |
ad | Sync with head.
|
1.1.22.5 |
| 04-Feb-2008 |
yamt | sync with head.
|
1.1.22.4 |
| 03-Sep-2007 |
yamt | sync with head.
|
1.1.22.3 |
| 30-Dec-2006 |
yamt | sync with head.
|
1.1.22.2 |
| 21-Jun-2006 |
yamt | sync with head.
|
1.1.22.1 |
| 25-Nov-2005 |
yamt | file cryptosoft_xform.c was added on branch yamt-lazymbuf on 2006-06-21 15:12:02 +0000
|
1.1.4.2 |
| 11-Dec-2005 |
christos | Sync with head.
|
1.1.4.1 |
| 25-Nov-2005 |
christos | file cryptosoft_xform.c was added on branch ktrace-lwp on 2005-12-11 10:29:36 +0000
|
1.1.2.2 |
| 29-Nov-2005 |
yamt | sync with head.
|
1.1.2.1 |
| 25-Nov-2005 |
yamt | file cryptosoft_xform.c was added on branch yamt-readahead on 2005-11-29 21:23:33 +0000
|
1.4.4.1 |
| 12-Mar-2007 |
rmind | Sync with HEAD.
|
1.5.22.1 |
| 18-Feb-2008 |
mjf | Sync with HEAD.
|
1.5.16.1 |
| 23-Mar-2008 |
matt | sync with HEAD
|
1.8.26.1 |
| 20-May-2011 |
matt | bring matt-nb5-mips64 up to date with netbsd-5-1-RELEASE (except compat).
|
1.8.20.1 |
| 03-May-2009 |
snj | Pull up following revision(s) (requested by tls in ticket #611): sys/lib/libkern/Makefile: patch sys/lib/libkern/crc32.c: revision 1.1 sys/lib/libkern/crc32.h: revision 1.1 sys/lib/libkern/libkern.h: revision 1.89 sys/lib/libkern/arch/i386/Makefile.inc: revision 1.28 sys/net/zlib.h: revision 1.14 via patch sys/opencrypto/crypto.c: revision 1.33 sys/opencrypto/cryptodev.c: revision 1.46 sys/opencrypto/cryptodev.h: revision 1.16 sys/opencrypto/cryptosoft.c: revision 1.24 sys/opencrypto/cryptosoft.h: revision 1.6 sys/opencrypto/deflate.h: revision 1.6 sys/opencrypto/cryptosoft_xform.c: revision 1.12 sys/opencrypto/deflate.c: revision 1.13 sys/opencrypto/files.opencrypto: revision 1.20 sys/opencrypto/ocryptodev.c: revision 1.1 sys/opencrypto/ocryptodev.h: revision 1.1 sys/opencrypto/xform.c: revision 1.18 sys/opencrypto/xform.h: revision 1.10 Fixes PR kern/41069 and PR kern/41070.
Extends the Opencrypto API to allow the destination buffer size to be specified when its not the same size as the input buffer (i.e. for operations like compress and decompress). The crypto_op and crypt_n_op structures gain a u_int dst_len field. The session_op structure gains a comp_alg field to specify a compression algorithm. Moved four ioctls to new ids; CIOCGSESSION, CIOCNGSESSION, CIOCCRYPT, and CIOCNCRYPTM. Added four backward compatible ioctls; OCIOCGSESSION, OCIOCNGSESSION, OCIOCCRYPT, and OCIOCNCRYPTM.
Backward compatibility is maintained in ocryptodev.h and ocryptodev.c which implement the original ioctls and set dst_len and comp_alg to 0.
Adds user-space access to compression features.
Adds software gzip support (CRYPTO_GZIP_COMP).
Adds the fast version of crc32 from zlib to libkern. This should be generally useful and provide a place to start normalizing the various crc32 routines in the kernel. The crc32 routine is used in this patch to support GZIP.
With input and support from tls@NetBSD.org.
|
1.8.18.2 |
| 28-Apr-2009 |
skrll | Sync with HEAD.
|
1.8.18.1 |
| 19-Jan-2009 |
skrll | Sync with HEAD.
|
1.8.10.1 |
| 04-May-2009 |
yamt | sync with head.
|
1.8.6.1 |
| 17-Jan-2009 |
mjf | Sync with HEAD.
|
1.9.2.1 |
| 13-May-2009 |
jym | Sync with HEAD.
Commit is split, to avoid a "too many arguments" protocol error.
|
1.12.8.1 |
| 05-Mar-2011 |
bouyer | Sync with HEAD
|
1.12.6.1 |
| 06-Jun-2011 |
jruoho | Sync with HEAD.
|
1.12.4.3 |
| 12-Jun-2011 |
rmind | sync with head
|
1.12.4.2 |
| 31-May-2011 |
rmind | sync with head
|
1.12.4.1 |
| 05-Mar-2011 |
rmind | sync with head
|
1.23.2.1 |
| 23-Jun-2011 |
cherry | Catchup with rmind-uvmplock merge.
|
1.24.2.2 |
| 22-May-2014 |
yamt | sync with head.
for a reference, the tree before this commit was tagged as yamt-pagecache-tag8.
this commit was splitted into small chunks to avoid a limitation of cvs. ("Protocol error: too many arguments")
|
1.24.2.1 |
| 17-Apr-2012 |
yamt | sync with head
|
1.25.8.2 |
| 03-Dec-2017 |
jdolecek | update from HEAD
|
1.25.8.1 |
| 25-Feb-2013 |
tls | resync with head
|
1.27.20.1 |
| 13-Apr-2020 |
martin | Mostly merge changes from HEAD upto 20200411
|