From owner-svn-src-all@freebsd.org Wed Jun 10 21:18:24 2020 Return-Path: Delivered-To: svn-src-all@mailman.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.nyi.freebsd.org (Postfix) with ESMTP id B98B633F6F9; Wed, 10 Jun 2020 21:18:24 +0000 (UTC) (envelope-from jhb@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 49j0G84rfKz4Zk4; Wed, 10 Jun 2020 21:18:24 +0000 (UTC) (envelope-from jhb@FreeBSD.org) Received: from repo.freebsd.org (repo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id A1776CFEA; Wed, 10 Jun 2020 21:18:24 +0000 (UTC) (envelope-from jhb@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id 05ALIOkR075529; Wed, 10 Jun 2020 21:18:24 GMT (envelope-from jhb@FreeBSD.org) Received: (from jhb@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id 05ALIKSI075506; Wed, 10 Jun 2020 21:18:20 GMT (envelope-from jhb@FreeBSD.org) Message-Id: <202006102118.05ALIKSI075506@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: jhb set sender to jhb@FreeBSD.org using -f From: John Baldwin Date: Wed, 10 Jun 2020 21:18:20 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r362028 - in head/sys: crypto/aesni crypto/blake2 crypto/via dev/glxsb opencrypto X-SVN-Group: head X-SVN-Commit-Author: jhb X-SVN-Commit-Paths: in head/sys: crypto/aesni crypto/blake2 crypto/via dev/glxsb opencrypto X-SVN-Commit-Revision: 362028 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.33 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 10 Jun 2020 21:18:24 -0000 Author: jhb Date: Wed Jun 10 21:18:19 2020 New Revision: 362028 URL: https://svnweb.freebsd.org/changeset/base/362028 Log: Adjust crypto_apply function callbacks for OCF. - crypto_apply() is only used for reading a buffer to compute a digest, so change the data pointer to a const pointer. - To better match m_apply(), change the data pointer type to void * and the length from uint16_t to u_int. The length field in particular matters as none of the apply logic was splitting requests larger than UINT16_MAX. - Adjust the auth_xform Update callback to match the function prototype passed to crypto_apply() and crypto_apply_buf(). This removes the needs for casts when using the Update callback. - Change the Reinit and Setkey callbacks to also use a u_int length instead of uint16_t. - Update auth transforms for the changes. While here, use C99 initializers for auth_hash structures and avoid casts on callbacks. Reviewed by: cem Sponsored by: Chelsio Communications Differential Revision: https://reviews.freebsd.org/D25171 Modified: head/sys/crypto/aesni/aesni.c head/sys/crypto/aesni/aesni.h head/sys/crypto/blake2/blake2-sw.c head/sys/crypto/blake2/blake2_cryptodev.c head/sys/crypto/via/padlock_hash.c head/sys/dev/glxsb/glxsb_hash.c head/sys/opencrypto/cbc_mac.c head/sys/opencrypto/cbc_mac.h head/sys/opencrypto/criov.c head/sys/opencrypto/cryptodev.h head/sys/opencrypto/cryptosoft.c head/sys/opencrypto/gmac.c head/sys/opencrypto/gmac.h head/sys/opencrypto/xform_auth.h head/sys/opencrypto/xform_cbc_mac.c head/sys/opencrypto/xform_gmac.c head/sys/opencrypto/xform_null.c head/sys/opencrypto/xform_poly1305.c head/sys/opencrypto/xform_poly1305.h head/sys/opencrypto/xform_rmd160.c head/sys/opencrypto/xform_sha1.c head/sys/opencrypto/xform_sha2.c Modified: head/sys/crypto/aesni/aesni.c ============================================================================== --- head/sys/crypto/aesni/aesni.c Wed Jun 10 20:12:45 2020 (r362027) +++ head/sys/crypto/aesni/aesni.c Wed Jun 10 21:18:19 2020 (r362028) @@ -388,7 +388,7 @@ MODULE_VERSION(aesni, 1); MODULE_DEPEND(aesni, crypto, 1, 1, 1); static int -intel_sha1_update(void *vctx, void *vdata, u_int datalen) +intel_sha1_update(void *vctx, const void *vdata, u_int datalen) { struct sha1_ctxt *ctx = vctx; const char *data = vdata; @@ -437,7 +437,7 @@ SHA1_Finalize_fn(void *digest, void *ctx) } static int -intel_sha256_update(void *vctx, void *vdata, u_int len) +intel_sha256_update(void *vctx, const void *vdata, u_int len) { SHA256_CTX *ctx = vctx; uint64_t bitlen; Modified: head/sys/crypto/aesni/aesni.h ============================================================================== --- head/sys/crypto/aesni/aesni.h Wed Jun 10 20:12:45 2020 (r362027) +++ head/sys/crypto/aesni/aesni.h Wed Jun 10 21:18:19 2020 (r362028) @@ -63,7 +63,7 @@ struct aesni_session { int mlen; int hash_len; void (*hash_init)(void *); - int (*hash_update)(void *, void *, unsigned); + int (*hash_update)(void *, const void *, u_int); void (*hash_finalize)(void *, void *); bool hmac; }; Modified: head/sys/crypto/blake2/blake2-sw.c ============================================================================== --- head/sys/crypto/blake2/blake2-sw.c Wed Jun 10 20:12:45 2020 (r362027) +++ head/sys/crypto/blake2/blake2-sw.c Wed Jun 10 21:18:19 2020 (r362028) @@ -49,7 +49,7 @@ blake2b_xform_init(void *vctx) } static void -blake2b_xform_setkey(void *vctx, const uint8_t *key, uint16_t klen) +blake2b_xform_setkey(void *vctx, const uint8_t *key, u_int klen) { struct blake2b_xform_ctx *ctx = vctx; @@ -60,7 +60,7 @@ blake2b_xform_setkey(void *vctx, const uint8_t *key, u } static int -blake2b_xform_update(void *vctx, const uint8_t *data, uint16_t len) +blake2b_xform_update(void *vctx, const void *data, u_int len) { struct blake2b_xform_ctx *ctx = vctx; int rc; @@ -117,7 +117,7 @@ blake2s_xform_init(void *vctx) } static void -blake2s_xform_setkey(void *vctx, const uint8_t *key, uint16_t klen) +blake2s_xform_setkey(void *vctx, const uint8_t *key, u_int klen) { struct blake2s_xform_ctx *ctx = vctx; @@ -128,7 +128,7 @@ blake2s_xform_setkey(void *vctx, const uint8_t *key, u } static int -blake2s_xform_update(void *vctx, const uint8_t *data, uint16_t len) +blake2s_xform_update(void *vctx, const void *data, u_int len) { struct blake2s_xform_ctx *ctx = vctx; int rc; Modified: head/sys/crypto/blake2/blake2_cryptodev.c ============================================================================== --- head/sys/crypto/blake2/blake2_cryptodev.c Wed Jun 10 20:12:45 2020 (r362027) +++ head/sys/crypto/blake2/blake2_cryptodev.c Wed Jun 10 21:18:19 2020 (r362028) @@ -304,7 +304,7 @@ blake2_cipher_setup(struct blake2_session *ses, } static int -blake2b_applicator(void *state, void *buf, u_int len) +blake2b_applicator(void *state, const void *buf, u_int len) { int rc; @@ -315,7 +315,7 @@ blake2b_applicator(void *state, void *buf, u_int len) } static int -blake2s_applicator(void *state, void *buf, u_int len) +blake2s_applicator(void *state, const void *buf, u_int len) { int rc; Modified: head/sys/crypto/via/padlock_hash.c ============================================================================== --- head/sys/crypto/via/padlock_hash.c Wed Jun 10 20:12:45 2020 (r362027) +++ head/sys/crypto/via/padlock_hash.c Wed Jun 10 21:18:19 2020 (r362028) @@ -73,11 +73,10 @@ struct padlock_sha_ctx { }; CTASSERT(sizeof(struct padlock_sha_ctx) <= sizeof(union authctx)); -static void padlock_sha_init(struct padlock_sha_ctx *ctx); -static int padlock_sha_update(struct padlock_sha_ctx *ctx, const uint8_t *buf, - uint16_t bufsize); -static void padlock_sha1_final(uint8_t *hash, struct padlock_sha_ctx *ctx); -static void padlock_sha256_final(uint8_t *hash, struct padlock_sha_ctx *ctx); +static void padlock_sha_init(void *vctx); +static int padlock_sha_update(void *vctx, const void *buf, u_int bufsize); +static void padlock_sha1_final(uint8_t *hash, void *vctx); +static void padlock_sha256_final(uint8_t *hash, void *vctx); static struct auth_hash padlock_hmac_sha1 = { .type = CRYPTO_SHA1_HMAC, @@ -86,9 +85,9 @@ static struct auth_hash padlock_hmac_sha1 = { .hashsize = SHA1_HASH_LEN, .ctxsize = sizeof(struct padlock_sha_ctx), .blocksize = SHA1_BLOCK_LEN, - .Init = (void (*)(void *))padlock_sha_init, - .Update = (int (*)(void *, const uint8_t *, uint16_t))padlock_sha_update, - .Final = (void (*)(uint8_t *, void *))padlock_sha1_final, + .Init = padlock_sha_init, + .Update = padlock_sha_update, + .Final = padlock_sha1_final, }; static struct auth_hash padlock_hmac_sha256 = { @@ -98,9 +97,9 @@ static struct auth_hash padlock_hmac_sha256 = { .hashsize = SHA2_256_HASH_LEN, .ctxsize = sizeof(struct padlock_sha_ctx), .blocksize = SHA2_256_BLOCK_LEN, - .Init = (void (*)(void *))padlock_sha_init, - .Update = (int (*)(void *, const uint8_t *, uint16_t))padlock_sha_update, - .Final = (void (*)(uint8_t *, void *))padlock_sha256_final, + .Init = padlock_sha_init, + .Update = padlock_sha_update, + .Final = padlock_sha256_final, }; MALLOC_DECLARE(M_PADLOCK); @@ -165,18 +164,22 @@ padlock_do_sha256(const char *in, char *out, int count } static void -padlock_sha_init(struct padlock_sha_ctx *ctx) +padlock_sha_init(void *vctx) { + struct padlock_sha_ctx *ctx; + ctx = vctx; ctx->psc_buf = NULL; ctx->psc_offset = 0; ctx->psc_size = 0; } static int -padlock_sha_update(struct padlock_sha_ctx *ctx, const uint8_t *buf, uint16_t bufsize) +padlock_sha_update(void *vctx, const void *buf, u_int bufsize) { + struct padlock_sha_ctx *ctx; + ctx = vctx; if (ctx->psc_size - ctx->psc_offset < bufsize) { ctx->psc_size = MAX(ctx->psc_size * 2, ctx->psc_size + bufsize); ctx->psc_buf = realloc(ctx->psc_buf, ctx->psc_size, M_PADLOCK, @@ -190,9 +193,11 @@ padlock_sha_update(struct padlock_sha_ctx *ctx, const } static void -padlock_sha_free(struct padlock_sha_ctx *ctx) +padlock_sha_free(void *vctx) { + struct padlock_sha_ctx *ctx; + ctx = vctx; if (ctx->psc_buf != NULL) { //bzero(ctx->psc_buf, ctx->psc_size); free(ctx->psc_buf, M_PADLOCK); @@ -203,17 +208,21 @@ padlock_sha_free(struct padlock_sha_ctx *ctx) } static void -padlock_sha1_final(uint8_t *hash, struct padlock_sha_ctx *ctx) +padlock_sha1_final(uint8_t *hash, void *vctx) { + struct padlock_sha_ctx *ctx; + ctx = vctx; padlock_do_sha1(ctx->psc_buf, hash, ctx->psc_offset); padlock_sha_free(ctx); } static void -padlock_sha256_final(uint8_t *hash, struct padlock_sha_ctx *ctx) +padlock_sha256_final(uint8_t *hash, void *vctx) { + struct padlock_sha_ctx *ctx; + ctx = vctx; padlock_do_sha256(ctx->psc_buf, hash, ctx->psc_offset); padlock_sha_free(ctx); } @@ -282,14 +291,13 @@ padlock_authcompute(struct padlock_session *ses, struc padlock_copy_ctx(axf, ses->ses_ictx, &ctx); error = crypto_apply(crp, crp->crp_aad_start, crp->crp_aad_length, - (int (*)(void *, void *, unsigned int))axf->Update, (caddr_t)&ctx); + axf->Update, &ctx); if (error != 0) { padlock_free_ctx(axf, &ctx); return (error); } error = crypto_apply(crp, crp->crp_payload_start, - crp->crp_payload_length, - (int (*)(void *, void *, unsigned int))axf->Update, (caddr_t)&ctx); + crp->crp_payload_length, axf->Update, &ctx); if (error != 0) { padlock_free_ctx(axf, &ctx); return (error); Modified: head/sys/dev/glxsb/glxsb_hash.c ============================================================================== --- head/sys/dev/glxsb/glxsb_hash.c Wed Jun 10 20:12:45 2020 (r362027) +++ head/sys/dev/glxsb/glxsb_hash.c Wed Jun 10 21:18:19 2020 (r362028) @@ -73,12 +73,11 @@ glxsb_authcompute(struct glxsb_session *ses, struct cr axf = ses->ses_axf; bcopy(ses->ses_ictx, &ctx, axf->ctxsize); error = crypto_apply(crp, crp->crp_aad_start, crp->crp_aad_length, - (int (*)(void *, void *, unsigned int))axf->Update, (caddr_t)&ctx); + axf->Update, &ctx); if (error != 0) return (error); error = crypto_apply(crp, crp->crp_payload_start, - crp->crp_payload_length, - (int (*)(void *, void *, unsigned int))axf->Update, (caddr_t)&ctx); + crp->crp_payload_length, axf->Update, &ctx); if (error != 0) return (error); Modified: head/sys/opencrypto/cbc_mac.c ============================================================================== --- head/sys/opencrypto/cbc_mac.c Wed Jun 10 20:12:45 2020 (r362027) +++ head/sys/opencrypto/cbc_mac.c Wed Jun 10 21:18:19 2020 (r362028) @@ -56,14 +56,20 @@ xor_and_encrypt(struct aes_cbc_mac_ctx *ctx, } void -AES_CBC_MAC_Init(struct aes_cbc_mac_ctx *ctx) +AES_CBC_MAC_Init(void *vctx) { + struct aes_cbc_mac_ctx *ctx; + + ctx = vctx; bzero(ctx, sizeof(*ctx)); } void -AES_CBC_MAC_Setkey(struct aes_cbc_mac_ctx *ctx, const uint8_t *key, uint16_t klen) +AES_CBC_MAC_Setkey(void *vctx, const uint8_t *key, u_int klen) { + struct aes_cbc_mac_ctx *ctx; + + ctx = vctx; ctx->rounds = rijndaelKeySetupEnc(ctx->keysched, key, klen * 8); } @@ -76,8 +82,9 @@ AES_CBC_MAC_Setkey(struct aes_cbc_mac_ctx *ctx, const * nonce, as well as information about the sizes and lengths involved. */ void -AES_CBC_MAC_Reinit(struct aes_cbc_mac_ctx *ctx, const uint8_t *nonce, uint16_t nonceLen) +AES_CBC_MAC_Reinit(void *vctx, const uint8_t *nonce, u_int nonceLen) { + struct aes_cbc_mac_ctx *ctx = vctx; uint8_t b0[CCM_CBC_BLOCK_LEN]; uint8_t *bp = b0, flags = 0; uint8_t L = 0; @@ -150,11 +157,15 @@ AES_CBC_MAC_Reinit(struct aes_cbc_mac_ctx *ctx, const } int -AES_CBC_MAC_Update(struct aes_cbc_mac_ctx *ctx, const uint8_t *data, - uint16_t length) +AES_CBC_MAC_Update(void *vctx, const void *vdata, u_int length) { + struct aes_cbc_mac_ctx *ctx; + const uint8_t *data; size_t copy_amt; + ctx = vctx; + data = vdata; + /* * This will be called in one of two phases: * (1) Applying authentication data, or @@ -241,10 +252,13 @@ AES_CBC_MAC_Update(struct aes_cbc_mac_ctx *ctx, const } void -AES_CBC_MAC_Final(uint8_t *buf, struct aes_cbc_mac_ctx *ctx) +AES_CBC_MAC_Final(uint8_t *buf, void *vctx) { + struct aes_cbc_mac_ctx *ctx; uint8_t s0[CCM_CBC_BLOCK_LEN]; - + + ctx = vctx; + /* * We first need to check to see if we've got any data * left over to encrypt. Modified: head/sys/opencrypto/cbc_mac.h ============================================================================== --- head/sys/opencrypto/cbc_mac.h Wed Jun 10 20:12:45 2020 (r362027) +++ head/sys/opencrypto/cbc_mac.h Wed Jun 10 21:18:19 2020 (r362028) @@ -58,10 +58,10 @@ struct aes_cbc_mac_ctx { uint32_t keysched[4*(RIJNDAEL_MAXNR+1)]; }; -void AES_CBC_MAC_Init(struct aes_cbc_mac_ctx *); -void AES_CBC_MAC_Setkey(struct aes_cbc_mac_ctx *, const uint8_t *, uint16_t); -void AES_CBC_MAC_Reinit(struct aes_cbc_mac_ctx *, const uint8_t *, uint16_t); -int AES_CBC_MAC_Update(struct aes_cbc_mac_ctx *, const uint8_t *, uint16_t); -void AES_CBC_MAC_Final(uint8_t *, struct aes_cbc_mac_ctx *); +void AES_CBC_MAC_Init(void *); +void AES_CBC_MAC_Setkey(void *, const uint8_t *, u_int); +void AES_CBC_MAC_Reinit(void *, const uint8_t *, u_int); +int AES_CBC_MAC_Update(void *, const void *, u_int); +void AES_CBC_MAC_Final(uint8_t *, void *); #endif /* _CBC_CCM_H */ Modified: head/sys/opencrypto/criov.c ============================================================================== --- head/sys/opencrypto/criov.c Wed Jun 10 20:12:45 2020 (r362027) +++ head/sys/opencrypto/criov.c Wed Jun 10 21:18:19 2020 (r362028) @@ -385,8 +385,8 @@ crypto_cursor_copydata_noadv(struct crypto_buffer_curs * the beginning, continuing for "len" bytes. */ static int -cuio_apply(struct uio *uio, int off, int len, int (*f)(void *, void *, u_int), - void *arg) +cuio_apply(struct uio *uio, int off, int len, + int (*f)(void *, const void *, u_int), void *arg) { struct iovec *iov = uio->uio_iov; int iol = uio->uio_iovcnt; @@ -461,13 +461,14 @@ crypto_copydata(struct cryptop *crp, int off, int size int crypto_apply_buf(struct crypto_buffer *cb, int off, int len, - int (*f)(void *, void *, u_int), void *arg) + int (*f)(void *, const void *, u_int), void *arg) { int error; switch (cb->cb_type) { case CRYPTO_BUF_MBUF: - error = m_apply(cb->cb_mbuf, off, len, f, arg); + error = m_apply(cb->cb_mbuf, off, len, + (int (*)(void *, void *, u_int))f, arg); break; case CRYPTO_BUF_UIO: error = cuio_apply(cb->cb_uio, off, len, f, arg); @@ -488,7 +489,7 @@ crypto_apply_buf(struct crypto_buffer *cb, int off, in int crypto_apply(struct cryptop *crp, int off, int len, - int (*f)(void *, void *, u_int), void *arg) + int (*f)(void *, const void *, u_int), void *arg) { return (crypto_apply_buf(&crp->crp_buf, off, len, f, arg)); } Modified: head/sys/opencrypto/cryptodev.h ============================================================================== --- head/sys/opencrypto/cryptodev.h Wed Jun 10 20:12:45 2020 (r362027) +++ head/sys/opencrypto/cryptodev.h Wed Jun 10 21:18:19 2020 (r362028) @@ -668,12 +668,12 @@ void crypto_copyback(struct cryptop *crp, int off, int const void *src); void crypto_copydata(struct cryptop *crp, int off, int size, void *dst); int crypto_apply(struct cryptop *crp, int off, int len, - int (*f)(void *, void *, u_int), void *arg); + int (*f)(void *, const void *, u_int), void *arg); void *crypto_contiguous_subsegment(struct cryptop *crp, size_t skip, size_t len); int crypto_apply_buf(struct crypto_buffer *cb, int off, int len, - int (*f)(void *, void *, u_int), void *arg); + int (*f)(void *, const void *, u_int), void *arg); void *crypto_buffer_contiguous_subsegment(struct crypto_buffer *cb, size_t skip, size_t len); size_t crypto_buffer_len(struct crypto_buffer *cb); Modified: head/sys/opencrypto/cryptosoft.c ============================================================================== --- head/sys/opencrypto/cryptosoft.c Wed Jun 10 20:12:45 2020 (r362027) +++ head/sys/opencrypto/cryptosoft.c Wed Jun 10 21:18:19 2020 (r362028) @@ -336,7 +336,7 @@ swcr_authcompute(struct swcr_session *ses, struct cryp bcopy(sw->sw_ictx, &ctx, axf->ctxsize); err = crypto_apply(crp, crp->crp_aad_start, crp->crp_aad_length, - (int (*)(void *, void *, unsigned int))axf->Update, &ctx); + axf->Update, &ctx); if (err) return err; @@ -344,11 +344,10 @@ swcr_authcompute(struct swcr_session *ses, struct cryp CRYPTO_OP_IS_ENCRYPT(crp->crp_op)) err = crypto_apply_buf(&crp->crp_obuf, crp->crp_payload_output_start, crp->crp_payload_length, - (int (*)(void *, void *, unsigned int))axf->Update, &ctx); + axf->Update, &ctx); else err = crypto_apply(crp, crp->crp_payload_start, - crp->crp_payload_length, - (int (*)(void *, void *, unsigned int))axf->Update, &ctx); + crp->crp_payload_length, axf->Update, &ctx); if (err) return err; Modified: head/sys/opencrypto/gmac.c ============================================================================== --- head/sys/opencrypto/gmac.c Wed Jun 10 20:12:45 2020 (r362027) +++ head/sys/opencrypto/gmac.c Wed Jun 10 21:18:19 2020 (r362028) @@ -36,19 +36,23 @@ #include void -AES_GMAC_Init(struct aes_gmac_ctx *agc) +AES_GMAC_Init(void *ctx) { + struct aes_gmac_ctx *agc; + agc = ctx; bzero(agc, sizeof *agc); } void -AES_GMAC_Setkey(struct aes_gmac_ctx *agc, const uint8_t *key, uint16_t klen) +AES_GMAC_Setkey(void *ctx, const uint8_t *key, u_int klen) { + struct aes_gmac_ctx *agc; const uint8_t zeros[GMAC_BLOCK_LEN] = {}; struct gf128 h; uint8_t hbuf[GMAC_BLOCK_LEN]; + agc = ctx; agc->rounds = rijndaelKeySetupEnc(agc->keysched, key, klen * 8); rijndaelEncrypt(agc->keysched, agc->rounds, zeros, hbuf); @@ -61,20 +65,26 @@ AES_GMAC_Setkey(struct aes_gmac_ctx *agc, const uint8_ } void -AES_GMAC_Reinit(struct aes_gmac_ctx *agc, const uint8_t *iv, uint16_t ivlen) +AES_GMAC_Reinit(void *ctx, const uint8_t *iv, u_int ivlen) { + struct aes_gmac_ctx *agc; + agc = ctx; KASSERT(ivlen <= sizeof agc->counter, ("passed ivlen too large!")); bcopy(iv, agc->counter, ivlen); } int -AES_GMAC_Update(struct aes_gmac_ctx *agc, const uint8_t *data, uint16_t len) +AES_GMAC_Update(void *ctx, const void *vdata, u_int len) { + struct aes_gmac_ctx *agc; + const uint8_t *data; struct gf128 v; uint8_t buf[GMAC_BLOCK_LEN] = {}; int i; + agc = ctx; + data = vdata; v = agc->hash; while (len > 0) { @@ -103,12 +113,14 @@ AES_GMAC_Update(struct aes_gmac_ctx *agc, const uint8_ } void -AES_GMAC_Final(uint8_t digest[GMAC_DIGEST_LEN], struct aes_gmac_ctx *agc) +AES_GMAC_Final(uint8_t *digest, void *ctx) { + struct aes_gmac_ctx *agc; uint8_t enccntr[GMAC_BLOCK_LEN]; struct gf128 a; /* XXX - zero additional bytes? */ + agc = ctx; agc->counter[GMAC_BLOCK_LEN - 1] = 1; rijndaelEncrypt(agc->keysched, agc->rounds, agc->counter, enccntr); Modified: head/sys/opencrypto/gmac.h ============================================================================== --- head/sys/opencrypto/gmac.h Wed Jun 10 20:12:45 2020 (r362027) +++ head/sys/opencrypto/gmac.h Wed Jun 10 21:18:19 2020 (r362028) @@ -47,10 +47,10 @@ struct aes_gmac_ctx { int rounds; }; -void AES_GMAC_Init(struct aes_gmac_ctx *); -void AES_GMAC_Setkey(struct aes_gmac_ctx *, const uint8_t *, uint16_t); -void AES_GMAC_Reinit(struct aes_gmac_ctx *, const uint8_t *, uint16_t); -int AES_GMAC_Update(struct aes_gmac_ctx *, const uint8_t *, uint16_t); -void AES_GMAC_Final(uint8_t [GMAC_DIGEST_LEN], struct aes_gmac_ctx *); +void AES_GMAC_Init(void *); +void AES_GMAC_Setkey(void *, const uint8_t *, u_int); +void AES_GMAC_Reinit(void *, const uint8_t *, u_int); +int AES_GMAC_Update(void *, const void *, u_int); +void AES_GMAC_Final(uint8_t *, void *); #endif /* _GMAC_H_ */ Modified: head/sys/opencrypto/xform_auth.h ============================================================================== --- head/sys/opencrypto/xform_auth.h Wed Jun 10 20:12:45 2020 (r362027) +++ head/sys/opencrypto/xform_auth.h Wed Jun 10 21:18:19 2020 (r362028) @@ -57,9 +57,9 @@ struct auth_hash { u_int16_t ctxsize; u_int16_t blocksize; void (*Init) (void *); - void (*Setkey) (void *, const u_int8_t *, u_int16_t); - void (*Reinit) (void *, const u_int8_t *, u_int16_t); - int (*Update) (void *, const u_int8_t *, u_int16_t); + void (*Setkey) (void *, const uint8_t *, u_int); + void (*Reinit) (void *, const uint8_t *, u_int); + int (*Update) (void *, const void *, u_int); void (*Final) (u_int8_t *, void *); }; Modified: head/sys/opencrypto/xform_cbc_mac.c ============================================================================== --- head/sys/opencrypto/xform_cbc_mac.c Wed Jun 10 20:12:45 2020 (r362027) +++ head/sys/opencrypto/xform_cbc_mac.c Wed Jun 10 21:18:19 2020 (r362028) @@ -12,14 +12,11 @@ struct auth_hash auth_hash_ccm_cbc_mac_128 = { .hashsize = AES_CBC_MAC_HASH_LEN, .ctxsize = sizeof(struct aes_cbc_mac_ctx), .blocksize = CCM_CBC_BLOCK_LEN, - .Init = (void (*)(void *)) AES_CBC_MAC_Init, - .Setkey = - (void (*)(void *, const u_int8_t *, u_int16_t))AES_CBC_MAC_Setkey, - .Reinit = - (void (*)(void *, const u_int8_t *, u_int16_t)) AES_CBC_MAC_Reinit, - .Update = - (int (*)(void *, const u_int8_t *, u_int16_t)) AES_CBC_MAC_Update, - .Final = (void (*)(u_int8_t *, void *)) AES_CBC_MAC_Final, + .Init = AES_CBC_MAC_Init, + .Setkey = AES_CBC_MAC_Setkey, + .Reinit = AES_CBC_MAC_Reinit, + .Update = AES_CBC_MAC_Update, + .Final = AES_CBC_MAC_Final, }; struct auth_hash auth_hash_ccm_cbc_mac_192 = { .type = CRYPTO_AES_CCM_CBC_MAC, @@ -28,14 +25,11 @@ struct auth_hash auth_hash_ccm_cbc_mac_192 = { .hashsize = AES_CBC_MAC_HASH_LEN, .ctxsize = sizeof(struct aes_cbc_mac_ctx), .blocksize = CCM_CBC_BLOCK_LEN, - .Init = (void (*)(void *)) AES_CBC_MAC_Init, - .Setkey = - (void (*)(void *, const u_int8_t *, u_int16_t)) AES_CBC_MAC_Setkey, - .Reinit = - (void (*)(void *, const u_int8_t *, u_int16_t)) AES_CBC_MAC_Reinit, - .Update = - (int (*)(void *, const u_int8_t *, u_int16_t)) AES_CBC_MAC_Update, - .Final = (void (*)(u_int8_t *, void *)) AES_CBC_MAC_Final, + .Init = AES_CBC_MAC_Init, + .Setkey = AES_CBC_MAC_Setkey, + .Reinit = AES_CBC_MAC_Reinit, + .Update = AES_CBC_MAC_Update, + .Final = AES_CBC_MAC_Final, }; struct auth_hash auth_hash_ccm_cbc_mac_256 = { .type = CRYPTO_AES_CCM_CBC_MAC, @@ -44,12 +38,9 @@ struct auth_hash auth_hash_ccm_cbc_mac_256 = { .hashsize = AES_CBC_MAC_HASH_LEN, .ctxsize = sizeof(struct aes_cbc_mac_ctx), .blocksize = CCM_CBC_BLOCK_LEN, - .Init = (void (*)(void *)) AES_CBC_MAC_Init, - .Setkey = - (void (*)(void *, const u_int8_t *, u_int16_t)) AES_CBC_MAC_Setkey, - .Reinit = - (void (*)(void *, const u_int8_t *, u_int16_t)) AES_CBC_MAC_Reinit, - .Update = - (int (*)(void *, const u_int8_t *, u_int16_t)) AES_CBC_MAC_Update, - .Final = (void (*)(u_int8_t *, void *)) AES_CBC_MAC_Final, + .Init = AES_CBC_MAC_Init, + .Setkey = AES_CBC_MAC_Setkey, + .Reinit = AES_CBC_MAC_Reinit, + .Update = AES_CBC_MAC_Update, + .Final = AES_CBC_MAC_Final, }; Modified: head/sys/opencrypto/xform_gmac.c ============================================================================== --- head/sys/opencrypto/xform_gmac.c Wed Jun 10 20:12:45 2020 (r362027) +++ head/sys/opencrypto/xform_gmac.c Wed Jun 10 21:18:19 2020 (r362028) @@ -65,34 +65,43 @@ struct enc_xform enc_xform_aes_nist_gmac = { /* Authentication instances */ struct auth_hash auth_hash_nist_gmac_aes_128 = { - CRYPTO_AES_NIST_GMAC, "GMAC-AES-128", - AES_128_GMAC_KEY_LEN, AES_GMAC_HASH_LEN, sizeof(struct aes_gmac_ctx), - GMAC_BLOCK_LEN, - (void (*)(void *)) AES_GMAC_Init, - (void (*)(void *, const u_int8_t *, u_int16_t)) AES_GMAC_Setkey, - (void (*)(void *, const u_int8_t *, u_int16_t)) AES_GMAC_Reinit, - (int (*)(void *, const u_int8_t *, u_int16_t)) AES_GMAC_Update, - (void (*)(u_int8_t *, void *)) AES_GMAC_Final + .type = CRYPTO_AES_NIST_GMAC, + .name = "GMAC-AES-128", + .keysize = AES_128_GMAC_KEY_LEN, + .hashsize = AES_GMAC_HASH_LEN, + .ctxsize = sizeof(struct aes_gmac_ctx), + .blocksize = GMAC_BLOCK_LEN, + .Init = AES_GMAC_Init, + .Setkey = AES_GMAC_Setkey, + .Reinit = AES_GMAC_Reinit, + .Update = AES_GMAC_Update, + .Final = AES_GMAC_Final, }; struct auth_hash auth_hash_nist_gmac_aes_192 = { - CRYPTO_AES_NIST_GMAC, "GMAC-AES-192", - AES_192_GMAC_KEY_LEN, AES_GMAC_HASH_LEN, sizeof(struct aes_gmac_ctx), - GMAC_BLOCK_LEN, - (void (*)(void *)) AES_GMAC_Init, - (void (*)(void *, const u_int8_t *, u_int16_t)) AES_GMAC_Setkey, - (void (*)(void *, const u_int8_t *, u_int16_t)) AES_GMAC_Reinit, - (int (*)(void *, const u_int8_t *, u_int16_t)) AES_GMAC_Update, - (void (*)(u_int8_t *, void *)) AES_GMAC_Final + .type = CRYPTO_AES_NIST_GMAC, + .name = "GMAC-AES-192", + .keysize = AES_192_GMAC_KEY_LEN, + .hashsize = AES_GMAC_HASH_LEN, + .ctxsize = sizeof(struct aes_gmac_ctx), + .blocksize = GMAC_BLOCK_LEN, + .Init = AES_GMAC_Init, + .Setkey = AES_GMAC_Setkey, + .Reinit = AES_GMAC_Reinit, + .Update = AES_GMAC_Update, + .Final = AES_GMAC_Final, }; struct auth_hash auth_hash_nist_gmac_aes_256 = { - CRYPTO_AES_NIST_GMAC, "GMAC-AES-256", - AES_256_GMAC_KEY_LEN, AES_GMAC_HASH_LEN, sizeof(struct aes_gmac_ctx), - GMAC_BLOCK_LEN, - (void (*)(void *)) AES_GMAC_Init, - (void (*)(void *, const u_int8_t *, u_int16_t)) AES_GMAC_Setkey, - (void (*)(void *, const u_int8_t *, u_int16_t)) AES_GMAC_Reinit, - (int (*)(void *, const u_int8_t *, u_int16_t)) AES_GMAC_Update, - (void (*)(u_int8_t *, void *)) AES_GMAC_Final + .type = CRYPTO_AES_NIST_GMAC, + .name = "GMAC-AES-256", + .keysize = AES_256_GMAC_KEY_LEN, + .hashsize = AES_GMAC_HASH_LEN, + .ctxsize = sizeof(struct aes_gmac_ctx), + .blocksize = GMAC_BLOCK_LEN, + .Init = AES_GMAC_Init, + .Setkey = AES_GMAC_Setkey, + .Reinit = AES_GMAC_Reinit, + .Update = AES_GMAC_Update, + .Final = AES_GMAC_Final, }; Modified: head/sys/opencrypto/xform_null.c ============================================================================== --- head/sys/opencrypto/xform_null.c Wed Jun 10 20:12:45 2020 (r362027) +++ head/sys/opencrypto/xform_null.c Wed Jun 10 21:18:19 2020 (r362028) @@ -57,8 +57,8 @@ static int null_setkey(void *, const u_int8_t *, int); static void null_crypt(void *, const uint8_t *, uint8_t *); static void null_init(void *); -static void null_reinit(void *ctx, const u_int8_t *buf, u_int16_t len); -static int null_update(void *, const u_int8_t *, u_int16_t); +static void null_reinit(void *ctx, const uint8_t *buf, u_int len); +static int null_update(void *, const void *, u_int); static void null_final(u_int8_t *, void *); /* Encryption instances */ @@ -114,12 +114,12 @@ null_init(void *ctx) } static void -null_reinit(void *ctx, const u_int8_t *buf, u_int16_t len) +null_reinit(void *ctx, const uint8_t *buf, u_int len) { } static int -null_update(void *ctx, const u_int8_t *buf, u_int16_t len) +null_update(void *ctx, const void *buf, u_int len) { return 0; } Modified: head/sys/opencrypto/xform_poly1305.c ============================================================================== --- head/sys/opencrypto/xform_poly1305.c Wed Jun 10 20:12:45 2020 (r362027) +++ head/sys/opencrypto/xform_poly1305.c Wed Jun 10 21:18:19 2020 (r362028) @@ -17,7 +17,7 @@ CTASSERT(POLY1305_KEY_LEN == crypto_onetimeauth_poly13 CTASSERT(POLY1305_HASH_LEN == crypto_onetimeauth_poly1305_BYTES); void -Poly1305_Init(struct poly1305_xform_ctx *polyctx) +Poly1305_Init(void *polyctx) { /* Nop */ } @@ -37,7 +37,7 @@ Poly1305_Setkey(struct poly1305_xform_ctx *polyctx, } static void -xform_Poly1305_Setkey(void *ctx, const uint8_t *key, uint16_t klen) +xform_Poly1305_Setkey(void *ctx, const uint8_t *key, u_int klen) { Poly1305_Setkey(ctx, key, klen); } @@ -55,7 +55,7 @@ Poly1305_Update(struct poly1305_xform_ctx *polyctx, co } static int -xform_Poly1305_Update(void *ctx, const uint8_t *data, uint16_t len) +xform_Poly1305_Update(void *ctx, const void *data, u_int len) { return (Poly1305_Update(ctx, data, len)); } @@ -84,7 +84,7 @@ struct auth_hash auth_hash_poly1305 = { .hashsize = POLY1305_HASH_LEN, .ctxsize = sizeof(struct poly1305_xform_ctx), .blocksize = crypto_onetimeauth_poly1305_BYTES, - .Init = (void *)Poly1305_Init, + .Init = Poly1305_Init, .Setkey = xform_Poly1305_Setkey, .Update = xform_Poly1305_Update, .Final = xform_Poly1305_Final, Modified: head/sys/opencrypto/xform_poly1305.h ============================================================================== --- head/sys/opencrypto/xform_poly1305.h Wed Jun 10 20:12:45 2020 (r362027) +++ head/sys/opencrypto/xform_poly1305.h Wed Jun 10 21:18:19 2020 (r362028) @@ -6,7 +6,7 @@ struct poly1305_xform_ctx; -void Poly1305_Init(struct poly1305_xform_ctx *); +void Poly1305_Init(void *); void Poly1305_Setkey(struct poly1305_xform_ctx *, const uint8_t [__min_size(32)], size_t); Modified: head/sys/opencrypto/xform_rmd160.c ============================================================================== --- head/sys/opencrypto/xform_rmd160.c Wed Jun 10 20:12:45 2020 (r362027) +++ head/sys/opencrypto/xform_rmd160.c Wed Jun 10 21:18:19 2020 (r362028) @@ -53,7 +53,9 @@ __FBSDID("$FreeBSD$"); #include #include -static int RMD160Update_int(void *, const u_int8_t *, u_int16_t); +static void RMD160Init_int(void *); +static int RMD160Update_int(void *, const void *, u_int); +static void RMD160Final_int(uint8_t *, void *); /* Authentication instances */ struct auth_hash auth_hash_hmac_ripemd_160 = { @@ -63,17 +65,26 @@ struct auth_hash auth_hash_hmac_ripemd_160 = { .hashsize = RIPEMD160_HASH_LEN, .ctxsize = sizeof(RMD160_CTX), .blocksize = RIPEMD160_BLOCK_LEN, - .Init = (void (*)(void *)) RMD160Init, + .Init = RMD160Init_int, .Update = RMD160Update_int, - .Final = (void (*)(u_int8_t *, void *)) RMD160Final, + .Final = RMD160Final_int, }; -/* - * And now for auth. - */ +static void +RMD160Init_int(void *ctx) +{ + RMD160Init(ctx); +} + static int -RMD160Update_int(void *ctx, const u_int8_t *buf, u_int16_t len) +RMD160Update_int(void *ctx, const void *buf, u_int len) { RMD160Update(ctx, buf, len); return 0; +} + +static void +RMD160Final_int(uint8_t *digest, void *ctx) +{ + RMD160Final(digest, ctx); } Modified: head/sys/opencrypto/xform_sha1.c ============================================================================== --- head/sys/opencrypto/xform_sha1.c Wed Jun 10 20:12:45 2020 (r362027) +++ head/sys/opencrypto/xform_sha1.c Wed Jun 10 21:18:19 2020 (r362028) @@ -54,7 +54,7 @@ __FBSDID("$FreeBSD$"); #include static void SHA1Init_int(void *); -static int SHA1Update_int(void *, const u_int8_t *, u_int16_t); +static int SHA1Update_int(void *, const void *, u_int); static void SHA1Final_int(u_int8_t *, void *); /* Plain hash */ @@ -92,7 +92,7 @@ SHA1Init_int(void *ctx) } static int -SHA1Update_int(void *ctx, const u_int8_t *buf, u_int16_t len) +SHA1Update_int(void *ctx, const void *buf, u_int len) { SHA1Update(ctx, buf, len); return 0; Modified: head/sys/opencrypto/xform_sha2.c ============================================================================== --- head/sys/opencrypto/xform_sha2.c Wed Jun 10 20:12:45 2020 (r362027) +++ head/sys/opencrypto/xform_sha2.c Wed Jun 10 21:18:19 2020 (r362028) @@ -56,10 +56,10 @@ __FBSDID("$FreeBSD$"); #include #include -static int SHA224Update_int(void *, const u_int8_t *, u_int16_t); -static int SHA256Update_int(void *, const u_int8_t *, u_int16_t); -static int SHA384Update_int(void *, const u_int8_t *, u_int16_t); -static int SHA512Update_int(void *, const u_int8_t *, u_int16_t); +static int SHA224Update_int(void *, const void *, u_int); +static int SHA256Update_int(void *, const void *, u_int); +static int SHA384Update_int(void *, const void *, u_int); +static int SHA512Update_int(void *, const void *, u_int); /* Plain hashes */ struct auth_hash auth_hash_sha2_224 = { @@ -162,28 +162,28 @@ struct auth_hash auth_hash_hmac_sha2_512 = { * And now for auth. */ static int -SHA224Update_int(void *ctx, const u_int8_t *buf, u_int16_t len) +SHA224Update_int(void *ctx, const void *buf, u_int len) { SHA224_Update(ctx, buf, len); return 0; } static int -SHA256Update_int(void *ctx, const u_int8_t *buf, u_int16_t len) +SHA256Update_int(void *ctx, const void *buf, u_int len) { SHA256_Update(ctx, buf, len); return 0; } static int -SHA384Update_int(void *ctx, const u_int8_t *buf, u_int16_t len) +SHA384Update_int(void *ctx, const void *buf, u_int len) { SHA384_Update(ctx, buf, len); return 0; } static int -SHA512Update_int(void *ctx, const u_int8_t *buf, u_int16_t len) +SHA512Update_int(void *ctx, const void *buf, u_int len) { SHA512_Update(ctx, buf, len); return 0;