Lines Matching refs:key

26 static void llsec_key_put(struct mac802154_llsec_key *key);
50 struct ieee802154_llsec_key_entry *key, *kn;
68 list_for_each_entry_safe(key, kn, &sec->table.keys, list) {
71 mkey = container_of(key->key, struct mac802154_llsec_key, key);
72 list_del(&key->list);
74 kfree(key);
126 struct mac802154_llsec_key *key;
129 key = kzalloc(sizeof(*key), GFP_KERNEL);
130 if (!key)
133 kref_init(&key->ref);
134 key->key = *template;
136 BUILD_BUG_ON(ARRAY_SIZE(authsizes) != ARRAY_SIZE(key->tfm));
138 for (i = 0; i < ARRAY_SIZE(key->tfm); i++) {
139 key->tfm[i] = crypto_alloc_aead("ccm(aes)", 0,
141 if (!key->tfm[i])
143 if (crypto_aead_setkey(key->tfm[i], template->key,
146 if (crypto_aead_setauthsize(key->tfm[i], authsizes[i]))
150 key->tfm0 = crypto_alloc_blkcipher("ctr(aes)", 0, CRYPTO_ALG_ASYNC);
151 if (!key->tfm0)
154 if (crypto_blkcipher_setkey(key->tfm0, template->key,
158 return key;
161 crypto_free_blkcipher(key->tfm0);
163 for (i = 0; i < ARRAY_SIZE(key->tfm); i++)
164 if (key->tfm[i])
165 crypto_free_aead(key->tfm[i]);
167 kfree(key);
173 struct mac802154_llsec_key *key;
176 key = container_of(ref, struct mac802154_llsec_key, ref);
178 for (i = 0; i < ARRAY_SIZE(key->tfm); i++)
179 crypto_free_aead(key->tfm[i]);
181 crypto_free_blkcipher(key->tfm0);
182 kfree(key);
186 llsec_key_get(struct mac802154_llsec_key *key)
188 kref_get(&key->ref);
189 return key;
192 static void llsec_key_put(struct mac802154_llsec_key *key)
194 kref_put(&key->ref, llsec_key_release);
223 const struct ieee802154_llsec_key *key)
228 if (!(key->frame_types & (1 << IEEE802154_FC_TYPE_MAC_CMD)) &&
229 key->cmd_frame_ids)
236 if (memcmp(pos->key->key, key->key,
240 mkey = container_of(pos->key, struct mac802154_llsec_key, key);
242 /* Don't allow multiple instances of the same AES key to have
246 if (pos->key->frame_types != key->frame_types ||
247 pos->key->cmd_frame_ids != key->cmd_frame_ids)
258 mkey = llsec_key_alloc(key);
266 new->key = &mkey->key;
278 const struct ieee802154_llsec_key_id *key)
285 mkey = container_of(pos->key, struct mac802154_llsec_key, key);
287 if (llsec_key_id_equal(&pos->id, key)) {
320 u32 key = llsec_dev_hash_short(short_addr, pan_id);
322 hash_for_each_possible_rcu(sec->devices_short, dev, bucket_s, key) {
335 u64 key = llsec_dev_hash_long(hwaddr);
337 hash_for_each_possible_rcu(sec->devices_hw, dev, bucket_hw, key) {
418 const struct ieee802154_llsec_key_id *key)
423 if (!llsec_key_id_equal(key, &devkey->key_id))
435 const struct ieee802154_llsec_device_key *key)
445 if (llsec_devkey_find(dev, &key->key_id))
452 devkey->devkey = *key;
459 const struct ieee802154_llsec_device_key *key)
469 devkey = llsec_devkey_find(dev, &key->key_id);
566 struct mac802154_llsec_key *key;
581 if (!(key_entry->key->frame_types & BIT(hdr->fc.type)))
606 key = container_of(key_entry->key, struct mac802154_llsec_key, key);
609 return llsec_key_get(key);
630 struct mac802154_llsec_key *key)
635 .tfm = key->tfm0,
646 llsec_tfm_by_len(struct mac802154_llsec_key *key, int authlen)
650 for (i = 0; i < ARRAY_SIZE(key->tfm); i++)
651 if (crypto_aead_authsize(key->tfm[i]) == authlen)
652 return key->tfm[i];
660 struct mac802154_llsec_key *key)
671 req = aead_request_alloc(llsec_tfm_by_len(key, authlen), GFP_ATOMIC);
710 struct mac802154_llsec_key *key)
713 return llsec_do_encrypt_unauth(skb, sec, hdr, key);
715 return llsec_do_encrypt_auth(skb, sec, hdr, key);
722 struct mac802154_llsec_key *key;
749 key = llsec_lookup_key(sec, &hdr, &hdr.dest, NULL);
750 if (!key) {
763 llsec_key_put(key);
777 rc = llsec_do_encrypt(skb, sec, &hdr, key);
778 llsec_key_put(key);
803 u32 key = llsec_dev_hash_short(devaddr.short_addr,
807 bucket_s, key) {
813 u64 key = llsec_dev_hash_long(devaddr.extended_addr);
816 bucket_hw, key) {
847 struct mac802154_llsec_key *key, __le64 dev_addr)
854 .tfm = key->tfm0,
871 struct mac802154_llsec_key *key, __le64 dev_addr)
882 req = aead_request_alloc(llsec_tfm_by_len(key, authlen), GFP_ATOMIC);
919 struct mac802154_llsec_key *key, __le64 dev_addr)
922 return llsec_do_decrypt_unauth(skb, sec, hdr, key, dev_addr);
924 return llsec_do_decrypt_auth(skb, sec, hdr, key, dev_addr);
999 struct mac802154_llsec_key *key;
1023 key = llsec_lookup_key(sec, &hdr, &hdr.source, &key_id);
1024 if (!key) {
1062 err = llsec_do_decrypt(skb, sec, &hdr, key, dev_addr);
1063 llsec_key_put(key);
1067 llsec_key_put(key);