github.com/linuxboot/fiano@v1.2.0/pkg/intel/metadata/cbnt/cbntbootpolicy/txt.go (about)

     1  // Copyright 2017-2021 the LinuxBoot Authors. All rights reserved
     2  // Use of this source code is governed by a BSD-style
     3  // license that can be found in the LICENSE file.
     4  
     5  //go:generate manifestcodegen
     6  
     7  package cbntbootpolicy
     8  
     9  import (
    10  	"fmt"
    11  	"time"
    12  
    13  	"github.com/linuxboot/fiano/pkg/intel/metadata/cbnt"
    14  )
    15  
    16  // TXT is the TXT element
    17  type TXT struct {
    18  	StructInfo      `id:"__TXTS__" version:"0x21" var0:"0" var1:"uint16(s.TotalSize())"`
    19  	Reserved0       [1]byte          `require:"0" json:"txtReserved0,omitempty"`
    20  	SetNumber       [1]byte          `require:"0" json:"txtSetNumer,omitempty"`
    21  	SInitMinSVNAuth uint8            `default:"0" json:"txtSVN"`
    22  	Reserved1       [1]byte          `require:"0" json:"txtReserved1,omitempty"`
    23  	ControlFlags    TXTControlFlags  `json:"txtFlags"`
    24  	PwrDownInterval Duration16In5Sec `json:"txtPwrDownInterval"`
    25  	// PrettyString: PTT CMOS Offset 0
    26  	PTTCMOSOffset0 uint8 `default:"126" json:"txtPTTCMOSOffset0"`
    27  	// PrettyString: PTT CMOS Offset 1
    28  	PTTCMOSOffset1 uint8   `default:"127" json:"txtPTTCMOSOffset1"`
    29  	ACPIBaseOffset uint16  `default:"0x400" json:"txtACPIBaseOffset,omitempty"`
    30  	Reserved2      [2]byte `json:"txtReserved2,omitempty"`
    31  	// PrettyString: ACPI MMIO Offset
    32  	PwrMBaseOffset uint32        `default:"0xFE000000" json:"txtPwrMBaseOffset,omitempty"`
    33  	DigestList     cbnt.HashList `json:"txtDigestList"`
    34  	Reserved3      [3]byte       `require:"0" json:"txtReserved3,omitempty"`
    35  
    36  	SegmentCount uint8 `require:"0" json:"txtSegmentCount,omitempty"`
    37  }
    38  
    39  // Duration16In5Sec exports the custom type Duration16In5Sec
    40  type Duration16In5Sec uint16
    41  
    42  // Duration calculates a given time in multiple of 5 seconds.
    43  func (d Duration16In5Sec) Duration() time.Duration {
    44  	return time.Second * 5 * time.Duration(d)
    45  }
    46  
    47  func (d Duration16In5Sec) String() string {
    48  	if d == 0 {
    49  		return "0 (infinite)"
    50  	}
    51  	return fmt.Sprintf("%d (%s)", d, d.Duration().String())
    52  }