}
w = sd_json_variant_by_key(v, "tpm2-policy-hash");
- if (!w || !sd_json_variant_is_string(w))
+ if (!w)
return log_error_errno(SYNTHETIC_ERRNO(EINVAL),
"TPM2 token data lacks 'tpm2-policy-hash' field.");
- r = unhexmem(sd_json_variant_string(w), &thash, &thash_size);
+ r = sd_json_variant_unhex(w, &thash, &thash_size);
if (r < 0)
- return log_error_errno(SYNTHETIC_ERRNO(EINVAL),
- "Invalid base64 data in 'tpm2-policy-hash' field.");
+ return log_error_errno(r, "Invalid base64 data in 'tpm2-policy-hash' field: %m");
if (memcmp_nn(hash, hash_size, thash, thash_size) == 0)
return keyslot; /* Found entry with same hash. */
"PKCS#11 token data contains invalid PKCS#11 URI.");
w = sd_json_variant_by_key(v, "pkcs11-key");
- if (!w || !sd_json_variant_is_string(w))
+ if (!w)
return log_error_errno(SYNTHETIC_ERRNO(EINVAL),
"PKCS#11 token data lacks 'pkcs11-key' field.");
assert(!key);
assert(key_size == 0);
- r = unbase64mem(sd_json_variant_string(w), &key, &key_size);
+ r = sd_json_variant_unbase64(w, &key, &key_size);
if (r < 0)
- return log_error_errno(r, "Failed to decode base64 encoded key.");
+ return log_error_errno(r, "Failed to decode base64 encoded key: %m");
}
if (!uri)
return crypt_log_debug_errno(cd, r, "Could not parse " TOKEN_NAME " json object: %m.");
w = sd_json_variant_by_key(v, "fido2-credential");
- if (!w || !sd_json_variant_is_string(w)) {
+ if (!w) {
crypt_log_debug(cd, "FIDO2 token data lacks 'fido2-credential' field.");
return 1;
}
- r = unbase64mem(sd_json_variant_string(w), NULL, NULL);
+ r = sd_json_variant_unbase64(w, NULL, NULL);
if (r < 0)
return crypt_log_debug_errno(cd, r, "Invalid base64 data in 'fido2-credential' field: %m");
w = sd_json_variant_by_key(v, "fido2-salt");
- if (!w || !sd_json_variant_is_string(w)) {
+ if (!w) {
crypt_log_debug(cd, "FIDO2 token data lacks 'fido2-salt' field.");
return 1;
}
- r = unbase64mem(sd_json_variant_string(w), NULL, NULL);
+ r = sd_json_variant_unbase64(w, NULL, NULL);
if (r < 0)
return crypt_log_debug_errno(cd, r, "Failed to decode base64 encoded salt: %m.");
}
w = sd_json_variant_by_key(v, "pkcs11-key");
- if (!w || !sd_json_variant_is_string(w)) {
+ if (!w) {
crypt_log_debug(cd, "PKCS#11 token data lacks 'pkcs11-key' field.");
return 1;
}
- r = unbase64mem(sd_json_variant_string(w), NULL, NULL);
+ r = sd_json_variant_unbase64(w, NULL, NULL);
if (r < 0)
return crypt_log_debug_errno(cd, r, "Failed to decode base64 encoded key: %m.");
}
w = sd_json_variant_by_key(v, "tpm2-blob");
- if (!w || !sd_json_variant_is_string(w)) {
+ if (!w) {
crypt_log_debug(cd, "TPM2 token data lacks 'tpm2-blob' field.");
return 1;
}
- r = unbase64mem(sd_json_variant_string(w), NULL, NULL);
+ r = sd_json_variant_unbase64(w, NULL, NULL);
if (r < 0)
return crypt_log_debug_errno(cd, r, "Invalid base64 data in 'tpm2-blob' field: %m");
w = sd_json_variant_by_key(v, "tpm2-policy-hash");
- if (!w || !sd_json_variant_is_string(w)) {
+ if (!w) {
crypt_log_debug(cd, "TPM2 token data lacks 'tpm2-policy-hash' field.");
return 1;
}
- r = unhexmem(sd_json_variant_string(w), NULL, NULL);
+ r = sd_json_variant_unhex(w, NULL, NULL);
if (r < 0)
return crypt_log_debug_errno(cd, r, "Invalid base64 data in 'tpm2-policy-hash' field: %m");
if (!w)
return -EINVAL;
- r = unbase64mem(sd_json_variant_string(w), &cid, &cid_size);
+ r = sd_json_variant_unbase64(w, &cid, &cid_size);
if (r < 0)
return crypt_log_error_errno(cd, r, "Failed to parse 'fido2-credentials' field: %m");
if (!w)
return -EINVAL;
- r = unbase64mem(sd_json_variant_string(w), &salt, &salt_size);
+ r = sd_json_variant_unbase64(w, &salt, &salt_size);
if (r < 0)
return crypt_log_error_errno(cd, r, "Failed to parse 'fido2-salt' field: %m");
if (!w)
return -EINVAL;
- r = unbase64mem(sd_json_variant_string(w), &key, &key_size);
+ r = sd_json_variant_unbase64(w, &key, &key_size);
if (r < 0)
return crypt_log_debug_errno(cd, r, "Failed to decode base64 encoded key: %m.");
}
w = sd_json_variant_by_key(v, "fido2-credential");
- if (!w || !sd_json_variant_is_string(w))
+ if (!w)
return log_error_errno(SYNTHETIC_ERRNO(EINVAL),
"FIDO2 token data lacks 'fido2-credential' field.");
- r = unbase64mem(sd_json_variant_string(w), &cid, &cid_size);
+ r = sd_json_variant_unbase64(w, &cid, &cid_size);
if (r < 0)
- return log_error_errno(SYNTHETIC_ERRNO(EINVAL),
- "Invalid base64 data in 'fido2-credential' field.");
+ return log_error_errno(r, "Invalid base64 data in 'fido2-credential' field: %m");
w = sd_json_variant_by_key(v, "fido2-salt");
- if (!w || !sd_json_variant_is_string(w))
+ if (!w)
return log_error_errno(SYNTHETIC_ERRNO(EINVAL),
"FIDO2 token data lacks 'fido2-salt' field.");
assert(!salt);
assert(salt_size == 0);
- r = unbase64mem(sd_json_variant_string(w), &salt, &salt_size);
+ r = sd_json_variant_unbase64(w, &salt, &salt_size);
if (r < 0)
- return log_error_errno(r, "Failed to decode base64 encoded salt.");
+ return log_error_errno(r, "Failed to decode base64 encoded salt: %m");
w = sd_json_variant_by_key(v, "fido2-rp");
if (w) {
rh = sd_json_variant_by_key(v, "rootHash");
if (!rh)
return log_debug_errno(SYNTHETIC_ERRNO(EINVAL), "Signature JSON object lacks 'rootHash' field.");
- if (!sd_json_variant_is_string(rh))
- return log_debug_errno(SYNTHETIC_ERRNO(EINVAL), "'rootHash' field of signature JSON object is not a string.");
- r = unhexmem(sd_json_variant_string(rh), &root_hash, &root_hash_size);
+ r = sd_json_variant_unhex(rh, &root_hash, &root_hash_size);
if (r < 0)
return log_debug_errno(r, "Failed to parse root hash field: %m");
sig = sd_json_variant_by_key(v, "signature");
if (!sig)
return log_debug_errno(SYNTHETIC_ERRNO(EINVAL), "Signature JSON object lacks 'signature' field.");
- if (!sd_json_variant_is_string(sig))
- return log_debug_errno(SYNTHETIC_ERRNO(EINVAL), "'signature' field of signature JSON object is not a string.");
- r = unbase64mem(sd_json_variant_string(sig), &root_hash_sig, &root_hash_sig_size);
+ r = sd_json_variant_unbase64(sig, &root_hash_sig, &root_hash_sig_size);
if (r < 0)
return log_debug_errno(r, "Failed to parse signature field: %m");
return 0;
}
- if (!sd_json_variant_is_string(variant))
- return json_log(variant, flags, SYNTHETIC_ERRNO(EINVAL), "JSON field '%s' is not a string.", strna(name));
-
- r = unbase64mem(sd_json_variant_string(variant), &b, &l);
+ r = sd_json_variant_unbase64(variant, &b, &l);
if (r < 0)
return json_log(variant, flags, r, "Failed to decode encrypted PKCS#11 key: %m");
return 0;
}
- if (!sd_json_variant_is_string(variant))
- return json_log(variant, flags, SYNTHETIC_ERRNO(EINVAL), "JSON field '%s' is not a string.", strna(name));
-
- r = unbase64mem(sd_json_variant_string(variant), &b, &l);
+ r = sd_json_variant_unbase64(variant, &b, &l);
if (r < 0)
return json_log(variant, flags, r, "Failed to decode FIDO2 credential ID: %m");
size_t l;
void *b;
- if (!sd_json_variant_is_string(e))
- return json_log(e, flags, SYNTHETIC_ERRNO(EINVAL), "JSON array element is not a string.");
-
array = reallocarray(h->fido2_hmac_credential, h->n_fido2_hmac_credential + 1, sizeof(Fido2HmacCredential));
if (!array)
return log_oom();
- r = unbase64mem(sd_json_variant_string(e), &b, &l);
+ r = sd_json_variant_unbase64(e, &b, &l);
if (r < 0)
return json_log(variant, flags, r, "Failed to decode FIDO2 credential ID: %m");
return 0;
}
- if (!sd_json_variant_is_string(variant))
- return json_log(variant, flags, SYNTHETIC_ERRNO(EINVAL), "JSON field '%s' is not a string.", strna(name));
-
- r = unbase64mem(sd_json_variant_string(variant), &b, &l);
+ r = sd_json_variant_unbase64(variant, &b, &l);
if (r < 0)
return json_log(variant, flags, r, "Failed to decode FIDO2 salt: %m");