code: func NewCRLFromFile(serialList, issuerFile, keyFile []byte, expiryTime string) ([]byte, error) {
  
  	var revokedCerts []pkix.RevokedCertificate
  	var oneWeek = time.Duration(604800) * time.Second
  
  	expiryInt, err := strconv.ParseInt(expiryTime, 0, 32)
  	if err != nil {
  		return nil, err
  	}
  	newDurationFromInt := time.Duration(expiryInt) * time.Second
  	newExpiryTime := time.Now().Add(newDurationFromInt)
  	if expiryInt == 0 {
  		newExpiryTime = time.Now().Add(oneWeek)
  	}
  
  	// Parse the PEM encoded certificate
  	issuerCert, err := helpers.ParseCertificatePEM(issuerFile)
  	if err != nil {
  		return nil, err
  	}
  
  	// Split input file by new lines
  	individualCerts := strings.Split(string(serialList), "\n")
  
  	// For every new line, create a new revokedCertificate and add it to slice
  	for _, value := range individualCerts {
  		if len(strings.TrimSpace(value)) == 0 {
  			continue
  		}
  
  		tempBigInt := new(big.Int)
  		tempBigInt.SetString(value, 10)
  		tempCert := pkix.RevokedCertificate{
  			SerialNumber:   tempBigInt,
  			RevocationTime: time.Now(),
  		}
  		revokedCerts = append(revokedCerts, tempCert)
  	}
  
  	strPassword := os.Getenv("CFSSL_CA_PK_PASSWORD")
  	password := []byte(strPassword)
  	if strPassword == "" {
  		password = nil
  	}
  
  	// Parse the key given
  	key, err := helpers.ParsePrivateKeyPEMWithPassword(keyFile, password)
  	if err != nil {
  		log.Debug("Malformed private key %v", err)
  		return nil, err
  	}
  
  	return CreateGenericCRL(revokedCerts, key, issuerCert, newExpiryTime)
  }
docs: // NewCRLFromFile takes in a list of serial numbers, one per line, as well as the issuing certificate
  // of the CRL, and the private key. This function is then used to parse the list and generate a CRL