code: func NewIdentityKeyReplacementEntry(chainID string, oldKey string, newKey string, signerKey *IdentityKey) (*Entry, error) {
  	if IdentityKeyStringType(oldKey) != IDPub {
  		return nil, fmt.Errorf("provided key %s is not a valid identity public key", oldKey)
  	}
  	if IdentityKeyStringType(newKey) != IDPub {
  		return nil, fmt.Errorf("provided key %s is not a valid identity public key", newKey)
  	}
  	message := []byte(chainID + oldKey + newKey)
  	signature := signerKey.Sign(message)
  
  	e := Entry{}
  	e.ChainID = chainID
  	e.ExtIDs = [][]byte{
  		[]byte("ReplaceKey"),
  		[]byte(oldKey),
  		[]byte(newKey),
  		signature[:],
  		[]byte(signerKey.String()),
  	}
  	return &e, nil
  }
docs: // NewIdentityKeyReplacementEntry creates and returns a new Entry struct for the key replacement. Publish it to the
  // blockchain using the usual factom.CommitEntry(...) and factom.RevealEntry(...) calls.