feat(batch15): complete group 1 msgblock/consumerfilestore

This commit is contained in:
Joseph Doherty
2026-02-28 17:03:31 -05:00
parent 5367c3f34d
commit f36bc3111b
8 changed files with 813 additions and 10 deletions
@@ -983,6 +983,8 @@ public sealed class JetStreamFileStore : IStreamStore, IDisposable
mb.Seed = generatedSeed;
var nonceSize = GenEncryptionKey(_fcfg.Cipher, _prf(Encoding.UTF8.GetBytes($"{_cfg.Config.Name}:{mb.Index}"))).NonceSize;
mb.Nonce = encrypted[..nonceSize];
mb.Aek = GenEncryptionKey(_fcfg.Cipher, mb.Seed);
mb.Bek = GenBlockEncryptionKey(_fcfg.Cipher, mb.Seed, mb.Nonce);
return;
}
@@ -999,6 +1001,8 @@ public sealed class JetStreamFileStore : IStreamStore, IDisposable
var seed = kek.Open(ekey.AsSpan(0, ns), ekey.AsSpan(ns));
mb.Seed = seed;
mb.Nonce = ekey[..ns];
mb.Aek = GenEncryptionKey(_fcfg.Cipher, mb.Seed);
mb.Bek = GenBlockEncryptionKey(_fcfg.Cipher, mb.Seed, mb.Nonce);
}
internal MessageBlock RecoverMsgBlock(uint index)
@@ -2402,6 +2406,8 @@ public sealed class JetStreamFileStore : IStreamStore, IDisposable
var (key, seed, encrypted) = GenEncryptionKeys($"{_cfg.Config.Name}:{mb.Index}");
mb.Seed = seed;
mb.Nonce = encrypted[..key.NonceSize];
mb.Aek = GenEncryptionKey(_fcfg.Cipher, mb.Seed);
mb.Bek = GenBlockEncryptionKey(_fcfg.Cipher, mb.Seed, mb.Nonce);
var mdir = Path.Combine(_fcfg.StoreDir, FileStoreDefaults.MsgDir);
var keyFile = Path.Combine(mdir, string.Format(FileStoreDefaults.KeyScan, mb.Index));
@@ -2415,6 +2421,21 @@ public sealed class JetStreamFileStore : IStreamStore, IDisposable
}
}
internal Exception? RegenerateEncryptionKeysForBlock(MessageBlock mb)
{
ArgumentNullException.ThrowIfNull(mb);
_mu.EnterWriteLock();
try
{
return GenEncryptionKeysForBlock(mb);
}
finally
{
_mu.ExitWriteLock();
}
}
// Lock should be held.
private Exception? StoreRawMsgInternal(string subject, byte[]? hdr, byte[]? msg, ulong seq, long ts, long ttl, bool discardNewCheck)
{