crypto/krb5: Implement the AES enctypes from rfc3962
Implement the aes128-cts-hmac-sha1-96 and aes256-cts-hmac-sha1-96 enctypes from rfc3962, using the rfc3961 kerberos 5 simplified crypto scheme. Signed-off-by: David Howells <dhowells@redhat.com> cc: Herbert Xu <herbert@gondor.apana.org.au> cc: "David S. Miller" <davem@davemloft.net> cc: Chuck Lever <chuck.lever@oracle.com> cc: Marc Dionne <marc.dionne@auristor.com> cc: Eric Dumazet <edumazet@google.com> cc: Jakub Kicinski <kuba@kernel.org> cc: Paolo Abeni <pabeni@redhat.com> cc: Simon Horman <horms@kernel.org> cc: linux-afs@lists.infradead.org cc: linux-nfs@vger.kernel.org cc: linux-crypto@vger.kernel.org cc: netdev@vger.kernel.org
This commit is contained in:
parent
348f5669d1
commit
7c164b66b2
|
@ -5,6 +5,7 @@ config CRYPTO_KRB5
|
|||
select CRYPTO_AUTHENC
|
||||
select CRYPTO_SKCIPHER
|
||||
select CRYPTO_HASH_INFO
|
||||
select CRYPTO_HMAC
|
||||
select CRYPTO_SHA1
|
||||
select CRYPTO_CBC
|
||||
select CRYPTO_CTS
|
||||
|
|
|
@ -6,6 +6,7 @@
|
|||
krb5-y += \
|
||||
krb5_kdf.o \
|
||||
krb5_api.o \
|
||||
rfc3961_simplified.o
|
||||
rfc3961_simplified.o \
|
||||
rfc3962_aes.o
|
||||
|
||||
obj-$(CONFIG_CRYPTO_KRB5) += krb5.o
|
||||
|
|
|
@ -179,3 +179,9 @@ int rfc3961_verify_mic(const struct krb5_enctype *krb5,
|
|||
const struct krb5_buffer *metadata,
|
||||
struct scatterlist *sg, unsigned int nr_sg,
|
||||
size_t *_offset, size_t *_len);
|
||||
|
||||
/*
|
||||
* rfc3962_aes.c
|
||||
*/
|
||||
extern const struct krb5_enctype krb5_aes128_cts_hmac_sha1_96;
|
||||
extern const struct krb5_enctype krb5_aes256_cts_hmac_sha1_96;
|
||||
|
|
|
@ -17,6 +17,8 @@ MODULE_AUTHOR("Red Hat, Inc.");
|
|||
MODULE_LICENSE("GPL");
|
||||
|
||||
static const struct krb5_enctype *const krb5_supported_enctypes[] = {
|
||||
&krb5_aes128_cts_hmac_sha1_96,
|
||||
&krb5_aes256_cts_hmac_sha1_96,
|
||||
};
|
||||
|
||||
/**
|
||||
|
|
|
@ -0,0 +1,115 @@
|
|||
// SPDX-License-Identifier: BSD-3-Clause
|
||||
/* rfc3962 Advanced Encryption Standard (AES) Encryption for Kerberos 5
|
||||
*
|
||||
* Parts borrowed from net/sunrpc/auth_gss/.
|
||||
*/
|
||||
/*
|
||||
* COPYRIGHT (c) 2008
|
||||
* The Regents of the University of Michigan
|
||||
* ALL RIGHTS RESERVED
|
||||
*
|
||||
* Permission is granted to use, copy, create derivative works
|
||||
* and redistribute this software and such derivative works
|
||||
* for any purpose, so long as the name of The University of
|
||||
* Michigan is not used in any advertising or publicity
|
||||
* pertaining to the use of distribution of this software
|
||||
* without specific, written prior authorization. If the
|
||||
* above copyright notice or any other identification of the
|
||||
* University of Michigan is included in any copy of any
|
||||
* portion of this software, then the disclaimer below must
|
||||
* also be included.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED AS IS, WITHOUT REPRESENTATION
|
||||
* FROM THE UNIVERSITY OF MICHIGAN AS TO ITS FITNESS FOR ANY
|
||||
* PURPOSE, AND WITHOUT WARRANTY BY THE UNIVERSITY OF
|
||||
* MICHIGAN OF ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING
|
||||
* WITHOUT LIMITATION THE IMPLIED WARRANTIES OF
|
||||
* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE
|
||||
* REGENTS OF THE UNIVERSITY OF MICHIGAN SHALL NOT BE LIABLE
|
||||
* FOR ANY DAMAGES, INCLUDING SPECIAL, INDIRECT, INCIDENTAL, OR
|
||||
* CONSEQUENTIAL DAMAGES, WITH RESPECT TO ANY CLAIM ARISING
|
||||
* OUT OF OR IN CONNECTION WITH THE USE OF THE SOFTWARE, EVEN
|
||||
* IF IT HAS BEEN OR IS HEREAFTER ADVISED OF THE POSSIBILITY OF
|
||||
* SUCH DAMAGES.
|
||||
*/
|
||||
|
||||
/*
|
||||
* Copyright (C) 1998 by the FundsXpress, INC.
|
||||
*
|
||||
* All rights reserved.
|
||||
*
|
||||
* Export of this software from the United States of America may require
|
||||
* a specific license from the United States Government. It is the
|
||||
* responsibility of any person or organization contemplating export to
|
||||
* obtain such a license before exporting.
|
||||
*
|
||||
* WITHIN THAT CONSTRAINT, permission to use, copy, modify, and
|
||||
* distribute this software and its documentation for any purpose and
|
||||
* without fee is hereby granted, provided that the above copyright
|
||||
* notice appear in all copies and that both that copyright notice and
|
||||
* this permission notice appear in supporting documentation, and that
|
||||
* the name of FundsXpress. not be used in advertising or publicity pertaining
|
||||
* to distribution of the software without specific, written prior
|
||||
* permission. FundsXpress makes no representations about the suitability of
|
||||
* this software for any purpose. It is provided "as is" without express
|
||||
* or implied warranty.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR
|
||||
* IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
|
||||
* WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
|
||||
*/
|
||||
|
||||
/*
|
||||
* Copyright (C) 2025 Red Hat, Inc. All Rights Reserved.
|
||||
* Written by David Howells (dhowells@redhat.com)
|
||||
*/
|
||||
|
||||
#define pr_fmt(fmt) KBUILD_MODNAME ": " fmt
|
||||
|
||||
#include "internal.h"
|
||||
|
||||
const struct krb5_enctype krb5_aes128_cts_hmac_sha1_96 = {
|
||||
.etype = KRB5_ENCTYPE_AES128_CTS_HMAC_SHA1_96,
|
||||
.ctype = KRB5_CKSUMTYPE_HMAC_SHA1_96_AES128,
|
||||
.name = "aes128-cts-hmac-sha1-96",
|
||||
.encrypt_name = "krb5enc(hmac(sha1),cts(cbc(aes)))",
|
||||
.cksum_name = "hmac(sha1)",
|
||||
.hash_name = "sha1",
|
||||
.derivation_enc = "cts(cbc(aes))",
|
||||
.key_bytes = 16,
|
||||
.key_len = 16,
|
||||
.Kc_len = 16,
|
||||
.Ke_len = 16,
|
||||
.Ki_len = 16,
|
||||
.block_len = 16,
|
||||
.conf_len = 16,
|
||||
.cksum_len = 12,
|
||||
.hash_len = 20,
|
||||
.prf_len = 16,
|
||||
.keyed_cksum = true,
|
||||
.random_to_key = NULL, /* Identity */
|
||||
.profile = &rfc3961_simplified_profile,
|
||||
};
|
||||
|
||||
const struct krb5_enctype krb5_aes256_cts_hmac_sha1_96 = {
|
||||
.etype = KRB5_ENCTYPE_AES256_CTS_HMAC_SHA1_96,
|
||||
.ctype = KRB5_CKSUMTYPE_HMAC_SHA1_96_AES256,
|
||||
.name = "aes256-cts-hmac-sha1-96",
|
||||
.encrypt_name = "krb5enc(hmac(sha1),cts(cbc(aes)))",
|
||||
.cksum_name = "hmac(sha1)",
|
||||
.hash_name = "sha1",
|
||||
.derivation_enc = "cts(cbc(aes))",
|
||||
.key_bytes = 32,
|
||||
.key_len = 32,
|
||||
.Kc_len = 32,
|
||||
.Ke_len = 32,
|
||||
.Ki_len = 32,
|
||||
.block_len = 16,
|
||||
.conf_len = 16,
|
||||
.cksum_len = 12,
|
||||
.hash_len = 20,
|
||||
.prf_len = 16,
|
||||
.keyed_cksum = true,
|
||||
.random_to_key = NULL, /* Identity */
|
||||
.profile = &rfc3961_simplified_profile,
|
||||
};
|
Loading…
Reference in New Issue