1
0
mirror of https://git.FreeBSD.org/src.git synced 2025-01-07 13:14:51 +00:00

opencrypto: Add a routine to copy a crypto buffer cursor

This was useful in converting armv8crypto to use buffer cursors.  There
are some cases where one wants to make two passes over data, and this
provides a way to "reset" a cursor.

Reviewed by:	jhb
MFC after:	1 month
Differential Revision:	https://reviews.freebsd.org/D28949
This commit is contained in:
Mark Johnston 2022-02-15 21:45:32 -05:00
parent 6baea3312d
commit 09bfa5cf16
2 changed files with 19 additions and 1 deletions

View File

@ -30,7 +30,7 @@
.\"
.\" $FreeBSD$
.\"
.Dd June 16, 2021
.Dd Feburary 11, 2022
.Dt CRYPTO_BUFFER 9
.Os
.Sh NAME
@ -95,6 +95,11 @@
.Fc
.Ft void *
.Fn crypto_cursor_segment "struct crypto_buffer_cursor *cc" "size_t *len"
.Ft void
.Fo crypto_cursor_copy
.Fa "const struct crypto_buffer_cursor *fromc"
.Fa "struct crypto_buffer_cursor *toc"
.Fc
.Ft bool
.Fn CRYPTO_HAS_OUTPUT_BUFFER "struct cryptop *crp"
.Sh DESCRIPTION
@ -315,6 +320,12 @@ returns the length of a buffer in bytes.
.Fn crypto_cursor_seglen
returns the length in bytes of a contiguous segment.
.Pp
.Fn crypto_cursor_copy
makes a deep copy of the cursor
.Fa fromc .
The two copies do not share any state and can thus be used
independently.
.Pp
.Fn CRYPTO_HAS_OUTPUT_BUFFER
returns true if the request uses a separate output buffer.
.Sh SEE ALSO

View File

@ -685,6 +685,13 @@ void crypto_cursor_copydata(struct crypto_buffer_cursor *cc, int size,
void crypto_cursor_copydata_noadv(struct crypto_buffer_cursor *cc, int size,
void *vdst);
static __inline void
crypto_cursor_copy(const struct crypto_buffer_cursor *fromc,
struct crypto_buffer_cursor *toc)
{
memcpy(toc, fromc, sizeof(*toc));
}
static __inline void
crypto_read_iv(struct cryptop *crp, void *iv)
{