mirror of
https://github.com/profullstack/agentbbs.git
synced 2026-08-13 14:27:27 +00:00
Merge pull request #18 from profullstack/fix/qryptinvite-flaky-tamper-test
Fix flaky TestTamperedTokenFails (qryptinvite) reddening main CI
This commit is contained in:
commit
7a90c50242
1 changed files with 10 additions and 16 deletions
|
|
@ -148,8 +148,16 @@ func TestTamperedTokenFails(t *testing.T) {
|
||||||
t.Fatal("original token failed to verify")
|
t.Fatal("original token failed to verify")
|
||||||
}
|
}
|
||||||
|
|
||||||
// Tampering with the signature segment must also fail.
|
// Tampering with the signature segment must also fail. Corrupt a DECODED
|
||||||
badSig := parts[0] + "." + parts[1] + "." + flipLastChar(parts[2])
|
// signature byte (not a base64 char): flipping the last base64 char can land
|
||||||
|
// on the unused trailing bits of a 64-byte signature, which decode back to
|
||||||
|
// the same bytes and still verify — that made this test flaky.
|
||||||
|
sigBytes, err := base64.RawURLEncoding.DecodeString(parts[2])
|
||||||
|
if err != nil || len(sigBytes) == 0 {
|
||||||
|
t.Fatalf("decode signature segment: %v", err)
|
||||||
|
}
|
||||||
|
sigBytes[0] ^= 0xFF
|
||||||
|
badSig := parts[0] + "." + parts[1] + "." + base64.RawURLEncoding.EncodeToString(sigBytes)
|
||||||
if verifySig(badSig, pub) {
|
if verifySig(badSig, pub) {
|
||||||
t.Fatal("token with corrupted signature verified but should have failed")
|
t.Fatal("token with corrupted signature verified but should have failed")
|
||||||
}
|
}
|
||||||
|
|
@ -168,20 +176,6 @@ func verifySig(token string, pub ed25519.PublicKey) bool {
|
||||||
return ed25519.Verify(pub, []byte(parts[0]+"."+parts[1]), sig)
|
return ed25519.Verify(pub, []byte(parts[0]+"."+parts[1]), sig)
|
||||||
}
|
}
|
||||||
|
|
||||||
func flipLastChar(s string) string {
|
|
||||||
if s == "" {
|
|
||||||
return s
|
|
||||||
}
|
|
||||||
b := []byte(s)
|
|
||||||
last := b[len(b)-1]
|
|
||||||
if last == 'A' {
|
|
||||||
b[len(b)-1] = 'B'
|
|
||||||
} else {
|
|
||||||
b[len(b)-1] = 'A'
|
|
||||||
}
|
|
||||||
return string(b)
|
|
||||||
}
|
|
||||||
|
|
||||||
func TestParsePrivateKeyAcceptsSeedAndFull(t *testing.T) {
|
func TestParsePrivateKeyAcceptsSeedAndFull(t *testing.T) {
|
||||||
_, priv, err := ed25519.GenerateKey(nil)
|
_, priv, err := ed25519.GenerateKey(nil)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue