From 2978a6f046f52861a7ac749d1e414758caab8bd5 Mon Sep 17 00:00:00 2001 From: Ophestra Date: Wed, 19 Feb 2025 12:33:51 +0900 Subject: app: separate appSeal finalise method Signed-off-by: Ophestra --- internal/app/app.go | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) (limited to 'internal/app/app.go') diff --git a/internal/app/app.go b/internal/app/app.go index eb463924..6696e189 100644 --- a/internal/app/app.go +++ b/internal/app/app.go @@ -6,6 +6,7 @@ import ( "git.gensokyo.uk/security/fortify/fst" "git.gensokyo.uk/security/fortify/internal/app/shim" + "git.gensokyo.uk/security/fortify/internal/fmsg" "git.gensokyo.uk/security/fortify/internal/sys" ) @@ -55,3 +56,23 @@ func (a *app) String() string { return fmt.Sprintf("(unsealed app %s)", a.id) } + +func (a *app) Seal(config *fst.Config) (err error) { + a.mu.Lock() + defer a.mu.Unlock() + + if a.appSeal != nil { + panic("app sealed twice") + } + if config == nil { + return fmsg.WrapError(ErrConfig, + "attempted to seal app with nil config") + } + + seal := new(appSeal) + err = seal.finalise(a.sys, config, a.id.String()) + if err == nil { + a.appSeal = seal + } + return +} -- cgit v1.3.1