feat(batch15): complete group 1 msgblock/consumerfilestore
This commit is contained in:
@@ -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)
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user