Merge pull request #30990 from poettering/more-mime

register mime types for some of our data files according to the shared mime spec
This commit is contained in:
Luca Boccassi
2024-01-18 00:01:09 +00:00
committed by GitHub
2 changed files with 58 additions and 0 deletions
+30
View File
@@ -10,4 +10,34 @@
<comment>Configuration Extension DDI</comment>
<glob pattern="*.confext.raw"/>
</mime-type>
<mime-type type="application/x.systemd-journal">
<comment>Journal Log File</comment>
<magic>
<match type="string" value="LPKSHHRH" offset="0"/>
</magic>
</mime-type>
<mime-type type="application/x.systemd-catalog">
<comment>Journal Message Catalog</comment>
<magic>
<match type="string" value="RHHHKSLP" offset="0"/>
</magic>
</mime-type>
<mime-type type="application/x.systemd-hwdb">
<comment>Hardware Database</comment>
<magic>
<match type="string" value="KSLPHHRH" offset="0"/>
</magic>
</mime-type>
<mime-type type="application/x.systemd-credential">
<comment>Encrypted Credential</comment>
<generic-icon name="security-high"/>
<magic>
<match type="string" value="Whxqht+dQJax1aZeCGLxm" offset="0"/>
<match type="string" value="DHzAexF2RZGcSwvqCLwg/" offset="0"/>
<match type="string" value="+vfrk0HjQSyhpDb5Wik2L" offset="0"/>
<match type="string" value="k6iUCUh0RJCQyvL8k8q1U" offset="0"/>
<match type="string" value="r0lQqEkTTrGnOEYwT/MMB" offset="0"/>
<match type="string" value="BYRp2vb1QySABUnaD46i+" offset="0"/>
</magic>
</mime-type>
</mime-info>
+28
View File
@@ -2,6 +2,8 @@
#include "creds-util.h"
#include "fileio.h"
#include "format-util.h"
#include "hexdecoct.h"
#include "id128-util.h"
#include "iovec-util.h"
#include "path-util.h"
@@ -213,7 +215,33 @@ TEST(credential_encrypt_decrypt) {
if (ec)
assert_se(setenv("SYSTEMD_CREDENTIAL_SECRET", ec, true) >= 0);
}
TEST(mime_type_matches) {
static const sd_id128_t tags[] = {
CRED_AES256_GCM_BY_HOST,
CRED_AES256_GCM_BY_TPM2_HMAC,
CRED_AES256_GCM_BY_TPM2_HMAC_WITH_PK,
CRED_AES256_GCM_BY_HOST_AND_TPM2_HMAC,
CRED_AES256_GCM_BY_HOST_AND_TPM2_HMAC_WITH_PK,
CRED_AES256_GCM_BY_NULL,
};
/* Generates the right <match/> expressions for these credentials according to the shared mime-info spec */
FOREACH_ARRAY(t, tags, ELEMENTSOF(tags)) {
_cleanup_free_ char *encoded = NULL;
assert_se(base64mem(t, sizeof(sd_id128_t), &encoded) >= 0);
/* Validate that the size matches expectations for the 4/3 factor size increase (rounding up) */
assert_se(strlen(encoded) == DIV_ROUND_UP((128U / 8U), 3U) * 4U);
/* Cut off rounded string where the ID ends, but now round down to get rid of characters that might contain follow-up data */
encoded[128 / 6] = 0;
printf("<match type=\"string\" value=\"%s\" offset=\"0\"/>\n", encoded);
}
}
DEFINE_TEST_MAIN(LOG_INFO);