diff --git a/lib/cose/cwt.ex b/lib/cose/cwt.ex index 0e93693..ecc0d21 100644 --- a/lib/cose/cwt.ex +++ b/lib/cose/cwt.ex @@ -87,7 +87,7 @@ defmodule COSE.CWT do end def peek_claims(token, custom_claims \\ %{}) do - msg = Sign1.decode(token) + {:ok, msg} = Sign1.decode_cbor(token) {:ok, cbor_claims, ""} = CBOR.decode(msg.payload.value) cbor_claims diff --git a/lib/cose/keys/ecc.ex b/lib/cose/keys/ecc.ex index 6a8240f..fc67891 100644 --- a/lib/cose/keys/ecc.ex +++ b/lib/cose/keys/ecc.ex @@ -18,7 +18,7 @@ defmodule COSE.Keys.ECC do {curve, cose_crv, key_len} = get_curve_info(alg) {pub, priv} = :crypto.generate_key(:ecdh, curve) - <<4, x::binary-size(key_len), y::binary-size(key_len)>> = pub + <<4, x::binary-size(^key_len), y::binary-size(^key_len)>> = pub %__MODULE__{ kty: :ecc, @@ -70,7 +70,7 @@ defmodule COSE.Keys.ECC do end case final_pub do - <<4, x::binary-size(key_len), y::binary-size(key_len)>> -> + <<4, x::binary-size(^key_len), y::binary-size(^key_len)>> -> %__MODULE__{ kty: :ecc, crv: cose_crv, @@ -128,7 +128,7 @@ defmodule COSE.Keys.ECC do defp bitstring_to_binary(val) when is_bitstring(val) do size = bit_size(val) - <> = val + <> = val bin end @@ -183,7 +183,7 @@ defimpl COSE.Keys.Key, for: COSE.Keys.ECC do def raw_to_der(raw_sig, key_size) do case raw_sig do - <> -> + <> -> (encode_integer(r) <> encode_integer(s)) |> wrap_sequence() |> then(&{:ok, &1}) diff --git a/lib/cose/keys/keys.ex b/lib/cose/keys/keys.ex index a72ad17..7156fc8 100644 --- a/lib/cose/keys/keys.ex +++ b/lib/cose/keys/keys.ex @@ -11,7 +11,6 @@ defmodule COSE.Keys do alias COSE.Keys.RSA @oid_rsa {1, 2, 840, 113_549, 1, 1, 1} - @oid_ec {1, 2, 840, 10045, 2, 1} def sign(key, digest_type, to_be_signed), do: Key.sign(key, digest_type, to_be_signed) @@ -68,9 +67,6 @@ defmodule COSE.Keys do {:ECPrivateKey, _, _, _, _, _} -> {:ok, ECC.from_record(pem_record)} - {:PrivateKeyInfo, _, {_, @oid_ec, _}, _, _} -> - {:ok, ECC.from_record(pem_record)} - _ -> false end diff --git a/lib/cose/messages/encrypt.ex b/lib/cose/messages/encrypt.ex index 7982f85..44d7e89 100644 --- a/lib/cose/messages/encrypt.ex +++ b/lib/cose/messages/encrypt.ex @@ -98,7 +98,7 @@ defmodule COSE.Messages.Encrypt do def split_encrypted_tag(ciphertext, tag_len \\ 8) do encrypted_len = byte_size(ciphertext) - tag_len - <> = ciphertext + <> = ciphertext {encrypted, tag} end end diff --git a/lib/cose/messages/encrypt0.ex b/lib/cose/messages/encrypt0.ex index cb2d731..bcbe95d 100644 --- a/lib/cose/messages/encrypt0.ex +++ b/lib/cose/messages/encrypt0.ex @@ -93,7 +93,7 @@ defmodule COSE.Messages.Encrypt0 do def split_encrypted_tag(ciphertext, tag_len \\ 16) do encrypted_len = byte_size(ciphertext) - tag_len - <> = ciphertext + <> = ciphertext {encrypted, tag} end end diff --git a/test/cwt_test.exs b/test/cwt_test.exs index f52b637..3670ade 100644 --- a/test/cwt_test.exs +++ b/test/cwt_test.exs @@ -59,5 +59,12 @@ defmodule COSETest.CWT do retrived_claims = cwt |> Map.delete(:issued_at) assert ^claims = retrived_claims end + + test "peek claims without verifying the signature", %{key: key, claims: claims} do + {:ok, token} = CWT.sign_encode_cbor(claims, key) + + retrived_claims = CWT.peek_claims(token) |> Map.delete(:issued_at) + assert ^claims = retrived_claims + end end end