fix(manifest): reject invalid public keys in verify
Co-Authored-By: Virgil <virgil@lethean.io>
This commit is contained in:
parent
dd71070a9d
commit
0fd4386e20
3 changed files with 26 additions and 0 deletions
|
|
@ -63,3 +63,17 @@ func TestLoadVerified_Bad_Tampered_Good(t *testing.T) {
|
||||||
_, err := LoadVerified(fs, ".", pub)
|
_, err := LoadVerified(fs, ".", pub)
|
||||||
assert.Error(t, err)
|
assert.Error(t, err)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func TestLoadVerified_Bad_InvalidPublicKey_Good(t *testing.T) {
|
||||||
|
fs := io.NewMockMedium()
|
||||||
|
fs.Files[".core/manifest.yaml"] = `
|
||||||
|
code: signed-app
|
||||||
|
name: Signed
|
||||||
|
version: 1.0.0
|
||||||
|
sign: c2ln
|
||||||
|
`
|
||||||
|
|
||||||
|
_, err := LoadVerified(fs, ".", ed25519.PublicKey([]byte("short")))
|
||||||
|
assert.Error(t, err)
|
||||||
|
assert.Contains(t, err.Error(), "invalid public key length")
|
||||||
|
}
|
||||||
|
|
|
||||||
|
|
@ -45,6 +45,9 @@ func Verify(m *Manifest, pub ed25519.PublicKey) (bool, error) {
|
||||||
if m.Sign == "" {
|
if m.Sign == "" {
|
||||||
return false, coreerr.E("manifest.Verify", "no signature present", nil)
|
return false, coreerr.E("manifest.Verify", "no signature present", nil)
|
||||||
}
|
}
|
||||||
|
if len(pub) != ed25519.PublicKeySize {
|
||||||
|
return false, coreerr.E("manifest.Verify", "invalid public key length", nil)
|
||||||
|
}
|
||||||
sig, err := base64.StdEncoding.DecodeString(m.Sign)
|
sig, err := base64.StdEncoding.DecodeString(m.Sign)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return false, coreerr.E("manifest.Verify", "decode failed", err)
|
return false, coreerr.E("manifest.Verify", "decode failed", err)
|
||||||
|
|
|
||||||
|
|
@ -73,3 +73,12 @@ func TestVerify_Bad_NilManifest_Good(t *testing.T) {
|
||||||
assert.False(t, ok)
|
assert.False(t, ok)
|
||||||
assert.Contains(t, err.Error(), "nil manifest")
|
assert.Contains(t, err.Error(), "nil manifest")
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func TestVerify_Bad_InvalidPublicKey_Good(t *testing.T) {
|
||||||
|
m := &Manifest{Code: "test-app", Sign: "c2ln"}
|
||||||
|
|
||||||
|
ok, err := Verify(m, ed25519.PublicKey([]byte("short")))
|
||||||
|
assert.Error(t, err)
|
||||||
|
assert.False(t, ok)
|
||||||
|
assert.Contains(t, err.Error(), "invalid public key length")
|
||||||
|
}
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue