mirror of
				https://github.com/edgelesssys/constellation.git
				synced 2025-11-04 04:39:31 -05:00 
			
		
		
		
	Co-authored-by: Malte Poll <mp@edgeless.systems> Co-authored-by: katexochen <katexochen@users.noreply.github.com> Co-authored-by: Daniel Weiße <dw@edgeless.systems> Co-authored-by: Thomas Tendyck <tt@edgeless.systems> Co-authored-by: Benedict Schlueter <bs@edgeless.systems> Co-authored-by: leongross <leon.gross@rub.de> Co-authored-by: Moritz Eckert <m1gh7ym0@gmail.com>
		
			
				
	
	
		
			30 lines
		
	
	
	
		
			946 B
		
	
	
	
		
			Go
		
	
	
	
	
	
			
		
		
	
	
			30 lines
		
	
	
	
		
			946 B
		
	
	
	
		
			Go
		
	
	
	
	
	
package core
 | 
						|
 | 
						|
import (
 | 
						|
	"github.com/edgelesssys/constellation/coordinator/attestation/vtpm"
 | 
						|
	"github.com/edgelesssys/constellation/coordinator/state"
 | 
						|
)
 | 
						|
 | 
						|
// GetState returns the current state.
 | 
						|
func (c *Core) GetState() state.State {
 | 
						|
	return c.state.Get()
 | 
						|
}
 | 
						|
 | 
						|
// RequireState checks if the peer is in one of the desired states and returns an error otherwise.
 | 
						|
func (c *Core) RequireState(states ...state.State) error {
 | 
						|
	return c.state.Require(states...)
 | 
						|
}
 | 
						|
 | 
						|
// AdvanceState advances the state. It also marks the peer as initialized for the corresponding state transition.
 | 
						|
func (c *Core) AdvanceState(newState state.State, ownerID, clusterID []byte) error {
 | 
						|
	if newState != state.Failed && c.state.Get() == state.AcceptingInit {
 | 
						|
		if err := c.data().PutClusterID(clusterID); err != nil {
 | 
						|
			return err
 | 
						|
		}
 | 
						|
		if err := vtpm.MarkNodeAsInitialized(c.openTPM, ownerID, clusterID); err != nil {
 | 
						|
			return err
 | 
						|
		}
 | 
						|
	}
 | 
						|
	c.state.Advance(newState)
 | 
						|
	return nil
 | 
						|
}
 |