#define BCP_CIPHER 1
#define BCP_MAC 2
+#define BCP_BLKC 4
struct algswitch {
const gchash *h; /* Hash function */
const struct bulkcrypto *bulk; /* Bulk crypto transformation */
const gccipher *c; /* Symmetric encryption scheme */
const gcmac *m; /* Message authentication code */
+ const gccipher *b; /* Block cipher */
size_t hashsz; /* Hash output size */
size_t tagsz; /* Length to truncate MAC tags */
size_t expsz; /* Size of data to process */
- size_t cksz, mksz; /* Key lengths for @c@ and @m@ */
+ size_t cksz, mksz, bksz; /* Key lengths for things */
};
typedef struct kdata {
struct ksdir {
gcipher *c; /* Keyset cipher for encryption */
gmac *m; /* Keyset MAC for integrity */
+ gcipher *b; /* Block cipher, just in case */
} in, out;
uint32 oseq; /* Outbound sequence number */
seqwin iseq; /* Inbound sequence number */