code: func RootCAEqualStable(a, b *api.RootCA) bool {
  	if a == nil && b == nil {
  		return true
  	}
  	if a == nil || b == nil {
  		return false
  	}
  
  	var aRotationKey, bRotationKey []byte
  	if a.RootRotation != nil {
  		aRotationKey = a.RootRotation.CAKey
  	}
  	if b.RootRotation != nil {
  		bRotationKey = b.RootRotation.CAKey
  	}
  	if subtle.ConstantTimeCompare(a.CAKey, b.CAKey) != 1 || subtle.ConstantTimeCompare(aRotationKey, bRotationKey) != 1 {
  		return false
  	}
  
  	copyA, copyB := *a, *b
  	copyA.JoinTokens, copyB.JoinTokens = api.JoinTokens{}, api.JoinTokens{}
  	return reflect.DeepEqual(copyA, copyB)
  }
docs: // RootCAEqualStable compares RootCAs, excluding join tokens, which are randomly generated