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

(cherry picked from commit 09bfa5cf16)
This commit is contained in:
Mark Johnston 2022-02-15 21:45:32 -05:00
parent 04df02b2f4
commit 2d7f27a4fb
2 changed files with 19 additions and 1 deletions

View File

@ -30,7 +30,7 @@
.\"
.\" $FreeBSD$
.\"
.Dd May 25, 2021
.Dd Feburary 11, 2022
.Dt CRYPTO_BUFFER 9
.Os
.Sh NAME
@ -99,6 +99,11 @@
.Fn crypto_cursor_segbase "struct crypto_buffer_cursor *cc"
.Ft size_t
.Fn crypto_cursor_seglen "struct crypto_buffer_cursor *cc"
.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
@ -327,6 +332,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

@ -741,6 +741,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)
{