github.com/u-root/u-root@v7.0.1-0.20200915234505-ad7babab0a8e+incompatible/pkg/tss/structures.go (about)

     1  // Copyright 2020 the u-root 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  package tss
     6  
     7  import (
     8  	"crypto"
     9  	"fmt"
    10  	"io"
    11  )
    12  
    13  // TCGVendorID TPM manufacturer id
    14  type TCGVendorID uint32
    15  
    16  func (id TCGVendorID) String() string {
    17  
    18  	s, ok := vendors[id]
    19  	if !ok {
    20  		return fmt.Sprintf("unknown TPM vendor (%d)", id)
    21  	}
    22  	return s
    23  }
    24  
    25  var vendors = map[TCGVendorID]string{
    26  	1095582720: "AMD",
    27  	1096043852: "Atmel",
    28  	1112687437: "Broadcom",
    29  	1229081856: "IBM",
    30  	1213220096: "HPE",
    31  	1297303124: "Microsoft",
    32  	1229346816: "Infineon",
    33  	1229870147: "Intel",
    34  	1279610368: "Lenovo",
    35  	1314082080: "National Semiconductor",
    36  	1314150912: "Nationz",
    37  	1314145024: "Nuvoton Technology",
    38  	1363365709: "Qualcomm",
    39  	1397576515: "SMSC",
    40  	1398033696: "ST Microelectronics",
    41  	1397576526: "Samsung",
    42  	1397641984: "Sinosun",
    43  	1415073280: "Texas Instruments",
    44  	1464156928: "Winbond",
    45  	1380926275: "Fuzhou Rockchip",
    46  	1196379975: "Google",
    47  }
    48  
    49  // PCR encapsulates the value of a PCR at a point in time.
    50  type PCR struct {
    51  	Index     int
    52  	Digest    []byte
    53  	DigestAlg crypto.Hash
    54  }
    55  
    56  // TPM interfaces with a TPM device on the system.
    57  type TPM struct {
    58  	Version TPMVersion
    59  	Interf  TPMInterface
    60  
    61  	SysPath string
    62  	RWC     io.ReadWriteCloser
    63  }
    64  
    65  // probedTPM identifies a TPM device on the system, which
    66  // is a candidate for being used.
    67  type probedTPM struct {
    68  	Version TPMVersion
    69  	Path    string
    70  }
    71  
    72  // TPMInfo contains information about the version & interface
    73  // of an open TPM.
    74  type TPMInfo struct {
    75  	Version      TPMVersion
    76  	Interface    TPMInterface
    77  	VendorInfo   string
    78  	Manufacturer TCGVendorID
    79  
    80  	// FirmwareVersionMajor and FirmwareVersionMinor describe
    81  	// the firmware version of the TPM, but are only available
    82  	// for TPM 2.0 devices.
    83  	FirmwareVersionMajor int
    84  	FirmwareVersionMinor int
    85  }