@@ -25,12 +25,17 @@ func (ft *fakeTime) get() time.Time {
2525func testStorageRoundtrip (t * testing.T , store * persistent.ServiceStore , bundle * TCBBundle ) {
2626 require := require .New (t )
2727 fmspc := []byte ("fmspc" )
28+ numbers := []uint32 {17 , 18 , 19 }
2829
2930 tcbCache := newMockTcbCache (store , logging .GetLogger (loggerModule ), time .Now )
30- tcbCache .cache (bundle , fmspc )
31+ tcbCache .cacheBundle (TeeTypeSGX , bundle , fmspc )
32+ tcbCache .cacheEvaluationDataNumbers (TeeTypeSGX , numbers )
3133
32- cached , _ := tcbCache .check (fmspc )
33- require .EqualValues (cached , bundle , "tcbCache.check" )
34+ cachedBundle , _ := tcbCache .checkBundle (TeeTypeSGX , fmspc )
35+ require .EqualValues (cachedBundle , bundle , "tcbCache.checkBundle" )
36+
37+ cachedNumbers , _ := tcbCache .checkEvaluationDataNumbers (TeeTypeSGX )
38+ require .EqualValues (cachedNumbers , numbers , "tcbCache.checkEvaluationDataNumbers" )
3439}
3540
3641func testFMSPCInvalidation (t * testing.T , store * persistent.ServiceStore , bundle * TCBBundle ) {
@@ -47,18 +52,18 @@ func testFMSPCInvalidation(t *testing.T, store *persistent.ServiceStore, bundle
4752 var refresh bool
4853
4954 // Cache initial and check.
50- tcbCache .cache ( bundle , fmspc )
51- cached , refresh = tcbCache .check ( fmspc )
55+ tcbCache .cacheBundle ( TeeTypeSGX , bundle , fmspc )
56+ cached , refresh = tcbCache .checkBundle ( TeeTypeSGX , fmspc )
5257 require .NotNil (cached , "tcbCache.check 1" )
5358 require .False (refresh , "tcbCache.check 1" )
5459
5560 // Check again with bogus fmspc; shouldn't return anything
5661 // but should still be available.
57- cached , refresh = tcbCache .check ( []byte ("different" ))
62+ cached , refresh = tcbCache .checkBundle ( TeeTypeSGX , []byte ("different" ))
5863 require .Nil (cached , "tcbCache.check 2" )
5964 require .True (refresh , "tcbCache.check 2" )
6065
61- cached , refresh = tcbCache .check ( fmspc )
66+ cached , refresh = tcbCache .checkBundle ( TeeTypeSGX , fmspc )
6267 require .NotNil (cached , "tcbCache.check 3" )
6368 require .False (refresh , "tcbCache.check 3" )
6469}
@@ -75,54 +80,81 @@ func testCheckIntervals(t *testing.T, store *persistent.ServiceStore, bundle *TC
7580 tcbCache := newMockTcbCache (store , logging .GetLogger (loggerModule ), timer .get )
7681
7782 // Initially, always needs to be refreshed.
78- cache , refresh := tcbCache .check (fmspc )
79- require .Nil (cache , "tcbCache.check pre-cache" )
80- require .True (refresh , "tcbCache.check pre-cache" )
83+ cache , refresh := tcbCache .checkBundle (TeeTypeSGX , fmspc )
84+ require .Nil (cache , "tcbCache.checkBundle pre-cache" )
85+ require .True (refresh , "tcbCache.checkBundle pre-cache" )
86+
87+ cachedNumbers , refresh := tcbCache .checkEvaluationDataNumbers (TeeTypeSGX )
88+ require .Nil (cachedNumbers , "tcbCache.checkEvaluationDataNumbers pre-cache" )
89+ require .True (refresh , "tcbCache.checkEvaluationDataNumbers pre-cache" )
8190
8291 // Cache it, pretend it's a day before the first check will need to be performed.
8392 timer .now = expiryTime .Add (- (tcbCacheRefreshThreshold + 24 * time .Hour ))
84- tcbCache .cache (bundle , fmspc )
93+ tcbCache .cacheBundle (TeeTypeSGX , bundle , fmspc )
94+ tcbCache .cacheEvaluationDataNumbers (TeeTypeSGX , []uint32 {17 , 18 , 19 })
8595
8696 // An hour after the initial cache, shouldn't be refreshed.
8797 timer .now = timer .now .Add (time .Hour )
88- cache , refresh = tcbCache .check (fmspc )
89- require .NotNil (cache , "tcbCache.check 1" )
90- require .False (refresh , "tcbCache.check 1" )
98+ cache , refresh = tcbCache .checkBundle (TeeTypeSGX , fmspc )
99+ require .NotNil (cache , "tcbCache.checkBundle 1" )
100+ require .False (refresh , "tcbCache.checkBundle 1" )
101+
102+ cachedNumbers , refresh = tcbCache .checkEvaluationDataNumbers (TeeTypeSGX )
103+ require .NotNil (cachedNumbers , "tcbCache.checkEvaluationDataNumbers 1" )
104+ require .False (refresh , "tcbCache.checkEvaluationDataNumbers 1" )
91105
92106 // Another day later, we're in the slow refresh cycle. First check should refresh.
93107 // Advance by 25 hours, because 24 would still be within the slow refresh interval.
94108 timer .now = timer .now .Add (25 * time .Hour )
95- cache , refresh = tcbCache .check (fmspc )
96- require .NotNil (cache , "tcbCache.check 2" )
97- require .True (refresh , "tcbCache.check 2" )
98- tcbCache .cache (bundle , fmspc )
109+ cache , refresh = tcbCache .checkBundle (TeeTypeSGX , fmspc )
110+ require .NotNil (cache , "tcbCache.checkBundle 2" )
111+ require .True (refresh , "tcbCache.checkBundle 2" )
112+ tcbCache .cacheBundle (TeeTypeSGX , bundle , fmspc )
113+
114+ cachedNumbers , refresh = tcbCache .checkEvaluationDataNumbers (TeeTypeSGX )
115+ require .NotNil (cachedNumbers , "tcbCache.checkEvaluationDataNumbers 2" )
116+ require .True (refresh , "tcbCache.checkEvaluationDataNumbers 2" )
117+ tcbCache .cacheEvaluationDataNumbers (TeeTypeSGX , []uint32 {17 , 18 , 19 })
99118
100119 // An hour later, don't check again.
101120 timer .now = timer .now .Add (time .Hour )
102- cache , refresh = tcbCache .check (fmspc )
103- require .NotNil (cache , "tcbCache.check 3" )
104- require .False (refresh , "tcbCache.check 3" )
121+ cache , refresh = tcbCache .checkBundle (TeeTypeSGX , fmspc )
122+ require .NotNil (cache , "tcbCache.checkBundle 3" )
123+ require .False (refresh , "tcbCache.checkBundle 3" )
124+
125+ cachedNumbers , refresh = tcbCache .checkEvaluationDataNumbers (TeeTypeSGX )
126+ require .NotNil (cachedNumbers , "tcbCache.checkEvaluationDataNumbers 3" )
127+ require .False (refresh , "tcbCache.checkEvaluationDataNumbers 3" )
105128
106129 // 22 hours later, still don't check (within slow refresh interval).
107130 // Two hours after that, do check.
108131 timer .now = timer .now .Add (22 * time .Hour )
109- cache , refresh = tcbCache .check (fmspc )
110- require .NotNil (cache , "tcbCache.check 4" )
111- require .False (refresh , "tcbCache.check 4" )
132+ cache , refresh = tcbCache .checkBundle (TeeTypeSGX , fmspc )
133+ require .NotNil (cache , "tcbCache.checkBundle 4" )
134+ require .False (refresh , "tcbCache.checkBundle 4" )
135+
136+ cachedNumbers , refresh = tcbCache .checkEvaluationDataNumbers (TeeTypeSGX )
137+ require .NotNil (cachedNumbers , "tcbCache.checkEvaluationDataNumbers 4" )
138+ require .False (refresh , "tcbCache.checkEvaluationDataNumbers 4" )
112139
113140 timer .now = timer .now .Add (2 * time .Hour )
114- cache , refresh = tcbCache .check (fmspc )
115- require .NotNil (cache , "tcbCache.check 5" )
116- require .True (refresh , "tcbCache.check 5" )
117- tcbCache .cache (bundle , fmspc )
141+ cache , refresh = tcbCache .checkBundle (TeeTypeSGX , fmspc )
142+ require .NotNil (cache , "tcbCache.checkBundle 5" )
143+ require .True (refresh , "tcbCache.checkBundle 5" )
144+ tcbCache .cacheBundle (TeeTypeSGX , bundle , fmspc )
145+
146+ cachedNumbers , refresh = tcbCache .checkEvaluationDataNumbers (TeeTypeSGX )
147+ require .NotNil (cachedNumbers , "tcbCache.checkEvaluationDataNumbers 5" )
148+ require .True (refresh , "tcbCache.checkEvaluationDataNumbers 5" )
149+ tcbCache .cacheEvaluationDataNumbers (TeeTypeSGX , []uint32 {17 , 18 , 19 })
118150
119151 // After the bundle expires, check all the time.
120152 timer .now = expiryTime
121153 for i := 0 ; i < 4 ; i ++ {
122- cache , refresh = tcbCache .check ( fmspc )
123- require .NotNil (cache , "tcbCache.check loop" )
124- require .True (refresh , "tcbCache.check loop" )
125- tcbCache .cache ( bundle , fmspc )
154+ cache , refresh = tcbCache .checkBundle ( TeeTypeSGX , fmspc )
155+ require .NotNil (cache , "tcbCache.checkBundle loop" )
156+ require .True (refresh , "tcbCache.checkBundle loop" )
157+ tcbCache .cacheBundle ( TeeTypeSGX , bundle , fmspc )
126158 timer .now = timer .now .Add (time .Hour )
127159 }
128160}
@@ -169,7 +201,8 @@ func TestTCBCache(t *testing.T) {
169201 } {
170202 t .Run (name , func (t * testing.T ) {
171203 fun (t , store , & tcbBundle )
172- _ = store .Delete ([]byte (tcbCacheKey ))
204+ _ = store .Delete (tcbBundleCacheKey (TeeTypeSGX ))
205+ _ = store .Delete (tcbEvaluationDataNumbersCacheKey (TeeTypeSGX ))
173206 })
174207 }
175208}
0 commit comments