Skip to content

Commit f578ade

Browse files
authored
Merge pull request #118 from CryptoLabInc/couragehong/fix/decryptscores-base64-encoding
fix(service): base64-encode envector cipher before Vault.DecryptScores
2 parents de17146 + c8664f5 commit f578ade

2 files changed

Lines changed: 14 additions & 3 deletions

File tree

internal/service/capture.go

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ package service
1010

1111
import (
1212
"context"
13+
"encoding/base64"
1314
"encoding/json"
1415
"errors"
1516
"fmt"
@@ -273,7 +274,11 @@ func (s *CaptureService) runNoveltyCheck(ctx context.Context, embeddingText stri
273274
return &domain.NoveltyInfo{Score: 1.0, Class: "novel"}, nil, nil
274275
}
275276

276-
entries, err := s.Vault.DecryptScores(ctx, string(blobs[0]), 3)
277+
// Vault.DecryptScores's `EncryptedBlobB64` is a proto3 string field —
278+
// envector's raw cipher bytes must be base64-encoded before sending.
279+
// Mirrors recall.searchSingle.
280+
encryptedBlobB64 := base64.StdEncoding.EncodeToString(blobs[0])
281+
entries, err := s.Vault.DecryptScores(ctx, encryptedBlobB64, 3)
277282
if err != nil || len(entries) == 0 {
278283
slog.Warn("novelty check: decrypt failed (non-fatal)", "err", err)
279284
return &domain.NoveltyInfo{Score: 1.0, Class: "novel"}, nil, nil

internal/service/recall.go

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -159,8 +159,14 @@ func (s *RecallService) searchSingle(ctx context.Context, vec []float32, topk in
159159
return nil, nil
160160
}
161161

162-
// Vault decrypt scores
163-
entries, err := s.Vault.DecryptScores(ctx, string(blobs[0]), topk)
162+
// Vault decrypt scores. The Vault RPC field is `EncryptedBlobB64`
163+
// (proto3 `string`, valid-UTF-8 only) — envector returns raw cipher
164+
// bytes, so we must base64-encode before sending. A direct
165+
// `string(blobs[0])` cast pushes random cipher bytes through the
166+
// proto3 string-validation path and trips
167+
// "grpc: error while marshaling: string field contains invalid UTF-8".
168+
encryptedBlobB64 := base64.StdEncoding.EncodeToString(blobs[0])
169+
entries, err := s.Vault.DecryptScores(ctx, encryptedBlobB64, topk)
164170
if err != nil {
165171
return nil, fmt.Errorf("vault decrypt scores: %w", err)
166172
}

0 commit comments

Comments
 (0)