ccm.c (b9f76dddb1f9f70e008b982381bbc9a67c9b8c66) ccm.c (cd900f0cacd7601dabdd028e8cbdbf2a7041cee2)
1// SPDX-License-Identifier: GPL-2.0-or-later
2/*
3 * CCM: Counter with CBC-MAC
4 *
5 * (C) Copyright IBM Corp. 2007 - Joy Latten <latten@us.ibm.com>
6 */
7
8#include <crypto/internal/aead.h>

--- 720 unchanged lines hidden (view full) ---

729 crypto_drop_aead(aead_instance_ctx(inst));
730 kfree(inst);
731}
732
733static int crypto_rfc4309_create(struct crypto_template *tmpl,
734 struct rtattr **tb)
735{
736 struct crypto_attr_type *algt;
1// SPDX-License-Identifier: GPL-2.0-or-later
2/*
3 * CCM: Counter with CBC-MAC
4 *
5 * (C) Copyright IBM Corp. 2007 - Joy Latten <latten@us.ibm.com>
6 */
7
8#include <crypto/internal/aead.h>

--- 720 unchanged lines hidden (view full) ---

729 crypto_drop_aead(aead_instance_ctx(inst));
730 kfree(inst);
731}
732
733static int crypto_rfc4309_create(struct crypto_template *tmpl,
734 struct rtattr **tb)
735{
736 struct crypto_attr_type *algt;
737 u32 mask;
737 struct aead_instance *inst;
738 struct crypto_aead_spawn *spawn;
739 struct aead_alg *alg;
740 const char *ccm_name;
741 int err;
742
743 algt = crypto_get_attr_type(tb);
744 if (IS_ERR(algt))
745 return PTR_ERR(algt);
746
747 if ((algt->type ^ CRYPTO_ALG_TYPE_AEAD) & algt->mask)
748 return -EINVAL;
749
738 struct aead_instance *inst;
739 struct crypto_aead_spawn *spawn;
740 struct aead_alg *alg;
741 const char *ccm_name;
742 int err;
743
744 algt = crypto_get_attr_type(tb);
745 if (IS_ERR(algt))
746 return PTR_ERR(algt);
747
748 if ((algt->type ^ CRYPTO_ALG_TYPE_AEAD) & algt->mask)
749 return -EINVAL;
750
751 mask = crypto_requires_sync(algt->type, algt->mask);
752
750 ccm_name = crypto_attr_alg_name(tb[1]);
751 if (IS_ERR(ccm_name))
752 return PTR_ERR(ccm_name);
753
754 inst = kzalloc(sizeof(*inst) + sizeof(*spawn), GFP_KERNEL);
755 if (!inst)
756 return -ENOMEM;
757
758 spawn = aead_instance_ctx(inst);
753 ccm_name = crypto_attr_alg_name(tb[1]);
754 if (IS_ERR(ccm_name))
755 return PTR_ERR(ccm_name);
756
757 inst = kzalloc(sizeof(*inst) + sizeof(*spawn), GFP_KERNEL);
758 if (!inst)
759 return -ENOMEM;
760
761 spawn = aead_instance_ctx(inst);
759 crypto_set_aead_spawn(spawn, aead_crypto_instance(inst));
760 err = crypto_grab_aead(spawn, ccm_name, 0,
761 crypto_requires_sync(algt->type, algt->mask));
762 err = crypto_grab_aead(spawn, aead_crypto_instance(inst),
763 ccm_name, 0, mask);
762 if (err)
763 goto out_free_inst;
764
765 alg = crypto_spawn_aead_alg(spawn);
766
767 err = -EINVAL;
768
769 /* We only support 16-byte blocks. */

--- 232 unchanged lines hidden ---
764 if (err)
765 goto out_free_inst;
766
767 alg = crypto_spawn_aead_alg(spawn);
768
769 err = -EINVAL;
770
771 /* We only support 16-byte blocks. */

--- 232 unchanged lines hidden ---