tem_openssl

Column Type
uniform_resource_id TEXT
tenant_id TEXT
tenant_name TEXT
ur_ingest_session_id TEXT
cert_index
common_name
subject_organization
issuer_country
issuer_common_name
issuer_organization
issued_date
expires_date

SQL DDL

CREATE VIEW tem_openssl AS
WITH parsed AS (
  SELECT
    uniform_resource_id,
    tenant_id,
    tenant_name,
    ur_ingest_session_id,
    cert_index,
    metadata,

    -- full subject line starting at the first "s:" up to the newline
    CASE
      WHEN instr(metadata, 's:') = 0 THEN ''
      ELSE trim(
        substr(
          metadata,
          instr(metadata, 's:'),
          CASE
            WHEN instr(substr(metadata, instr(metadata, 's:')), char(10)) > 0
              THEN instr(substr(metadata, instr(metadata, 's:')), char(10)) - 1
            ELSE length(metadata) - instr(metadata, 's:') + 1
          END
        )
      )
    END AS subject_line,

    -- full issuer line starting at the first "i:" up to the newline
    CASE
      WHEN instr(metadata, 'i:') = 0 THEN ''
      ELSE trim(
        substr(
          metadata,
          instr(metadata, 'i:'),
          CASE
            WHEN instr(substr(metadata, instr(metadata, 'i:')), char(10)) > 0
              THEN instr(substr(metadata, instr(metadata, 'i:')), char(10)) - 1
            ELSE length(metadata) - instr(metadata, 'i:') + 1
          END
        )
      )
    END AS issuer_line

  FROM tem_openssl_original_txt
)

SELECT
  uniform_resource_id,
  tenant_id,
  tenant_name,
  ur_ingest_session_id,
  cert_index,

  /* common_name (from subject_line -> CN=...) */
  CASE
    WHEN instr(subject_line, 'CN=') = 0 THEN ''
    ELSE trim(
      substr(
        subject_line,
        instr(subject_line, 'CN=') + 3,
        CASE
          WHEN instr(substr(subject_line, instr(subject_line, 'CN=') + 3), ',') > 0
            THEN instr(substr(subject_line, instr(subject_line, 'CN=') + 3), ',') - 1
          ELSE length(subject_line) - (instr(subject_line, 'CN=') + 3) + 1
        END
      )
    )
  END AS common_name,

  /* subject_organization (from subject_line -> O=...) */
  CASE
    WHEN instr(subject_line, 'O=') = 0 THEN ''
    ELSE trim(
      substr(
        subject_line,
        instr(subject_line, 'O=') + 2,
        CASE
          WHEN instr(substr(subject_line, instr(subject_line, 'O=') + 2), ',') > 0
            THEN instr(substr(subject_line, instr(subject_line, 'O=') + 2), ',') - 1
          ELSE length(subject_line) - (instr(subject_line, 'O=') + 2) + 1
        END
      )
    )
  END AS subject_organization,

  /* issuer_country (from issuer_line -> C=...) */
  CASE
    WHEN instr(issuer_line, 'C=') = 0 THEN ''
    ELSE trim(
      substr(
        issuer_line,
        instr(issuer_line, 'C=') + 2,
        CASE
          WHEN instr(substr(issuer_line, instr(issuer_line, 'C=') + 2), ',') > 0
            THEN instr(substr(issuer_line, instr(issuer_line, 'C=') + 2), ',') - 1
          ELSE length(issuer_line) - (instr(issuer_line, 'C=') + 2) + 1
        END
      )
    )
  END AS issuer_country,

  /* issuer_common_name (from issuer_line -> CN=...) */
  CASE
    WHEN instr(issuer_line, 'CN=') = 0 THEN ''
    ELSE trim(
      substr(
        issuer_line,
        instr(issuer_line, 'CN=') + 3,
        CASE
          WHEN instr(substr(issuer_line, instr(issuer_line, 'CN=') + 3), ',') > 0
            THEN instr(substr(issuer_line, instr(issuer_line, 'CN=') + 3), ',') - 1
          ELSE length(issuer_line) - (instr(issuer_line, 'CN=') + 3) + 1
        END
      )
    )
  END AS issuer_common_name,

  /* issuer_organization (from issuer_line -> O=...) */
  CASE
    WHEN instr(issuer_line, 'O=') = 0 THEN ''
    ELSE trim(
      substr(
        issuer_line,
        instr(issuer_line, 'O=') + 2,
        CASE
          WHEN instr(substr(issuer_line, instr(issuer_line, 'O=') + 2), ',') > 0
            THEN instr(substr(issuer_line, instr(issuer_line, 'O=') + 2), ',') - 1
          ELSE length(issuer_line) - (instr(issuer_line, 'O=') + 2) + 1
        END
      )
    )
  END AS issuer_organization,

  /* issued_date (NotBefore:) */
  CASE
    WHEN instr(metadata, 'NotBefore:') = 0 THEN ''
    ELSE trim(
      substr(
        metadata,
        instr(metadata, 'NotBefore:') + length('NotBefore:'),
        CASE
          WHEN instr(substr(metadata, instr(metadata, 'NotBefore:') + length('NotBefore:')), ';') > 0
            THEN instr(substr(metadata, instr(metadata, 'NotBefore:') + length('NotBefore:')), ';') - 1
          WHEN instr(substr(metadata, instr(metadata, 'NotBefore:') + length('NotBefore:')), char(10)) > 0
            THEN instr(substr(metadata, instr(metadata, 'NotBefore:') + length('NotBefore:')), char(10)) - 1
          ELSE length(metadata) - (instr(metadata, 'NotBefore:') + length('NotBefore:')) + 1
        END
      )
    )
  END AS issued_date,

  /* expires_date (NotAfter:) */
  CASE
    WHEN instr(metadata, 'NotAfter:') = 0 THEN ''
    ELSE trim(
      substr(
        metadata,
        instr(metadata, 'NotAfter:') + length('NotAfter:'),
        CASE
          WHEN instr(substr(metadata, instr(metadata, 'NotAfter:') + length('NotAfter:')), char(10)) > 0
            THEN instr(substr(metadata, instr(metadata, 'NotAfter:') + length('NotAfter:')), char(10)) - 1
          WHEN instr(substr(metadata, instr(metadata, 'NotAfter:') + length('NotAfter:')), ';') > 0
            THEN instr(substr(metadata, instr(metadata, 'NotAfter:') + length('NotAfter:')), ';') - 1
          ELSE length(metadata) - (instr(metadata, 'NotAfter:') + length('NotAfter:')) + 1
        END
      )
    )
  END AS expires_date

FROM parsed
WHERE instr(subject_line, 'CN=') > 0