aboutsummaryrefslogtreecommitdiff
path: root/sys/opencrypto
Commit message (Collapse)AuthorAgeFilesLines
* Use the correct number of arguments for theMark Johnston2015-05-251-8/+8
| | | | | | | | | | opencrypto:deflate:deflate_global:bad DTrace probe, which is defined to have MFC after: 1 week Notes: svn path=/head/; revision=283511
* Move zlib.c from net to libkern.Craig Rodrigues2015-04-222-3/+3
| | | | | | | | | | | | | | | It is not network-specific code and would be better as part of libkern instead. Move zlib.h and zutil.h from net/ to sys/ Update includes to use sys/zlib.h and sys/zutil.h instead of net/ Submitted by: Steve Kiernan stevek@juniper.net Obtained from: Juniper Networks, Inc. GitHub Pull Request: https://github.com/freebsd/freebsd/pull/28 Relnotes: yes Notes: svn path=/head/; revision=281855
* add the define to properly guard this header..John-Mark Gurney2015-04-071-0/+1
| | | | | | | Sponsored by: Netflix, Inc. Notes: svn path=/head/; revision=281196
* Add some new modes to OpenCrypto. These modes are AES-ICM (can be usedJohn-Mark Gurney2014-12-1211-446/+1607
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | for counter mode), and AES-GCM. Both of these modes have been added to the aesni module. Included is a set of tests to validate that the software and aesni module calculate the correct values. These use the NIST KAT test vectors. To run the test, you will need to install a soon to be committed port, nist-kat that will install the vectors. Using a port is necessary as the test vectors are around 25MB. All the man pages were updated. I have added a new man page, crypto.7, which includes a description of how to use each mode. All the new modes and some other AES modes are present. It would be good for someone else to go through and document the other modes. A new ioctl was added to support AEAD modes which AES-GCM is one of them. Without this ioctl, it is not possible to test AEAD modes from userland. Add a timing safe bcmp for use to compare MACs. Previously we were using bcmp which could leak timing info and result in the ability to forge messages. Add a minor optimization to the aesni module so that single segment mbufs don't get copied and instead are updated in place. The aesni module needs to be updated to support blocked IO so segmented mbufs don't have to be copied. We require that the IV be specified for all calls for both GCM and ICM. This is to ensure proper use of these functions. Obtained from: p4: //depot/projects/opencrypto Relnotes: yes Sponsored by: FreeBSD Foundation Sponsored by: NetGate Notes: svn path=/head/; revision=275732
* Fix build for kernels without COMPAT_FREEBSD32.John Baldwin2014-09-221-0/+1
| | | | Notes: svn path=/head/; revision=271983
* Add a new fo_fill_kinfo fileops method to add type-specific information toJohn Baldwin2014-09-221-0/+11
| | | | | | | | | | | | | | | | | struct kinfo_file. - Move the various fill_*_info() methods out of kern_descrip.c and into the various file type implementations. - Rework the support for kinfo_ofile to generate a suitable kinfo_file object for each file and then convert that to a kinfo_ofile structure rather than keeping a second, different set of code that directly manipulates type-specific file information. - Remove the shm_path() and ksem_info() layering violations. Differential Revision: https://reviews.freebsd.org/D775 Reviewed by: kib, glebius (earlier version) Notes: svn path=/head/; revision=271976
* Fix various issues with invalid file operations:John Baldwin2014-09-121-54/+5
| | | | | | | | | | | | | | | | | | | | | - Add invfo_rdwr() (for read and write), invfo_ioctl(), invfo_poll(), and invfo_kqfilter() for use by file types that do not support the respective operations. Home-grown versions of invfo_poll() were universally broken (they returned an errno value, invfo_poll() uses poll_no_poll() to return an appropriate event mask). Home-grown ioctl routines also tended to return an incorrect errno (invfo_ioctl returns ENOTTY). - Use the invfo_*() functions instead of local versions for unsupported file operations. - Reorder fileops members to match the order in the structure definition to make it easier to spot missing members. - Add several missing methods to linuxfileops used by the OFED shim layer: fo_write(), fo_truncate(), fo_kqfilter(), and fo_stat(). Most of these used invfo_*(), but a dummy fo_stat() implementation was added. Notes: svn path=/head/; revision=271489
* allow the kern.cryptodevallowsoft sysctl to enable symetric/hashes too...John-Mark Gurney2014-03-112-7/+10
| | | | | | | | | | | This will allow us to more easily test the software versions of these routines... Considering that we've never had an software asymetric implmentation, it's doubtful anyone has this enabled... Notes: svn path=/head/; revision=262994
* some minor clean up.. Always _ZERO memory so mtx_init won't panic...John-Mark Gurney2014-03-112-6/+1
| | | | | | | | | | use the proper macro instead of hand rolling it... Reviewed by: jhb (only the malloc change) MFC after: 1 week Notes: svn path=/head/; revision=262993
* Prevent races in accesses of the software crypto session array.Benno Rice2014-01-281-12/+55
| | | | | | | | | | | | | | | swcr_newsession can change the pointer for swcr_sessions which races with swcr_process which is looking up entries in this array. Add a rwlock that protects changes to the array pointer so that swcr_newsession and swcr_process no longer race. Original patch by: Steve O'Hara-Smith <Steve.OHaraSmith@isilon.com> Reviewed by: jmg Sponsored by: EMC / Isilon Storage Division Notes: svn path=/head/; revision=261251
* Fix build with 'crypto' and 'zfs' in the same kernel. This was the pathPeter Wemm2013-12-081-0/+0
| | | | | | | of least pain I could find. Notes: svn path=/head/; revision=259109
* dtrace sdt: remove the ugly sname parameter of SDT_PROBE_DEFINEAndriy Gapon2013-11-261-4/+4
| | | | | | | | | | | In its stead use the Solaris / illumos approach of emulating '-' (dash) in probe names with '__' (two consecutive underscores). Reviewed by: markj MFC after: 3 weeks Notes: svn path=/head/; revision=258622
* - For kernel compiled only with KDTRACE_HOOKS and not any lock debuggingAttilio Rao2013-11-252-3/+0
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | option, unbreak the lock tracing release semantic by embedding calls to LOCKSTAT_PROFILE_RELEASE_LOCK() direclty in the inlined version of the releasing functions for mutex, rwlock and sxlock. Failing to do so skips the lockstat_probe_func invokation for unlocking. - As part of the LOCKSTAT support is inlined in mutex operation, for kernel compiled without lock debugging options, potentially every consumer must be compiled including opt_kdtrace.h. Fix this by moving KDTRACE_HOOKS into opt_global.h and remove the dependency by opt_kdtrace.h for all files, as now only KDTRACE_FRAMES is linked there and it is only used as a compile-time stub [0]. [0] immediately shows some new bug as DTRACE-derived support for debug in sfxge is broken and it was never really tested. As it was not including correctly opt_kdtrace.h before it was never enabled so it was kept broken for a while. Fix this by using a protection stub, leaving sfxge driver authors the responsibility for fixing it appropriately [1]. Sponsored by: EMC / Isilon storage division Discussed with: rstone [0] Reported by: rstone [1] Discussed with: philip Notes: svn path=/head/; revision=258541
* Make sendfile() a method in the struct fileops. Currently onlyGleb Smirnoff2013-08-151-0/+1
| | | | | | | | | | | vnode backed file descriptors have this method implemented. Reviewed by: kib Sponsored by: Nginx, Inc. Sponsored by: Netflix Notes: svn path=/head/; revision=254356
* When porting XTS-related code from OpenBSD I forgot to update copyright (onlyPawel Jakub Dawidek2013-02-201-2/+7
| | | | | | | | | | OpenBSD was credited in one of two commits). Fix it. Reported by: Theo de Raadt <deraadt@cvs.openbsd.org> Reviewed by: Damien Miller <djm@mindrot.org> Notes: svn path=/head/; revision=247061
* Revert previous commit...Kevin Lo2012-10-101-1/+1
| | | | | | | Pointyhat to: kevlo (myself) Notes: svn path=/head/; revision=241394
* Prefer NULL over 0 for pointersKevin Lo2012-10-091-1/+1
| | | | Notes: svn path=/head/; revision=241370
* Add the fo_chown and fo_chmod methods to struct fileops and use themKonstantin Belousov2011-08-161-1/+3
| | | | | | | | | | | | | to implement fchown(2) and fchmod(2) support for several file types that previously lacked it. Add MAC entries for chown/chmod done on posix shared memory and (old) in-kernel posix semaphores. Based on the submission by: glebius Reviewed by: rwatson Approved by: re (bz) Notes: svn path=/head/; revision=224914
* After the r219999 is merged to stable/8, rename fallocf(9) to falloc(9)Konstantin Belousov2011-04-011-1/+1
| | | | | | | | | | | and remove the falloc() version that lacks flag argument. This is done to reduce the KPI bloat. Requested by: jhb X-MFC-note: do not Notes: svn path=/head/; revision=220245
* fixed size of AH_ALEN_MAX, which is 64 bytes for SHA-512.VANHULLEBUS Yvan2011-02-251-1/+2
| | | | | | | | Obtained from: Matthias Drochner <M.Drochner@fz-juelich.de> MFC after: 3d Notes: svn path=/head/; revision=219026
* Let cryptosoft(4) add its pseudo-device with a specific unit number and itsMarius Strobl2010-11-141-2/+2
| | | | | | | | | | | | | | probe method return BUS_PROBE_NOWILDCARD so it doesn't get attached to real devices hanging off of nexus(4) with no specific devclass set. Actually, the more desirable fix for this would be to get rid of the newbus interface of cryptosoft(4) altogether but apparently crypto(9) was written with support for cryptographic hardware in mind so that approach would require some KPI breaking changes which don't seem worth it. MFC after: 1 week Notes: svn path=/head/; revision=215295
* Add support for AES-XTS.Pawel Jakub Dawidek2010-09-235-15/+203
| | | | | | | | Obtained from: OpenBSD MFC after: 1 week Notes: svn path=/head/; revision=213068
* Remove redundant space.Pawel Jakub Dawidek2010-09-231-1/+1
| | | | | | | MFC after: 1 week Notes: svn path=/head/; revision=213065
* Add an extra comment to the SDT probes definition. This allows us to getRui Paulo2010-08-221-4/+4
| | | | | | | | | | | | use '-' in probe names, matching the probe names in Solaris.[1] Add userland SDT probes definitions to sys/sdt.h. Sponsored by: The FreeBSD Foundation Discussed with: rwaston [1] Notes: svn path=/head/; revision=211616
* Fix typo in comment.John Baldwin2010-08-111-1/+1
| | | | Notes: svn path=/head/; revision=211181
* Add compat32 shims for opencrypto(4).Konstantin Belousov2010-07-291-7/+266
| | | | | | | | Reviewed by: bz MFC after: 3 weeks Notes: svn path=/head/; revision=210631
* Use the fpu_kern_enter() interface to properly separate usermode FPUKonstantin Belousov2010-06-051-0/+8
| | | | | | | | | | | | | | | | | context from in-kernel execution of padlock instructions and to handle spurious FPUDNA exceptions that sometime are raised when doing padlock calculations. Globally mark crypto(9) kthread as using FPU. Reviewed by: pjd Hardware provided by: Sentex Communications Tested by: pho PR: amd64/135014 MFC after: 1 month Notes: svn path=/head/; revision=208834
* Add comments trying to explain what bad things happen here, i.e.Bjoern A. Zeeb2010-01-091-1/+18
| | | | | | | | | | | | | | how hashed MD5/SHA are implemented, abusing Final() for padding and sw_octx to transport the key from the beginning to the end. Enlightened about what was going on here by: cperciva Reviewed by: cperciva MFC After: 3 days X-MFC with: r187826 PR: kern/126468 Notes: svn path=/head/; revision=201898
* In case the compression result is the same size as the orignal version,Bjoern A. Zeeb2009-11-291-1/+1
| | | | | | | | | | | | | | | the compression was useless as well. Make sure to not update the data and return, else we would waste resources when decompressing. This also avoids the copyback() changing data other consumers like xform_ipcomp.c would have ignored because of no win and sent out without noting that compression was used, resulting in invalid packets at the receiver. MFC after: 5 days Notes: svn path=/head/; revision=199906
* Add SDT iter probes forgotten in r199885.Bjoern A. Zeeb2009-11-291-0/+6
| | | | | | | MFC after: 5 days Notes: svn path=/head/; revision=199904
* Change memory managment from a fixed size array to a list.Bjoern A. Zeeb2009-11-282-60/+73
| | | | | | | | | | | | | | | | | | | This is needed to avoid running into out of buffer situations where we cannot alloc a new buffer because we hit the array size limit (ZBUF). Use a combined allocation for the struct and the actual data buffer to not increase the number of malloc calls. [1] Defer initialization of zbuf until we actually need it. Make sure the output buffer will be large enough in all cases. Details discussed with: kib [1] Reviewed by: kib [1] MFC after: 6 days Notes: svn path=/head/; revision=199895
* Z_PARTIAL_FLUSH is marked deprecated. Z_SYNC_FLUSH is the suggestedBjoern A. Zeeb2009-11-281-6/+10
| | | | | | | | | | | | | replacement but only use it for inflate. For deflate use Z_FINISH as Z_SYNC_FLUSH adds a trailing marker in some cases that inflate(), despite the comment in zlib, does npt seem to cope well with, resulting in errors when uncompressing exactly fills the outbut buffer without a Z_STREAM_END and a successive call returns an error. MFC after: 6 days Notes: svn path=/head/; revision=199887
* Add SDT probes for opencrypto:deflate:deflate_gobal:*.Bjoern A. Zeeb2009-11-281-7/+61
| | | | | | | | | They are not nice but they were helpful. MFC after: 6 days Notes: svn path=/head/; revision=199885
* Define an SDT provider for "opencrypto".Bjoern A. Zeeb2009-11-281-0/+4
| | | | | | | MFC after: 6 days Notes: svn path=/head/; revision=199884
* If crypto operation is finished with EAGAIN, don't repeat operation fromPawel Jakub Dawidek2009-09-041-8/+9
| | | | | | | | | | | the return context, but from the original context. Before repeating operation clear DONE flag and error. Reviewed by: sam Obtained from: Wheel Sp. z o.o. (http://www.wheel.pl) Notes: svn path=/head/; revision=196825
* Fix cryptodev UIO creation.Rafal Jaworowski2009-05-231-1/+3
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Cryptodev uses UIO structure do get data from userspace and pass it to cryptographic engines. Initially UIO size is equal to size of data passed to engine, but if UIO is prepared for hash calculation an additional small space is created to hold result of operation. While creating space for the result, UIO I/O vector size is correctly extended, but uio_resid field in UIO structure is not modified. As bus_dma code uses uio_resid field to determine size of UIO DMA mapping, resulting mapping hasn't correct size. This leads to a crash if all the following conditions are met: 1. Hardware cryptographic accelerator writes result of hash operation using DMA. 2. Size of input data is less or equal than (n * PAGE_SIZE), 3. Size of input data plus size of hash result is grather than (n * PAGE_SIZE, where n is the same as in point 2. This patch fixes this problem by adding size of the extenstion to uio_resid field in UIO structure. Submitted by: Piotr Ziecik kosmo ! semihalf dot com Reviewed by: philip Obtained from: Semihalf Notes: svn path=/head/; revision=192636
* Fix return type for detach routine (should be int)Warner Losh2009-02-051-2/+3
| | | | | | | Fix first parameter for identify routine (should be driver_t *) Notes: svn path=/head/; revision=188154
* While OpenBSD's crypto/ framework has sha1 and md5 implementations thatBjoern A. Zeeb2009-01-281-1/+6
| | | | | | | | | | | | can cope with a result buffer of NULL in the "Final" function, we cannot. Thus pass in a temporary buffer long enough for either md5 or sha1 results so that we do not panic. PR: bin/126468 MFC after: 1 week Notes: svn path=/head/; revision=187826
* Don't hang if encrypting/decrypting using struct iovecs where one of theDoug Rabson2008-10-301-0/+4
| | | | | | | iovecs ends on a crypto block boundary. Notes: svn path=/head/; revision=184477
* Fix a number of style issues in the MALLOC / FREE commit. I've tried toDag-Erling Smørgrav2008-10-231-7/+7
| | | | | | | | be careful not to fix anything that was already broken; the NFSv4 code is particularly bad in this respect. Notes: svn path=/head/; revision=184214
* Retire the MALLOC and FREE macros. They are an abomination unto style(9).Dag-Erling Smørgrav2008-10-234-45/+42
| | | | | | | MFC after: 3 months Notes: svn path=/head/; revision=184205
* Make ftruncate a 'struct file' operation rather than a vnode operation.John Baldwin2008-01-071-0/+14
| | | | | | | | | | | | | | | | | This makes it possible to support ftruncate() on non-vnode file types in the future. - 'struct fileops' grows a 'fo_truncate' method to handle an ftruncate() on a given file descriptor. - ftruncate() moves to kern/sys_generic.c and now just fetches a file object and invokes fo_truncate(). - The vnode-specific portions of ftruncate() move to vn_truncate() in vfs_vnops.c which implements fo_truncate() for vnode file types. - Non-vnode file types return EINVAL in their fo_truncate() method. Submitted by: rwatson Notes: svn path=/head/; revision=175140
* Remove explicit locking of struct file.Jeff Roberson2007-12-301-6/+1
| | | | | | | | | | | | | | | | - Introduce a finit() which is used to initailize the fields of struct file in such a way that the ops vector is only valid after the data, type, and flags are valid. - Protect f_flag and f_count with atomic operations. - Remove the global list of all files and associated accounting. - Rewrite the unp garbage collection such that it no longer requires the global list of all files and instead uses a list of all unp sockets. - Mark sockets in the accept queue so we don't incorrectly gc them. Tested by: kris, pho Notes: svn path=/head/; revision=174988
* Rename the kthread_xxx (e.g. kthread_create()) callsJulian Elischer2007-10-201-3/+3
| | | | | | | | | | | | | | to kproc_xxx as they actually make whole processes. Thos makes way for us to add REAL kthread_create() and friends that actually make theads. it turns out that most of these calls actually end up being moved back to the thread version when it's added. but we need to make this cosmetic change first. I'd LOVE to do this rename in 7.0 so that we can eventually MFC the new kthread_xxx() calls. Notes: svn path=/head/; revision=172836
* Deny attempt to malloc unbounded amount of the memory.Konstantin Belousov2007-10-081-3/+6
| | | | | | | | | | | Convert malloc()/bzero() to malloc(M_ZERO). Obtained from: OpenBSD MFC after: 3 days Approved by: re (kensmith) Notes: svn path=/head/; revision=172474
* Quiet warnings. These do not appear to be actually used uninitialized,Peter Wemm2007-07-051-1/+1
| | | | | | | | | | but gcc's optimizer isn't smart enough to see that. Pre-initializing seems harmless enough. Approved by: re (rwatson) Notes: svn path=/head/; revision=171238
* Integrate the Camellia Block Cipher. For more information see RFC 4132George V. Neville-Neil2007-05-095-1/+66
| | | | | | | | | | and its bibliography. Submitted by: Tomoyuki Okazaki <okazaki at kick dot gr dot jp> MFC after: 1 month Notes: svn path=/head/; revision=169425
* Replace custom file descriptor array sleep lock constructed using a mutexRobert Watson2007-04-041-1/+3
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | and flags with an sxlock. This leads to a significant and measurable performance improvement as a result of access to shared locking for frequent lookup operations, reduced general overhead, and reduced overhead in the event of contention. All of these are imported for threaded applications where simultaneous access to a shared file descriptor array occurs frequently. Kris has reported 2x-4x transaction rate improvements on 8-core MySQL benchmarks; smaller improvements can be expected for many workloads as a result of reduced overhead. - Generally eliminate the distinction between "fast" and regular acquisisition of the filedesc lock; the plan is that they will now all be fast. Change all locking instances to either shared or exclusive locks. - Correct a bug (pointed out by kib) in fdfree() where previously msleep() was called without the mutex held; sx_sleep() is now always called with the sxlock held exclusively. - Universally hold the struct file lock over changes to struct file, rather than the filedesc lock or no lock. Always update the f_ops field last. A further memory barrier is required here in the future (discussed with jhb). - Improve locking and reference management in linux_at(), which fails to properly acquire vnode references before using vnode pointers. Annotate improper use of vn_fullpath(), which will be replaced at a future date. In fcntl(), we conservatively acquire an exclusive lock, even though in some cases a shared lock may be sufficient, which should be revisited. The dropping of the filedesc lock in fdgrowtable() is no longer required as the sxlock can be held over the sleep operation; we should consider removing that (pointed out by attilio). Tested by: kris Discussed with: jhb, kris, attilio, jeff Notes: svn path=/head/; revision=168355
* add missing file from last commit that overhauls crypto/driver api'sSam Leffler2007-03-211-0/+55
| | | | Notes: svn path=/head/; revision=167756
* Overhaul driver/subsystem api's:Sam Leffler2007-03-216-491/+762
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | o make all crypto drivers have a device_t; pseudo drivers like the s/w crypto driver synthesize one o change the api between the crypto subsystem and drivers to use kobj; cryptodev_if.m defines this api o use the fact that all crypto drivers now have a device_t to add support for specifying which of several potential devices to use when doing crypto operations o add new ioctls that allow user apps to select a specific crypto device to use (previous ioctls maintained for compatibility) o overhaul crypto subsystem code to eliminate lots of cruft and hide implementation details from drivers o bring in numerous fixes from Michale Richardson/hifn; mostly for 795x parts o add an optional mechanism for mmap'ing the hifn 795x public key h/w to user space for use by openssl (not enabled by default) o update crypto test tools to use new ioctl's and add cmd line options to specify a device to use for tests These changes will also enable much future work on improving the core crypto subsystem; including proper load balancing and interposing code between the core and drivers to dispatch small operations to the s/w driver as appropriate. These changes were instigated by the work of Michael Richardson. Reviewed by: pjd Approved by: re Notes: svn path=/head/; revision=167755