Skip to content

Commit af60288

Browse files
committed
feat: add typed constants for Secure Boot reset types and databases
Replace string parameters in SecureBoot functions with typed constants to: - Make valid values explicit and discoverable - Reduce validation burden on callers - Match bmclib's pattern (BootDeviceType, etc.) Also add nil checks after SecureBoot() calls - gofish returns nil,nil when the resource link is empty, which previously caused silent success. Update all mock implementations to use the new typed signatures. Implements reviewer feedback from PR bmc-toolbox#457.
1 parent 70f76f5 commit af60288

10 files changed

Lines changed: 98 additions & 57 deletions

File tree

‎bmc/secure_boot.go‎

Lines changed: 39 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,36 @@ import (
1010
bmclibErrs "github.com/bmc-toolbox/bmclib/v2/errors"
1111
)
1212

13+
// ResetSecureBootKeysType identifies the type of Secure Boot key reset to perform.
14+
type ResetSecureBootKeysType string
15+
16+
// ResetSecureBootKeysType constants enumerate the supported reset types for the whole Secure Boot subsystem.
17+
const (
18+
ResetSecureBootKeysTypeResetAllKeysToDefault ResetSecureBootKeysType = "ResetAllKeysToDefault"
19+
ResetSecureBootKeysTypeDeleteAllKeys ResetSecureBootKeysType = "DeleteAllKeys"
20+
ResetSecureBootKeysTypeDeletePK ResetSecureBootKeysType = "DeletePK"
21+
)
22+
23+
// ResetSecureBootDatabaseKeysType identifies the type of per-database Secure Boot key reset to perform.
24+
type ResetSecureBootDatabaseKeysType string
25+
26+
// ResetSecureBootDatabaseKeysType constants enumerate the supported reset types for a single Secure Boot database.
27+
const (
28+
ResetSecureBootDatabaseKeysTypeResetAllKeysToDefault ResetSecureBootDatabaseKeysType = "ResetAllKeysToDefault"
29+
ResetSecureBootDatabaseKeysTypeDeleteAllKeys ResetSecureBootDatabaseKeysType = "DeleteAllKeys"
30+
)
31+
32+
// SecureBootDatabase identifies a UEFI Secure Boot key database.
33+
type SecureBootDatabase string
34+
35+
// SecureBootDatabase constants enumerate the supported Secure Boot key databases.
36+
const (
37+
SecureBootDatabaseDB SecureBootDatabase = "db"
38+
SecureBootDatabaseKEK SecureBootDatabase = "KEK"
39+
SecureBootDatabasePK SecureBootDatabase = "PK"
40+
SecureBootDatabaseDBX SecureBootDatabase = "dbx"
41+
)
42+
1343
// SecureBootStateGetter provides retrieval of whether UEFI Secure Boot is enabled.
1444
type SecureBootStateGetter interface {
1545
GetSecureBoot(ctx context.Context) (enabled bool, err error)
@@ -32,7 +62,7 @@ type secureBootSetterProvider struct {
3262

3363
// SecureBootKeysResetter provides resetting the UEFI Secure Boot key databases.
3464
type SecureBootKeysResetter interface {
35-
ResetSecureBootKeys(ctx context.Context, resetType string) (err error)
65+
ResetSecureBootKeys(ctx context.Context, resetType ResetSecureBootKeysType) (err error)
3666
}
3767

3868
type secureBootKeysResetterProvider struct {
@@ -44,7 +74,7 @@ type secureBootKeysResetterProvider struct {
4474
// database (e.g. "db", "KEK"), leaving every other database - including PK -
4575
// untouched.
4676
type SecureBootDatabaseKeysResetter interface {
47-
ResetSecureBootDatabaseKeys(ctx context.Context, database, resetType string) (err error)
77+
ResetSecureBootDatabaseKeys(ctx context.Context, database SecureBootDatabase, resetType ResetSecureBootDatabaseKeysType) (err error)
4878
}
4979

5080
type secureBootDatabaseKeysResetterProvider struct {
@@ -56,7 +86,7 @@ type secureBootDatabaseKeysResetterProvider struct {
5686
// UEFI Secure Boot key database (e.g. "db", "KEK") without disturbing any
5787
// certificate already present.
5888
type SecureBootCertificateImporter interface {
59-
ImportSecureBootCertificate(ctx context.Context, database, certificatePEM string) (err error)
89+
ImportSecureBootCertificate(ctx context.Context, database SecureBootDatabase, certificatePEM string) (err error)
6090
}
6191

6292
type secureBootCertificateImporterProvider struct {
@@ -116,7 +146,7 @@ Loop:
116146
return metadata, multierror.Append(err, errors.New("failure to set secure boot state"))
117147
}
118148

119-
func resetSecureBootKeys(ctx context.Context, generic []secureBootKeysResetterProvider, resetType string) (metadata Metadata, err error) {
149+
func resetSecureBootKeys(ctx context.Context, generic []secureBootKeysResetterProvider, resetType ResetSecureBootKeysType) (metadata Metadata, err error) {
120150
metadata = newMetadata()
121151
Loop:
122152
for _, elem := range generic {
@@ -142,7 +172,7 @@ Loop:
142172
return metadata, multierror.Append(err, errors.New("failure to reset secure boot keys"))
143173
}
144174

145-
func resetSecureBootDatabaseKeys(ctx context.Context, generic []secureBootDatabaseKeysResetterProvider, database, resetType string) (metadata Metadata, err error) {
175+
func resetSecureBootDatabaseKeys(ctx context.Context, generic []secureBootDatabaseKeysResetterProvider, database SecureBootDatabase, resetType ResetSecureBootDatabaseKeysType) (metadata Metadata, err error) {
146176
metadata = newMetadata()
147177
Loop:
148178
for _, elem := range generic {
@@ -168,7 +198,7 @@ Loop:
168198
return metadata, multierror.Append(err, errors.New("failure to reset secure boot database keys"))
169199
}
170200

171-
func importSecureBootCertificate(ctx context.Context, generic []secureBootCertificateImporterProvider, database, certificatePEM string) (metadata Metadata, err error) {
201+
func importSecureBootCertificate(ctx context.Context, generic []secureBootCertificateImporterProvider, database SecureBootDatabase, certificatePEM string) (metadata Metadata, err error) {
172202
metadata = newMetadata()
173203
Loop:
174204
for _, elem := range generic {
@@ -258,7 +288,7 @@ func SetSecureBootFromInterfaces(ctx context.Context, generic []interface{}, ena
258288

259289
// ResetSecureBootKeysFromInterfaces resets the UEFI Secure Boot key databases using
260290
// the first successful SecureBootKeysResetter implementation found in generic.
261-
func ResetSecureBootKeysFromInterfaces(ctx context.Context, generic []interface{}, resetType string) (metadata Metadata, err error) {
291+
func ResetSecureBootKeysFromInterfaces(ctx context.Context, generic []interface{}, resetType ResetSecureBootKeysType) (metadata Metadata, err error) {
262292
implementations := make([]secureBootKeysResetterProvider, 0)
263293
for _, elem := range generic {
264294
if elem == nil {
@@ -290,7 +320,7 @@ func ResetSecureBootKeysFromInterfaces(ctx context.Context, generic []interface{
290320
// ResetSecureBootDatabaseKeysFromInterfaces resets a single UEFI Secure Boot key
291321
// database using the first successful SecureBootDatabaseKeysResetter
292322
// implementation found in generic.
293-
func ResetSecureBootDatabaseKeysFromInterfaces(ctx context.Context, generic []interface{}, database, resetType string) (metadata Metadata, err error) {
323+
func ResetSecureBootDatabaseKeysFromInterfaces(ctx context.Context, generic []interface{}, database SecureBootDatabase, resetType ResetSecureBootDatabaseKeysType) (metadata Metadata, err error) {
294324
implementations := make([]secureBootDatabaseKeysResetterProvider, 0)
295325
for _, elem := range generic {
296326
if elem == nil {
@@ -322,7 +352,7 @@ func ResetSecureBootDatabaseKeysFromInterfaces(ctx context.Context, generic []in
322352
// ImportSecureBootCertificateFromInterfaces enrolls a certificate into a single
323353
// UEFI Secure Boot key database using the first successful
324354
// SecureBootCertificateImporter implementation found in generic.
325-
func ImportSecureBootCertificateFromInterfaces(ctx context.Context, generic []interface{}, database, certificatePEM string) (metadata Metadata, err error) {
355+
func ImportSecureBootCertificateFromInterfaces(ctx context.Context, generic []interface{}, database SecureBootDatabase, certificatePEM string) (metadata Metadata, err error) {
326356
implementations := make([]secureBootCertificateImporterProvider, 0)
327357
for _, elem := range generic {
328358
if elem == nil {

‎bmc/secure_boot_test.go‎

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@ type mockSecureBootKeysResetter struct {
3737
err error
3838
}
3939

40-
func (m *mockSecureBootKeysResetter) ResetSecureBootKeys(ctx context.Context, _ string) error {
40+
func (m *mockSecureBootKeysResetter) ResetSecureBootKeys(ctx context.Context, _ ResetSecureBootKeysType) error {
4141
return m.err
4242
}
4343

@@ -49,7 +49,7 @@ type mockSecureBootDatabaseKeysResetter struct {
4949
err error
5050
}
5151

52-
func (m *mockSecureBootDatabaseKeysResetter) ResetSecureBootDatabaseKeys(ctx context.Context, _, _ string) error {
52+
func (m *mockSecureBootDatabaseKeysResetter) ResetSecureBootDatabaseKeys(ctx context.Context, _ SecureBootDatabase, _ ResetSecureBootDatabaseKeysType) error {
5353
return m.err
5454
}
5555

@@ -61,7 +61,7 @@ type mockSecureBootCertificateImporter struct {
6161
err error
6262
}
6363

64-
func (m *mockSecureBootCertificateImporter) ImportSecureBootCertificate(ctx context.Context, _, _ string) error {
64+
func (m *mockSecureBootCertificateImporter) ImportSecureBootCertificate(ctx context.Context, _ SecureBootDatabase, _ string) error {
6565
return m.err
6666
}
6767

@@ -182,7 +182,7 @@ func TestResetSecureBootKeysFromInterfaces(t *testing.T) {
182182

183183
for _, tt := range testCases {
184184
t.Run(tt.name, func(t *testing.T) {
185-
_, err := ResetSecureBootKeysFromInterfaces(context.Background(), tt.generic, "ResetAllKeysToDefault")
185+
_, err := ResetSecureBootKeysFromInterfaces(context.Background(), tt.generic, ResetSecureBootKeysTypeResetAllKeysToDefault)
186186

187187
if tt.errMsg == "" {
188188
assert.NoError(t, err)
@@ -222,7 +222,7 @@ func TestResetSecureBootDatabaseKeysFromInterfaces(t *testing.T) {
222222

223223
for _, tt := range testCases {
224224
t.Run(tt.name, func(t *testing.T) {
225-
_, err := ResetSecureBootDatabaseKeysFromInterfaces(context.Background(), tt.generic, "db", "ResetAllKeysToDefault")
225+
_, err := ResetSecureBootDatabaseKeysFromInterfaces(context.Background(), tt.generic, SecureBootDatabaseDB, ResetSecureBootDatabaseKeysTypeResetAllKeysToDefault)
226226

227227
if tt.errMsg == "" {
228228
assert.NoError(t, err)
@@ -262,7 +262,7 @@ func TestImportSecureBootCertificateFromInterfaces(t *testing.T) {
262262

263263
for _, tt := range testCases {
264264
t.Run(tt.name, func(t *testing.T) {
265-
_, err := ImportSecureBootCertificateFromInterfaces(context.Background(), tt.generic, "db", "-----BEGIN CERTIFICATE-----\n...\n-----END CERTIFICATE-----")
265+
_, err := ImportSecureBootCertificateFromInterfaces(context.Background(), tt.generic, SecureBootDatabaseDB, "-----BEGIN CERTIFICATE-----\n...\n-----END CERTIFICATE-----")
266266

267267
if tt.errMsg == "" {
268268
assert.NoError(t, err)

‎client.go‎

Lines changed: 7 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -695,9 +695,8 @@ func (c *Client) SetSecureBoot(ctx context.Context, enable bool) (err error) {
695695
return err
696696
}
697697

698-
// ResetSecureBootKeys resets the UEFI Secure Boot key databases. resetType is one
699-
// of ResetAllKeysToDefault, DeleteAllKeys, or DeletePK.
700-
func (c *Client) ResetSecureBootKeys(ctx context.Context, resetType string) (err error) {
698+
// ResetSecureBootKeys resets the UEFI Secure Boot key databases.
699+
func (c *Client) ResetSecureBootKeys(ctx context.Context, resetType bmc.ResetSecureBootKeysType) (err error) {
701700
ctx, span := c.traceprovider.Tracer(pkgName).Start(ctx, "ResetSecureBootKeys")
702701
defer span.End()
703702

@@ -708,10 +707,9 @@ func (c *Client) ResetSecureBootKeys(ctx context.Context, resetType string) (err
708707
return err
709708
}
710709

711-
// ResetSecureBootDatabaseKeys resets a single UEFI Secure Boot key database (e.g.
712-
// "db", "KEK"), leaving every other database - including PK - untouched.
713-
// resetType is one of ResetAllKeysToDefault or DeleteAllKeys.
714-
func (c *Client) ResetSecureBootDatabaseKeys(ctx context.Context, database, resetType string) (err error) {
710+
// ResetSecureBootDatabaseKeys resets a single UEFI Secure Boot key database,
711+
// leaving every other database - including PK - untouched.
712+
func (c *Client) ResetSecureBootDatabaseKeys(ctx context.Context, database bmc.SecureBootDatabase, resetType bmc.ResetSecureBootDatabaseKeysType) (err error) {
715713
ctx, span := c.traceprovider.Tracer(pkgName).Start(ctx, "ResetSecureBootDatabaseKeys")
716714
defer span.End()
717715

@@ -723,9 +721,8 @@ func (c *Client) ResetSecureBootDatabaseKeys(ctx context.Context, database, rese
723721
}
724722

725723
// ImportSecureBootCertificate enrolls a PEM-encoded certificate into a single
726-
// UEFI Secure Boot key database (e.g. "db", "KEK") without disturbing any
727-
// certificate already present.
728-
func (c *Client) ImportSecureBootCertificate(ctx context.Context, database, certificatePEM string) (err error) {
724+
// UEFI Secure Boot key database without disturbing any certificate already present.
725+
func (c *Client) ImportSecureBootCertificate(ctx context.Context, database bmc.SecureBootDatabase, certificatePEM string) (err error) {
729726
ctx, span := c.traceprovider.Tracer(pkgName).Start(ctx, "ImportSecureBootCertificate")
730727
defer span.End()
731728

‎internal/redfishwrapper/secure_boot.go‎

Lines changed: 24 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ import (
55

66
"github.com/stmcginnis/gofish/schemas"
77

8+
"github.com/bmc-toolbox/bmclib/v2/bmc"
89
bmclibErrs "github.com/bmc-toolbox/bmclib/v2/errors"
910
)
1011

@@ -23,6 +24,9 @@ func (c *Client) GetSecureBoot(ctx context.Context) (enabled bool, err error) {
2324
if err != nil {
2425
return false, err
2526
}
27+
if secureBoot == nil {
28+
return false, bmclibErrs.ErrRedfishVersionIncompatible
29+
}
2630

2731
return secureBoot.SecureBootEnable, nil
2832
}
@@ -43,15 +47,17 @@ func (c *Client) SetSecureBoot(ctx context.Context, enable bool) (err error) {
4347
if err != nil {
4448
return err
4549
}
50+
if secureBoot == nil {
51+
return bmclibErrs.ErrRedfishVersionIncompatible
52+
}
4653

4754
secureBoot.SecureBootEnable = enable
4855

4956
return secureBoot.Update()
5057
}
5158

52-
// ResetSecureBootKeys resets the UEFI Secure Boot key databases. resetType is one
53-
// of ResetAllKeysToDefault, DeleteAllKeys, or DeletePK.
54-
func (c *Client) ResetSecureBootKeys(ctx context.Context, resetType string) (err error) {
59+
// ResetSecureBootKeys resets the UEFI Secure Boot key databases.
60+
func (c *Client) ResetSecureBootKeys(ctx context.Context, resetType bmc.ResetSecureBootKeysType) (err error) {
5561
sys, err := c.System()
5662
if err != nil {
5763
return err
@@ -65,16 +71,18 @@ func (c *Client) ResetSecureBootKeys(ctx context.Context, resetType string) (err
6571
if err != nil {
6672
return err
6773
}
74+
if secureBoot == nil {
75+
return bmclibErrs.ErrRedfishVersionIncompatible
76+
}
6877

6978
_, err = secureBoot.ResetKeys(schemas.ResetKeysType(resetType))
7079

7180
return err
7281
}
7382

7483
// secureBootDatabase returns the single UEFI Secure Boot key database matching
75-
// database (e.g. "db", "KEK", "PK", "dbx") from the SecureBootDatabases
76-
// collection reported by the BMC.
77-
func (c *Client) secureBootDatabase(database string) (*schemas.SecureBootDatabase, error) {
84+
// database from the SecureBootDatabases collection reported by the BMC.
85+
func (c *Client) secureBootDatabase(database bmc.SecureBootDatabase) (*schemas.SecureBootDatabase, error) {
7886
sys, err := c.System()
7987
if err != nil {
8088
return nil, err
@@ -88,14 +96,17 @@ func (c *Client) secureBootDatabase(database string) (*schemas.SecureBootDatabas
8896
if err != nil {
8997
return nil, err
9098
}
99+
if secureBoot == nil {
100+
return nil, bmclibErrs.ErrRedfishVersionIncompatible
101+
}
91102

92103
databases, err := secureBoot.SecureBootDatabases()
93104
if err != nil {
94105
return nil, err
95106
}
96107

97108
for _, db := range databases {
98-
if db.DatabaseID == database {
109+
if db.DatabaseID == string(database) {
99110
return db, nil
100111
}
101112
}
@@ -104,11 +115,9 @@ func (c *Client) secureBootDatabase(database string) (*schemas.SecureBootDatabas
104115
}
105116

106117
// ResetSecureBootDatabaseKeys resets a single UEFI Secure Boot key database
107-
// (e.g. "db", "KEK", "dbx") rather than the whole SecureBoot subsystem, leaving
108-
// every other database - including PK - untouched. resetType is one of
109-
// ResetAllKeysToDefault or DeleteAllKeys; unlike the whole-subsystem
110-
// ResetSecureBootKeys, DeletePK is not a valid per-database reset type.
111-
func (c *Client) ResetSecureBootDatabaseKeys(ctx context.Context, database, resetType string) (err error) {
118+
// rather than the whole SecureBoot subsystem, leaving every other database -
119+
// including PK - untouched. DeletePK is not a valid per-database reset type.
120+
func (c *Client) ResetSecureBootDatabaseKeys(ctx context.Context, database bmc.SecureBootDatabase, resetType bmc.ResetSecureBootDatabaseKeysType) (err error) {
112121
db, err := c.secureBootDatabase(database)
113122
if err != nil {
114123
return err
@@ -120,9 +129,9 @@ func (c *Client) ResetSecureBootDatabaseKeys(ctx context.Context, database, rese
120129
}
121130

122131
// ImportSecureBootCertificate enrolls a PEM-encoded certificate into a single
123-
// UEFI Secure Boot key database (e.g. "db", "KEK") without disturbing any
124-
// certificate already present - it is additive, unlike ResetSecureBootDatabaseKeys.
125-
func (c *Client) ImportSecureBootCertificate(ctx context.Context, database, certificatePEM string) (err error) {
132+
// UEFI Secure Boot key database without disturbing any certificate already
133+
// present - it is additive, unlike ResetSecureBootDatabaseKeys.
134+
func (c *Client) ImportSecureBootCertificate(ctx context.Context, database bmc.SecureBootDatabase, certificatePEM string) (err error) {
126135
db, err := c.secureBootDatabase(database)
127136
if err != nil {
128137
return err

‎internal/redfishwrapper/secure_boot_test.go‎

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ import (
1010
"github.com/stretchr/testify/assert"
1111
"github.com/stretchr/testify/require"
1212

13+
"github.com/bmc-toolbox/bmclib/v2/bmc"
1314
bmclibErrs "github.com/bmc-toolbox/bmclib/v2/errors"
1415
)
1516

@@ -82,7 +83,7 @@ func TestResetSecureBootKeys(t *testing.T) {
8283
})
8384
client := newDellSecureBootClient(t, mux)
8485

85-
err := client.ResetSecureBootKeys(context.Background(), "ResetAllKeysToDefault")
86+
err := client.ResetSecureBootKeys(context.Background(), bmc.ResetSecureBootKeysTypeResetAllKeysToDefault)
8687
assert.NoError(t, err)
8788
assert.Equal(t, 1, resetAttempts, "expected ResetSecureBootKeys to POST to the ResetKeys action once")
8889
}
@@ -104,7 +105,7 @@ func TestResetSecureBootDatabaseKeys(t *testing.T) {
104105
})
105106
client := newDellSecureBootClient(t, mux)
106107

107-
err := client.ResetSecureBootDatabaseKeys(context.Background(), "db", "ResetAllKeysToDefault")
108+
err := client.ResetSecureBootDatabaseKeys(context.Background(), bmc.SecureBootDatabaseDB, bmc.ResetSecureBootDatabaseKeysTypeResetAllKeysToDefault)
108109
assert.NoError(t, err)
109110
assert.Equal(t, 1, resetAttempts, "expected ResetSecureBootDatabaseKeys to POST to the database's ResetKeys action once")
110111
}
@@ -116,7 +117,7 @@ func TestResetSecureBootDatabaseKeysNotFound(t *testing.T) {
116117
mux.HandleFunc("/redfish/v1/Systems/System.Embedded.1/SecureBoot/SecureBootDatabases/db", endpointFunc(t, "dell/securebootdatabase.db.json"))
117118
client := newDellSecureBootClient(t, mux)
118119

119-
err := client.ResetSecureBootDatabaseKeys(context.Background(), "KEK", "ResetAllKeysToDefault")
120+
err := client.ResetSecureBootDatabaseKeys(context.Background(), bmc.SecureBootDatabaseKEK, bmc.ResetSecureBootDatabaseKeysTypeResetAllKeysToDefault)
120121
assert.ErrorIs(t, err, bmclibErrs.ErrSecureBootDatabaseNotFound)
121122
}
122123

@@ -137,7 +138,7 @@ func TestImportSecureBootCertificate(t *testing.T) {
137138
})
138139
client := newDellSecureBootClient(t, mux)
139140

140-
err := client.ImportSecureBootCertificate(context.Background(), "db", "-----BEGIN CERTIFICATE-----\n...\n-----END CERTIFICATE-----")
141+
err := client.ImportSecureBootCertificate(context.Background(), bmc.SecureBootDatabaseDB, "-----BEGIN CERTIFICATE-----\n...\n-----END CERTIFICATE-----")
141142
assert.NoError(t, err)
142143
assert.Equal(t, 1, importAttempts, "expected ImportSecureBootCertificate to POST to the database's Certificates collection once")
143144
}

‎providers/dell/idrac.go‎

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -267,17 +267,17 @@ func (c *Conn) SetSecureBoot(ctx context.Context, enable bool) (err error) {
267267
}
268268

269269
// ResetSecureBootKeys resets the UEFI Secure Boot key databases
270-
func (c *Conn) ResetSecureBootKeys(ctx context.Context, resetType string) (err error) {
270+
func (c *Conn) ResetSecureBootKeys(ctx context.Context, resetType bmc.ResetSecureBootKeysType) (err error) {
271271
return c.redfishwrapper.ResetSecureBootKeys(ctx, resetType)
272272
}
273273

274274
// ResetSecureBootDatabaseKeys resets a single UEFI Secure Boot key database
275-
func (c *Conn) ResetSecureBootDatabaseKeys(ctx context.Context, database, resetType string) (err error) {
275+
func (c *Conn) ResetSecureBootDatabaseKeys(ctx context.Context, database bmc.SecureBootDatabase, resetType bmc.ResetSecureBootDatabaseKeysType) (err error) {
276276
return c.redfishwrapper.ResetSecureBootDatabaseKeys(ctx, database, resetType)
277277
}
278278

279279
// ImportSecureBootCertificate enrolls a certificate into a single UEFI Secure Boot key database
280-
func (c *Conn) ImportSecureBootCertificate(ctx context.Context, database, certificatePEM string) (err error) {
280+
func (c *Conn) ImportSecureBootCertificate(ctx context.Context, database bmc.SecureBootDatabase, certificatePEM string) (err error) {
281281
return c.redfishwrapper.ImportSecureBootCertificate(ctx, database, certificatePEM)
282282
}
283283

0 commit comments

Comments
 (0)