35 lines
1.4 KiB
Go
35 lines
1.4 KiB
Go
package delivery
|
|
|
|
import (
|
|
"strings"
|
|
"testing"
|
|
)
|
|
|
|
// 1356/AC6: the key part holds only bus key characters and parsing gives the fingerprint back; a src1 or malformed
|
|
// value is refused, naming it.
|
|
func TestFingerprintKeyPart(t *testing.T) {
|
|
fp := SourcePrefix2 + strings.Repeat("ab", 32)
|
|
part, err := FingerprintKeyPart(fp)
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
if len(part) != 64 || strings.Trim(part, "0123456789abcdef") != "" || !nameOK.MatchString(part) {
|
|
t.Errorf("key part %q is not 64 lowercase hex characters a key allows", part)
|
|
}
|
|
back, err := ParseFingerprintKeyPart(part)
|
|
if err != nil || back != fp {
|
|
t.Errorf("parse(%q) = %q, %v; want %q", part, back, err, fp)
|
|
}
|
|
src1 := SourcePrefix + strings.Repeat("c", 64)
|
|
for _, bad := range []string{src1, "src2:", "src2:xyz", "", "src2:" + strings.Repeat("A", 64), "src2:" + strings.Repeat("a", 63)} {
|
|
if _, err := FingerprintKeyPart(bad); err == nil || !strings.Contains(err.Error(), "\""+bad+"\"") {
|
|
t.Errorf("FingerprintKeyPart(%q) = %v, want a refusal naming it", bad, err)
|
|
}
|
|
}
|
|
for _, bad := range []string{src1, "src2:" + strings.Repeat("a", 64), strings.Repeat("a", 63), strings.Repeat("A", 64), "", "zz"} {
|
|
if _, err := ParseFingerprintKeyPart(bad); err == nil || !strings.Contains(err.Error(), "\""+bad+"\"") {
|
|
t.Errorf("ParseFingerprintKeyPart(%q) = %v, want a refusal naming it", bad, err)
|
|
}
|
|
}
|
|
}
|