code: func (*Revocation) Sign(key *ecdsa.PrivateKey, unrevokedHandles [][]byte, epoch int, alg bccsp.RevocationAlgorithm) (res []byte, err error) {
  	defer func() {
  		if r := recover(); r != nil {
  			res = nil
  			err = errors.Errorf("failure [%s]", r)
  		}
  	}()
  
  	handles := make([]*FP256BN.BIG, len(unrevokedHandles))
  	for i := 0; i < len(unrevokedHandles); i++ {
  		handles[i] = FP256BN.FromBytes(unrevokedHandles[i])
  	}
  	cri, err := cryptolib.CreateCRI(key, handles, epoch, cryptolib.RevocationAlgorithm(alg), NewRandOrPanic())
  	if err != nil {
  		return nil, errors.WithMessage(err, "failed creating CRI")
  	}
  
  	return proto.Marshal(cri)
  }
docs: // Sign generates a new CRI with the respect to the passed unrevoked handles, epoch, and revocation algorithm.