Skip to content

Commit 4b0af05

Browse files
committed
go/runtime/host: Move quotePolicyProvider to provisioner
Logic should not be nested in the common packages.
1 parent 0ac78c4 commit 4b0af05

2 files changed

Lines changed: 31 additions & 32 deletions

File tree

go/runtime/host/provisioner/provisioner.go

Lines changed: 30 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,22 @@
11
package provisioner
22

33
import (
4+
"context"
45
"fmt"
56

7+
"github.com/oasisprotocol/oasis-core/go/common"
8+
"github.com/oasisprotocol/oasis-core/go/common/cbor"
69
"github.com/oasisprotocol/oasis-core/go/common/identity"
10+
"github.com/oasisprotocol/oasis-core/go/common/node"
711
"github.com/oasisprotocol/oasis-core/go/common/persistent"
812
"github.com/oasisprotocol/oasis-core/go/common/sgx/pcs"
13+
sgxQuote "github.com/oasisprotocol/oasis-core/go/common/sgx/quote"
914
"github.com/oasisprotocol/oasis-core/go/common/version"
1015
"github.com/oasisprotocol/oasis-core/go/config"
1116
consensus "github.com/oasisprotocol/oasis-core/go/consensus/api"
1217
genesisAPI "github.com/oasisprotocol/oasis-core/go/genesis/api"
1318
cmdFlags "github.com/oasisprotocol/oasis-core/go/oasis-node/cmd/common/flags"
19+
registry "github.com/oasisprotocol/oasis-core/go/registry/api"
1420
"github.com/oasisprotocol/oasis-core/go/runtime/bundle/component"
1521
rtConfig "github.com/oasisprotocol/oasis-core/go/runtime/config"
1622
runtimeHost "github.com/oasisprotocol/oasis-core/go/runtime/host"
@@ -48,7 +54,7 @@ func New(
4854
return nil, err
4955
}
5056

51-
policyProvider := sgxCommon.NewQuotePolicyProvider(consensus)
57+
policyProvider := &quotePolicyProvider{consensus}
5258

5359
// Create runtime provisioner.
5460
return createProvisioner(dataDir, commonStore, identity, hostInfo, qs, policyProvider)
@@ -196,3 +202,26 @@ func createProvisioner(
196202

197203
return provisioner, nil
198204
}
205+
206+
type quotePolicyProvider struct {
207+
cs consensus.Service
208+
}
209+
210+
func (p *quotePolicyProvider) Get(ctx context.Context, runtimeID common.Namespace, version version.Version) (*sgxQuote.Policy, error) {
211+
rt, err := p.cs.Registry().GetRuntime(ctx, &registry.GetRuntimeQuery{
212+
Height: consensus.HeightLatest,
213+
ID: runtimeID,
214+
IncludeSuspended: true,
215+
})
216+
if err != nil {
217+
return nil, fmt.Errorf("failed to query runtime descriptor: %w", err)
218+
}
219+
if d := rt.DeploymentForVersion(version); d != nil {
220+
var sc node.SGXConstraints
221+
if err = cbor.Unmarshal(d.TEE, &sc); err != nil {
222+
return nil, fmt.Errorf("malformed runtime SGX constraints: %w", err)
223+
}
224+
return sc.Policy, nil
225+
}
226+
return nil, nil
227+
}

go/runtime/host/sgx/common/common.go

Lines changed: 1 addition & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -17,47 +17,17 @@ import (
1717
"github.com/oasisprotocol/oasis-core/go/common/sgx/pcs"
1818
sgxQuote "github.com/oasisprotocol/oasis-core/go/common/sgx/quote"
1919
"github.com/oasisprotocol/oasis-core/go/common/version"
20-
consensus "github.com/oasisprotocol/oasis-core/go/consensus/api"
21-
registry "github.com/oasisprotocol/oasis-core/go/registry/api"
2220
"github.com/oasisprotocol/oasis-core/go/runtime/host"
2321
"github.com/oasisprotocol/oasis-core/go/runtime/host/protocol"
2422
"github.com/oasisprotocol/oasis-core/go/runtime/host/sandbox"
2523
)
2624

2725
// QuotePolicyProvider provides quote policies.
2826
type QuotePolicyProvider interface {
29-
// Get fetches the quote policy for the specified RONL deployment.
27+
// Get returns the quote policy for the specified RONL deployment.
3028
Get(ctx context.Context, runtimeID common.Namespace, version version.Version) (*sgxQuote.Policy, error)
3129
}
3230

33-
type quotePolicyProvider struct {
34-
cs consensus.Service
35-
}
36-
37-
// NewQuotePolicyProvider returns a QuotePolicyProvider backed by the consensus.
38-
func NewQuotePolicyProvider(cs consensus.Service) QuotePolicyProvider {
39-
return &quotePolicyProvider{cs: cs}
40-
}
41-
42-
func (p *quotePolicyProvider) Get(ctx context.Context, runtimeID common.Namespace, version version.Version) (*sgxQuote.Policy, error) {
43-
rt, err := p.cs.Registry().GetRuntime(ctx, &registry.GetRuntimeQuery{
44-
Height: consensus.HeightLatest,
45-
ID: runtimeID,
46-
IncludeSuspended: true,
47-
})
48-
if err != nil {
49-
return nil, fmt.Errorf("failed to query runtime descriptor: %w", err)
50-
}
51-
if d := rt.DeploymentForVersion(version); d != nil {
52-
var sc node.SGXConstraints
53-
if err = cbor.Unmarshal(d.TEE, &sc); err != nil {
54-
return nil, fmt.Errorf("malformed runtime SGX constraints: %w", err)
55-
}
56-
return sc.Policy, nil
57-
}
58-
return nil, nil
59-
}
60-
6131
// EndorseCapabilityTEE endorses the given CapabilityTEE and submits the signed endorsement to the
6232
// runtime over the given connection.
6333
func EndorseCapabilityTEE(

0 commit comments

Comments
 (0)