Powered by AppSignal & Oban Pro

SmeeGen Workbook

smee_gen_notebook.livemd

SmeeGen Workbook

Mix.install([{:smee_gen, ">= 0.1.0"}])

Generating a minimal CAS metadata record

SmeeGen.cas!("https://sp.example.org") 
|> IO.puts()

Creating a few records to use later…

cert = """
MIIDODCCAiCgAwIBAgIJAKpLQTw/WPXCMA0GCSqGSIb3DQEBCwUAMBwxGjAYBgNV
BAMTEWFscGhhLmV4YW1wbGUub3JnMB4XDTE4MDYxODE2NDE0NVoXDTE4MDcxODE2
NDE0NVowHDEaMBgGA1UEAxMRYWxwaGEuZXhhbXBsZS5vcmcwggEiMA0GCSqGSIb3
DQEBAQUAA4IBDwAwggEKAoIBAQDHSzRUcM0WBtAjR3P1vHYkaaATjNKTxbNHn3zS
3mLnEgukOVFrr+cRByKKUQQb8MIPkuvKrz3lnoCoOwlFMRPigtChjo3UJGTYEMY9
2SQQr24U6nE/3d2qFaf2PNIW1SinSjxbE1xeT0bdLcTZHUcE2yEfHKFhcgXIJprv
R1ceBJBvYYnATuPgUxMjq2ks4kXxG0nNlT13QwBfykBv6I1Wkkc06mEvkMzKNtzr
ayBK1PygVBNVMUQAFn7Tv6c28BtVLFE9SIKj+5ZcpuWkujVNJF1dYdNmfAz3PiuE
dPt2yl3t2r/v4CP+U8kBlQs6A83xYrA0MsHnUYOrfL3UTWtZAgMBAAGjfTB7MB0G
A1UdDgQWBBT/5yBm3mXtsYDvz11kTHsPVGeRcDBMBgNVHSMERTBDgBT/5yBm3mXt
sYDvz11kTHsPVGeRcKEgpB4wHDEaMBgGA1UEAxMRYWxwaGEuZXhhbXBsZS5vcmeC
CQCqS0E8P1j1wjAMBgNVHRMEBTADAQH/MA0GCSqGSIb3DQEBCwUAA4IBAQAb/o/M
mt/nSHOfcjnNJS/LpouaewkoWkQn+FaXZOOvHDYhWur+mHVDpjoszUfgrTX2npmL
e8Q94bHd+cQrJpZFiYRX8l0p7dAH5Q6Ya/AnHuzGeyQ9fXiDMSWcsg2INcWi7oL9
h9+V3idcSzgAo1b7+ESSToPj7OG8tgjEp2C9jy0IKEwoApuQtRzxD1XHZFBFwwuH
nIXWxgctJPU1C+1W9b4bkFSyEGz8/HM7D9feDHbn2AKuRgd99aaOY9D59topf2Zg
t5sUTWWl54eaF5qoXKY/jdl84Tnmo8GeUufCrS0T6YQGI1LTpicPbqf7zHihQTao
I1TQuJgghwPvPE9x
"""

expires_at = DateTime.utc_now() |> DateTime.add(14, :day)

{:ok, duration} = Duration.from_iso8601("P0Y0M0DT6H0M0.000S")

Creating a full CAS metadata record



xml = SmeeGen.cas!(
  "https://example.com/cas",
  service_urls: ["https://example.com/secure", "https://example.com/admin"],
  proxy_urls: ["https://whatever.org/proxy"],
  fragment: false,
  id: "1001",
  valid_until: expires_at,
  cache_duration: duration,
  proxy_keys: [cert],
  displayname: "Test XML metadata",
  information_url: "https://example.com/info",
  description: "Just testing things",
  privacy_url: "https://example.com/privacy_policy",
  privacy_urls: %{
    "fr" => "https://example.com/privacy_policy_fr"
  },
  keywords: %{
    "en" => ["one", "two", "something else"]
  },
  logos: [[url: "https://example.com/logo.png", width: 50, height: 50]],
  contacts: [
    [
      company: "Example Ltd",
      email: "security@example.com",
      surname: "Security",
      givenname: "Security",
      phone: "0161 496 0001",
      type: :sirtfi
    ],
    [
      company: "Example Ltd",
      email: "support@example.com",
      surname: "Support",
      givenname: "Online",
      type: :technical
    ]
  ],
  organization: [
    name: "Example",
    url: "https://example.com"
  ],
  ras: true,
  registration_authority: "https://regauth.example.org",
  registration_instant: DateTime.utc_now(),
  registration_policy_url: "https://blah.example.org"
)

IO.puts xml