19c0e3d3aSJohn Baldwin.\" Copyright (c) 2020, Chelsio Inc 29c0e3d3aSJohn Baldwin.\" 39c0e3d3aSJohn Baldwin.\" Redistribution and use in source and binary forms, with or without 49c0e3d3aSJohn Baldwin.\" modification, are permitted provided that the following conditions are met: 59c0e3d3aSJohn Baldwin.\" 69c0e3d3aSJohn Baldwin.\" 1. Redistributions of source code must retain the above copyright notice, 79c0e3d3aSJohn Baldwin.\" this list of conditions and the following disclaimer. 89c0e3d3aSJohn Baldwin.\" 99c0e3d3aSJohn Baldwin.\" 2. Redistributions in binary form must reproduce the above copyright 109c0e3d3aSJohn Baldwin.\" notice, this list of conditions and the following disclaimer in the 119c0e3d3aSJohn Baldwin.\" documentation and/or other materials provided with the distribution. 129c0e3d3aSJohn Baldwin.\" 139c0e3d3aSJohn Baldwin.\" 3. Neither the name of the Chelsio Inc nor the names of its 149c0e3d3aSJohn Baldwin.\" contributors may be used to endorse or promote products derived from 159c0e3d3aSJohn Baldwin.\" this software without specific prior written permission. 169c0e3d3aSJohn Baldwin.\" 179c0e3d3aSJohn Baldwin.\" THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" 189c0e3d3aSJohn Baldwin.\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 199c0e3d3aSJohn Baldwin.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 209c0e3d3aSJohn Baldwin.\" ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE 219c0e3d3aSJohn Baldwin.\" LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR 229c0e3d3aSJohn Baldwin.\" CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 239c0e3d3aSJohn Baldwin.\" SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 249c0e3d3aSJohn Baldwin.\" INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 259c0e3d3aSJohn Baldwin.\" CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 269c0e3d3aSJohn Baldwin.\" ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 279c0e3d3aSJohn Baldwin.\" POSSIBILITY OF SUCH DAMAGE. 289c0e3d3aSJohn Baldwin.\" 299c0e3d3aSJohn Baldwin.\" * Other names and brands may be claimed as the property of others. 309c0e3d3aSJohn Baldwin.\" 31*32068667SChristian Brueffer.Dd February 11, 2022 329c0e3d3aSJohn Baldwin.Dt CRYPTO_BUFFER 9 339c0e3d3aSJohn Baldwin.Os 349c0e3d3aSJohn Baldwin.Sh NAME 359c0e3d3aSJohn Baldwin.Nm crypto_buffer 369c0e3d3aSJohn Baldwin.Nd symmetric cryptographic request buffers 379c0e3d3aSJohn Baldwin.Sh SYNOPSIS 389c0e3d3aSJohn Baldwin.In opencrypto/cryptodev.h 399c0e3d3aSJohn Baldwin.Ft int 409c0e3d3aSJohn Baldwin.Fo crypto_apply 419c0e3d3aSJohn Baldwin.Fa "struct cryptop *crp" 429c0e3d3aSJohn Baldwin.Fa "int off" 439c0e3d3aSJohn Baldwin.Fa "int len" 449c0e3d3aSJohn Baldwin.Fa "int (*f)(void *, void *, u_int)" 459c0e3d3aSJohn Baldwin.Fa "void *arg" 469c0e3d3aSJohn Baldwin.Fc 479c0e3d3aSJohn Baldwin.Ft int 489c0e3d3aSJohn Baldwin.Fo crypto_apply_buf 499c0e3d3aSJohn Baldwin.Fa "struct crypto_buffer *cb" 509c0e3d3aSJohn Baldwin.Fa "int off" 519c0e3d3aSJohn Baldwin.Fa "int len" 529c0e3d3aSJohn Baldwin.Fa "int (*f)(void *, void *, u_int)" 539c0e3d3aSJohn Baldwin.Fa "void *arg" 549c0e3d3aSJohn Baldwin.Fc 559c0e3d3aSJohn Baldwin.Ft void * 569c0e3d3aSJohn Baldwin.Fo crypto_buffer_contiguous_subsegment 579c0e3d3aSJohn Baldwin.Fa "struct crypto_buffer *cb" 589c0e3d3aSJohn Baldwin.Fa "size_t skip" 599c0e3d3aSJohn Baldwin.Fa "size_t len" 609c0e3d3aSJohn Baldwin.Fc 619c0e3d3aSJohn Baldwin.Ft size_t 629c0e3d3aSJohn Baldwin.Fn crypto_buffer_len "struct crypto_buffer *cb" 639c0e3d3aSJohn Baldwin.Ft void * 649c0e3d3aSJohn Baldwin.Fo crypto_contiguous_subsegment 659c0e3d3aSJohn Baldwin.Fa "struct cryptop *crp" 669c0e3d3aSJohn Baldwin.Fa "size_t skip" 679c0e3d3aSJohn Baldwin.Fa "size_t len" 689c0e3d3aSJohn Baldwin.Fc 699c0e3d3aSJohn Baldwin.Ft void 709c0e3d3aSJohn Baldwin.Fo crypto_cursor_init 719c0e3d3aSJohn Baldwin.Fa "struct crypto_buffer_cursor *cc" 729c0e3d3aSJohn Baldwin.Fa "const struct crypto_buffer *cb" 739c0e3d3aSJohn Baldwin.Fc 749c0e3d3aSJohn Baldwin.Ft void 759c0e3d3aSJohn Baldwin.Fn crypto_cursor_advance "struct crypto_buffer_cursor *cc" "size_t amount" 769c0e3d3aSJohn Baldwin.Ft void 779c0e3d3aSJohn Baldwin.Fo crypto_cursor_copyback 789c0e3d3aSJohn Baldwin.Fa "struct crypto_buffer_cursor *cc" 799c0e3d3aSJohn Baldwin.Fa "int size" 809c0e3d3aSJohn Baldwin.Fa "const void *src" 819c0e3d3aSJohn Baldwin.Fc 829c0e3d3aSJohn Baldwin.Ft void 839c0e3d3aSJohn Baldwin.Fo crypto_cursor_copydata 849c0e3d3aSJohn Baldwin.Fa "struct crypto_buffer_cursor *cc" 859c0e3d3aSJohn Baldwin.Fa "int size" 869c0e3d3aSJohn Baldwin.Fa "void *dst" 879c0e3d3aSJohn Baldwin.Fc 889c0e3d3aSJohn Baldwin.Ft void 899c0e3d3aSJohn Baldwin.Fo crypto_cursor_copydata_noadv 909c0e3d3aSJohn Baldwin.Fa "struct crypto_buffer_cursor *cc" 919c0e3d3aSJohn Baldwin.Fa "int size" 929c0e3d3aSJohn Baldwin.Fa "void *dst" 939c0e3d3aSJohn Baldwin.Fc 949c0e3d3aSJohn Baldwin.Ft void * 95beb817edSJohn Baldwin.Fn crypto_cursor_segment "struct crypto_buffer_cursor *cc" "size_t *len" 9609bfa5cfSMark Johnston.Ft void 9709bfa5cfSMark Johnston.Fo crypto_cursor_copy 9809bfa5cfSMark Johnston.Fa "const struct crypto_buffer_cursor *fromc" 9909bfa5cfSMark Johnston.Fa "struct crypto_buffer_cursor *toc" 10009bfa5cfSMark Johnston.Fc 1019c0e3d3aSJohn Baldwin.Ft bool 1029c0e3d3aSJohn Baldwin.Fn CRYPTO_HAS_OUTPUT_BUFFER "struct cryptop *crp" 1039c0e3d3aSJohn Baldwin.Sh DESCRIPTION 1049c0e3d3aSJohn BaldwinSymmetric cryptographic requests use data buffers to describe the data to 1059c0e3d3aSJohn Baldwinbe modified. 1069c0e3d3aSJohn BaldwinRequests can either specify a single data buffer whose contents are modified 1079c0e3d3aSJohn Baldwinin place, 1089c0e3d3aSJohn Baldwinor requests may specify separate data buffers for input and output. 1099c0e3d3aSJohn Baldwin.Vt struct crypto_buffer 1109c0e3d3aSJohn Baldwinprovides an abstraction that permits cryptographic requests to operate on 1119c0e3d3aSJohn Baldwindifferent types of buffers. 1129c0e3d3aSJohn Baldwin.Vt struct crypto_cursor 1139c0e3d3aSJohn Baldwinallows cryptographic drivers to iterate over a data buffer. 1149c0e3d3aSJohn Baldwin.Pp 1159c0e3d3aSJohn Baldwin.Fn CRYPTO_HAS_OUTPUT_BUFFER 1169c0e3d3aSJohn Baldwinreturns true if 1179c0e3d3aSJohn Baldwin.Fa crp 1189c0e3d3aSJohn Baldwinuses separate buffers for input and output and false if 1199c0e3d3aSJohn Baldwin.Fa crp 1209c0e3d3aSJohn Baldwinuses a single buffer. 1219c0e3d3aSJohn Baldwin.Pp 1229c0e3d3aSJohn Baldwin.Fn crypto_buffer_len 1239c0e3d3aSJohn Baldwinreturns the length of data buffer 1249c0e3d3aSJohn Baldwin.Fa cb 1259c0e3d3aSJohn Baldwinin bytes. 1269c0e3d3aSJohn Baldwin.Pp 1279c0e3d3aSJohn Baldwin.Fn crypto_apply_buf 1289c0e3d3aSJohn Baldwininvokes a caller-supplied function 1299c0e3d3aSJohn Baldwinto a region of the data buffer 1309c0e3d3aSJohn Baldwin.Fa cb . 1319c0e3d3aSJohn BaldwinThe function 1329c0e3d3aSJohn Baldwin.Fa f 1339c0e3d3aSJohn Baldwinis called one or more times. 1349c0e3d3aSJohn BaldwinFor each invocation, 1359c0e3d3aSJohn Baldwinthe first argument to 1369c0e3d3aSJohn Baldwin.Fa f 1379c0e3d3aSJohn Baldwinis the value of 1389c0e3d3aSJohn Baldwin.Fa arg 1399c0e3d3aSJohn Baldwinpassed to 1409c0e3d3aSJohn Baldwin.Fn crypto_apply_buf . 1419c0e3d3aSJohn BaldwinThe second and third arguments to 1429c0e3d3aSJohn Baldwin.Fa f 1439c0e3d3aSJohn Baldwinare a pointer and length to a segment of the buffer mapped into the kernel. 1449c0e3d3aSJohn BaldwinThe function is called enough times to cover the 1459c0e3d3aSJohn Baldwin.Fa len 1469c0e3d3aSJohn Baldwinbytes of the data buffer which starts at an offset 1479c0e3d3aSJohn Baldwin.Fa off . 1489c0e3d3aSJohn BaldwinIf any invocation of 1499c0e3d3aSJohn Baldwin.Fa f 1509c0e3d3aSJohn Baldwinreturns a non-zero value, 1519c0e3d3aSJohn Baldwin.Fn crypto_apply_buf 1529c0e3d3aSJohn Baldwinimmediately returns that value without invoking 1539c0e3d3aSJohn Baldwin.Fa f 1549c0e3d3aSJohn Baldwinon any remaining segments of the region, 1559c0e3d3aSJohn Baldwinotherwise 1569c0e3d3aSJohn Baldwin.Fn crypto_apply_buf 1579c0e3d3aSJohn Baldwinreturns the value from the final call to 1589c0e3d3aSJohn Baldwin.Fa f . 1599c0e3d3aSJohn Baldwin.Fn crypto_apply 1609c0e3d3aSJohn Baldwininvokes the callback 1619c0e3d3aSJohn Baldwin.Fa f 1629c0e3d3aSJohn Baldwinon a region of the input data buffer for 1639c0e3d3aSJohn Baldwin.Fa crp . 1649c0e3d3aSJohn Baldwin.Pp 1659c0e3d3aSJohn Baldwin.Fn crypto_buffer_contiguous_subsegment 1669c0e3d3aSJohn Baldwinattempts to locate a single, virtually-contiguous segment of the data buffer 1679c0e3d3aSJohn Baldwin.Fa cb . 1689c0e3d3aSJohn BaldwinThe segment must be 1699c0e3d3aSJohn Baldwin.Fa len 1709c0e3d3aSJohn Baldwinbytes long and start at an offset of 1719c0e3d3aSJohn Baldwin.Fa skip 1729c0e3d3aSJohn Baldwinbytes. 1739c0e3d3aSJohn BaldwinIf a segment is found, 1749c0e3d3aSJohn Baldwina pointer to the start of the segment is returned. 1759c0e3d3aSJohn BaldwinOtherwise, 1769c0e3d3aSJohn Baldwin.Dv NULL 1779c0e3d3aSJohn Baldwinis returned. 1789c0e3d3aSJohn Baldwin.Fn crypto_contiguous_subsegment 1799c0e3d3aSJohn Baldwinattempts to locate a single, virtually-contiguous segment in the input data 1809c0e3d3aSJohn Baldwinbuffer for 1819c0e3d3aSJohn Baldwin.Fa crp . 1829c0e3d3aSJohn Baldwin.Ss Data Buffers 1839c0e3d3aSJohn BaldwinData buffers are described by an instance of 1849c0e3d3aSJohn Baldwin.Vt struct crypto buffer . 1859c0e3d3aSJohn BaldwinThe 1869c0e3d3aSJohn Baldwin.Fa cb_type 1879c0e3d3aSJohn Baldwinmember contains the type of the data buffer. 1889c0e3d3aSJohn BaldwinThe following types are supported: 1899c0e3d3aSJohn Baldwin.Bl -tag -width " CRYPTO_BUF_CONTIG" 1909c0e3d3aSJohn Baldwin.It Dv CRYPTO_BUF_NONE 1919c0e3d3aSJohn BaldwinAn invalid buffer. 1929c0e3d3aSJohn BaldwinUsed to mark the output buffer when a crypto request uses a single data buffer. 1939c0e3d3aSJohn Baldwin.It Dv CRYPTO_BUF_CONTIG 1949c0e3d3aSJohn BaldwinAn array of bytes mapped into the kernel's address space. 1959c0e3d3aSJohn Baldwin.It Dv CRYPTO_BUF_UIO 1969c0e3d3aSJohn BaldwinA scatter/gather list of kernel buffers as described in 1979c0e3d3aSJohn Baldwin.Xr uio 9 . 1989c0e3d3aSJohn Baldwin.It Dv CRYPTO_BUF_MBUF 199883a0196SJohn BaldwinA chain of network memory buffers as described in 200883a0196SJohn Baldwin.Xr mbuf 9 . 201883a0196SJohn Baldwin.It Dv CRYPTO_BUF_SINGLE_MBUF 202883a0196SJohn BaldwinA single network memory buffer as described in 2039c0e3d3aSJohn Baldwin.Xr mbuf 9 . 204e6f6d0c9SAlan Somers.It Dv CRYPTO_BUF_VMPAGE 205e6f6d0c9SAlan SomersA scatter/gather list of 206e6f6d0c9SAlan Somers.Vt vm_page_t 207e6f6d0c9SAlan Somersstructures describing pages in the kernel's address space. 208e6f6d0c9SAlan SomersThis buffer type is only available if 209e6f6d0c9SAlan Somers.Dv CRYPTO_HAS_VMPAGE 210e6f6d0c9SAlan Somersis true. 2119c0e3d3aSJohn Baldwin.El 2129c0e3d3aSJohn Baldwin.Pp 2139c0e3d3aSJohn BaldwinThe structure also contains the following type-specific fields: 214e6f6d0c9SAlan Somers.Bl -tag -width " cb_vm_page_offset" 2159c0e3d3aSJohn Baldwin.It Fa cb_buf 2169c0e3d3aSJohn BaldwinA pointer to the start of a 2179c0e3d3aSJohn Baldwin.Dv CRYPTO_BUF_CONTIG 2189c0e3d3aSJohn Baldwindata buffer. 2199c0e3d3aSJohn Baldwin.It Fa cb_buf_len 2209c0e3d3aSJohn BaldwinThe length of a 2219c0e3d3aSJohn Baldwin.Dv CRYPTO_BUF_CONTIG 2229c0e3d3aSJohn Baldwindata buffer 2239c0e3d3aSJohn Baldwin.It Fa cb_mbuf 2249c0e3d3aSJohn BaldwinA pointer to a 2259c0e3d3aSJohn Baldwin.Vt struct mbuf 2269c0e3d3aSJohn Baldwinfor 227883a0196SJohn Baldwin.Dv CRYPTO_BUF_MBUF 228883a0196SJohn Baldwinand 229883a0196SJohn Baldwin.Dv CRYPTO_BUF_SINGLE_MBUF . 2309c0e3d3aSJohn Baldwin.It Fa cb_uio 2319c0e3d3aSJohn BaldwinA pointer to a 2329c0e3d3aSJohn Baldwin.Vt struct uio 2339c0e3d3aSJohn Baldwinfor 2349c0e3d3aSJohn Baldwin.Dv CRYPTO_BUF_UIO . 235e6f6d0c9SAlan Somers.It Fa cb_vm_page 236e6f6d0c9SAlan SomersA pointer to an array of 237e6f6d0c9SAlan Somers.Vt struct vm_page 238e6f6d0c9SAlan Somersfor 239e6f6d0c9SAlan Somers.Dv CRYPTO_BUF_VMPAGE . 240e6f6d0c9SAlan Somers.It Fa cb_vm_page_len 241e6f6d0c9SAlan SomersThe total amount of data included in the 242e6f6d0c9SAlan Somers.Fa cb_vm_page 243e6f6d0c9SAlan Somersarray, in bytes. 244e6f6d0c9SAlan Somers.It Fa cb_vm_page_offset 245e6f6d0c9SAlan SomersOffset in bytes in the first page of 246e6f6d0c9SAlan Somers.Fa cb_vm_page 247e6f6d0c9SAlan Somerswhere valid data begins. 2489c0e3d3aSJohn Baldwin.El 2499c0e3d3aSJohn Baldwin.Ss Cursors 2509c0e3d3aSJohn BaldwinCursors provide a mechanism for iterating over a data buffer. 2519c0e3d3aSJohn BaldwinThey are primarily intended for use in software drivers which access data 2529c0e3d3aSJohn Baldwinbuffers via virtual addresses. 2539c0e3d3aSJohn Baldwin.Pp 2549c0e3d3aSJohn Baldwin.Fn crypto_cursor_init 2559c0e3d3aSJohn Baldwininitializes the cursor 2569c0e3d3aSJohn Baldwin.Fa cc 2579c0e3d3aSJohn Baldwinto reference the start of the data buffer 2589c0e3d3aSJohn Baldwin.Fa cb . 2599c0e3d3aSJohn Baldwin.Pp 2609c0e3d3aSJohn Baldwin.Fn crypto_cursor_advance 2619c0e3d3aSJohn Baldwinadvances the cursor 2629c0e3d3aSJohn Baldwin.Fa amount 2639c0e3d3aSJohn Baldwinbytes forward in the data buffer. 2649c0e3d3aSJohn Baldwin.Pp 2659c0e3d3aSJohn Baldwin.Fn crypto_cursor_copyback 2669c0e3d3aSJohn Baldwincopies 2679c0e3d3aSJohn Baldwin.Fa size 2689c0e3d3aSJohn Baldwinbytes from the local buffer pointed to by 2699c0e3d3aSJohn Baldwin.Fa src 2709c0e3d3aSJohn Baldwininto the data buffer associated with 2719c0e3d3aSJohn Baldwin.Fa cc . 2729c0e3d3aSJohn BaldwinThe bytes are written to the current position of 2739c0e3d3aSJohn Baldwin.Fa cc , 2749c0e3d3aSJohn Baldwinand the cursor is then advanced by 2759c0e3d3aSJohn Baldwin.Fa size 2769c0e3d3aSJohn Baldwinbytes. 2779c0e3d3aSJohn Baldwin.Pp 2789c0e3d3aSJohn Baldwin.Fn crypto_cursor_copydata 2799c0e3d3aSJohn Baldwincopies 2809c0e3d3aSJohn Baldwin.Fa size 2819c0e3d3aSJohn Baldwinbytes out of the data buffer associated with 2829c0e3d3aSJohn Baldwin.Fa cc 2839c0e3d3aSJohn Baldwininto a local buffer pointed to by 2849c0e3d3aSJohn Baldwin.Fa dst . 2859c0e3d3aSJohn BaldwinThe bytes are read from the current position of 2869c0e3d3aSJohn Baldwin.Fa cc , 2879c0e3d3aSJohn Baldwinand the cursor is then advanced by 2889c0e3d3aSJohn Baldwin.Fa size 2899c0e3d3aSJohn Baldwinbytes. 2909c0e3d3aSJohn Baldwin.Pp 2919c0e3d3aSJohn Baldwin.Fn crypto_cursor_copydata_noadv 2929c0e3d3aSJohn Baldwinis similar to 2939c0e3d3aSJohn Baldwin.Fn crypto_cursor_copydata 2949c0e3d3aSJohn Baldwinexcept that it does not change the current position of 2959c0e3d3aSJohn Baldwin.Fa cc . 2969c0e3d3aSJohn Baldwin.Pp 297beb817edSJohn Baldwin.Fn crypto_cursor_segment 298beb817edSJohn Baldwinreturns the start of the virtually-contiguous segment at the current position of 299beb817edSJohn Baldwin.Fa cc . 300beb817edSJohn BaldwinThe length of the segment is stored in 301beb817edSJohn Baldwin.Fa len . 3029c0e3d3aSJohn Baldwin.Sh RETURN VALUES 3039c0e3d3aSJohn Baldwin.Fn crypto_apply 3049c0e3d3aSJohn Baldwinand 3059c0e3d3aSJohn Baldwin.Fn crypto_apply_buf 3069c0e3d3aSJohn Baldwinreturn the return value from the caller-supplied callback function. 3079c0e3d3aSJohn Baldwin.Pp 3089c0e3d3aSJohn Baldwin.Fn crypto_buffer_contiguous_subsegment , 3099c0e3d3aSJohn Baldwin.Fn crypto_contiguous_subsegment , 310beb817edSJohn Baldwinand 311beb817edSJohn Baldwin.Fn crypto_cursor_segment 3129c0e3d3aSJohn Baldwinreturn a pointer to a contiguous segment or 3139c0e3d3aSJohn Baldwin.Dv NULL . 3149c0e3d3aSJohn Baldwin.Pp 3159c0e3d3aSJohn Baldwin.Fn crypto_buffer_len 3169c0e3d3aSJohn Baldwinreturns the length of a buffer in bytes. 3179c0e3d3aSJohn Baldwin.Pp 3189c0e3d3aSJohn Baldwin.Fn crypto_cursor_seglen 3199c0e3d3aSJohn Baldwinreturns the length in bytes of a contiguous segment. 3209c0e3d3aSJohn Baldwin.Pp 32109bfa5cfSMark Johnston.Fn crypto_cursor_copy 32209bfa5cfSMark Johnstonmakes a deep copy of the cursor 32309bfa5cfSMark Johnston.Fa fromc . 32409bfa5cfSMark JohnstonThe two copies do not share any state and can thus be used 32509bfa5cfSMark Johnstonindependently. 32609bfa5cfSMark Johnston.Pp 3279c0e3d3aSJohn Baldwin.Fn CRYPTO_HAS_OUTPUT_BUFFER 3289c0e3d3aSJohn Baldwinreturns true if the request uses a separate output buffer. 3299c0e3d3aSJohn Baldwin.Sh SEE ALSO 3309c0e3d3aSJohn Baldwin.Xr ipsec 4 , 3319c0e3d3aSJohn Baldwin.Xr crypto 7 , 33216694347SGordon Bergling.Xr bus_dma 9 , 3339c0e3d3aSJohn Baldwin.Xr crypto 9 , 3349c0e3d3aSJohn Baldwin.Xr crypto_driver 9 , 335fade09c8SGordon Bergling.Xr crypto_request 9 , 3369c0e3d3aSJohn Baldwin.Xr crypto_session 9 , 337fade09c8SGordon Bergling.Xr mbuf 9 , 3389c0e3d3aSJohn Baldwin.Xr uio 9 339194498e9SGordon Bergling.Sh HISTORY 340194498e9SGordon BerglingThe 341194498e9SGordon Bergling.Nm 342194498e9SGordon Berglingfunctions first appeared in 343194498e9SGordon Bergling.Fx 13 . 344194498e9SGordon Bergling.Sh AUTHORS 345194498e9SGordon BerglingThe 346194498e9SGordon Bergling.Nm 347194498e9SGordon Berglingfunctions and this manual page were written by 348194498e9SGordon Bergling.An John Baldwin Aq Mt jhb@FreeBSD.org . 349