Skip to content

Commit 8d7192c

Browse files
committed
Move things out of header files after key file split
Some definitions should be in the .c files rather than in the header files since they are just used in one file.
1 parent 8c40309 commit 8d7192c

File tree

5 files changed

+43
-44
lines changed

5 files changed

+43
-44
lines changed

contrib/pg_tde/src/access/pg_tde_tdemap.c

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,7 @@
3939
#endif
4040

4141
#define PG_TDE_FILEMAGIC 0x03454454 /* version ID value = TDE 03 */
42+
#define PG_TDE_MAP_FILENAME "%d_keys"
4243

4344
#define MAP_ENTRY_SIZE sizeof(TDEMapEntry)
4445
#define TDE_FILE_HEADER_SIZE sizeof(TDEFileHeader)
@@ -49,6 +50,19 @@ typedef struct TDEFileHeader
4950
TDESignedPrincipalKeyInfo signed_key_info;
5051
} TDEFileHeader;
5152

53+
/* We do not need the dbOid since the entries are stored in a file per db */
54+
typedef struct TDEMapEntry
55+
{
56+
Oid spcOid;
57+
RelFileNumber relNumber;
58+
uint32 type;
59+
InternalKey enc_key;
60+
/* IV and tag used when encrypting the key itself */
61+
unsigned char entry_iv[MAP_ENTRY_IV_SIZE];
62+
unsigned char aead_tag[MAP_ENTRY_AEAD_TAG_SIZE];
63+
} TDEMapEntry;
64+
65+
static void pg_tde_set_db_file_path(Oid dbOid, char *path);
5266
static bool pg_tde_find_map_entry(const RelFileLocator *rlocator, TDEMapEntryType key_type, char *db_map_path, TDEMapEntry *map_entry);
5367
static InternalKey *tde_decrypt_rel_key(TDEPrincipalKey *principal_key, TDEMapEntry *map_entry);
5468
static int pg_tde_open_file_basic(const char *tde_filename, int fileFlags, bool ignore_missing);
@@ -360,6 +374,15 @@ pg_tde_delete_principal_key(Oid dbOid)
360374

361375
#endif /* !FRONTEND */
362376

377+
static void
378+
pg_tde_set_db_file_path(Oid dbOid, char *path)
379+
{
380+
char *fname = psprintf(PG_TDE_MAP_FILENAME, dbOid);
381+
382+
join_path_components(path, pg_tde_get_data_dir(), fname);
383+
pfree(fname);
384+
}
385+
363386
void
364387
pg_tde_sign_principal_key_info(TDESignedPrincipalKeyInfo *signed_key_info, const TDEPrincipalKey *principal_key)
365388
{

contrib/pg_tde/src/access/pg_tde_xlog_keys.c

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,21 @@
2626

2727
#define MaxXLogRecPtr (~(XLogRecPtr)0)
2828

29+
typedef struct WalKeyFileHeader
30+
{
31+
int32 file_version;
32+
TDESignedPrincipalKeyInfo signed_key_info;
33+
} WalKeyFileHeader;
34+
35+
typedef struct WalKeyFileEntry
36+
{
37+
uint32 type;
38+
WalEncryptionKey enc_key;
39+
/* IV and tag used when encrypting the key itself */
40+
unsigned char entry_iv[MAP_ENTRY_IV_SIZE];
41+
unsigned char aead_tag[MAP_ENTRY_AEAD_TAG_SIZE];
42+
} WalKeyFileEntry;
43+
2944
static WALKeyCacheRec *tde_wal_key_cache = NULL;
3045
static WALKeyCacheRec *tde_wal_key_last_rec = NULL;
3146

contrib/pg_tde/src/include/access/pg_tde_tdemap.h

Lines changed: 0 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -37,34 +37,6 @@ typedef struct
3737
unsigned char aead_tag[MAP_ENTRY_AEAD_TAG_SIZE];
3838
} TDESignedPrincipalKeyInfo;
3939

40-
/* We do not need the dbOid since the entries are stored in a file per db */
41-
typedef struct TDEMapEntry
42-
{
43-
Oid spcOid;
44-
RelFileNumber relNumber;
45-
uint32 type;
46-
InternalKey enc_key;
47-
/* IV and tag used when encrypting the key itself */
48-
unsigned char entry_iv[MAP_ENTRY_IV_SIZE];
49-
unsigned char aead_tag[MAP_ENTRY_AEAD_TAG_SIZE];
50-
} TDEMapEntry;
51-
52-
typedef struct XLogRelKey
53-
{
54-
RelFileLocator rlocator;
55-
} XLogRelKey;
56-
57-
#define PG_TDE_MAP_FILENAME "%d_keys"
58-
59-
static inline void
60-
pg_tde_set_db_file_path(Oid dbOid, char *path)
61-
{
62-
char *fname = psprintf(PG_TDE_MAP_FILENAME, dbOid);
63-
64-
join_path_components(path, pg_tde_get_data_dir(), fname);
65-
pfree(fname);
66-
}
67-
6840
extern void pg_tde_save_smgr_key(RelFileLocator rel, const InternalKey *key);
6941
extern bool pg_tde_has_smgr_key(RelFileLocator rel);
7042
extern InternalKey *pg_tde_get_smgr_key(RelFileLocator rel);

contrib/pg_tde/src/include/access/pg_tde_xlog.h

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,11 @@
1919
/* ID 140 is registered for Percona TDE extension: https://wiki.postgresql.org/wiki/CustomWALResourceManagers */
2020
#define RM_TDERMGR_ID 140
2121

22+
typedef struct XLogRelKey
23+
{
24+
RelFileLocator rlocator;
25+
} XLogRelKey;
26+
2227
extern void RegisterTdeRmgr(void);
2328

2429
#endif /* !FRONTEND */

contrib/pg_tde/src/include/access/pg_tde_xlog_keys.h

Lines changed: 0 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,6 @@
55

66
#include "access/pg_tde_tdemap.h"
77
#include "catalog/tde_principal_key.h"
8-
#include "common/pg_tde_utils.h"
98

109
typedef struct WalEncryptionKey
1110
{
@@ -16,21 +15,6 @@ typedef struct WalEncryptionKey
1615
XLogRecPtr start_lsn;
1716
} WalEncryptionKey;
1817

19-
typedef struct WalKeyFileEntry
20-
{
21-
uint32 type;
22-
WalEncryptionKey enc_key;
23-
/* IV and tag used when encrypting the key itself */
24-
unsigned char entry_iv[MAP_ENTRY_IV_SIZE];
25-
unsigned char aead_tag[MAP_ENTRY_AEAD_TAG_SIZE];
26-
} WalKeyFileEntry;
27-
28-
typedef struct WalKeyFileHeader
29-
{
30-
int32 file_version;
31-
TDESignedPrincipalKeyInfo signed_key_info;
32-
} WalKeyFileHeader;
33-
3418
/*
3519
* TODO: For now it's a simple linked list which is no good. So consider having
3620
* dedicated WAL keys cache inside some proper data structure.

0 commit comments

Comments
 (0)