Add bypass (untested)

This commit is contained in:
2026-08-13 08:27:11 -07:00
parent f5e7b843b1
commit fb7290bfc2
2 changed files with 16 additions and 11 deletions

View File

@@ -6,6 +6,7 @@ module chacha20_poly1305_32_ll_core (
input logic [95:0] i_nonce,
input logic i_encrypt,
input logic i_bypass,
input logic [31:0] i_data,
input logic [1:0] i_countm1,
@@ -89,6 +90,7 @@ logic [511:0] post_skid_data;
logic [5:0] post_skid_countm1;
logic meta_fifo_encrypt;
logic meta_fifo_bypass;
logic meta_fifo_read;
logic meta_fifo_empty;
@@ -156,15 +158,15 @@ fifo_fwft #(
);
fifo_fwft #(
.DATA_WIDTH(1), // can increase when we have more metadata
.DATA_WIDTH(2), // can increase when we have more metadata
.DEPTH_WIDTH(4)
) u_meta_fifo (
.clk (i_clk),
.rst (i_rst),
.din (i_encrypt),
.din ({i_encrypt, i_bypass}),
.wr_en (sop),
.full (),
.dout (meta_fifo_encrypt),
.dout ({meta_fifo_encrypt, meta_fifo_bypass}),
.rd_en (meta_fifo_read),
.empty (meta_fifo_empty)
);
@@ -206,7 +208,8 @@ chacha20_poly1305_mid_fsm u_mid_fsm (
.i_chacha_valid (chacha_o_valid),
.o_chacha_ready (chacha_o_ready),
.i_metadata_din (meta_fifo_encrypt),
.i_metadata_encrypt (meta_fifo_encrypt),
.i_metadata_bypass (meta_fifo_bypass),
.o_metadata_read (meta_fifo_read),
.i_fifo_data (fifo_data),

View File

@@ -13,7 +13,8 @@ module chacha20_poly1305_mid_fsm (
output logic o_fifo_rd_en,
input logic [0:0] i_metadata_din,
input logic [0:0] i_metadata_encrypt,
input logic [0:0] i_metadata_bypass,
output logic o_metadata_read,
output logic [511:0] o_ciphertext,
@@ -30,10 +31,6 @@ module chacha20_poly1305_mid_fsm (
localparam R_MASK = 128'h0ffffffc0ffffffc0ffffffc0fffffff;
logic encrypt;
assign encrypt = i_metadata_din[0];
enum logic {IDLE, DATA} state, state_next;
logic [127:0] r, r_next;
@@ -87,13 +84,18 @@ always_comb begin
end
DATA: begin
if (encrypt) begin
if (i_metadata_encrypt) begin
o_ciphertext = i_fifo_data ^ i_chacha_state;
end else begin
o_ciphertext = i_fifo_data;
end
o_post = i_fifo_data ^ i_chacha_state;
// Bypass will still output a tag, but we can ignore it.
if (i_metadata_bypass) begin
o_post = i_fifo_data;
end else begin
o_post = i_fifo_data ^ i_chacha_state;
end
o_ciphertext_countm1 = i_fifo_countm1;
o_ciphertext_last = i_fifo_last;
o_ciphertext_valid = i_fifo_valid & i_chacha_valid;