code: func (u *User) MakeNym(sk handlers.Big, ipk handlers.IssuerPublicKey) (r1 handlers.Ecp, r2 handlers.Big, err error) {
  	defer func() {
  		if r := recover(); r != nil {
  			r1 = nil
  			r2 = nil
  			err = errors.Errorf("failure [%s]", r)
  		}
  	}()
  
  	isk, ok := sk.(*Big)
  	if !ok {
  		return nil, nil, errors.Errorf("invalid user secret key, expected *Big, got [%T]", sk)
  	}
  	iipk, ok := ipk.(*IssuerPublicKey)
  	if !ok {
  		return nil, nil, errors.Errorf("invalid issuer public key, expected *IssuerPublicKey, got [%T]", ipk)
  	}
  
  	ecp, big := cryptolib.MakeNym(isk.E, iipk.PK, u.NewRand())
  
  	r1 = &Ecp{E: ecp}
  	r2 = &Big{E: big}
  
  	return
  }
docs: // MakeNym generates a new pseudonym key-pair derived from the passed user secret key (sk) and issuer public key (ipk)