@@ -105,6 +105,49 @@ impl FlashRegion<'_> {
105
105
}
106
106
}
107
107
108
+ fn flash_info_check ( info : & [ FlashRegion < ' _ > ] , unlocked : bool ) -> Result < ( ) > {
109
+ // Flash info regions when no OwnerReserved pages are configured:
110
+ let config = [
111
+ FlashRegion ( "info" , 0 , 0 , 0 , "uu-uu-uu-uu-uu-uu" , "LK" ) , // factory ID
112
+ FlashRegion ( "info" , 0 , 0 , 1 , "uu-uu-uu-uu-uu-uu" , "LK" ) , // creator secret
113
+ FlashRegion ( "info" , 0 , 0 , 2 , "uu-uu-uu-uu-uu-uu" , "LK" ) , // owner secret
114
+ FlashRegion ( "info" , 0 , 0 , 3 , "uu-uu-uu-uu-uu-uu" , "LK" ) , // wafer auth secret
115
+ FlashRegion ( "info" , 0 , 0 , 4 , "RD-xx-xx-SC-EC-xx" , "LK" ) , // attestation key seeds
116
+ FlashRegion ( "info" , 0 , 0 , 5 , "xx-xx-xx-xx-xx-xx" , "UN" ) , // owner reserved
117
+ FlashRegion ( "info" , 0 , 0 , 6 , "xx-xx-xx-xx-xx-xx" , "UN" ) , // owner reserved
118
+ FlashRegion ( "info" , 0 , 0 , 7 , "xx-xx-xx-xx-xx-xx" , "UN" ) , // owner reserved
119
+ FlashRegion ( "info" , 0 , 0 , 8 , "xx-xx-xx-xx-xx-xx" , "UN" ) , // owner reserved
120
+ FlashRegion ( "info" , 0 , 0 , 9 , "RD-xx-xx-SC-EC-xx" , "LK" ) , // factory certs
121
+ FlashRegion ( "info" , 1 , 0 , 0 , "uu-uu-uu-uu-uu-uu" , "LK" ) , // boot data 0
122
+ FlashRegion ( "info" , 1 , 0 , 1 , "uu-uu-uu-uu-uu-uu" , "LK" ) , // boot data 1
123
+ FlashRegion ( "info" , 1 , 0 , 2 , "RD-xx-xx-SC-EC-xx" , "LK" ) , // owner config 0
124
+ if unlocked {
125
+ FlashRegion ( "info" , 1 , 0 , 3 , "RD-WR-ER-SC-EC-xx" , "LK" ) // owner config 1
126
+ } else {
127
+ FlashRegion ( "info" , 1 , 0 , 3 , "RD-xx-xx-SC-EC-xx" , "LK" ) // owner config 1
128
+ } ,
129
+ FlashRegion ( "info" , 1 , 0 , 4 , "uu-uu-uu-uu-uu-uu" , "LK" ) , // creator reserved
130
+ FlashRegion ( "info" , 1 , 0 , 5 , "xx-xx-xx-xx-xx-xx" , "UN" ) , // owner reserved
131
+ FlashRegion ( "info" , 1 , 0 , 6 , "xx-xx-xx-xx-xx-xx" , "UN" ) , // owner reserved
132
+ FlashRegion ( "info" , 1 , 0 , 7 , "xx-xx-xx-xx-xx-xx" , "UN" ) , // owner reserved
133
+ FlashRegion ( "info" , 1 , 0 , 8 , "xx-xx-xx-xx-xx-xx" , "UN" ) , // owner reserved
134
+ FlashRegion ( "info" , 1 , 0 , 9 , "RD-xx-xx-SC-EC-xx" , "LK" ) , // dice certs
135
+ ] ;
136
+ assert_eq ! ( info. len( ) , config. len( ) ) ;
137
+ let mut err = 0 ;
138
+ for i in 0 ..config. len ( ) {
139
+ if info[ i] != config[ i] {
140
+ log:: error!( "INFO entry {i}: {:?} != {:?}" , info[ i] , config[ i] ) ;
141
+ err += 1 ;
142
+ }
143
+ }
144
+ if err != 0 {
145
+ Err ( anyhow ! ( "INFO lockdown mismatch" ) )
146
+ } else {
147
+ Ok ( ( ) )
148
+ }
149
+ }
150
+
108
151
fn flash_permission_test ( opts : & Opts , transport : & TransportWrapper ) -> Result < ( ) > {
109
152
let uart = transport. uart ( "console" ) ?;
110
153
let rescue = RescueSerial :: new ( Rc :: clone ( & uart) ) ;
@@ -198,17 +241,7 @@ fn flash_permission_test(opts: &Opts, transport: &TransportWrapper) -> Result<()
198
241
FlashRegion ( "data" , 7 , 0 , 0 , "xx-xx-xx-xx-xx-xx" , "UN" )
199
242
) ;
200
243
201
- // Bank 1, pages 2-3 are the ownership pages. In an ownership unlocked
202
- // state, OwnerPage0 (bank 1 page 2) should be read-only and OwnerPage1
203
- // (bank1 page 3) should be read/write.
204
- assert_eq ! (
205
- region[ 20 ] ,
206
- FlashRegion ( "info" , 1 , 0 , 2 , "RD-xx-xx-SC-EC-xx" , "LK" )
207
- ) ;
208
- assert_eq ! (
209
- region[ 21 ] ,
210
- FlashRegion ( "info" , 1 , 0 , 3 , "RD-WR-ER-SC-EC-xx" , "LK" )
211
- ) ;
244
+ flash_info_check ( & region[ 8 ..] , /*unlocked=*/ true ) ?;
212
245
}
213
246
214
247
log:: info!( "###### Get Boot Log (2/2) ######" ) ;
@@ -306,17 +339,7 @@ fn flash_permission_test(opts: &Opts, transport: &TransportWrapper) -> Result<()
306
339
FlashRegion ( "data" , 7 , 0 , 0 , "xx-xx-xx-xx-xx-xx" , "UN" )
307
340
) ;
308
341
309
- // Bank 1, pages 2-3 are the ownership pages. In an ownership locked
310
- // state, both pages should be read-only.
311
- assert_eq ! (
312
- region[ 20 ] ,
313
- FlashRegion ( "info" , 1 , 0 , 2 , "RD-xx-xx-SC-EC-xx" , "LK" )
314
- ) ;
315
- assert_eq ! (
316
- region[ 21 ] ,
317
- FlashRegion ( "info" , 1 , 0 , 3 , "RD-xx-xx-SC-EC-xx" , "LK" )
318
- ) ;
319
-
342
+ flash_info_check ( & region[ 8 ..] , /*unlocked=*/ false ) ?;
320
343
Ok ( ( ) )
321
344
}
322
345
0 commit comments