cbnt-prov: Allow *-show to work on full images (#314)

cbnt-prov: Allow *-show to work on full images

Signed-off-by: Arthur Heymans <arthur@aheymans.xyz>
Signed-off-by: Christian Walter <christian.walter@9elements.com>

Co-authored-by: Dmitrii Okunev <xaionaro@gmail.com>
Co-authored-by: Christian Walter <christian.walter@9elements.com>
This commit is contained in:
Arthur Heymans 2022-05-17 10:32:35 +02:00 committed by GitHub
parent a8e9b94f10
commit 6d6f90c083
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
1 changed files with 28 additions and 6 deletions

View File

@ -233,10 +233,19 @@ func (kmp *kmPrintCmd) Run(ctx *context) error {
if err != nil {
return err
}
reader := bytes.NewReader(data)
km, err := cbnt.ParseKM(reader)
var km *key.Manifest
_, kmEntry, _, err := cbnt.ParseFITEntries(data)
if err != nil {
return err
reader := bytes.NewReader(data)
km, err = cbnt.ParseKM(reader)
if err != nil {
return err
}
} else {
km, err = kmEntry.ParseData()
if err != nil {
return fmt.Errorf("unable to parse KM: %w", err)
}
}
km.Print()
if km.KeyAndSignature.Signature.DataTotalSize() > 1 {
@ -252,10 +261,19 @@ func (bpmp *bpmPrintCmd) Run(ctx *context) error {
if err != nil {
return err
}
reader := bytes.NewReader(data)
bpm, err := cbnt.ParseBPM(reader)
var bpm *bootpolicy.Manifest
bpmEntry, _, _, err := cbnt.ParseFITEntries(data)
if err != nil {
return err
reader := bytes.NewReader(data)
bpm, err = cbnt.ParseBPM(reader)
if err != nil {
return err
}
} else {
bpm, err = bpmEntry.ParseData()
if err != nil {
return fmt.Errorf("unable to parse BPM: %w", err)
}
}
bpm.Print()
if bpm.PMSE.Signature.DataTotalSize() > 1 {
@ -271,6 +289,10 @@ func (acmp *acmPrintCmd) Run(ctx *context) error {
if err != nil {
return err
}
_, _, acmEntry, err := cbnt.ParseFITEntries(data)
if err == nil {
data = acmEntry.DataSegmentBytes
}
acm, chipsets, processors, tpms, err, err2 := tools.ParseACM(data)
if err != nil {
return err