code: func NewIdentityChain(name []string, keys []string) (*Chain, error) {
  	e := &Entry{}
  	e.ExtIDs = append(e.ExtIDs, []byte("IdentityChain"))
  	for _, part := range name {
  		e.ExtIDs = append(e.ExtIDs, []byte(part))
  	}
  
  	var publicKeys []string
  	for _, key := range keys {
  		if IdentityKeyStringType(key) != IDPub {
  			return nil, fmt.Errorf("provided key %s is not a valid identity public key", key)
  		}
  		publicKeys = append(publicKeys, key)
  	}
  	keysMap := map[string]interface{}{"version": 1, "keys": publicKeys}
  	keysJSON, _ := json.Marshal(keysMap)
  	e.Content = keysJSON
  	c := NewChain(e)
  	return c, nil
  }
docs: // NewIdentityChain creates an returns a Chain struct for a new identity. Publish it to the
  // blockchain using the usual factom.CommitChain(...) and factom.RevealChain(...) calls.