From a0d0b09056d79fb7cbbf49c7bfaa075ebf44ad25 Mon Sep 17 00:00:00 2001 From: David Santiago Pinchao Date: Fri, 22 Jul 2022 08:50:11 -0500 Subject: [PATCH 1/2] adds security policy to repository (#53) --- SECURITY.md | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 SECURITY.md diff --git a/SECURITY.md b/SECURITY.md new file mode 100644 index 0000000..9afd9af --- /dev/null +++ b/SECURITY.md @@ -0,0 +1,5 @@ +# Reporting Security Issues + +To report a security issue, please email [oss@kommit.co](mailto:oss@kommit.co) with a description of the issue, the steps you took to create the issue, affected versions, and, if known, mitigations for the issue. + +If the issue is confirmed as a vulnerability, we will open a Security Advisory and acknowledge your contributions as part of it. From 10506024e1522181766fa19ecbeac2319d5a1e00 Mon Sep 17 00:00:00 2001 From: David Santiago Pinchao Date: Mon, 25 Jul 2022 13:56:17 -0500 Subject: [PATCH 2/2] Prepare release v0.3.1 (#54) --- CHANGELOG.md | 4 ++++ README.md | 38 +++++++++++++++++++------------------- mix.exs | 2 +- 3 files changed, 24 insertions(+), 20 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 31ced0f..cab453b 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,9 @@ # Changelog +## 0.3.1 (25.07.2022) + +- Add security policy to the repository + ## 0.3.0 (19.07.2022) * Automate publishing releases diff --git a/README.md b/README.md index 9008218..11e4fb7 100644 --- a/README.md +++ b/README.md @@ -13,7 +13,7 @@ XDR is an open data format, specified in [RFC 4506](http://tools.ietf.org/html/r ```elixir def deps do [ - {:elixir_xdr, "~> 0.3.0"} + {:elixir_xdr, "~> 0.3.1"} ] end ``` @@ -70,7 +70,7 @@ In most XDR types, we must pass the `type specification`, it is a struct (or map ```elixir iex(1)> enum_spec = XDR.Enum.new([false: 0, true: 1], nil) # preferred. -%XDR.Enum{declarations: [false: 0, true: 1], identifier: nil} +%XDR.Enum{declarations: [false: 0, true: 1], identifier: nil} iex(2)> XDR.Enum.decode_xdr(<<0, 0, 0, 1>>, enum_spec) iex(1)> enum_spec = %{declarations: [false: 0, true: 1]} @@ -190,7 +190,7 @@ More examples [here](https://hexdocs.pm/elixir_xdr/boolean.html). It is an extension of the Integer type defined above. Represents a 64-bit (8-byte) integer with values in a range of `[-9_223_372_036_854_775_808, 9_223_372_036_854_775_807]`. Encoding: -```elixir +```elixir iex(1)> XDR.HyperInt.new(9_223_372_036_854_775_807) |> XDR.HyperInt.encode_xdr() {:ok, <<127, 255, 255, 255, 255, 255, 255, 255>>} @@ -213,7 +213,7 @@ More examples [here](https://hexdocs.pm/elixir_xdr/hyper_integer.html). It is an extension of the Unsigned Integer type defined above. Represents a 64-bit (8-byte) unsigned integer with values in a range of `[0, 18_446_744_073_709_551_615]`. Encoding: -```elixir +```elixir iex(1)> XDR.HyperUInt.new(258963) |> XDR.HyperUInt.encode_xdr() {:ok, <<0, 0, 0, 0, 0, 3, 243, 147>>} @@ -236,12 +236,12 @@ More examples [here](https://hexdocs.pm/elixir_xdr/unsigned_hyper_integer.html). Represents a single-precision float value (32 bits, 4 bytes). Encoding: -```elixir +```elixir iex(1)> XDR.Float.new(3.46) |> XDR.Float.encode_xdr() {:ok, <<64, 93, 112, 164>>} iex(1)> XDR.Float.new(-2589) |> XDR.Float.encode_xdr!() -<<197, 33, 208, 0>> +<<197, 33, 208, 0>> ``` Decoding: @@ -264,7 +264,7 @@ iex(1)> XDR.DoubleFloat.new(0.33333333333333331482961625624739099293947219848632 {:ok, <<63, 213, 85, 85, 85, 85, 85, 85>>} iex(1)> XDR.DoubleFloat.new(258963) |> XDR.DoubleFloat.encode_xdr!() -<<65, 15, 156, 152, 0, 0, 0, 0>> +<<65, 15, 156, 152, 0, 0, 0, 0>> ``` Decoding: @@ -279,7 +279,7 @@ iex(1)> XDR.DoubleFloat.decode_xdr!(<<64, 11, 174, 20, 122, 225, 71, 174>>) More examples [here](https://hexdocs.pm/elixir_xdr/double_floating_point.html). ### XDR.FixedOpaque - Fixed-Length Opaque -Represents a fixed-length uninterpreted data (This data is called "opaque") that needs to be passed among machines. +Represents a fixed-length uninterpreted data (This data is called "opaque") that needs to be passed among machines. In the following examples we will use an opaque of 12-bytes length: @@ -295,7 +295,7 @@ iex(1)> XDR.FixedOpaque.new(<<72, 101, 108, 108, 111, 32, 119, 111, 114, 108, 10 Decoding: ```elixir iex(1)> XDR.FixedOpaque.decode_xdr(<<72, 101, 108, 108, 111, 32, 119, 111, 114, 108, 100, 0>>, %{length: 12}) -{:ok, {%XDR.FixedOpaque{length: 12, opaque: <<72, 101, 108, 108, 111, 32, 119, 111, 114, 108, 100, 0>>}, ""}} +{:ok, {%XDR.FixedOpaque{length: 12, opaque: <<72, 101, 108, 108, 111, 32, 119, 111, 114, 108, 100, 0>>}, ""}} iex(1)> opaque_spec = XDR.FixedOpaque.new(nil, 12) iex(2)> XDR.FixedOpaque.decode_xdr!(<<72, 101, 108, 108, 111, 32, 119, 111, 114, 108, 100, 0>>, opaque_spec) @@ -308,7 +308,7 @@ More examples [here](https://hexdocs.pm/elixir_xdr/fixed_length_opaque.html). Represents a sequence of n (numbered 0 through n-1) arbitrary bytes to be the number n encoded as an unsigned integer. If the maximum length is not specified, it is assumed to be 232 - 1. Encoding: -```elixir +```elixir iex(1)> XDR.VariableOpaque.new(<<1, 2, 3, 4, 5>>, 5) |> XDR.VariableOpaque.encode_xdr() {:ok, <<0, 0, 0, 5, 1, 2, 3, 4, 5, 0, 0, 0>>} @@ -354,7 +354,7 @@ More examples [here](https://hexdocs.pm/elixir_xdr/string.html). Represents a fixed-length array that contains elements with the same type. Encoding: -```elixir +```elixir iex(1)> XDR.FixedArray.new([1,2,3], XDR.Int, 3) |> XDR.FixedArray.encode_xdr() {:ok, <<0, 0, 0, 1, 0, 0, 0, 2, 0, 0, 0, 3>>} @@ -383,7 +383,7 @@ More examples [here](https://hexdocs.pm/elixir_xdr/fixed_length_array.html). Represents a variable-length array that contains elements with the same type. If the maximum length is not specified, it is assumed to be 232 - 1. Encoding: -```elixir +```elixir iex(1)> XDR.VariableArray.new([1,2,3], XDR.Int) |> XDR.VariableArray.encode_xdr() {:ok, <<0, 0, 0, 3, 0, 0, 0, 1, 0, 0, 0, 2, 0, 0, 0, 3>>} @@ -392,12 +392,12 @@ iex(1)> XDR.VariableArray.new(["The", "little", "prince"], XDR.String) |> XDR.Va ``` Decoding: ```elixir -iex(1)> XDR.VariableArray.decode_xdr(<<0, 0, 0, 3, 0, 0, 0, 1, 0, 0, 0, 2, 0, 0, 0, 3>>, +iex(1)> XDR.VariableArray.decode_xdr(<<0, 0, 0, 3, 0, 0, 0, 1, 0, 0, 0, 2, 0, 0, 0, 3>>, ...> %{type: XDR.Int, max_length: 3}) {:ok, {[%XDR.Int{datum: 1}, %XDR.Int{datum: 2}, %XDR.Int{datum: 3}], <<>>}} iex(1)> XDR.VariableArray.decode_xdr!(<<0, 0, 0, 3, 0, 0, 0, 3, 84, 104, 101, 0, 0, 0, 0, 6, 108, 105, -...> 116, 116, 108, 101, 0, 0, 0, 0, 0, 6, 112, 114, 105, 110, 99, 101, 0, 0>>, +...> 116, 116, 108, 101, 0, 0, 0, 0, 0, 6, 112, 114, 105, 110, 99, 101, 0, 0>>, ...> %{type: XDR.String, length: 3}) {[ %XDR.String{max_length: 4294967295, string: "The"}, @@ -442,9 +442,9 @@ iex(2)> XDR.Struct.decode_xdr!(<<0, 0, 0, 17, 84, 104, 101, 32, 108, 105, 116, 1 More examples [here](https://hexdocs.pm/elixir_xdr/structure.html). ### XDR.Union - Discriminated Union -A discriminated union is a type composed of a discriminant followed by a type selected from a set of prearranged types according to the value of the discriminant. The component types are called `arms` of the union and are preceded by the value of the discriminant that implies their encoding or decoding. +A discriminated union is a type composed of a discriminant followed by a type selected from a set of prearranged types according to the value of the discriminant. The component types are called `arms` of the union and are preceded by the value of the discriminant that implies their encoding or decoding. -The type of discriminant is either `XDR.Int`, `XDR.UInt`, or an `XDR.Enum` type. +The type of discriminant is either `XDR.Int`, `XDR.UInt`, or an `XDR.Enum` type. The `arms` can be a keyword list or a map and the value of each arm can be either a struct or a module of any XDR type. You can define a default arm using `:default` as a key (The default arm is optional). @@ -462,7 +462,7 @@ iex(1)> enum = %XDR.Enum{declarations: [case_1: 1, case_2: 2, case_3: 3]} iex(2)> arms = [case_1: %XDR.Int{datum: 123}, case_2: %XDR.Int{datum: 2}, case_3: XDR.Float, default: XDR.String] iex(3)> union = XDR.Union.new(enum, arms) iex(4)> XDR.Union.decode_xdr(<<0, 0, 0, 1, 0, 0, 0, 123>>, union) -{:ok, {{:case_1, %XDR.Int{datum: 123}}, ""}} +{:ok, {{:case_1, %XDR.Int{datum: 123}}, ""}} ``` More examples [here](https://hexdocs.pm/elixir_xdr/discriminated_union.html). @@ -471,7 +471,7 @@ More examples [here](https://hexdocs.pm/elixir_xdr/discriminated_union.html). Represents a 0-byte quantity. Encoding: -```elixir +```elixir iex(1)> XDR.Void.new(nil) |> XDR.Void.encode_xdr() {:ok, <<>>} @@ -506,7 +506,7 @@ Decoding: ```elixir iex(1)> optional_spec = XDR.Optional.new(XDR.String) iex(2)> XDR.Optional.decode_xdr(<<0, 0, 0, 1, 0, 0, 0, 19, 116, 104, 105, 115, 32, 105, 115, 32, 97, 110, 32, 101, 120, 97, 109, 112, 108, 101, 46, 0>>, optional_spec) -{:ok, {%XDR.Optional{type: %XDR.String{max_length: 4294967295, string: "this is an example"}}, ""}} +{:ok, {%XDR.Optional{type: %XDR.String{max_length: 4294967295, string: "this is an example"}}, ""}} iex(1)> optional_spec = XDR.Optional.new(XDR.String) iex(2)> XDR.Optional.decode_xdr!(<<0, 0, 0, 0>>, optional_spec) diff --git a/mix.exs b/mix.exs index baa590f..907b19e 100644 --- a/mix.exs +++ b/mix.exs @@ -2,7 +2,7 @@ defmodule XDR.MixProject do use Mix.Project @github_url "https://github.com/kommitters/elixir_xdr" - @version "0.3.0" + @version "0.3.1" def project do [