Initial fs-verity support
Using fs-verity is natural for OSTree because it's file-based, as opposed to block based (like dm-verity). This only covers files - not symlinks or directories. And we clearly need to have integrity for the deployment directories at least. Also, what we likely need is an API that supports signing files as they're committed. So making this truly secure would need a lot more work. Nevertheless, I think it's time to start experimenting with it. Among other things, it does *finally* add an API that makes files immutable, which will help against some accidental damage. This is basic enablement work that is being driven by Fedora CoreOS; see also https://github.com/coreos/coreos-assembler/pull/876
This commit is contained in:
1 parent
570de2989c
commit
58fa579b1b
5 files changed
+237
-31
No files matched your search
@@ -22,6 +22,7 @@
|
||||
#pragma once
|
||||
|
||||
#include <sys/statvfs.h>
|
||||
#include "config.h"
|
||||
#include "otutil.h"
|
||||
#include "ostree-ref.h"
|
||||
#include "ostree-repo.h"
|
||||
@@ -97,6 +98,12 @@ typedef struct {
|
||||
fsblkcnt_t max_blocks;
|
||||
} OstreeRepoTxn;
|
||||
|
||||
typedef enum {
|
||||
_OSTREE_FEATURE_NO,
|
||||
_OSTREE_FEATURE_MAYBE,
|
||||
_OSTREE_FEATURE_YES,
|
||||
} _OstreeFeatureSupport;
|
||||
|
||||
/**
|
||||
* OstreeRepo:
|
||||
*
|
||||
@@ -127,6 +134,8 @@ struct OstreeRepo {
|
||||
GMutex txn_lock;
|
||||
OstreeRepoTxn txn;
|
||||
gboolean txn_locked;
|
||||
_OstreeFeatureSupport fs_verity_wanted;
|
||||
_OstreeFeatureSupport fs_verity_supported;
|
||||
|
||||
GMutex cache_lock;
|
||||
guint dirmeta_cache_refcount;
|
||||
@@ -471,4 +480,15 @@ OstreeRepoAutoLock * _ostree_repo_auto_lock_push (OstreeRepo *self,
|
||||
void _ostree_repo_auto_lock_cleanup (OstreeRepoAutoLock *lock);
|
||||
G_DEFINE_AUTOPTR_CLEANUP_FUNC (OstreeRepoAutoLock, _ostree_repo_auto_lock_cleanup)
|
||||
|
||||
gboolean
|
||||
_ostree_tmpf_fsverity_core (GLnxTmpfile *tmpf,
|
||||
_OstreeFeatureSupport fsverity_requested,
|
||||
gboolean *supported,
|
||||
GError **error);
|
||||
|
||||
gboolean
|
||||
_ostree_tmpf_fsverity (OstreeRepo *self,
|
||||
GLnxTmpfile *tmpf,
|
||||
GError **error);
|
||||
|
||||
G_END_DECLS
|
||||
Reference in new issue
Block a user