code: func (updater *OCSPUpdater) generateRevokedResponse(ctx context.Context, status core.CertificateStatus) (*core.CertificateStatus, []string, error) {
  	cert, err := updater.sac.GetCertificate(ctx, status.Serial)
  	if err != nil {
  		return nil, nil, err
  	}
  
  	signRequest := core.OCSPSigningRequest{
  		CertDER:   cert.DER,
  		Status:    string(core.OCSPStatusRevoked),
  		Reason:    status.RevokedReason,
  		RevokedAt: status.RevokedDate,
  	}
  
  	ocspResponse, err := updater.cac.GenerateOCSP(ctx, signRequest)
  	if err != nil {
  		return nil, nil, err
  	}
  
  	now := updater.clk.Now()
  	status.OCSPLastUpdated = now
  	status.OCSPResponse = ocspResponse
  
  	// If cache client is populated generate purge URLs
  	var purgeURLs []string
  	if updater.ccu != nil || updater.purgerService != nil {
  		purgeURLs, err = akamai.GeneratePurgeURLs(cert.DER, updater.issuer)
  		if err != nil {
  			return nil, nil, err
  		}
  	}
  
  	return &status, purgeURLs, nil
  }
docs: // generateRevokedResponse takes a core.CertificateStatus and updates it with a revoked OCSP response
  // for the certificate it represents. generateRevokedResponse then returns the updated status and a
  // list of OCSP request URLs that should be purged or an error.