func()

in linux/tpm.go [343:378]


func (tpm *tpmDevice) LoadDiskKey(keyID string) (CryptoKey, error) {
	db, err := diskio.OpenDB()
	if err != nil {
		return nil, err
	}

	keyBytes, err := db.Load(keyID)
	if err != nil {
		flog.Warningf("Got error loading key from disk: %+v", err)
		return nil, nil
	}
	if len(keyBytes) <= 0 {
		flog.Warning("Loaded key file but got no data")
		return nil, nil
	}

	flog.Debugf("Attempting to unmarshal key '%s'", keyID)

	var keyobj tpmKey
	if err := utils.UnmarshalBytes(keyBytes, &keyobj); err != nil {
		flog.Criticalf("Failed to unmarshal key '%s': %+v", keyID, err)
		return nil, err
	}

	if keyobj.IsEmpty() {
		flog.Warningf(
			"Key '%s' loaded, but has no data; generate a new key",
			keyID,
		)
		return nil, nil
	}

	keyobj.FillKeyData(keyobj.PublicBytes, nil, nil, nil)

	return &keyobj, nil
}