From 19e87b75b75d3b93b1afbda92f26362a3acecd19 Mon Sep 17 00:00:00 2001 From: Filippo Valsorda Date: Tue, 2 Feb 2021 13:51:35 +0100 Subject: [PATCH] cmd/age: expand test vectors suite --- cmd/age/age.go | 3 +- cmd/age/age_test.go | 35 ++++++++++++++-- cmd/age/testdata/default_key.txt | 6 +++ cmd/age/testdata/default_password.txt | 1 + cmd/age/testdata/ed25519.age | Bin 0 -> 215 bytes cmd/age/testdata/ed25519_key.txt | 7 ++++ cmd/age/testdata/ed25519_key.txt.pub | 1 + cmd/age/testdata/empty_recipient_body_key.txt | 1 - .../testdata/fail_large_filekey_scrypt.age | Bin 258 -> 207 bytes .../fail_large_filekey_scrypt_password.txt | 1 - .../testdata/fail_large_filekey_x25519.age | Bin 277 -> 225 bytes .../fail_large_filekey_x25519_key.txt | 3 -- cmd/age/testdata/fail_scrypt_and_x25519.age | Bin 0 -> 283 bytes .../testdata/fail_scrypt_work_factor_23.age | Bin 0 -> 185 bytes cmd/age/testdata/nomatch_scrypt.age | Bin 0 -> 185 bytes cmd/age/testdata/nomatch_x25519.age | Bin 0 -> 203 bytes cmd/age/testdata/rsa.age | Bin 0 -> 644 bytes cmd/age/testdata/rsa_key.txt | 38 ++++++++++++++++++ cmd/age/testdata/rsa_key.txt.pub | 1 + cmd/age/testdata/scrypt_work_factor_10.age | Bin 0 -> 185 bytes primitives.go | 6 ++- scrypt.go | 4 +- testdata/keys.txt | 2 +- x25519.go | 4 +- 24 files changed, 97 insertions(+), 16 deletions(-) create mode 100644 cmd/age/testdata/default_key.txt create mode 100644 cmd/age/testdata/default_password.txt create mode 100644 cmd/age/testdata/ed25519.age create mode 100644 cmd/age/testdata/ed25519_key.txt create mode 100644 cmd/age/testdata/ed25519_key.txt.pub delete mode 100644 cmd/age/testdata/empty_recipient_body_key.txt delete mode 100644 cmd/age/testdata/fail_large_filekey_scrypt_password.txt delete mode 100644 cmd/age/testdata/fail_large_filekey_x25519_key.txt create mode 100644 cmd/age/testdata/fail_scrypt_and_x25519.age create mode 100644 cmd/age/testdata/fail_scrypt_work_factor_23.age create mode 100644 cmd/age/testdata/nomatch_scrypt.age create mode 100644 cmd/age/testdata/nomatch_x25519.age create mode 100644 cmd/age/testdata/rsa.age create mode 100644 cmd/age/testdata/rsa_key.txt create mode 100644 cmd/age/testdata/rsa_key.txt.pub create mode 100644 cmd/age/testdata/scrypt_work_factor_10.age diff --git a/cmd/age/age.go b/cmd/age/age.go index acfa1f8..953fbaf 100644 --- a/cmd/age/age.go +++ b/cmd/age/age.go @@ -264,7 +264,6 @@ func encryptPass(pass string, in io.Reader, out io.Writer, armor bool) { } func encrypt(recipients []age.Recipient, in io.Reader, out io.Writer, withArmor bool) { - ageEncrypt := age.Encrypt if withArmor { a := armor.NewWriter(out) defer func() { @@ -274,7 +273,7 @@ func encrypt(recipients []age.Recipient, in io.Reader, out io.Writer, withArmor }() out = a } - w, err := ageEncrypt(out, recipients...) + w, err := age.Encrypt(out, recipients...) if err != nil { logFatalf("Error: %v", err) } diff --git a/cmd/age/age_test.go b/cmd/age/age_test.go index ddbcaf8..8e1517e 100644 --- a/cmd/age/age_test.go +++ b/cmd/age/age_test.go @@ -7,6 +7,7 @@ package main import ( + "errors" "io/ioutil" "os" "path/filepath" @@ -17,24 +18,40 @@ import ( ) func TestVectors(t *testing.T) { + defaultIDs, err := parseIdentitiesFile("testdata/default_key.txt") + if err != nil { + t.Fatal(err) + } + password, err := ioutil.ReadFile("testdata/default_password.txt") + if err == nil { + p := strings.TrimSpace(string(password)) + i, err := age.NewScryptIdentity(p) + if err != nil { + t.Fatal(err) + } + defaultIDs = append(defaultIDs, i) + } + files, _ := filepath.Glob("testdata/*.age") for _, f := range files { _, name := filepath.Split(f) name = strings.TrimSuffix(name, ".age") expectFailure := strings.HasPrefix(name, "fail_") + expectNoMatch := strings.HasPrefix(name, "nomatch_") t.Run(name, func(t *testing.T) { - var identities []age.Identity + identities := defaultIDs ids, err := parseIdentitiesFile("testdata/" + name + "_key.txt") if err == nil { - identities = append(identities, ids...) + identities = ids } password, err := ioutil.ReadFile("testdata/" + name + "_password.txt") if err == nil { - i, err := age.NewScryptIdentity(string(password)) + p := strings.TrimSpace(string(password)) + i, err := age.NewScryptIdentity(p) if err != nil { t.Fatal(err) } - identities = append(identities, i) + identities = []age.Identity{i} } in, err := os.Open("testdata/" + name + ".age") @@ -46,6 +63,16 @@ func TestVectors(t *testing.T) { if err == nil { t.Fatal("expected Decrypt failure") } + if e := (&age.NoIdentityMatchError{}); errors.As(err, &e) { + t.Errorf("got ErrIncorrectIdentity, expected more specific error") + } + } else if expectNoMatch { + if err == nil { + t.Fatal("expected Decrypt failure") + } + if e := (&age.NoIdentityMatchError{}); !errors.As(err, &e) { + t.Errorf("expected ErrIncorrectIdentity, got %v", err) + } } else { if err != nil { t.Fatal(err) diff --git a/cmd/age/testdata/default_key.txt b/cmd/age/testdata/default_key.txt new file mode 100644 index 0000000..3195a61 --- /dev/null +++ b/cmd/age/testdata/default_key.txt @@ -0,0 +1,6 @@ +# created: 2021-02-02T13:09:43+01:00 +# public key: age1xmwwc06ly3ee5rytxm9mflaz2u56jjj36s0mypdrwsvlul66mv4q47ryef +AGE-SECRET-KEY-1EGTZVFFV20835NWYV6270LXYVK2VKNX2MMDKWYKLMGR48UAWX40Q2P2LM0 + +# TODO: regenerate empty_recipient_body.age +AGE-SECRET-KEY-1TRYTV7PQS5XPUYSTAQZCD7DQCWC7Q77YJD7UVFJRMW4J82Q6930QS70MRX diff --git a/cmd/age/testdata/default_password.txt b/cmd/age/testdata/default_password.txt new file mode 100644 index 0000000..adc6efa --- /dev/null +++ b/cmd/age/testdata/default_password.txt @@ -0,0 +1 @@ +now-major-idea-author-clerk-bronze-all-soul-uncover-glad diff --git a/cmd/age/testdata/ed25519.age b/cmd/age/testdata/ed25519.age new file mode 100644 index 0000000000000000000000000000000000000000..d6ddc32b9e9e96f0960beebbba48beb95e6f23d6 GIT binary patch literal 215 zcmV;|04V=qXJsvAZewzJaCB*JZZ2z>EiE8JYEL+EW;1qVI5Tf_ zaY$2UY-d+cHD^(8WinE4Z#i^kFM4NJMR_@NFjWc^=-IB)7bQyY9mj5JJYv>5pe0pj R6IvZKBL$hU;7-EnpP#eVN=pC$ literal 0 HcmV?d00001 diff --git a/cmd/age/testdata/ed25519_key.txt b/cmd/age/testdata/ed25519_key.txt new file mode 100644 index 0000000..df1d9ab --- /dev/null +++ b/cmd/age/testdata/ed25519_key.txt @@ -0,0 +1,7 @@ +-----BEGIN OPENSSH PRIVATE KEY----- +b3BlbnNzaC1rZXktdjEAAAAABG5vbmUAAAAEbm9uZQAAAAAAAAABAAAAMwAAAAtzc2gtZW +QyNTUxOQAAACB/aTuac9tiWRGrKEtixFlryYlGCPTOpdbmXN9RRmDF2gAAAKDgV/GC4Ffx +ggAAAAtzc2gtZWQyNTUxOQAAACB/aTuac9tiWRGrKEtixFlryYlGCPTOpdbmXN9RRmDF2g +AAAECvFoQXQzXgJLQ+Gz4PfEcfyZwC2gUjOiWTD//mTPyD8H9pO5pz22JZEasoS2LEWWvJ +iUYI9M6l1uZc31FGYMXaAAAAG2ZpbGlwcG9AQmlzdHJvbWF0aC1NMS5sb2NhbAEC +-----END OPENSSH PRIVATE KEY----- diff --git a/cmd/age/testdata/ed25519_key.txt.pub b/cmd/age/testdata/ed25519_key.txt.pub new file mode 100644 index 0000000..5be7d60 --- /dev/null +++ b/cmd/age/testdata/ed25519_key.txt.pub @@ -0,0 +1 @@ +ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIH9pO5pz22JZEasoS2LEWWvJiUYI9M6l1uZc31FGYMXa diff --git a/cmd/age/testdata/empty_recipient_body_key.txt b/cmd/age/testdata/empty_recipient_body_key.txt deleted file mode 100644 index 3366a0f..0000000 --- a/cmd/age/testdata/empty_recipient_body_key.txt +++ /dev/null @@ -1 +0,0 @@ -AGE-SECRET-KEY-1TRYTV7PQS5XPUYSTAQZCD7DQCWC7Q77YJD7UVFJRMW4J82Q6930QS70MRX diff --git a/cmd/age/testdata/fail_large_filekey_scrypt.age b/cmd/age/testdata/fail_large_filekey_scrypt.age index 2f04702742ae53d53ee78f20149ee5f976623768..4951b647b7ca94d34960cacb0f3b1526fa20274f 100644 GIT binary patch delta 183 zcmV;o07(CW0?z@EAb)x|RXJo?O;L4AF=j?&c64x2SxiMyATclsHB(kjP|c~@^VOH(mvYfox+dNwdZaB*mIb}&~qZ#FM7Z*zKhT19O!XGK** z3JNVPEg)G~cvE*zPDfBeVpcbIZ%uVYMpRjKK`=9MR9RIeZz l%nHRJ?S~0}X^-A6W~Szvd!J;>Nkv_$An|ULB*-CRt}=^;Ki>cV delta 234 zcmV6ATbIHc>WnSWtQ}c1cNaSx84_G-rBvM>%g)R&Q=iYhz_HYe+*h3N0-yAVyJT zVPjBHZ(?>vLS!&>bxBcfQAA`fPDMmgG)FW|W_fIDSZQ%NT5(!13d8w;aNELk7=Uz* kn9Ce9aq`9~tjx%NjCQmSs8Pmm%$iI0wl~}t*eUoWVK4nwCIA2c diff --git a/cmd/age/testdata/fail_large_filekey_scrypt_password.txt b/cmd/age/testdata/fail_large_filekey_scrypt_password.txt deleted file mode 100644 index 0249b11..0000000 --- a/cmd/age/testdata/fail_large_filekey_scrypt_password.txt +++ /dev/null @@ -1 +0,0 @@ -dog-old-little-breeze-novel-razor-battle-replace-lake-horse \ No newline at end of file diff --git a/cmd/age/testdata/fail_large_filekey_x25519.age b/cmd/age/testdata/fail_large_filekey_x25519.age index 100234e9f5976f5ef9d4f1a1fc9e967f35324bb2..e72482862f6f5f355954175719ab3a3f92f580ae 100644 GIT binary patch delta 201 zcmV;)05<=X0^tFWAb(YBQ)hB`Q$Zb)WYM=LoiPc(Kk3c$JbXYlf}fM^x8SCRPXQ%U;UX0OJEM2+=PJJ3=UXzGb~ D4dhHq delta 253 zcmVn#_by-MkcXLNqHB4e~MMX+scTZz0QB7q{K~pPe zZ%;{QcM4clFEmh+aO>s<3Q!!9% zO-XY(HEv6KGe|c|M`d$VcR>ntb9i-8a%wA7b#F&+bxuMtPj)a?b7(<1c5_Hab#iVn zM09sGWjA7LcR5iCEiEk|YEe#8MmAz>Z+dDnQASxxFEVLyc`$cXV^DQ^FF1BXQ#Vp) zOGr3(YEDTC6y7b~aJSw!0PaZA-ghqN(b3uBn(Z DG+JAi diff --git a/cmd/age/testdata/fail_large_filekey_x25519_key.txt b/cmd/age/testdata/fail_large_filekey_x25519_key.txt deleted file mode 100644 index 39c1631..0000000 --- a/cmd/age/testdata/fail_large_filekey_x25519_key.txt +++ /dev/null @@ -1,3 +0,0 @@ -# created: 2020-09-19T18:42:11+02:00 -# public key: age1uc8zlurjyjpenrslc2thyl28u7ylz6x8c2g9yphvjha6xm8ppf3slq0l25 -AGE-SECRET-KEY-1D8JAD8SXNFVQEFHAUNNAX4QCE3K5CUKMT7YYHNGTUSSP97YGWL4STV89UH diff --git a/cmd/age/testdata/fail_scrypt_and_x25519.age b/cmd/age/testdata/fail_scrypt_and_x25519.age new file mode 100644 index 0000000000000000000000000000000000000000..25f39f0816e16b497a0d47c1af51570fd97111c5 GIT binary patch literal 283 zcmYdHPt{G$OD?J`D9Oyv)5|YP*Do{V(zR2FFfuhYv{Wc?3NDH?EiO)S3NkDAC=My{ z2yo2}Of3(~4vGp(OAAiU4+u5ROe;2V$>;L(O|Hx{E6WN@3QS4N4bsnz@GMM9EYI>v z&j<^0H46%;^m7d=&kZ;9%m&#|47ODv+ux_8L_5jf+anHIpk`1y6%w_`s`RiWt literal 0 HcmV?d00001 diff --git a/cmd/age/testdata/fail_scrypt_work_factor_23.age b/cmd/age/testdata/fail_scrypt_work_factor_23.age new file mode 100644 index 0000000000000000000000000000000000000000..16846b17a5fe3e131db36f638f298dc87693efd1 GIT binary patch literal 185 zcmYdHPt{G$OD?J`D9Oyv)5|YP*Do{V(zR1428$^e2AYNExaSrJmF6V*nJ49jmRmR) z1}YdCbGZi?<>Xblm1Y~Jq`PJ(`v&BCn|WvFmip(KrhA5aRr#crmb)hh6_+_ia_Q>o zDwIW(`4@*Jxg_}}8&sHj6&tz*n`Ik@W%_#=dl*Hf1cyfDTPCHIB~|5ya@l@7dh^hn j#Vg9}c9vy$`~FtHdjHo=*}Zo zDwsP3c?E=JC3!jH1I?@ z@(s-h4a#u}FtR9dPV@;hDlV=p_DT!NNawOJj*Li5(a*^;)-QMSHOVtC%W?P2bP7&S z%W${INy`i{4K+{9%JMe$@a59g)m88}(he=CN-Zf4Fw!=63aE4sG;uZy^9_kKt12%r z4axK?2upUWG$~A}^yOmad9i+OI^VKVjmf_Pt!k1555IrwBX+Xm*Bjfk6+g|AI%*XG D7x_kb literal 0 HcmV?d00001 diff --git a/cmd/age/testdata/rsa.age b/cmd/age/testdata/rsa.age new file mode 100644 index 0000000000000000000000000000000000000000..a693af3fde5302105886140fc2b459d94e76bc9d GIT binary patch literal 644 zcmWO2JF=5d007X=0y|5q*E&oLa3PT9&G3CmZU~U@O=Sp#&n5hG2^6nz2in@&y#=_E zH{-Yk#}(M8$Ne5BV?$AR+FUW;6v{n27Jn z_4(#YQ)wHXSR`_VJz8n{9xZQ0?!gf}_4^~}gWQOTY%8Ad{e)vT*2B7{#Fo6POaG~Ylcp$|`C zqa@44qOT~E6TKDch%CEmDsFKpTIeU5S;Pm=^=`!NnhoJy3p&2&!+n7BDXQ1` zvH(=!qp1}Y6YSd-+qZdRQ|lct^$dhYbEOcRD2yVaW_R@+UN4R1pRhv)$85B=3&6YJ z9KyAzZs_J(qlmFvrgGAY!mSgrvguOhdU-wVLqb93ptFe4Hi_#~5MmEx6p6SV$E@!q z0)rdIkaL0T3LpyStq&4zN>dIf6?P=|N;HbY{68c~&@7QN(x-yzw2+BAHcQDK@@#45 z(&pIvR7tXhUM3UA@uYtX%IU}$$RjMZ0U>X sF}+8#>?{A-Ns{HZpADcMXUH||9 literal 0 HcmV?d00001 diff --git a/cmd/age/testdata/rsa_key.txt b/cmd/age/testdata/rsa_key.txt new file mode 100644 index 0000000..e7bd862 --- /dev/null +++ b/cmd/age/testdata/rsa_key.txt @@ -0,0 +1,38 @@ +-----BEGIN OPENSSH PRIVATE KEY----- +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 +-----END OPENSSH PRIVATE KEY----- diff --git a/cmd/age/testdata/rsa_key.txt.pub b/cmd/age/testdata/rsa_key.txt.pub new file mode 100644 index 0000000..6c63ce8 --- /dev/null +++ b/cmd/age/testdata/rsa_key.txt.pub @@ -0,0 +1 @@ +ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQDULTit0KUehbigbhsQaZo2oXLgMug8nTfnzDhcf5cEzdOJZyF6i5aRQbqbXIOYeTS3Shpp/iE6d60qi93JBBfveAZqr76tK7lVK8fstvAAGgbo9L9Ru5nhWX0HTlZUOodUT2E0rgAeoFzfvcZTaajzPmikrESmuaJLcdJ3crbCIyovkTxc85KbSn+Ky5grntdVR7GXve0HuIgwuSXGNyO0/hEQyhCEco4w53LZDXl3Dlxgb52u0QCsFFiQJmZ3RWnbCz2mNjM9Vo5KRt2pJ4u74lVsfXCvAqG4GsDd5WXCNRNaQ7gUdw1eSnvvcy3hxeEqLNN9tHaFCjEuyPfXfTVd3t0SlXreyoNbV75rYvZ2F6aLxyMMys+5bpnX0tu2LSq4Bvj5xIsBokjgEd3UXyj1eErsQdUJ0gghAMpXOjVbISwPAGMvUsH2unGbjvfaxnK57S7KAXOYznjhBf5ayIleAc+4LVD/KeMtGbpkyXXozC9jwH9cZBbGU4BtElAbzh8= diff --git a/cmd/age/testdata/scrypt_work_factor_10.age b/cmd/age/testdata/scrypt_work_factor_10.age new file mode 100644 index 0000000000000000000000000000000000000000..0e1d6ebd0361fd73427f467ef4b8fa4ee401dda5 GIT binary patch literal 185 zcmYdHPt{G$OD?J`D9Oyv)5|YP*Do{V(zR1428$^ax+dy}SCu%Y7o zDrEa-x(1k)=KEH9Te^FD7KfRe=bPjw29&xM83h`Yr6iYX8wPnh8|V0ha%IfV-xRPU ijJJGw45MkC$(Pr8u6y&Zrq~rR`_J0Im&