Inputs:
- MAX_PARTICIPANTS, the number of shares to generate, an integer.
- MIN_PARTICIPANTS, the threshold of the secret sharing scheme,
  an integer.
- vss_commitment, a VSS commitment to a secret polynomial f, a vector
  commitment to each of the coefficients in coeffs, where each
  element of the vector commitment is an Element.

Outputs:
- PK, the public key representing the group, an Element.
- participant_public_keys, a list of MAX_PARTICIPANTS public keys
  PK_i for i=1,...,MAX_PARTICIPANTS, where each PK_i is the public
  key, an Element, for participant i.

def derive_group_info(MAX_PARTICIPANTS, MIN_PARTICIPANTS,
 vss_commitment):
  PK = vss_commitment[0]
  participant_public_keys = []
  for i in range(1, MAX_PARTICIPANTS+1):
    PK_i = G.Identity()
    for j in range(0, MIN_PARTICIPANTS):
      PK_i += G.ScalarMult(vss_commitment[j], pow(i, j))
    participant_public_keys.append(PK_i)
  return PK, participant_public_keys
