func addServerSigningKey(chainID interfaces.IHash, key interfaces.IHash, height uint32, st *State) { AuthorityIndex := st.AddAuthorityFromChainID(chainID) if st.IdentityChainID.IsSameAs(chainID) && len(st.serverPendingPrivKeys) > 0 { for i, pubKey := range st.serverPendingPubKeys { pubData, err := pubKey.MarshalBinary() if err != nil { break } if bytes.Compare(pubData, key.Bytes()) == 0 { st.serverPrivKey = st.serverPendingPrivKeys[i] st.serverPubKey = st.serverPendingPubKeys[i] if len(st.serverPendingPrivKeys) > i+1 { st.serverPendingPrivKeys = append(st.serverPendingPrivKeys[:i], st.serverPendingPrivKeys[i+1:]...) st.serverPendingPubKeys = append(st.serverPendingPubKeys[:i], st.serverPendingPubKeys[i+1:]...) } else { st.serverPendingPrivKeys = st.serverPendingPrivKeys[:i] st.serverPendingPubKeys = st.serverPendingPubKeys[:i] } break } } } // Add Key History st.Authorities[AuthorityIndex].KeyHistory = append(st.Authorities[AuthorityIndex].KeyHistory, struct { ActiveDBHeight uint32 SigningKey primitives.PublicKey }{height, st.Authorities[AuthorityIndex].SigningKey}) // Replace Active Key st.Authorities[AuthorityIndex].SigningKey = primitives.PubKeyFromString(key.String()) }
func setupFirstAuthority(s *state.State) { var id state.Identity if networkIdentity := s.GetNetworkBootStrapIdentity(); networkIdentity != nil { id.IdentityChainID = networkIdentity } else { id.IdentityChainID = primitives.NewZeroHash() } id.ManagementChainID, _ = primitives.HexToHash("88888800000000000000000000000000") if pub := s.GetNetworkBootStrapKey(); pub != nil { id.SigningKey = pub } else { id.SigningKey = primitives.NewZeroHash() } id.MatryoshkaHash = primitives.NewZeroHash() id.ManagementCreated = 0 id.ManagementRegistered = 0 id.IdentityCreated = 0 id.IdentityRegistered = 0 id.Key1 = primitives.NewZeroHash() id.Key2 = primitives.NewZeroHash() id.Key3 = primitives.NewZeroHash() id.Key4 = primitives.NewZeroHash() id.Status = 1 s.Identities = append(s.Identities, &id) var auth state.Authority auth.Status = 1 auth.SigningKey = primitives.PubKeyFromString(id.SigningKey.String()) auth.MatryoshkaHash = primitives.NewZeroHash() auth.AuthorityChainID = id.IdentityChainID auth.ManagementChainID, _ = primitives.HexToHash("88888800000000000000000000000000") s.Authorities = append(s.Authorities, &auth) }
func (s *State) initServerKeys() { var err error s.serverPrivKey, err = primitives.NewPrivateKeyFromHex(s.GetCfg().(*util.FactomdConfig).App.LocalServerPrivKey) if err != nil { //panic("Cannot parse Server Private Key from configuration file: " + err.Error()) } s.serverPubKey = primitives.PubKeyFromString(constants.SERVER_PUB_KEY) }