gcm.c (b9f76dddb1f9f70e008b982381bbc9a67c9b8c66) gcm.c (cd900f0cacd7601dabdd028e8cbdbf2a7041cee2)
1// SPDX-License-Identifier: GPL-2.0-only
2/*
3 * GCM: Galois/Counter Mode.
4 *
5 * Copyright (c) 2007 Nokia Siemens Networks - Mikko Herranen <mh1@iki.fi>
6 */
7
8#include <crypto/gf128mul.h>

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

851 crypto_drop_aead(aead_instance_ctx(inst));
852 kfree(inst);
853}
854
855static int crypto_rfc4106_create(struct crypto_template *tmpl,
856 struct rtattr **tb)
857{
858 struct crypto_attr_type *algt;
1// SPDX-License-Identifier: GPL-2.0-only
2/*
3 * GCM: Galois/Counter Mode.
4 *
5 * Copyright (c) 2007 Nokia Siemens Networks - Mikko Herranen <mh1@iki.fi>
6 */
7
8#include <crypto/gf128mul.h>

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

851 crypto_drop_aead(aead_instance_ctx(inst));
852 kfree(inst);
853}
854
855static int crypto_rfc4106_create(struct crypto_template *tmpl,
856 struct rtattr **tb)
857{
858 struct crypto_attr_type *algt;
859 u32 mask;
859 struct aead_instance *inst;
860 struct crypto_aead_spawn *spawn;
861 struct aead_alg *alg;
862 const char *ccm_name;
863 int err;
864
865 algt = crypto_get_attr_type(tb);
866 if (IS_ERR(algt))
867 return PTR_ERR(algt);
868
869 if ((algt->type ^ CRYPTO_ALG_TYPE_AEAD) & algt->mask)
870 return -EINVAL;
871
860 struct aead_instance *inst;
861 struct crypto_aead_spawn *spawn;
862 struct aead_alg *alg;
863 const char *ccm_name;
864 int err;
865
866 algt = crypto_get_attr_type(tb);
867 if (IS_ERR(algt))
868 return PTR_ERR(algt);
869
870 if ((algt->type ^ CRYPTO_ALG_TYPE_AEAD) & algt->mask)
871 return -EINVAL;
872
873 mask = crypto_requires_sync(algt->type, algt->mask);
874
872 ccm_name = crypto_attr_alg_name(tb[1]);
873 if (IS_ERR(ccm_name))
874 return PTR_ERR(ccm_name);
875
876 inst = kzalloc(sizeof(*inst) + sizeof(*spawn), GFP_KERNEL);
877 if (!inst)
878 return -ENOMEM;
879
880 spawn = aead_instance_ctx(inst);
875 ccm_name = crypto_attr_alg_name(tb[1]);
876 if (IS_ERR(ccm_name))
877 return PTR_ERR(ccm_name);
878
879 inst = kzalloc(sizeof(*inst) + sizeof(*spawn), GFP_KERNEL);
880 if (!inst)
881 return -ENOMEM;
882
883 spawn = aead_instance_ctx(inst);
881 crypto_set_aead_spawn(spawn, aead_crypto_instance(inst));
882 err = crypto_grab_aead(spawn, ccm_name, 0,
883 crypto_requires_sync(algt->type, algt->mask));
884 err = crypto_grab_aead(spawn, aead_crypto_instance(inst),
885 ccm_name, 0, mask);
884 if (err)
885 goto out_free_inst;
886
887 alg = crypto_spawn_aead_alg(spawn);
888
889 err = -EINVAL;
890
891 /* Underlying IV size must be 12. */

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

1082
1083 kfree(inst);
1084}
1085
1086static int crypto_rfc4543_create(struct crypto_template *tmpl,
1087 struct rtattr **tb)
1088{
1089 struct crypto_attr_type *algt;
886 if (err)
887 goto out_free_inst;
888
889 alg = crypto_spawn_aead_alg(spawn);
890
891 err = -EINVAL;
892
893 /* Underlying IV size must be 12. */

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

1084
1085 kfree(inst);
1086}
1087
1088static int crypto_rfc4543_create(struct crypto_template *tmpl,
1089 struct rtattr **tb)
1090{
1091 struct crypto_attr_type *algt;
1092 u32 mask;
1090 struct aead_instance *inst;
1091 struct crypto_aead_spawn *spawn;
1092 struct aead_alg *alg;
1093 struct crypto_rfc4543_instance_ctx *ctx;
1094 const char *ccm_name;
1095 int err;
1096
1097 algt = crypto_get_attr_type(tb);
1098 if (IS_ERR(algt))
1099 return PTR_ERR(algt);
1100
1101 if ((algt->type ^ CRYPTO_ALG_TYPE_AEAD) & algt->mask)
1102 return -EINVAL;
1103
1093 struct aead_instance *inst;
1094 struct crypto_aead_spawn *spawn;
1095 struct aead_alg *alg;
1096 struct crypto_rfc4543_instance_ctx *ctx;
1097 const char *ccm_name;
1098 int err;
1099
1100 algt = crypto_get_attr_type(tb);
1101 if (IS_ERR(algt))
1102 return PTR_ERR(algt);
1103
1104 if ((algt->type ^ CRYPTO_ALG_TYPE_AEAD) & algt->mask)
1105 return -EINVAL;
1106
1107 mask = crypto_requires_sync(algt->type, algt->mask);
1108
1104 ccm_name = crypto_attr_alg_name(tb[1]);
1105 if (IS_ERR(ccm_name))
1106 return PTR_ERR(ccm_name);
1107
1108 inst = kzalloc(sizeof(*inst) + sizeof(*ctx), GFP_KERNEL);
1109 if (!inst)
1110 return -ENOMEM;
1111
1112 ctx = aead_instance_ctx(inst);
1113 spawn = &ctx->aead;
1109 ccm_name = crypto_attr_alg_name(tb[1]);
1110 if (IS_ERR(ccm_name))
1111 return PTR_ERR(ccm_name);
1112
1113 inst = kzalloc(sizeof(*inst) + sizeof(*ctx), GFP_KERNEL);
1114 if (!inst)
1115 return -ENOMEM;
1116
1117 ctx = aead_instance_ctx(inst);
1118 spawn = &ctx->aead;
1114 crypto_set_aead_spawn(spawn, aead_crypto_instance(inst));
1115 err = crypto_grab_aead(spawn, ccm_name, 0,
1116 crypto_requires_sync(algt->type, algt->mask));
1119 err = crypto_grab_aead(spawn, aead_crypto_instance(inst),
1120 ccm_name, 0, mask);
1117 if (err)
1118 goto out_free_inst;
1119
1120 alg = crypto_spawn_aead_alg(spawn);
1121
1122 err = -EINVAL;
1123
1124 /* Underlying IV size must be 12. */

--- 106 unchanged lines hidden ---
1121 if (err)
1122 goto out_free_inst;
1123
1124 alg = crypto_spawn_aead_alg(spawn);
1125
1126 err = -EINVAL;
1127
1128 /* Underlying IV size must be 12. */

--- 106 unchanged lines hidden ---