s: x.com] 1.5 HTML_MESSAGE BODY: HTML included in message 0.1 HTML_TAG_BALANCE_BODY BODY: HTML has unbalanced "body" tags -0.1 DKIM_VALID Message has at least one valid DKIM or DK signature -0.1 DKIM_VALID_AU Message has a valid DKIM or DK signature from author's domain -0.1 DKIM_VALID_EF Message has a valid DKIM or DK signature from envelope-from domain 0.1 DKIM_SIGNED Message has a DKIM or DK signature, not necessarily valid -0.0 RCVD_IN_MSPIKE_WL Mailspike good senders -0.0 DKIMWL_WL_HIGH DKIMwl.org - High trust sender SpamTally: Final spam score: 4 ----_NmP-7e9ba2d6b0f09dbc-Part_1 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable HejHere is the one-time code you requested in order to log in to your IKEA = profile. Please enter it on the webpage now.834002Please do not share it = with anyone. This one-time code is only valid for five minutes.Kind regards= and see you soonWonderful everyday ( https://www.facebook.com/IKEA.CH ) (= https://www.instagram.com/accounts/login/?next=3D/ikeaschweiz/ ) ( = https://www.pinterest.it/ikeach ) ( https://x.com/IKEA_CH ) ( https://www= .youtube.com/user/IKEAswitzerland ) Find out about news and offers at your = IKEA store ( https://www.ikea.com/ch/en/stores/ ) Privacy Policy ( = https://www.ikea.com/ch/en/customer-service/privacy-policy ) | Contact ( = https://www.ikea.com/ch/en/customer-service/contact-us ) | Terms and = Conditions ( https://www.ikea.com/ch/en/customer-service/terms-conditions )= | IKEA for Business ( https://www.ikea.com/ch/en/ikea-business ) =C2=A9 = Inter IKEA Systems B.V. 1999-2025 ----_NmP-7e9ba2d6b0f09dbc-Part_1 Content-Type: text/html; charset=utf-8 Content-Transfer-Encoding: quoted-printable IKEA</title= ></head><body style=3D"margin:0;padding:0" bgcolor=3D"#ffffff" = id=3D"body"><div id=3D"root"><table border=3D"0" cellpadding=3D"0" = cellspacing=3D"0" width=3D"100%" id=3D"wrapper"><tbody><tr><td = align=3D"center" id=3D"content"><table border=3D"0" width=3D"100%" = cellpadding=3D"0" cellspacing=3D"0"><tbody><tr><td align=3D"center" = valign=3D"top"><table border=3D"0" width=3D"640" cellpadding=3D"0" = cellspacing=3D"0" class=3D"container" style=3D"width: = 640px;"><tbody><tr><td><table border=3D"0" width=3D"100%" cellpadding=3D"0"= cellspacing=3D"0"><tbody><tr><td align=3D"right" style=3D"padding-top: = 16px;"></td></tr></tbody></table></td></tr></tbody></table></td></tr><tr><t= d align=3D"center" valign=3D"top"><table border=3D"0" width=3D"640" = cellpadding=3D"0" cellspacing=3D"0" class=3D"container" style=3D"width: = 640px;"><tbody><tr><td align=3D"left" valign=3D"top"><table border=3D"0" = width=3D"100%" cellpadding=3D"0" cellspacing=3D"0"><tbody><tr><td = style=3D"padding-top: 16px; padding-bottom: 32px;"><table border=3D"0" = width=3D"100%" cellpadding=3D"0" cellspacing=3D"0"><tbody><tr><td = valign=3D"top"><img src=3D"https://ch.accounts.ikea.= com/resources/static/logo.png" width=3D"120" alt=3D"IKEA" border=3D"0" = style=3D"width: 120px; display: block;"></td><td align=3D"right" = valign=3D"middle"></td></tr></tbody></table></td></tr></tbody></table></td>= </tr></tbody></table></td></tr></tbody></table><table border=3D"0" = width=3D"100%" cellpadding=3D"0" cellspacing=3D"0" bgcolor=3D"#ffffff"><tbo= dy><tr><td align=3D"center" valign=3D"top"><table border=3D"0" = width=3D"640" cellpadding=3D"0" cellspacing=3D"0" class=3D"container" = style=3D"width: 640px;"><tbody><tr><td align=3D"left" valign=3D"top" = class=3D""></td></tr><tr><td align=3D"left" valign=3D"top"><table = border=3D"0" width=3D"100%" cellspacing=3D"0" cellpadding=3D"0" = bgcolor=3D"#ffffff"><tbody><tr><td align=3D"left" valign=3D"top" = style=3D"padding: 25px 0px 0px;"><h2 style=3D"font-family: "Noto = IKEA", "Noto Sans", "Helvetica Neue", Arial, = sans-serif; font-weight: bold; font-size: 30px; line-height: 40px; color: = rgb(17, 17, 17); margin: 0px 0px 25px; padding: 0px;">Hej</h2><div = class=3D"body-copy" style=3D"font-family: "Noto IKEA", "Noto= Sans", "Helvetica Neue", Arial, sans-serif; font-weight: = normal; font-size: 14px; line-height: 18px; color: rgb(17, 17, 17); margin:= 0px; padding: 0px;"><p style=3D"margin: 0px 0px 25px;">Here is the = one-time code you requested in order to log in to your IKEA profile. Please= enter it on the webpage now.</p><p style=3D"font-size: = 48px;"><b>834002</b></p><p style=3D"margin: 0px 0px 25px;">Please do not = share it with anyone. This one-time code is only valid for five minutes.= </p></div></td></tr></tbody></table></td></tr></tbody></table></td></tr></t= body></table><table border=3D"0" width=3D"100%" cellpadding=3D"0" = cellspacing=3D"0" bgcolor=3D"#ffffff"><tbody><tr><td align=3D"center" = valign=3D"top"><table border=3D"0" width=3D"640" cellpadding=3D"0" = cellspacing=3D"0" class=3D"container" style=3D"width: = 640px;"><tbody><tr><td align=3D"left" valign=3D"top"><table border=3D"0" = width=3D"100%" cellspacing=3D"0" cellpadding=3D"0" bgcolor=3D"#ffffff"><tbo= dy><tr><td align=3D"left" valign=3D"top"><p class=3D"body-copy" = style=3D"font-family: "Noto IKEA", "Noto Sans", = "Helvetica Neue", Arial, sans-serif; font-weight: bold; = font-size: 14px; line-height: 75%; color: rgb(17, 17, 17); margin: 0px; = padding: 16px 0px 0px;"><b>Kind regards and see you = soon</b></p></td></tr></tbody></table></td></tr></tbody></table></td></tr><= /tbody></table><table border=3D"0" width=3D"100%" cellpadding=3D"0" = cellspacing=3D"0" bgcolor=3D"#ffffff"><tbody><tr><td align=3D"center" = valign=3D"top"><table border=3D"0" width=3D"640" cellpadding=3D"0" = cellspacing=3D"0" class=3D"container" style=3D"width: = 640px;"><tbody><tr><td><hr style=3D"display: block; height: 1px; = border-width: 1px 0px 0px; border-top-style: solid; border-right-style: = initial; border-bottom-style: initial; border-left-style: initial; = border-top-color: rgb(204, 204, 204); border-right-color: initial; = border-bottom-color: initial; border-left-color: initial; border-image: = initial; margin: 1em 0px; padding: 0px;"></td></tr></tbody></table></td></t= r></tbody></table><table border=3D"0" width=3D"100%" cellpadding=3D"0" = cellspacing=3D"0"><tbody><tr><td align=3D"center" valign=3D"top"><table = border=3D"0" width=3D"640" cellpadding=3D"0" cellspacing=3D"0" = class=3D"container" style=3D"width: 640px;"><tbody><tr><td align=3D"left" = valign=3D"top" class=3D"mobile-padding" style=3D"padding-left: 32px; = padding-right: 32px;"><table border=3D"0" width=3D"100%" cellpadding=3D"0" = cellspacing=3D"0"><tbody><tr><td class=3D"pt-20 pb-20" = style=3D"padding-top: 0px; padding-bottom: 34px;"><table border=3D"0" = width=3D"100%" cellpadding=3D"0" cellspacing=3D"0"><tbody><tr><td = valign=3D"top" class=3D"body-copy" style=3D"font-family: "Noto = IKEA", "Noto Sans", "Helvetica Neue", Arial, = sans-serif; color: rgb(135, 135, 135); font-size: 14px; padding-bottom: = 20px;"></td></tr><tr><td valign=3D"top" align=3D"center"><img = src=3D"https://ch.accounts.ikea.com/resources/static/logo.png" = width=3D"120" alt=3D"IKEA" border=3D"0" style=3D"width: 120px; display: = block;"></td></tr><tr><td valign=3D"top" align=3D"center" = style=3D"font-family: "Noto IKEA", "Noto Sans", = "Helvetica Neue", Arial, sans-serif; color: rgb(135, 135, 135); = font-size: 14px; padding: 15px;"><p style=3D"font-size: 14px; line-height: = 150%; margin: 16px 0px; padding-bottom: 8px; padding-top: 16px; color: = rgb(135, 135, 135);">Wonderful everyday</p></td></tr><tr><td = align=3D"center" style=3D"padding-top: 10px; padding-bottom: 10px;"><table = border=3D"0" cellpadding=3D"0" cellspacing=3D"0"><tbody><tr><td = style=3D"padding-left: 10px; padding-right: 10px;"><a href=3D"https://www.= facebook.com/IKEA.CH"><img alt=3D"Facebook" width=3D"48" height=3D"48" = src=3D"https://ch.accounts.ikea.com/resources/static/facebook.png" = border=3D"0" class=3D"social-icon" style=3D"display: block;"></a></td><td = style=3D"padding-left: 10px; padding-right: 10px;"><a href=3D"https://www.= instagram.com/accounts/login/?next=3D/ikeaschweiz/"><img alt=3D"Instagram" = width=3D"48" height=3D"48" src=3D"https://ch.accounts.ikea.= com/resources/static/instagram.png" border=3D"0" class=3D"social-icon" = style=3D"display: block;"></a></td><td style=3D"padding-left: 10px; = padding-right: 10px;"><a href=3D"https://www.pinterest.it/ikeach"><img = alt=3D"Pinterest" width=3D"48" height=3D"48" src=3D"https://ch.accounts.= ikea.com/resources/static/pinterest.png" border=3D"0" class=3D"social-icon"= style=3D"display: block;"></a></td><td style=3D"padding-left: 10px; = padding-right: 10px;"><a href=3D"https://x.com/IKEA_CH"><img alt=3D"X" = width=3D"48" height=3D"48" src=3D"https://ch.accounts.ikea.= com/resources/static/x.png" border=3D"0" class=3D"social-icon" = style=3D"display: block;"></a></td><td style=3D"padding-left: 10px; = padding-right: 10px;"><a href=3D"https://www.youtube.= com/user/IKEAswitzerland"><img alt=3D"Youtube" width=3D"48" height=3D"48" = src=3D"https://ch.accounts.ikea.com/resources/static/youtube.png" = border=3D"0" class=3D"social-icon" style=3D"display: = block;"></a></td></tr></tbody></table></td></tr><tr><td valign=3D"top" = class=3D"body-copy" align=3D"center" style=3D"font-family: "Noto = IKEA", "Noto Sans", "Helvetica Neue", Arial, = sans-serif; color: rgb(135, 135, 135); font-size: 14px;"><div><p = style=3D"font-size: 12px; line-height: 150%; margin: 16px 0px;">Find out = about news and offers at your <a style=3D"color:#484848;font-weight: bold;"= href=3D"https://www.ikea.com/ch/en/stores/">IKEA store</a></p></div></td><= /tr><tr><td align=3D"center" class=3D"footer-menu" style=3D"font-family: = "Noto IKEA", "Noto Sans", "Helvetica Neue", = Arial, sans-serif; color: rgb(102, 102, 102); font-size: 12px; line-height:= 22px; padding-top: 10px; padding-bottom: 10px;"><div><a = class=3D"footer-menu" href=3D"https://www.ikea.com/ch/en/customer-service/p= rivacy-policy">Privacy Policy</a><span> | </span><a class=3D"footer-menu" = href=3D"https://www.ikea.com/ch/en/customer-service/contact-us">Contact</a>= <span> | </span><a class=3D"footer-menu" href=3D"https://www.ikea.= com/ch/en/customer-service/terms-conditions">Terms and Conditions</a><span>= | </span><a class=3D"footer-menu" href=3D"https://www.ikea.= com/ch/en/ikea-business">IKEA for Business</a></div></td></tr><tr><td = align=3D"center" class=3D"disclaimer" style=3D"font-family: "Noto = IKEA", "Noto Sans", "Helvetica Neue", Arial, = sans-serif; color: rgb(102, 102, 102); font-size: 12px; line-height: 22px; = padding-top: 12px;"></td></tr><tr><td align=3D"center" class=3D"disclaimer"= style=3D"font-family: "Noto IKEA", "Noto Sans", = "Helvetica Neue", Arial, sans-serif; color: rgb(102, 102, 102); = font-size: 12px; line-height: 22px;"><p style=3D"font-size: 12px; = line-height: 150%; margin: 16px 0px;">=C2=A9 Inter IKEA Systems B.V. = 1999-2025</p></td></tr></tbody></table></td></tr></tbody></table></td></tr>= </tbody></table></td></tr></tbody></table></td></tr></tbody></table></div> ----_NmP-7e9ba2d6b0f09dbc-Part_1-- From - Sun Feb 22 20:46:38 2026 X-Mozilla-Status: 0001 X-Mozilla-Status2: 00000000 Return-Path: <bounce-YVMDVOG5VRXENKOQEYELYCJDWQ.500022@bounce.news.email.ikea.ch> Received: from witcher.mxrouting.net by witcher.mxrouting.net with LMTP id qITvLitrm2nAdCUAYBR5ng (envelope-from <bounce-YVMDVOG5VRXENKOQEYELYCJDWQ.500022@bounce.news.email.ikea.ch>); Sun, 22 Feb 2026 20:46:35 +0000 Return-path: <bounce-YVMDVOG5VRXENKOQEYELYCJDWQ.500022@bounce.news.email.ikea.ch> Envelope-to: pfeifferj@archlinux.ch Delivery-date: Sun, 22 Feb 2026 20:46:36 +0000 Received: from mta.news.email.ikea.ch ([161.71.37.82])// SPDX-License-Identifier: GPL-2.0+ /* * IMA support for appraising module-style appended signatures. * * Copyright (C) 2019 IBM Corporation * * Author: * Thiago Jung Bauermann <bauerman@linux.ibm.com> */ #include <linux/types.h> #include <linux/module_signature.h> #include <keys/asymmetric-type.h> #include <crypto/pkcs7.h> #include "ima.h" struct modsig { struct pkcs7_message *pkcs7_msg; enum hash_algo hash_algo; /* This digest will go in the 'd-modsig' field of the IMA template. */ const u8 *digest; u32 digest_size; /* * This is what will go to the measurement list if the template requires * storing the signature. */ int raw_pkcs7_len; u8 raw_pkcs7[] __counted_by(raw_pkcs7_len); }; /* * ima_read_modsig - Read modsig from buf. * * Return: 0 on success, error code otherwise. */ int ima_read_modsig(enum ima_hooks func, const void *buf, loff_t buf_len, struct modsig **modsig) { const size_t marker_len = strlen(MODULE_SIG_STRING); const struct module_signature *sig; struct modsig *hdr; size_t sig_len; const void *p; int rc; if (buf_len <= marker_len + sizeof(*sig)) return -ENOENT; p = buf + buf_len - marker_len; if (memcmp(p, MODULE_SIG_STRING, marker_len)) return -ENOENT; buf_len -= marker_len; sig = (const struct module_signature *)(p - sizeof(*sig)); rc = mod_check_sig(sig, buf_len, func_tokens[func]); if (rc) return rc; sig_len = be32_to_cpu(sig->sig_len); buf_len -= sig_len + sizeof(*sig); /* Allocate sig_len additional bytes to hold the raw PKCS#7 data. */ hdr = kzalloc(struct_size(hdr, raw_pkcs7, sig_len), GFP_KERNEL); if (!hdr) return -ENOMEM; hdr->raw_pkcs7_len = sig_len; hdr->pkcs7_msg = pkcs7_parse_message(buf + buf_len, sig_len); if (IS_ERR(hdr->pkcs7_msg)) { rc = PTR_ERR(hdr->pkcs7_msg); kfree(hdr); return rc; } memcpy(hdr->raw_pkcs7, buf + buf_len, sig_len); /* We don't know the hash algorithm yet. */ hdr->hash_algo = HASH_ALGO__LAST; *modsig = hdr; return 0; } /** * ima_collect_modsig - Calculate the file hash without the appended signature. * @modsig: parsed module signature * @buf: data to verify the signature on * @size: data size * * Since the modsig is part of the file contents, the hash used in its signature * isn't the same one ordinarily calculated by IMA. Therefore PKCS7 code * calculates a separate one for signature verification. */ void ima_collect_modsig(struct modsig *modsig, const void *buf, loff_t size) { int rc; /* * Provide the file contents (minus the appended sig) so that the PKCS7 * code can calculate the file hash. */ size -= modsig->raw_pkcs7_len + strlen(MODULE_SIG_STRING) + sizeof(struct module_signature); rc = pkcs7_supply_detached_data(modsig->pkcs7_msg, buf, size); if (rc) return; /* Ask the PKCS7 code to calculate the file hash. */ rc = pkcs7_get_digest(modsig->pkcs7_msg, &modsig->digest, &modsig->digest_size, &modsig->hash_algo); } int ima_modsig_verify(struct key *keyring, const struct modsig *modsig) { return verify_pkcs7_message_sig(NULL, 0, modsig->pkcs7_msg, keyring, VERIFYING_MODULE_SIGNATURE, NULL, NULL); } int ima_get_modsig_digest(const struct modsig *modsig, enum hash_algo *algo, const u8 **digest, u32 *digest_size) { *algo = modsig->hash_algo; *digest = modsig->digest; *digest_size = modsig->digest_size; return 0; } int ima_get_raw_modsig(const struct modsig *modsig, const void **data, u32 *data_len) { *data = &modsig->raw_pkcs7; *data_len = modsig->raw_pkcs7_len; return 0; } void ima_free_modsig(struct modsig *modsig) { if (!modsig) return; pkcs7_free_message(modsig->pkcs7_msg); kfree(modsig); }