Add keypair encoding, fix seckey size checks
Gajumaru Serialization Tests / tests (push) Successful in -2m51s
Gajumaru Serialization Tests / tests (push) Successful in -2m51s
This commit is contained in:
@@ -87,15 +87,16 @@ encode_decode_test_(Types) ->
|
||||
lists:foreach(
|
||||
fun({_Type, not_applicable}) -> ok;
|
||||
({Type, ByteSize}) ->
|
||||
CheckIlligalSize =
|
||||
CheckIllegalSize =
|
||||
fun(S) ->
|
||||
Key = <<42:S/unit:8>>,
|
||||
EncodedKey = ?TEST_MODULE:encode(Type, Key),
|
||||
?assertError(incorrect_size, ?TEST_MODULE:encode(Type, Key)),
|
||||
EncodedKey = ?TEST_MODULE:encode_(Type, Key), %% no size check
|
||||
{error, invalid_encoding} = ?TEST_MODULE:safe_decode(Type, EncodedKey)
|
||||
end,
|
||||
CheckIlligalSize(0),
|
||||
CheckIlligalSize(ByteSize - 1),
|
||||
CheckIlligalSize(ByteSize + 1)
|
||||
CheckIllegalSize(0),
|
||||
CheckIllegalSize(ByteSize - 1),
|
||||
CheckIllegalSize(ByteSize + 1)
|
||||
end,
|
||||
Types)
|
||||
end
|
||||
@@ -163,7 +164,30 @@ encode_decode_test_(Types) ->
|
||||
end, Types)
|
||||
end,
|
||||
Bins)
|
||||
end}
|
||||
end},
|
||||
{"Encode/decode keypairs",
|
||||
fun() ->
|
||||
KP1 = enacl:sign_keypair(),
|
||||
Enc1 = ?TEST_MODULE:encode_keypair(KP1),
|
||||
{ok, KP1} = ?TEST_MODULE:safe_decode_keypair(Enc1),
|
||||
KP2 = enacl:sign_keypair(),
|
||||
Enc2 = ?TEST_MODULE:encode_keypair(KP2),
|
||||
{ok, KP2} = ?TEST_MODULE:safe_decode_keypair(Enc2),
|
||||
BadEnc = Enc1#{~"priv" => maps:get(~"priv", Enc2)},
|
||||
{error, illegal_encoding} = ?TEST_MODULE:safe_decode_keypair(BadEnc)
|
||||
end
|
||||
},
|
||||
{"Encode AND decode both 32-byte and 64-byte account_seckey",
|
||||
fun() ->
|
||||
%% Originally, we could encode a 64-byte seckey, but decode would fail.
|
||||
#{public := Pub, secret := Sec} = enacl:sign_keypair(),
|
||||
<<Seed:32/binary, Pub:32/binary>> = Sec,
|
||||
EncSeed = ?TEST_MODULE:encode(account_seckey, Seed),
|
||||
EncSec = ?TEST_MODULE:encode(account_seckey, Sec),
|
||||
{ok, Seed} = ?TEST_MODULE:safe_decode(account_seckey, EncSeed),
|
||||
{ok, Sec} = ?TEST_MODULE:safe_decode(account_seckey, EncSec)
|
||||
end
|
||||
}
|
||||
].
|
||||
|
||||
known_types() ->
|
||||
|
||||
Reference in New Issue
Block a user