func()

in linux/tpm.go [63:103]


func (tpm *tpmDevice) Initialize() error {
	if tpm == nil {
		return errors.New("cannot insnantiate a nil instance")
	}

	rwc, err := tpm2.OpenTPM(tpm.path)
	if err != nil {
		return err
	}

	tpm.rwc = rwc

	flog.Debugf("Loaded TPM device: %s", tpm.path)

	db, err := diskio.OpenDB()
	if err != nil {
		return err
	}
	handles := make(map[string]tpmutil.Handle)
	err = db.Visit(func(key string, val []byte) error {
		var keyobj tpmKey
		if err := utils.UnmarshalBytes(val, &keyobj); err != nil {
			flog.Criticalf("Failed to unmarshal key %q: %+v", key, err)
			return err
		}
		handles[key] = keyobj.Handle
		flog.Debugf("Found handle for key %q: %#x", key, keyobj.Handle)
		return nil
	})

	if err != nil {
		flog.Criticalf("Failed to init key handler: %+v", err)
		return err
	}

	tpm.keyHandler = NewKeyHandler(handles)

	flog.Debugf("Initialized key handler")

	return nil
}