From 99fa80c8f730e00ebc6655e72fbe95e3566e0a57 Mon Sep 17 00:00:00 2001 From: Gabriel Handford Date: Tue, 21 Jul 2020 13:25:07 -0700 Subject: [PATCH] encoding: Decode helpers (not must) --- box_test.go | 30 +++++++++++++++--------------- edx25519_test.go | 22 +++++++++++----------- encoding/encode.go | 16 ++++++++-------- encoding/encode_test.go | 12 ++++++++---- secretbox_test.go | 24 ++++++++++++------------ 5 files changed, 54 insertions(+), 50 deletions(-) diff --git a/box_test.go b/box_test.go index 78b4f04..4dc6958 100644 --- a/box_test.go +++ b/box_test.go @@ -40,21 +40,21 @@ func ExampleBoxSeal() { } func TestBox(t *testing.T) { - ka := keys.Bytes32(encoding.DecodeHex("77076d0a7318a57d3c16c17251b26645df4c2f87ebc0992ab177fba51db92c2a")) - kpa := keys.Bytes32(encoding.DecodeHex("8520f0098930a754748b7ddcb43ef75a0dbf3a0d26381af4eba4a98eaa9b4e6a")) - kb := keys.Bytes32(encoding.DecodeHex("5dab087e624a8a4b79e17f8b83800ee66f3bb1292618b6fd1c2f8b27ff88e0eb")) - kpb := keys.Bytes32(encoding.DecodeHex("de9edb7d7b7dc1b4d35b61c2ece435373f8343c85b78674dadfc7e146f882b4f")) - nonce := keys.Bytes24(encoding.DecodeHex("69696ee955b62b73cd62bda875fc73d68219e0036b7a0b37")) - plain := encoding.DecodeHex("be075fc53c81f2d5cf141316ebeb0c7b5228c52a4c62cbd44b66849b64244ffc" + - "e5ecbaaf33bd751a1ac728d45e6c61296cdc3c01233561f41db66cce314adb31" + - "0e3be8250c46f06dceea3a7fa1348057e2f6556ad6b1318a024a838f21af1fde" + - "048977eb48f59ffd4924ca1c60902e52f0a089bc76897040e082f93776384864" + - "5e0705") - cipher := encoding.DecodeHex("f3ffc7703f9400e52a7dfb4b3d3305d98e993b9f48681273c29650ba32fc76ce" + - "48332ea7164d96a4476fb8c531a1186ac0dfc17c98dce87b4da7f011ec48c972" + - "71d2c20f9b928fe2270d6fb863d51738b48eeee314a7cc8ab932164548e526ae" + - "90224368517acfeabd6bb3732bc0e9da99832b61ca01b6de56244a9e88d5f9b3" + - "7973f622a43d14a6599b1f654cb45a74e355a5") + ka := keys.Bytes32(encoding.MustDecode("77076d0a7318a57d3c16c17251b26645df4c2f87ebc0992ab177fba51db92c2a", encoding.Hex)) + kpa := keys.Bytes32(encoding.MustDecode("8520f0098930a754748b7ddcb43ef75a0dbf3a0d26381af4eba4a98eaa9b4e6a", encoding.Hex)) + kb := keys.Bytes32(encoding.MustDecode("5dab087e624a8a4b79e17f8b83800ee66f3bb1292618b6fd1c2f8b27ff88e0eb", encoding.Hex)) + kpb := keys.Bytes32(encoding.MustDecode("de9edb7d7b7dc1b4d35b61c2ece435373f8343c85b78674dadfc7e146f882b4f", encoding.Hex)) + nonce := keys.Bytes24(encoding.MustDecode("69696ee955b62b73cd62bda875fc73d68219e0036b7a0b37", encoding.Hex)) + plain := encoding.MustDecode("be075fc53c81f2d5cf141316ebeb0c7b5228c52a4c62cbd44b66849b64244ffc"+ + "e5ecbaaf33bd751a1ac728d45e6c61296cdc3c01233561f41db66cce314adb31"+ + "0e3be8250c46f06dceea3a7fa1348057e2f6556ad6b1318a024a838f21af1fde"+ + "048977eb48f59ffd4924ca1c60902e52f0a089bc76897040e082f93776384864"+ + "5e0705", encoding.Hex) + cipher := encoding.MustDecode("f3ffc7703f9400e52a7dfb4b3d3305d98e993b9f48681273c29650ba32fc76ce"+ + "48332ea7164d96a4476fb8c531a1186ac0dfc17c98dce87b4da7f011ec48c972"+ + "71d2c20f9b928fe2270d6fb863d51738b48eeee314a7cc8ab932164548e526ae"+ + "90224368517acfeabd6bb3732bc0e9da99832b61ca01b6de56244a9e88d5f9b3"+ + "7973f622a43d14a6599b1f654cb45a74e355a5", encoding.Hex) alice := keys.NewX25519KeyFromPrivateKey(ka) bob := keys.NewX25519KeyFromPrivateKey(kb) diff --git a/edx25519_test.go b/edx25519_test.go index f1f1fc1..ec41df3 100644 --- a/edx25519_test.go +++ b/edx25519_test.go @@ -77,17 +77,17 @@ func ExampleEdX25519Key_Sign() { } func TestSign(t *testing.T) { - // private := encoding.MustHex("b18e1d0045995ec3d010c387ccfeb984d783af8fbb0f40fa7db126d889f6dadd") - // public := encoding.MustHex("77f48b59caeda77751ed138b0ec667ff50f8768c25d48309a8f386a2bad187fb") - kp := encoding.DecodeHex("b18e1d0045995ec3d010c387ccfeb984d783af8fbb0f40fa7db126d889f6dadd" + - "77f48b59caeda77751ed138b0ec667ff50f8768c25d48309a8f386a2bad187fb") - msg := encoding.DecodeHex("916c7d1d268fc0e77c1bef238432573c39be577bbea0998936add2b50a653171" + - "ce18a542b0b7f96c1691a3be6031522894a8634183eda38798a0c5d5d79fbd01" + - "dd04a8646d71873b77b221998a81922d8105f892316369d5224c9983372d2313" + - "c6b1f4556ea26ba49d46e8b561e0fc76633ac9766e68e21fba7edca93c4c7460" + - "376d7f3ac22ff372c18f613f2ae2e856af40") - sig := encoding.DecodeHex("6bd710a368c1249923fc7a1610747403040f0cc30815a00f9ff548a896bbda0b" + - "4eb2ca19ebcf917f0f34200a9edbad3901b64ab09cc5ef7b9bcc3c40c0ff7509") + // private := encoding.MustDecode("b18e1d0045995ec3d010c387ccfeb984d783af8fbb0f40fa7db126d889f6dadd", encoding.Hex) + // public := encoding.MustDecode("77f48b59caeda77751ed138b0ec667ff50f8768c25d48309a8f386a2bad187fb", encoding.Hex) + kp := encoding.MustDecode("b18e1d0045995ec3d010c387ccfeb984d783af8fbb0f40fa7db126d889f6dadd"+ + "77f48b59caeda77751ed138b0ec667ff50f8768c25d48309a8f386a2bad187fb", encoding.Hex) + msg := encoding.MustDecode("916c7d1d268fc0e77c1bef238432573c39be577bbea0998936add2b50a653171"+ + "ce18a542b0b7f96c1691a3be6031522894a8634183eda38798a0c5d5d79fbd01"+ + "dd04a8646d71873b77b221998a81922d8105f892316369d5224c9983372d2313"+ + "c6b1f4556ea26ba49d46e8b561e0fc76633ac9766e68e21fba7edca93c4c7460"+ + "376d7f3ac22ff372c18f613f2ae2e856af40", encoding.Hex) + sig := encoding.MustDecode("6bd710a368c1249923fc7a1610747403040f0cc30815a00f9ff548a896bbda0b"+ + "4eb2ca19ebcf917f0f34200a9edbad3901b64ab09cc5ef7b9bcc3c40c0ff7509", encoding.Hex) key := keys.NewEdX25519KeyFromPrivateKey(keys.Bytes64(kp)) diff --git a/encoding/encode.go b/encoding/encode.go index 414f6f7..271a5ad 100644 --- a/encoding/encode.go +++ b/encoding/encode.go @@ -158,8 +158,8 @@ func MustDecode(s string, encoding Encoding) []byte { } // DecodeHex decode base16 (hex). -func DecodeHex(s string) []byte { - return MustDecode(s, Hex) +func DecodeHex(s string) ([]byte, error) { + return Decode(s, Hex) } // EncodeHex encode base16 (hex). @@ -168,8 +168,8 @@ func EncodeHex(b []byte) string { } // DecodeBase32 decode base32. -func DecodeBase32(s string) []byte { - return MustDecode(s, Base32) +func DecodeBase32(s string) ([]byte, error) { + return Decode(s, Base32) } // EncodeBase32 encode base32. @@ -178,8 +178,8 @@ func EncodeBase32(b []byte) string { } // DecodeBase62 decode base62. -func DecodeBase62(s string) []byte { - return MustDecode(s, Base62) +func DecodeBase62(s string) ([]byte, error) { + return Decode(s, Base62) } // EncodeBase62 encode base62. @@ -188,8 +188,8 @@ func EncodeBase62(b []byte) string { } // DecodeBase64 decode base64. -func DecodeBase64(s string) []byte { - return MustDecode(s, Base64) +func DecodeBase64(s string) ([]byte, error) { + return Decode(s, Base64) } // EncodeBase64 encode base64. diff --git a/encoding/encode_test.go b/encoding/encode_test.go index b960416..ee7ccc4 100644 --- a/encoding/encode_test.go +++ b/encoding/encode_test.go @@ -80,15 +80,19 @@ func TestEncodeBase64(t *testing.T) { func TestMustEncodeDecode(t *testing.T) { in := bytes.Repeat([]byte{0x01}, 32) - out := encoding.DecodeBase32(encoding.EncodeBase32(in)) + out, err := encoding.DecodeBase32(encoding.EncodeBase32(in)) + require.NoError(t, err) require.Equal(t, in, out) - out = encoding.DecodeBase62(encoding.EncodeBase62(in)) + out, err = encoding.DecodeBase62(encoding.EncodeBase62(in)) + require.NoError(t, err) require.Equal(t, in, out) - out = encoding.DecodeBase64(encoding.EncodeBase64(in)) + out, err = encoding.DecodeBase64(encoding.EncodeBase64(in)) + require.NoError(t, err) require.Equal(t, in, out) - out = encoding.DecodeHex(encoding.EncodeHex(in)) + out, err = encoding.DecodeHex(encoding.EncodeHex(in)) + require.NoError(t, err) require.Equal(t, in, out) } diff --git a/secretbox_test.go b/secretbox_test.go index b183f9d..8d8a8c7 100644 --- a/secretbox_test.go +++ b/secretbox_test.go @@ -19,18 +19,18 @@ func TestSecretBox(t *testing.T) { } func TestSecretBoxSeal(t *testing.T) { - key := keys.Bytes32(encoding.DecodeHex("1b27556473e985d462cd51197a9a46c76009549eac6474f206c4ee0844f68389")) - iv := keys.Bytes24(encoding.DecodeHex("69696ee955b62b73cd62bda875fc73d68219e0036b7a0b37")) - plain := encoding.DecodeHex("be075fc53c81f2d5cf141316ebeb0c7b5228c52a4c62cbd44b66849b64244ffc" + - "e5ecbaaf33bd751a1ac728d45e6c61296cdc3c01233561f41db66cce314adb31" + - "0e3be8250c46f06dceea3a7fa1348057e2f6556ad6b1318a024a838f21af1fde" + - "048977eb48f59ffd4924ca1c60902e52f0a089bc76897040e082f93776384864" + - "5e0705") - cipher := encoding.DecodeHex("f3ffc7703f9400e52a7dfb4b3d3305d98e993b9f48681273c29650ba32fc76ce" + - "48332ea7164d96a4476fb8c531a1186ac0dfc17c98dce87b4da7f011ec48c972" + - "71d2c20f9b928fe2270d6fb863d51738b48eeee314a7cc8ab932164548e526ae" + - "90224368517acfeabd6bb3732bc0e9da99832b61ca01b6de56244a9e88d5f9b3" + - "7973f622a43d14a6599b1f654cb45a74e355a5") + key := keys.Bytes32(encoding.MustDecode("1b27556473e985d462cd51197a9a46c76009549eac6474f206c4ee0844f68389", encoding.Hex)) + iv := keys.Bytes24(encoding.MustDecode("69696ee955b62b73cd62bda875fc73d68219e0036b7a0b37", encoding.Hex)) + plain := encoding.MustDecode("be075fc53c81f2d5cf141316ebeb0c7b5228c52a4c62cbd44b66849b64244ffc"+ + "e5ecbaaf33bd751a1ac728d45e6c61296cdc3c01233561f41db66cce314adb31"+ + "0e3be8250c46f06dceea3a7fa1348057e2f6556ad6b1318a024a838f21af1fde"+ + "048977eb48f59ffd4924ca1c60902e52f0a089bc76897040e082f93776384864"+ + "5e0705", encoding.Hex) + cipher := encoding.MustDecode("f3ffc7703f9400e52a7dfb4b3d3305d98e993b9f48681273c29650ba32fc76ce"+ + "48332ea7164d96a4476fb8c531a1186ac0dfc17c98dce87b4da7f011ec48c972"+ + "71d2c20f9b928fe2270d6fb863d51738b48eeee314a7cc8ab932164548e526ae"+ + "90224368517acfeabd6bb3732bc0e9da99832b61ca01b6de56244a9e88d5f9b3"+ + "7973f622a43d14a6599b1f654cb45a74e355a5", encoding.Hex) encrypted := keys.PrivSecretBoxSeal(plain, iv, key) require.Equal(t, iv[:], encrypted[:24])