1#- 2# Copyright (c) 2006, Sam Leffler 3# All rights reserved. 4# 5# Redistribution and use in source and binary forms, with or without 6# modification, are permitted provided that the following conditions 7# are met: 8# 1. Redistributions of source code must retain the above copyright 9# notice, this list of conditions and the following disclaimer. 10# 2. Redistributions in binary form must reproduce the above copyright 11# notice, this list of conditions and the following disclaimer in the 12# documentation and/or other materials provided with the distribution. 13# 14# THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND 15# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 16# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 17# ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE 18# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 19# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 20# OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 21# HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 22# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 23# OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 24# SUCH DAMAGE. 25# 26# $FreeBSD$ 27# 28 29#include <sys/malloc.h> 30#include <opencrypto/cryptodev.h> 31 32INTERFACE cryptodev; 33 34CODE { 35 static int null_freesession(device_t dev, 36 crypto_session_t crypto_session) 37 { 38 return 0; 39 } 40}; 41 42/** 43 * Crypto driver method to initialize a new session object with the given 44 * initialization parameters (cryptoini). The driver's session memory object 45 * is already allocated and zeroed, like driver softcs. It is accessed with 46 * crypto_get_driver_session(). 47 */ 48METHOD int newsession { 49 device_t dev; 50 crypto_session_t crypto_session; 51 struct cryptoini *cri; 52}; 53 54/** 55 * Optional crypto driver method to release any additional allocations. OCF 56 * owns session memory itself; it is zeroed before release. 57 */ 58METHOD void freesession { 59 device_t dev; 60 crypto_session_t crypto_session; 61} DEFAULT null_freesession; 62 63METHOD int process { 64 device_t dev; 65 struct cryptop *op; 66 int flags; 67}; 68 69METHOD int kprocess { 70 device_t dev; 71 struct cryptkop *op; 72 int flags; 73}; 74