func parseLogLine(sa certificateStorage, logger blog.Logger, line string) (found bool, added bool) { ctx := context.Background() if !strings.Contains(line, "b64der=") || !strings.Contains(line, "orphaning certificate") { return false, false } derStr := b64derOrphan.FindStringSubmatch(line) if len(derStr) <= 1 { logger.Err(fmt.Sprintf("Didn't match regex for b64der: %s", line)) return true, false } der, err := base64.StdEncoding.DecodeString(derStr[1]) if err != nil { logger.Err(fmt.Sprintf("Couldn't decode b64: %s, [%s]", err, line)) return true, false } err = checkDER(sa, der) if err != nil { logFunc := logger.Err if err == errAlreadyExists { logFunc = logger.Info } logFunc(fmt.Sprintf("%s, [%s]", err, line)) return true, false } // extract the regID regStr := regOrphan.FindStringSubmatch(line) if len(regStr) <= 1 { logger.Err(fmt.Sprintf("regID variable is empty, [%s]", line)) return true, false } regID, err := strconv.Atoi(regStr[1]) if err != nil { logger.Err(fmt.Sprintf("Couldn't parse regID: %s, [%s]", err, line)) return true, false } _, err = sa.AddCertificate(ctx, der, int64(regID)) if err != nil { logger.Err(fmt.Sprintf("Failed to store certificate: %s, [%s]", err, line)) return true, false } return true, true }