diff --git a/src/basic/env-util.c b/src/basic/env-util.c index dc3cc32eb0..77a8ccb388 100644 --- a/src/basic/env-util.c +++ b/src/basic/env-util.c @@ -1130,25 +1130,6 @@ int getenv_steal_erase(const char *name, char **ret) { return 1; } -int set_full_environment(char **env) { - int r; - - clearenv(); - - STRV_FOREACH(e, env) { - _cleanup_free_ char *k = NULL, *v = NULL; - - r = split_pair(*e, "=", &k, &v); - if (r < 0) - return r; - - if (setenv(k, v, /* overwrite= */ true) < 0) - return -errno; - } - - return 0; -} - int setenvf(const char *name, bool overwrite, const char *valuef, ...) { _cleanup_free_ char *value = NULL; va_list ap; diff --git a/src/basic/env-util.h b/src/basic/env-util.h index 203ed65bd1..52771ecc81 100644 --- a/src/basic/env-util.h +++ b/src/basic/env-util.h @@ -82,6 +82,4 @@ int getenv_path_list(const char *name, char ***ret_paths); int getenv_steal_erase(const char *name, char **ret); -int set_full_environment(char **env); - int setenvf(const char *name, bool overwrite, const char *valuef, ...) _printf_(3,4); diff --git a/src/basic/ether-addr-util.c b/src/basic/ether-addr-util.c index 024f7310f8..7e85de92fb 100644 --- a/src/basic/ether-addr-util.c +++ b/src/basic/ether-addr-util.c @@ -86,22 +86,6 @@ char* ether_addr_to_string(const struct ether_addr *addr, char buffer[ETHER_ADDR return buffer; } -int ether_addr_to_string_alloc(const struct ether_addr *addr, char **ret) { - char *buf; - - assert(addr); - assert(ret); - - buf = new(char, ETHER_ADDR_TO_STRING_MAX); - if (!buf) - return -ENOMEM; - - ether_addr_to_string(addr, buf); - - *ret = buf; - return 0; -} - int ether_addr_compare(const struct ether_addr *a, const struct ether_addr *b) { return memcmp(a, b, ETH_ALEN); } diff --git a/src/basic/ether-addr-util.h b/src/basic/ether-addr-util.h index 8ebf9c031d..168c6500dc 100644 --- a/src/basic/ether-addr-util.h +++ b/src/basic/ether-addr-util.h @@ -72,7 +72,6 @@ extern const struct hash_ops hw_addr_hash_ops_free; #define ETHER_ADDR_TO_STRING_MAX (3*6) char* ether_addr_to_string(const struct ether_addr *addr, char buffer[ETHER_ADDR_TO_STRING_MAX]); -int ether_addr_to_string_alloc(const struct ether_addr *addr, char **ret); /* Use only as function argument, never stand-alone! */ #define ETHER_ADDR_TO_STR(addr) ether_addr_to_string((addr), (char[ETHER_ADDR_TO_STRING_MAX]){}) diff --git a/src/basic/unit-def.c b/src/basic/unit-def.c index 227c96e18b..06d31b7f00 100644 --- a/src/basic/unit-def.c +++ b/src/basic/unit-def.c @@ -68,14 +68,6 @@ const char* unit_dbus_interface_from_name(const char *name) { return unit_dbus_interface_from_type(t); } -const char* unit_type_to_capitalized_string(UnitType t) { - const char *di = unit_dbus_interface_from_type(t); - if (!di) - return NULL; - - return ASSERT_PTR(startswith(di, "org.freedesktop.systemd1.")); -} - static const char* const unit_type_table[_UNIT_TYPE_MAX] = { [UNIT_SERVICE] = "service", [UNIT_SOCKET] = "socket", diff --git a/src/basic/unit-def.h b/src/basic/unit-def.h index 06bf902e45..fe77dd0993 100644 --- a/src/basic/unit-def.h +++ b/src/basic/unit-def.h @@ -306,8 +306,6 @@ const char* unit_dbus_interface_from_name(const char *name); const char* unit_type_to_string(UnitType i) _const_; UnitType unit_type_from_string(const char *s) _pure_; -const char* unit_type_to_capitalized_string(UnitType t); - const char* unit_load_state_to_string(UnitLoadState i) _const_; UnitLoadState unit_load_state_from_string(const char *s) _pure_; diff --git a/src/cryptsetup/cryptsetup-tokens/cryptsetup-token-util.c b/src/cryptsetup/cryptsetup-tokens/cryptsetup-token-util.c index 4e3090bc92..c440de336e 100644 --- a/src/cryptsetup/cryptsetup-tokens/cryptsetup-token-util.c +++ b/src/cryptsetup/cryptsetup-tokens/cryptsetup-token-util.c @@ -30,33 +30,6 @@ int crypt_dump_buffer_to_hex_string( return 0; } -int crypt_dump_hex_string(const char *hex_str, char **ret_dump_str) { - - int r; - size_t len; - _cleanup_free_ char *dump_str = NULL; - - assert(hex_str); - assert(ret_dump_str); - - len = strlen(hex_str) >> 1; - - for (size_t i = 0; i < len; i++) { - /* crypt_dump() breaks line after every - * 16th couple of chars in dumped hexstring */ - r = strextendf_with_separator( - &dump_str, - (i && !(i % 16)) ? CRYPT_DUMP_LINE_SEP : " ", - "%.2s", hex_str + (i<<1)); - if (r < 0) - return r; - } - - *ret_dump_str = TAKE_PTR(dump_str); - - return 0; -} - int crypt_normalize_pin(const void *pin, size_t pin_size, char **ret_pin_string) { assert(pin || pin_size == 0); assert(ret_pin_string); diff --git a/src/cryptsetup/cryptsetup-tokens/cryptsetup-token-util.h b/src/cryptsetup/cryptsetup-tokens/cryptsetup-token-util.h index 146beffb30..cfdb8a99db 100644 --- a/src/cryptsetup/cryptsetup-tokens/cryptsetup-token-util.h +++ b/src/cryptsetup/cryptsetup-tokens/cryptsetup-token-util.h @@ -35,6 +35,4 @@ int crypt_dump_buffer_to_hex_string( size_t buf_size, char **ret_dump_str); -int crypt_dump_hex_string(const char *hex_str, char **ret_dump_str); - int crypt_normalize_pin(const void *pin, size_t pin_size, char **ret_pin_string); diff --git a/src/home/user-record-util.c b/src/home/user-record-util.c index 5569eb6935..7468a72512 100644 --- a/src/home/user-record-util.c +++ b/src/home/user-record-util.c @@ -843,45 +843,6 @@ int user_record_make_hashed_password(UserRecord *h, char **secret, bool extend) return 0; } -int user_record_set_hashed_password(UserRecord *h, char **hashed_password) { - _cleanup_(sd_json_variant_unrefp) sd_json_variant *priv = NULL; - _cleanup_strv_free_ char **copy = NULL; - int r; - - assert(h); - - priv = sd_json_variant_ref(sd_json_variant_by_key(h->json, "privileged")); - - if (strv_isempty(hashed_password)) - r = sd_json_variant_filter(&priv, STRV_MAKE("hashedPassword")); - else { - _cleanup_(sd_json_variant_unrefp) sd_json_variant *array = NULL; - - copy = strv_copy(hashed_password); - if (!copy) - return -ENOMEM; - - strv_uniq(copy); - - r = sd_json_variant_new_array_strv(&array, copy); - if (r < 0) - return r; - - r = sd_json_variant_set_field(&priv, "hashedPassword", array); - } - if (r < 0) - return r; - - r = sd_json_variant_set_field(&h->json, "privileged", priv); - if (r < 0) - return r; - - strv_free_and_replace(h->hashed_password, copy); - - SET_FLAG(h->mask, USER_RECORD_PRIVILEGED, !sd_json_variant_is_blank_object(priv)); - return 0; -} - int user_record_set_password(UserRecord *h, char **password, bool prepend) { _cleanup_(sd_json_variant_unrefp) sd_json_variant *w = NULL; _cleanup_strv_free_erase_ char **e = NULL; diff --git a/src/home/user-record-util.h b/src/home/user-record-util.h index 1295a8e09a..c2429c8df6 100644 --- a/src/home/user-record-util.h +++ b/src/home/user-record-util.h @@ -53,7 +53,6 @@ int user_record_update_last_changed(UserRecord *h, bool with_password); int user_record_set_disk_size(UserRecord *h, uint64_t disk_size); int user_record_set_password(UserRecord *h, char **password, bool prepend); int user_record_make_hashed_password(UserRecord *h, char **password, bool extend); -int user_record_set_hashed_password(UserRecord *h, char **hashed_password); int user_record_set_token_pin(UserRecord *h, char **pin, bool prepend); int user_record_set_pkcs11_protected_authentication_path_permitted(UserRecord *h, int b); int user_record_set_fido2_user_presence_permitted(UserRecord *h, int b); diff --git a/src/libsystemd-network/ndisc-option.c b/src/libsystemd-network/ndisc-option.c index 3aab51f51b..5816714fef 100644 --- a/src/libsystemd-network/ndisc-option.c +++ b/src/libsystemd-network/ndisc-option.c @@ -237,31 +237,6 @@ static int ndisc_option_consume(Set **options, sd_ndisc_option *p) { return set_ensure_consume(options, &ndisc_option_hash_ops, p); } -int ndisc_option_set_raw(Set **options, size_t length, const uint8_t *bytes) { - _cleanup_free_ uint8_t *copy = NULL; - - assert(options); - assert(bytes); - - if (length == 0) - return -EINVAL; - - copy = newdup(uint8_t, bytes, length); - if (!copy) - return -ENOMEM; - - sd_ndisc_option *p = ndisc_option_new(/* type = */ 0, /* offset = */ 0); - if (!p) - return -ENOMEM; - - p->raw = (sd_ndisc_raw) { - .bytes = TAKE_PTR(copy), - .length = length, - }; - - return ndisc_option_consume(options, p); -} - static int ndisc_option_build_raw(const sd_ndisc_option *option, uint8_t **ret) { assert(option); assert(option->type == 0); diff --git a/src/libsystemd-network/ndisc-option.h b/src/libsystemd-network/ndisc-option.h index 5752533e0f..b51837af5b 100644 --- a/src/libsystemd-network/ndisc-option.h +++ b/src/libsystemd-network/ndisc-option.h @@ -146,10 +146,6 @@ static inline void ndisc_option_remove_by_type(Set *options, uint8_t type) { ndisc_option_remove(options, &(const sd_ndisc_option) { .type = type }); } -int ndisc_option_set_raw( - Set **options, - size_t length, - const uint8_t *bytes); int ndisc_option_add_link_layer_address( Set **options, uint8_t type, diff --git a/src/libsystemd/sd-bus/bus-creds.c b/src/libsystemd/sd-bus/bus-creds.c index e496bdc588..1c6c5a545a 100644 --- a/src/libsystemd/sd-bus/bus-creds.c +++ b/src/libsystemd/sd-bus/bus-creds.c @@ -1159,241 +1159,3 @@ int bus_creds_add_more(sd_bus_creds *c, uint64_t mask, PidRef *pidref, pid_t tid return 0; } - -int bus_creds_extend_by_pid(sd_bus_creds *c, uint64_t mask, sd_bus_creds **ret) { - _cleanup_(sd_bus_creds_unrefp) sd_bus_creds *n = NULL; - int r; - - assert(c); - assert(ret); - - if ((mask & ~c->mask) == 0 || (!(mask & SD_BUS_CREDS_AUGMENT))) { - /* There's already all data we need, or augmentation - * wasn't turned on. */ - - *ret = sd_bus_creds_ref(c); - return 0; - } - - n = bus_creds_new(); - if (!n) - return -ENOMEM; - - /* Copy the original data over */ - - if (c->mask & mask & SD_BUS_CREDS_PID) { - n->pid = c->pid; - n->mask |= SD_BUS_CREDS_PID; - } - - if (c->mask & mask & SD_BUS_CREDS_PIDFD) { - n->pidfd = fcntl(c->pidfd, F_DUPFD_CLOEXEC, 3); - if (n->pidfd < 0) - return -errno; - n->mask |= SD_BUS_CREDS_PIDFD; - } - - if (c->mask & mask & SD_BUS_CREDS_TID) { - n->tid = c->tid; - n->mask |= SD_BUS_CREDS_TID; - } - - if (c->mask & mask & SD_BUS_CREDS_PPID) { - n->ppid = c->ppid; - n->mask |= SD_BUS_CREDS_PPID; - } - - if (c->mask & mask & SD_BUS_CREDS_UID) { - n->uid = c->uid; - n->mask |= SD_BUS_CREDS_UID; - } - - if (c->mask & mask & SD_BUS_CREDS_EUID) { - n->euid = c->euid; - n->mask |= SD_BUS_CREDS_EUID; - } - - if (c->mask & mask & SD_BUS_CREDS_SUID) { - n->suid = c->suid; - n->mask |= SD_BUS_CREDS_SUID; - } - - if (c->mask & mask & SD_BUS_CREDS_FSUID) { - n->fsuid = c->fsuid; - n->mask |= SD_BUS_CREDS_FSUID; - } - - if (c->mask & mask & SD_BUS_CREDS_GID) { - n->gid = c->gid; - n->mask |= SD_BUS_CREDS_GID; - } - - if (c->mask & mask & SD_BUS_CREDS_EGID) { - n->egid = c->egid; - n->mask |= SD_BUS_CREDS_EGID; - } - - if (c->mask & mask & SD_BUS_CREDS_SGID) { - n->sgid = c->sgid; - n->mask |= SD_BUS_CREDS_SGID; - } - - if (c->mask & mask & SD_BUS_CREDS_FSGID) { - n->fsgid = c->fsgid; - n->mask |= SD_BUS_CREDS_FSGID; - } - - if (c->mask & mask & SD_BUS_CREDS_SUPPLEMENTARY_GIDS) { - if (c->supplementary_gids) { - n->supplementary_gids = newdup(gid_t, c->supplementary_gids, c->n_supplementary_gids); - if (!n->supplementary_gids) - return -ENOMEM; - n->n_supplementary_gids = c->n_supplementary_gids; - } else { - n->supplementary_gids = NULL; - n->n_supplementary_gids = 0; - } - - n->mask |= SD_BUS_CREDS_SUPPLEMENTARY_GIDS; - } - - if (c->mask & mask & SD_BUS_CREDS_COMM) { - assert(c->comm); - - n->comm = strdup(c->comm); - if (!n->comm) - return -ENOMEM; - - n->mask |= SD_BUS_CREDS_COMM; - } - - if (c->mask & mask & SD_BUS_CREDS_TID_COMM) { - assert(c->tid_comm); - - n->tid_comm = strdup(c->tid_comm); - if (!n->tid_comm) - return -ENOMEM; - - n->mask |= SD_BUS_CREDS_TID_COMM; - } - - if (c->mask & mask & SD_BUS_CREDS_EXE) { - if (c->exe) { - n->exe = strdup(c->exe); - if (!n->exe) - return -ENOMEM; - } else - n->exe = NULL; - - n->mask |= SD_BUS_CREDS_EXE; - } - - if (c->mask & mask & SD_BUS_CREDS_CMDLINE) { - if (c->cmdline) { - n->cmdline = memdup(c->cmdline, c->cmdline_size); - if (!n->cmdline) - return -ENOMEM; - - n->cmdline_size = c->cmdline_size; - } else { - n->cmdline = NULL; - n->cmdline_size = 0; - } - - n->mask |= SD_BUS_CREDS_CMDLINE; - } - - if (c->mask & mask & (SD_BUS_CREDS_CGROUP|SD_BUS_CREDS_SESSION|SD_BUS_CREDS_UNIT|SD_BUS_CREDS_USER_UNIT|SD_BUS_CREDS_SLICE|SD_BUS_CREDS_USER_SLICE|SD_BUS_CREDS_OWNER_UID)) { - assert(c->cgroup); - - n->cgroup = strdup(c->cgroup); - if (!n->cgroup) - return -ENOMEM; - - n->cgroup_root = strdup(c->cgroup_root); - if (!n->cgroup_root) - return -ENOMEM; - - n->mask |= mask & (SD_BUS_CREDS_CGROUP|SD_BUS_CREDS_SESSION|SD_BUS_CREDS_UNIT|SD_BUS_CREDS_USER_UNIT|SD_BUS_CREDS_SLICE|SD_BUS_CREDS_USER_SLICE|SD_BUS_CREDS_OWNER_UID); - } - - if (c->mask & mask & (SD_BUS_CREDS_EFFECTIVE_CAPS|SD_BUS_CREDS_PERMITTED_CAPS|SD_BUS_CREDS_INHERITABLE_CAPS|SD_BUS_CREDS_BOUNDING_CAPS)) { - assert(c->capability); - - n->capability = memdup(c->capability, DIV_ROUND_UP(cap_last_cap()+1, 32U) * 4 * 4); - if (!n->capability) - return -ENOMEM; - - n->mask |= c->mask & mask & (SD_BUS_CREDS_EFFECTIVE_CAPS|SD_BUS_CREDS_PERMITTED_CAPS|SD_BUS_CREDS_INHERITABLE_CAPS|SD_BUS_CREDS_BOUNDING_CAPS); - } - - if (c->mask & mask & SD_BUS_CREDS_SELINUX_CONTEXT) { - assert(c->label); - - n->label = strdup(c->label); - if (!n->label) - return -ENOMEM; - n->mask |= SD_BUS_CREDS_SELINUX_CONTEXT; - } - - if (c->mask & mask & SD_BUS_CREDS_AUDIT_SESSION_ID) { - n->audit_session_id = c->audit_session_id; - n->mask |= SD_BUS_CREDS_AUDIT_SESSION_ID; - } - if (c->mask & mask & SD_BUS_CREDS_AUDIT_LOGIN_UID) { - n->audit_login_uid = c->audit_login_uid; - n->mask |= SD_BUS_CREDS_AUDIT_LOGIN_UID; - } - - if (c->mask & mask & SD_BUS_CREDS_TTY) { - if (c->tty) { - n->tty = strdup(c->tty); - if (!n->tty) - return -ENOMEM; - } else - n->tty = NULL; - n->mask |= SD_BUS_CREDS_TTY; - } - - if (c->mask & mask & SD_BUS_CREDS_UNIQUE_NAME) { - assert(c->unique_name); - - n->unique_name = strdup(c->unique_name); - if (!n->unique_name) - return -ENOMEM; - n->mask |= SD_BUS_CREDS_UNIQUE_NAME; - } - - if (c->mask & mask & SD_BUS_CREDS_WELL_KNOWN_NAMES) { - if (strv_isempty(c->well_known_names)) - n->well_known_names = NULL; - else { - n->well_known_names = strv_copy(c->well_known_names); - if (!n->well_known_names) - return -ENOMEM; - } - n->well_known_names_driver = c->well_known_names_driver; - n->well_known_names_local = c->well_known_names_local; - n->mask |= SD_BUS_CREDS_WELL_KNOWN_NAMES; - } - - if (c->mask & mask & SD_BUS_CREDS_DESCRIPTION) { - assert(c->description); - n->description = strdup(c->description); - if (!n->description) - return -ENOMEM; - n->mask |= SD_BUS_CREDS_DESCRIPTION; - } - - n->augmented = c->augmented & n->mask; - - /* Get more data */ - - r = bus_creds_add_more(n, mask, /* pidref = */ NULL, /* tid = */ 0); - if (r < 0) - return r; - - *ret = TAKE_PTR(n); - - return 0; -} diff --git a/src/libsystemd/sd-bus/bus-creds.h b/src/libsystemd/sd-bus/bus-creds.h index f45de1cb9c..d7ad1dc96b 100644 --- a/src/libsystemd/sd-bus/bus-creds.h +++ b/src/libsystemd/sd-bus/bus-creds.h @@ -84,5 +84,3 @@ sd_bus_creds* bus_creds_new(void); void bus_creds_done(sd_bus_creds *c); int bus_creds_add_more(sd_bus_creds *c, uint64_t mask, PidRef *pidref, pid_t tid); - -int bus_creds_extend_by_pid(sd_bus_creds *c, uint64_t mask, sd_bus_creds **ret); diff --git a/src/shared/blockdev-util.c b/src/shared/blockdev-util.c index 57dfe3a19c..383df8bd8f 100644 --- a/src/shared/blockdev-util.c +++ b/src/shared/blockdev-util.c @@ -788,20 +788,6 @@ int block_device_remove_all_partitions(sd_device *dev, int fd) { return k < 0 ? k : has_partitions; } -int block_device_has_partitions(sd_device *dev) { - _cleanup_(sd_device_enumerator_unrefp) sd_device_enumerator *e = NULL; - int r; - - assert(dev); - - /* Checks if the specified device currently has partitions. */ - - r = partition_enumerator_new(dev, &e); - if (r < 0) - return r; - - return !!sd_device_enumerator_get_device_first(e); -} int blockdev_reread_partition_table(sd_device *dev) { _cleanup_close_ int fd = -EBADF; diff --git a/src/shared/blockdev-util.h b/src/shared/blockdev-util.h index e8e9d37ef9..d0b72c6c23 100644 --- a/src/shared/blockdev-util.h +++ b/src/shared/blockdev-util.h @@ -54,7 +54,6 @@ int block_device_remove_partition(int fd, const char *name, int nr); int block_device_resize_partition(int fd, int nr, uint64_t start, uint64_t size); int partition_enumerator_new(sd_device *dev, sd_device_enumerator **ret); int block_device_remove_all_partitions(sd_device *dev, int fd); -int block_device_has_partitions(sd_device *dev); int blockdev_reread_partition_table(sd_device *dev); int blockdev_get_sector_size(int fd, uint32_t *ret); diff --git a/src/shared/openssl-util.c b/src/shared/openssl-util.c index b461526780..beb09a2151 100644 --- a/src/shared/openssl-util.c +++ b/src/shared/openssl-util.c @@ -787,29 +787,6 @@ int rsa_pkey_to_n_e( return 0; } -/* Generate a new RSA key with the specified number of bits. */ -int rsa_pkey_new(size_t bits, EVP_PKEY **ret) { - assert(ret); - - _cleanup_(EVP_PKEY_CTX_freep) EVP_PKEY_CTX *ctx = EVP_PKEY_CTX_new_id(EVP_PKEY_RSA, NULL); - if (!ctx) - return log_openssl_errors("Failed to create new EVP_PKEY_CTX"); - - if (EVP_PKEY_keygen_init(ctx) <= 0) - return log_openssl_errors("Failed to initialize EVP_PKEY_CTX"); - - if (EVP_PKEY_CTX_set_rsa_keygen_bits(ctx, (int) bits) <= 0) - return log_openssl_errors("Failed to set RSA bits to %zu", bits); - - _cleanup_(EVP_PKEY_freep) EVP_PKEY *pkey = NULL; - if (EVP_PKEY_keygen(ctx, &pkey) <= 0) - return log_openssl_errors("Failed to generate ECC key"); - - *ret = TAKE_PTR(pkey); - - return 0; -} - /* Generate ECC public key from provided curve ID and x/y points. */ int ecc_pkey_from_curve_x_y( int curve_id, diff --git a/src/shared/openssl-util.h b/src/shared/openssl-util.h index 6ab84e266c..240d6f26e6 100644 --- a/src/shared/openssl-util.h +++ b/src/shared/openssl-util.h @@ -147,8 +147,6 @@ int rsa_oaep_encrypt_bytes(const EVP_PKEY *pkey, const char *digest_alg, const c int rsa_pkey_to_suitable_key_size(EVP_PKEY *pkey, size_t *ret_suitable_key_size); -int rsa_pkey_new(size_t bits, EVP_PKEY **ret); - int rsa_pkey_from_n_e(const void *n, size_t n_size, const void *e, size_t e_size, EVP_PKEY **ret); int rsa_pkey_to_n_e(const EVP_PKEY *pkey, void **ret_n, size_t *ret_n_size, void **ret_e, size_t *ret_e_size); diff --git a/src/shared/pam-util.c b/src/shared/pam-util.c index 96afbfa61c..b83b548227 100644 --- a/src/shared/pam-util.c +++ b/src/shared/pam-util.c @@ -203,23 +203,6 @@ success: return PAM_SUCCESS; } -int pam_release_bus_connection(pam_handle_t *handle, const char *module_name) { - _cleanup_free_ char *cache_id = NULL; - int r; - - assert(module_name); - - cache_id = pam_make_bus_cache_id(module_name); - if (!cache_id) - return pam_log_oom(handle); - - r = pam_set_data(handle, cache_id, NULL, NULL); - if (r != PAM_SUCCESS) - return pam_syslog_pam_error(handle, LOG_ERR, r, "Failed to release PAM user record data: @PAMERR@"); - - return PAM_SUCCESS; -} - int pam_get_bus_data( pam_handle_t *handle, const char *module_name, diff --git a/src/shared/pam-util.h b/src/shared/pam-util.h index c6df968c47..d1295a618f 100644 --- a/src/shared/pam-util.h +++ b/src/shared/pam-util.h @@ -40,7 +40,6 @@ void pam_bus_data_disconnectp(PamBusData **d); /* Use a different module name per different PAM module. They are all loaded in the same namespace, and this * helps avoid a clash in the internal data structures of sd-bus. It will be used as key for cache items. */ int pam_acquire_bus_connection(pam_handle_t *handle, const char *module_name, bool debug, sd_bus **ret_bus, PamBusData **ret_bus_data); -int pam_release_bus_connection(pam_handle_t *handle, const char *module_name); int pam_get_bus_data(pam_handle_t *handle, const char *module_name, PamBusData **ret); void pam_cleanup_free(pam_handle_t *handle, void *data, int error_status); diff --git a/src/shared/pkcs11-util.c b/src/shared/pkcs11-util.c index 289b610f7a..04c6d691c6 100644 --- a/src/shared/pkcs11-util.c +++ b/src/shared/pkcs11-util.c @@ -426,122 +426,6 @@ int pkcs11_token_login( return log_error_errno(SYNTHETIC_ERRNO(EPERM), "Too many attempts to log into token '%s'.", token_label); } -int pkcs11_token_find_x509_certificate( - CK_FUNCTION_LIST *m, - CK_SESSION_HANDLE session, - P11KitUri *search_uri, - CK_OBJECT_HANDLE *ret_object) { - - bool found_class = false, found_certificate_type = false; - _cleanup_free_ CK_ATTRIBUTE *attributes_buffer = NULL; - CK_ULONG n_attributes, a, n_objects; - CK_ATTRIBUTE *attributes = NULL; - CK_OBJECT_HANDLE objects[2]; - CK_RV rv, rv2; - int r; - - assert(m); - assert(search_uri); - assert(ret_object); - - r = dlopen_p11kit(); - if (r < 0) - return r; - - attributes = sym_p11_kit_uri_get_attributes(search_uri, &n_attributes); - for (a = 0; a < n_attributes; a++) { - - /* We use the URI's included match attributes, but make them more strict. This allows users - * to specify a token URL instead of an object URL and the right thing should happen if - * there's only one suitable key on the token. */ - - switch (attributes[a].type) { - - case CKA_CLASS: { - CK_OBJECT_CLASS c; - - if (attributes[a].ulValueLen != sizeof(c)) - return log_error_errno(SYNTHETIC_ERRNO(EINVAL), "Invalid PKCS#11 CKA_CLASS attribute size."); - - memcpy(&c, attributes[a].pValue, sizeof(c)); - if (c != CKO_CERTIFICATE) - return log_error_errno(SYNTHETIC_ERRNO(EINVAL), "Selected PKCS#11 object is not an X.509 certificate, refusing."); - - found_class = true; - break; - } - - case CKA_CERTIFICATE_TYPE: { - CK_CERTIFICATE_TYPE t; - - if (attributes[a].ulValueLen != sizeof(t)) - return log_error_errno(SYNTHETIC_ERRNO(EINVAL), "Invalid PKCS#11 CKA_CERTIFICATE_TYPE attribute size."); - - memcpy(&t, attributes[a].pValue, sizeof(t)); - if (t != CKC_X_509) - return log_error_errno(SYNTHETIC_ERRNO(EINVAL), "Selected PKCS#11 object is not an X.509 certificate, refusing."); - - found_certificate_type = true; - break; - }} - } - - if (!found_class || !found_certificate_type) { - /* Hmm, let's slightly extend the attribute list we search for */ - - attributes_buffer = new(CK_ATTRIBUTE, n_attributes + !found_class + !found_certificate_type); - if (!attributes_buffer) - return log_oom(); - - memcpy(attributes_buffer, attributes, sizeof(CK_ATTRIBUTE) * n_attributes); - - if (!found_class) { - static const CK_OBJECT_CLASS class = CKO_CERTIFICATE; - - attributes_buffer[n_attributes++] = (CK_ATTRIBUTE) { - .type = CKA_CLASS, - .pValue = (CK_OBJECT_CLASS*) &class, - .ulValueLen = sizeof(class), - }; - } - - if (!found_certificate_type) { - static const CK_CERTIFICATE_TYPE type = CKC_X_509; - - attributes_buffer[n_attributes++] = (CK_ATTRIBUTE) { - .type = CKA_CERTIFICATE_TYPE, - .pValue = (CK_CERTIFICATE_TYPE*) &type, - .ulValueLen = sizeof(type), - }; - } - - attributes = attributes_buffer; - } - - rv = m->C_FindObjectsInit(session, attributes, n_attributes); - if (rv != CKR_OK) - return log_error_errno(SYNTHETIC_ERRNO(EIO), - "Failed to initialize object find call: %s", sym_p11_kit_strerror(rv)); - - rv = m->C_FindObjects(session, objects, ELEMENTSOF(objects), &n_objects); - rv2 = m->C_FindObjectsFinal(session); - if (rv != CKR_OK) - return log_error_errno(SYNTHETIC_ERRNO(EIO), - "Failed to find objects: %s", sym_p11_kit_strerror(rv)); - if (rv2 != CKR_OK) - return log_error_errno(SYNTHETIC_ERRNO(EIO), - "Failed to finalize object find call: %s", sym_p11_kit_strerror(rv2)); - if (n_objects == 0) - return log_error_errno(SYNTHETIC_ERRNO(ENOENT), - "Failed to find selected X509 certificate on token."); - if (n_objects > 1) - return log_error_errno(SYNTHETIC_ERRNO(ENOTUNIQ), - "Configured URI matches multiple certificates, refusing."); - - *ret_object = objects[0]; - return 0; -} - #if HAVE_OPENSSL static int read_public_key_info( CK_FUNCTION_LIST *m, diff --git a/src/shared/pkcs11-util.h b/src/shared/pkcs11-util.h index 386031ca54..c9ba1a507d 100644 --- a/src/shared/pkcs11-util.h +++ b/src/shared/pkcs11-util.h @@ -57,7 +57,6 @@ int pkcs11_token_login_by_pin(CK_FUNCTION_LIST *m, CK_SESSION_HANDLE session, co int pkcs11_token_login(CK_FUNCTION_LIST *m, CK_SESSION_HANDLE session, CK_SLOT_ID slotid, const CK_TOKEN_INFO *token_info, const char *friendly_name, const char *icon_name, const char *key_name, const char *credential_name, usec_t until, AskPasswordFlags ask_password_flags, char **ret_used_pin); int pkcs11_token_find_related_object(CK_FUNCTION_LIST *m, CK_SESSION_HANDLE session, CK_OBJECT_HANDLE prototype, CK_OBJECT_CLASS class, CK_OBJECT_HANDLE *ret_object); -int pkcs11_token_find_x509_certificate(CK_FUNCTION_LIST *m, CK_SESSION_HANDLE session, P11KitUri *search_uri, CK_OBJECT_HANDLE *ret_object); #if HAVE_OPENSSL int pkcs11_token_read_public_key(CK_FUNCTION_LIST *m, CK_SESSION_HANDLE session, CK_OBJECT_HANDLE object, EVP_PKEY **ret_pkey); int pkcs11_token_read_x509_certificate(CK_FUNCTION_LIST *m, CK_SESSION_HANDLE session, CK_OBJECT_HANDLE object, X509 **ret_cert); diff --git a/src/shared/smack-util.c b/src/shared/smack-util.c index 7eeca583ad..961bc1e0d6 100644 --- a/src/shared/smack-util.c +++ b/src/shared/smack-util.c @@ -187,24 +187,6 @@ int mac_smack_fix_full( return smack_fix_fd(inode_fd, label_path, flags); } - -int mac_smack_copy(const char *dest, const char *src) { - _cleanup_free_ char *label = NULL; - int r; - - assert(dest); - assert(src); - - r = mac_smack_read(src, SMACK_ATTR_ACCESS, &label); - if (r < 0) - return r; - - r = mac_smack_apply(dest, SMACK_ATTR_ACCESS, label); - if (r < 0) - return r; - - return r; -} #endif int renameat_and_apply_smack_floor_label(int fdf, const char *from, int fdt, const char *to) { diff --git a/src/shared/smack-util.h b/src/shared/smack-util.h index d42d2b553a..e380de3dd7 100644 --- a/src/shared/smack-util.h +++ b/src/shared/smack-util.h @@ -31,7 +31,6 @@ int mac_smack_read_at(int fd, const char *path, SmackAttr attr, char **ret); int mac_smack_apply_at(int fd, const char *path, SmackAttr attr, const char *label); int mac_smack_apply_pid(pid_t pid, const char *label); -int mac_smack_copy(const char *dest, const char *src); int mac_smack_fix_full(int atfd, const char *inode_path, const char *label_path, LabelFixFlags flags); #else @@ -51,10 +50,6 @@ static inline int mac_smack_apply_pid(pid_t pid, const char *label) { return 0; } -static inline int mac_smack_copy(const char *dest, const char *src) { - return 0; -} - static inline int mac_smack_fix_full(int atfd, const char *inode_path, const char *label_path, LabelFixFlags flags) { return 0; } diff --git a/src/shared/tpm2-util.c b/src/shared/tpm2-util.c index e9b8d6cad4..c18604b4dc 100644 --- a/src/shared/tpm2-util.c +++ b/src/shared/tpm2-util.c @@ -1656,16 +1656,6 @@ void tpm2_tpml_pcr_selection_add_mask(TPML_PCR_SELECTION *l, TPMI_ALG_HASH hash, tpm2_tpml_pcr_selection_add_tpms_pcr_selection(l, &tpms); } -/* Remove the PCR selections in the mask, with the provided hash. */ -void tpm2_tpml_pcr_selection_sub_mask(TPML_PCR_SELECTION *l, TPMI_ALG_HASH hash, uint32_t mask) { - TPMS_PCR_SELECTION tpms; - - assert(l); - - tpm2_tpms_pcr_selection_from_mask(mask, hash, &tpms); - tpm2_tpml_pcr_selection_sub_tpms_pcr_selection(l, &tpms); -} - /* Add all PCR selections in 'b' to 'a'. */ void tpm2_tpml_pcr_selection_add(TPML_PCR_SELECTION *a, const TPML_PCR_SELECTION *b) { assert(a); @@ -1824,27 +1814,6 @@ void tpm2_sort_pcr_values(Tpm2PCRValue *pcr_values, size_t n_pcr_values) { typesafe_qsort(pcr_values, n_pcr_values, cmp_pcr_values); } -int tpm2_pcr_values_from_mask(uint32_t mask, TPMI_ALG_HASH hash, Tpm2PCRValue **ret_pcr_values, size_t *ret_n_pcr_values) { - _cleanup_free_ Tpm2PCRValue *pcr_values = NULL; - size_t n_pcr_values = 0; - - assert(ret_pcr_values); - assert(ret_n_pcr_values); - - FOREACH_PCR_IN_MASK(index, mask) - if (!GREEDY_REALLOC_APPEND( - pcr_values, - n_pcr_values, - &TPM2_PCR_VALUE_MAKE(index, hash, {}), - 1)) - return log_oom_debug(); - - *ret_pcr_values = TAKE_PTR(pcr_values); - *ret_n_pcr_values = n_pcr_values; - - return 0; -} - int tpm2_pcr_values_to_mask( const Tpm2PCRValue *pcr_values, size_t n_pcr_values, @@ -2036,20 +2005,6 @@ int tpm2_pcr_values_from_string(const char *arg, Tpm2PCRValue **ret_pcr_values, return 0; } -/* Return a string representing the array of PCR values. The format is as described in - * tpm2_pcr_values_from_string(). This does not check for validity. */ -char* tpm2_pcr_values_to_string(const Tpm2PCRValue *pcr_values, size_t n_pcr_values) { - _cleanup_free_ char *s = NULL; - - FOREACH_ARRAY(v, pcr_values, n_pcr_values) { - _cleanup_free_ char *pcrstr = tpm2_pcr_value_to_string(v); - if (!pcrstr || !strextend_with_separator(&s, "+", pcrstr)) - return NULL; - } - - return s ? TAKE_PTR(s) : strdup(""); -} - void tpm2_log_debug_tpml_pcr_selection(const TPML_PCR_SELECTION *l, const char *msg) { if (!DEBUG_LOGGING || !l) return; @@ -2339,133 +2294,6 @@ static int tpm2_load_external( return 0; } -/* This calls TPM2_CreateLoaded() directly, without checking if the TPM supports it. Callers should instead - * use tpm2_create_loaded(). */ -static int _tpm2_create_loaded( - Tpm2Context *c, - const Tpm2Handle *parent, - const Tpm2Handle *session, - const TPMT_PUBLIC *template, - const TPMS_SENSITIVE_CREATE *sensitive, - TPM2B_PUBLIC **ret_public, - TPM2B_PRIVATE **ret_private, - Tpm2Handle **ret_handle) { - - usec_t ts; - TSS2_RC rc; - int r; - - assert(c); - assert(parent); - assert(template); - - log_debug("Creating loaded object on TPM."); - - ts = now(CLOCK_MONOTONIC); - - /* Copy the input template and zero the unique area. */ - TPMT_PUBLIC template_copy = *template; - zero(template_copy.unique); - - TPM2B_TEMPLATE tpm2b_template; - size_t size = 0; - rc = sym_Tss2_MU_TPMT_PUBLIC_Marshal( - &template_copy, - tpm2b_template.buffer, - sizeof(tpm2b_template.buffer), - &size); - if (rc != TSS2_RC_SUCCESS) - return log_debug_errno(SYNTHETIC_ERRNO(ENOTRECOVERABLE), - "Failed to marshal public key template: %s", sym_Tss2_RC_Decode(rc)); - assert(size <= UINT16_MAX); - tpm2b_template.size = size; - - TPM2B_SENSITIVE_CREATE tpm2b_sensitive; - if (sensitive) - tpm2b_sensitive = (TPM2B_SENSITIVE_CREATE) { - .size = sizeof(*sensitive), - .sensitive = *sensitive, - }; - else - tpm2b_sensitive = (TPM2B_SENSITIVE_CREATE) {}; - - _cleanup_(tpm2_handle_freep) Tpm2Handle *handle = NULL; - r = tpm2_handle_new(c, &handle); - if (r < 0) - return r; - - _cleanup_(Esys_Freep) TPM2B_PUBLIC *public = NULL; - _cleanup_(Esys_Freep) TPM2B_PRIVATE *private = NULL; - rc = sym_Esys_CreateLoaded( - c->esys_context, - parent->esys_handle, - session ? session->esys_handle : ESYS_TR_PASSWORD, - ESYS_TR_NONE, - ESYS_TR_NONE, - &tpm2b_sensitive, - &tpm2b_template, - &handle->esys_handle, - &private, - &public); - if (rc != TSS2_RC_SUCCESS) - return log_debug_errno(SYNTHETIC_ERRNO(ENOTRECOVERABLE), - "Failed to generate loaded object in TPM: %s", - sym_Tss2_RC_Decode(rc)); - - log_debug("Successfully created loaded object on TPM in %s.", - FORMAT_TIMESPAN(now(CLOCK_MONOTONIC) - ts, USEC_PER_MSEC)); - - if (ret_public) - *ret_public = TAKE_PTR(public); - if (ret_private) - *ret_private = TAKE_PTR(private); - if (ret_handle) - *ret_handle = TAKE_PTR(handle); - - return 0; -} - -/* This calls TPM2_CreateLoaded() if the TPM supports it, otherwise it calls TPM2_Create() and TPM2_Load() - * separately. Do not use this to create primary keys, because some HW TPMs refuse to allow that; instead use - * tpm2_create_primary(). */ -int tpm2_create_loaded( - Tpm2Context *c, - const Tpm2Handle *parent, - const Tpm2Handle *session, - const TPMT_PUBLIC *template, - const TPMS_SENSITIVE_CREATE *sensitive, - TPM2B_PUBLIC **ret_public, - TPM2B_PRIVATE **ret_private, - Tpm2Handle **ret_handle) { - - int r; - - if (tpm2_supports_command(c, TPM2_CC_CreateLoaded)) - return _tpm2_create_loaded(c, parent, session, template, sensitive, ret_public, ret_private, ret_handle); - - /* Unfortunately, this TPM doesn't support CreateLoaded (added at spec revision 130) so we need to - * create and load manually. */ - _cleanup_(Esys_Freep) TPM2B_PUBLIC *public = NULL; - _cleanup_(Esys_Freep) TPM2B_PRIVATE *private = NULL; - r = tpm2_create(c, parent, session, template, sensitive, &public, &private); - if (r < 0) - return r; - - _cleanup_(tpm2_handle_freep) Tpm2Handle *handle = NULL; - r = tpm2_load(c, parent, session, public, private, &handle); - if (r < 0) - return r; - - if (ret_public) - *ret_public = TAKE_PTR(public); - if (ret_private) - *ret_private = TAKE_PTR(private); - if (ret_handle) - *ret_handle = TAKE_PTR(handle); - - return 0; -} - static int tpm2_marshal_private(const TPM2B_PRIVATE *private, void **ret, size_t *ret_size) { size_t max_size = sizeof(*private), blob_size = 0; _cleanup_free_ void *blob = NULL; @@ -7868,14 +7696,6 @@ const char* tpm2_sym_alg_to_string(uint16_t alg) { } } -int tpm2_sym_alg_from_string(const char *alg) { -#if HAVE_TPM2 - if (strcaseeq_ptr(alg, "aes")) - return TPM2_ALG_AES; -#endif - return log_debug_errno(SYNTHETIC_ERRNO(EINVAL), "Unknown symmetric algorithm name '%s'", alg); -} - const char* tpm2_sym_mode_to_string(uint16_t mode) { switch (mode) { #if HAVE_TPM2 diff --git a/src/shared/tpm2-util.h b/src/shared/tpm2-util.h index bffb710678..48d1434909 100644 --- a/src/shared/tpm2-util.h +++ b/src/shared/tpm2-util.h @@ -114,10 +114,8 @@ char* tpm2_pcr_value_to_string(const Tpm2PCRValue *pcr_value); bool tpm2_pcr_values_valid(const Tpm2PCRValue *pcr_values, size_t n_pcr_values); void tpm2_sort_pcr_values(Tpm2PCRValue *pcr_values, size_t n_pcr_values); -int tpm2_pcr_values_from_mask(uint32_t mask, TPMI_ALG_HASH hash, Tpm2PCRValue **ret_pcr_values, size_t *ret_n_pcr_values); int tpm2_pcr_values_to_mask(const Tpm2PCRValue *pcr_values, size_t n_pcr_values, TPMI_ALG_HASH hash, uint32_t *ret_mask); int tpm2_pcr_values_from_string(const char *arg, Tpm2PCRValue **ret_pcr_values, size_t *ret_n_pcr_values); -char* tpm2_pcr_values_to_string(const Tpm2PCRValue *pcr_values, size_t n_pcr_values); int tpm2_pcr_values_hash_count(const Tpm2PCRValue *pcr_values, size_t n_pcr_values, size_t *ret_count); int tpm2_tpml_pcr_selection_from_pcr_values(const Tpm2PCRValue *pcr_values, size_t n_pcr_values, TPML_PCR_SELECTION *ret_selection, TPM2B_DIGEST **ret_values, size_t *ret_n_values); @@ -125,7 +123,6 @@ int tpm2_make_encryption_session(Tpm2Context *c, const Tpm2Handle *primary, cons int tpm2_create_primary(Tpm2Context *c, const Tpm2Handle *session, const TPM2B_PUBLIC *template, const TPM2B_SENSITIVE_CREATE *sensitive, TPM2B_PUBLIC **ret_public, Tpm2Handle **ret_handle); int tpm2_create(Tpm2Context *c, const Tpm2Handle *parent, const Tpm2Handle *session, const TPMT_PUBLIC *template, const TPMS_SENSITIVE_CREATE *sensitive, TPM2B_PUBLIC **ret_public, TPM2B_PRIVATE **ret_private); -int tpm2_create_loaded(Tpm2Context *c, const Tpm2Handle *parent, const Tpm2Handle *session, const TPMT_PUBLIC *template, const TPMS_SENSITIVE_CREATE *sensitive, TPM2B_PUBLIC **ret_public, TPM2B_PRIVATE **ret_private, Tpm2Handle **ret_handle); int tpm2_load(Tpm2Context *c, const Tpm2Handle *parent, const Tpm2Handle *session, const TPM2B_PUBLIC *public, const TPM2B_PRIVATE *private, Tpm2Handle **ret_handle); int tpm2_marshal_public(const TPM2B_PUBLIC *public, void **ret, size_t *ret_size); int tpm2_marshal_nv_public(const TPM2B_NV_PUBLIC *nv_public, void **ret, size_t *ret_size); @@ -177,7 +174,6 @@ uint32_t tpm2_tpml_pcr_selection_to_mask(const TPML_PCR_SELECTION *l, TPMI_ALG_H void tpm2_tpml_pcr_selection_from_mask(uint32_t mask, TPMI_ALG_HASH hash, TPML_PCR_SELECTION *ret); bool tpm2_tpml_pcr_selection_has_mask(const TPML_PCR_SELECTION *l, TPMI_ALG_HASH hash, uint32_t mask); void tpm2_tpml_pcr_selection_add_mask(TPML_PCR_SELECTION *l, TPMI_ALG_HASH hash, uint32_t mask); -void tpm2_tpml_pcr_selection_sub_mask(TPML_PCR_SELECTION *l, TPMI_ALG_HASH hash, uint32_t mask); void tpm2_tpml_pcr_selection_add_tpms_pcr_selection(TPML_PCR_SELECTION *l, const TPMS_PCR_SELECTION *s); void tpm2_tpml_pcr_selection_sub_tpms_pcr_selection(TPML_PCR_SELECTION *l, const TPMS_PCR_SELECTION *s); void tpm2_tpml_pcr_selection_add(TPML_PCR_SELECTION *a, const TPML_PCR_SELECTION *b); @@ -436,8 +432,6 @@ const char* tpm2_asym_alg_to_string(uint16_t alg) _const_; int tpm2_asym_alg_from_string(const char *alg) _pure_; const char* tpm2_sym_alg_to_string(uint16_t alg) _const_; -int tpm2_sym_alg_from_string(const char *alg) _pure_; - const char* tpm2_sym_mode_to_string(uint16_t mode) _const_; int tpm2_sym_mode_from_string(const char *mode) _pure_;