ExBankID.PayloadHelpers (ex_bank_id v0.2.2) View Source

Checkers for Payload options

https://www.bankid.com/assets/bankid/rp/bankid-relying-party-guidelines-v3.4.pdf

Link to this section Summary

Functions

Returns {:ok, ip_address} or {:error, reason} for IP address validity

Returns {:ok, personal_number}, {:ok, nil} or {:error, reason} for personal number

Returns true when value is an oid

Link to this section Functions

Link to this function

check_ip_address(ip_address)

View Source

Returns {:ok, ip_address} or {:error, reason} for IP address validity

Examples

iex> ExBankID.PayloadHelpers.check_ip_address("1.1.1.1")
{:ok, "1.1.1.1"}

iex> ExBankID.PayloadHelpers.check_ip_address("345.0.0.0")
{:error, "Invalid ip address: 345.0.0.0"}
Link to this function

check_personal_number(personal_number)

View Source

Returns {:ok, personal_number}, {:ok, nil} or {:error, reason} for personal number

Examples

iex> ExBankID.PayloadHelpers.check_personal_number("190000000000")
{:ok, "190000000000"}

iex> ExBankID.PayloadHelpers.check_personal_number("42")
{:error, "Invalid personal number: 42"}

iex> ExBankID.PayloadHelpers.check_personal_number(nil)
{:ok, nil}
Link to this function

check_requirement(requirement)

View Source

Returns:

  • when requirement is omitted
  • when all requirement's keys are valid
  • when requirement is anything besides a map or nil

Examples

iex> ExBankID.PayloadHelpers.check_requirement(nil)
{:ok, nil}

iex> ExBankID.PayloadHelpers.check_requirement(%{allowFingerprint: :true, cardReader: "class1"})
{:ok, %{allowFingerprint: :true, cardReader: "class1"}}

iex> ExBankID.PayloadHelpers.check_requirement(%{tokenStartRequired: :false, notRealRequirement: "fails"})
{:error, "Invalid requirement"}

iex> ExBankID.PayloadHelpers.check_requirement("something")
{:error, "Invalid requirement"}
Link to this function

check_requirement(arg1, value)

View Source

Returns

  • when autoStartTokenRequired is a boolean
  • when cardReader is "class1" or "class2"
  • when certificatePolicies is an empty list
  • when certificatePolicies is a list of oid's
  • when issuerCn is an empty list
  • when issuerCn is a list of strings
  • when tokenStartRequired is a boolean
  • when key, value is anything else besides above permitted

Examples

iex> ExBankID.PayloadHelpers.check_requirement(:autoStartTokenRequired, :false)
{:ok, nil}

iex> ExBankID.PayloadHelpers.check_requirement(:autoStartTokenRequired, "true")
{:error, "Invalid requirement"}

iex> ExBankID.PayloadHelpers.check_requirement(:cardReader, "class1")
{:ok, nil}

iex> ExBankID.PayloadHelpers.check_requirement(:cardReader, "class3")
{:error, "Invalid requirement"}

iex> ExBankID.PayloadHelpers.check_requirement(:certificatePolicies, [])
{:error, "Invalid requirement"}

iex> ExBankID.PayloadHelpers.check_requirement(:certificatePolicies, ["1.2.752.78.*", "1.2.752.78.1.5"])
{:ok, nil}

iex> ExBankID.PayloadHelpers.check_requirement(:certificatePolicies, ["not an oid"])
{:error, "Invalid requirement"}

iex> ExBankID.PayloadHelpers.check_requirement(:certificatePolicies, [])
{:error, "Invalid requirement"}

iex> ExBankID.PayloadHelpers.check_requirement(:issuerCn, ["Nordea CA for Smartcard users 12", "Nordea Test CA for Softcert users 13"])
{:ok, nil}

iex> ExBankID.PayloadHelpers.check_requirement(:issuerCn, "Nordea Test CA for Softcert users 13")
{:error, "Invalid requirement"}

iex> ExBankID.PayloadHelpers.check_requirement(:tokenStartRequired, :false)
{:ok, nil}

iex> ExBankID.PayloadHelpers.check_requirement(:tokenStartRequired, "true")
{:error, "Invalid requirement"}

iex> ExBankID.PayloadHelpers.check_requirement(:foo, "bar")
{:error, "Invalid requirement"}

Returns true when value is an oid

One wildcard "" is allowed from position 5 and forward ie. 1.2.752.78.

Examples

iex> ExBankID.PayloadHelpers.oid?("1.2.752.78.1.1")
true

iex> ExBankID.PayloadHelpers.oid?("1.2.752.78.1.2")
true

iex> ExBankID.PayloadHelpers.oid?("1.2.752.78.1.5")
true

iex> ExBankID.PayloadHelpers.oid?("1.2.752.71.1.3")
true

iex> ExBankID.PayloadHelpers.oid?("1.2.3.4.5")
true

iex> ExBankID.PayloadHelpers.oid?("1.2.3.4.10")
true

iex> ExBankID.PayloadHelpers.oid?("1.2.3.4.25")
true

iex> ExBankID.PayloadHelpers.oid?("1.2.752.71.1.3")
true

iex> ExBankID.PayloadHelpers.oid?("1.2.752.60.1.6")
true

iex> ExBankID.PayloadHelpers.oid?("1.2.752.*.1.6")
false

iex> ExBankID.PayloadHelpers.oid?("1.2.752.60.*")
true

iex> ExBankID.PayloadHelpers.oid?("1.2.752.60.1.*")
true