Add Nix flake for mciasctl and mciasgrpcctl
Vendor dependencies and expose control program binaries via nix build. Uses nixpkgs-unstable for Go 1.26 support. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
62
vendor/github.com/google/go-tpm/tpm2/names.go
generated
vendored
Normal file
62
vendor/github.com/google/go-tpm/tpm2/names.go
generated
vendored
Normal file
@@ -0,0 +1,62 @@
|
||||
package tpm2
|
||||
|
||||
import (
|
||||
"bytes"
|
||||
"encoding/binary"
|
||||
"reflect"
|
||||
)
|
||||
|
||||
// HandleName returns the TPM Name of a PCR, session, or permanent value
|
||||
// (e.g., hierarchy) handle.
|
||||
func HandleName(h TPMHandle) TPM2BName {
|
||||
result := make([]byte, 4)
|
||||
binary.BigEndian.PutUint32(result, uint32(h))
|
||||
return TPM2BName{
|
||||
Buffer: result,
|
||||
}
|
||||
}
|
||||
|
||||
// objectOrNVName calculates the Name of an NV index or object.
|
||||
// pub is a pointer to either a TPMTPublic or TPMSNVPublic.
|
||||
func objectOrNVName(alg TPMAlgID, pub interface{}) (*TPM2BName, error) {
|
||||
h, err := alg.Hash()
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
// Create a byte slice with the correct reserved size and marshal the
|
||||
// NameAlg to it.
|
||||
result := make([]byte, 2, 2+h.Size())
|
||||
binary.BigEndian.PutUint16(result, uint16(alg))
|
||||
|
||||
// Calculate the hash of the entire Public contents and append it to the
|
||||
// result.
|
||||
ha := h.New()
|
||||
var buf bytes.Buffer
|
||||
if err := marshal(&buf, reflect.ValueOf(pub)); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
ha.Write(buf.Bytes())
|
||||
result = ha.Sum(result)
|
||||
|
||||
return &TPM2BName{
|
||||
Buffer: result,
|
||||
}, nil
|
||||
}
|
||||
|
||||
// ObjectName returns the TPM Name of an object.
|
||||
func ObjectName(p *TPMTPublic) (*TPM2BName, error) {
|
||||
return objectOrNVName(p.NameAlg, p)
|
||||
}
|
||||
|
||||
// NVName returns the TPM Name of an NV index.
|
||||
func NVName(p *TPMSNVPublic) (*TPM2BName, error) {
|
||||
return objectOrNVName(p.NameAlg, p)
|
||||
}
|
||||
|
||||
// PrimaryHandleName returns the TPM Name of a primary handle.
|
||||
func PrimaryHandleName(h TPMHandle) []byte {
|
||||
result := make([]byte, 4)
|
||||
binary.BigEndian.PutUint32(result, uint32(h))
|
||||
return result
|
||||
}
|
||||
Reference in New Issue
Block a user