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 [95:0] i_nonce,
input logic i_encrypt, input logic i_encrypt,
input logic i_bypass,
input logic [31:0] i_data, input logic [31:0] i_data,
input logic [1:0] i_countm1, input logic [1:0] i_countm1,
@@ -89,6 +90,7 @@ logic [511:0] post_skid_data;
logic [5:0] post_skid_countm1; logic [5:0] post_skid_countm1;
logic meta_fifo_encrypt; logic meta_fifo_encrypt;
logic meta_fifo_bypass;
logic meta_fifo_read; logic meta_fifo_read;
logic meta_fifo_empty; logic meta_fifo_empty;
@@ -156,15 +158,15 @@ fifo_fwft #(
); );
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) .DEPTH_WIDTH(4)
) u_meta_fifo ( ) u_meta_fifo (
.clk (i_clk), .clk (i_clk),
.rst (i_rst), .rst (i_rst),
.din (i_encrypt), .din ({i_encrypt, i_bypass}),
.wr_en (sop), .wr_en (sop),
.full (), .full (),
.dout (meta_fifo_encrypt), .dout ({meta_fifo_encrypt, meta_fifo_bypass}),
.rd_en (meta_fifo_read), .rd_en (meta_fifo_read),
.empty (meta_fifo_empty) .empty (meta_fifo_empty)
); );
@@ -206,7 +208,8 @@ chacha20_poly1305_mid_fsm u_mid_fsm (
.i_chacha_valid (chacha_o_valid), .i_chacha_valid (chacha_o_valid),
.o_chacha_ready (chacha_o_ready), .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), .o_metadata_read (meta_fifo_read),
.i_fifo_data (fifo_data), .i_fifo_data (fifo_data),

View File

@@ -13,7 +13,8 @@ module chacha20_poly1305_mid_fsm (
output logic o_fifo_rd_en, 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 o_metadata_read,
output logic [511:0] o_ciphertext, output logic [511:0] o_ciphertext,
@@ -30,10 +31,6 @@ module chacha20_poly1305_mid_fsm (
localparam R_MASK = 128'h0ffffffc0ffffffc0ffffffc0fffffff; localparam R_MASK = 128'h0ffffffc0ffffffc0ffffffc0fffffff;
logic encrypt;
assign encrypt = i_metadata_din[0];
enum logic {IDLE, DATA} state, state_next; enum logic {IDLE, DATA} state, state_next;
logic [127:0] r, r_next; logic [127:0] r, r_next;
@@ -87,13 +84,18 @@ always_comb begin
end end
DATA: begin DATA: begin
if (encrypt) begin if (i_metadata_encrypt) begin
o_ciphertext = i_fifo_data ^ i_chacha_state; o_ciphertext = i_fifo_data ^ i_chacha_state;
end else begin end else begin
o_ciphertext = i_fifo_data; o_ciphertext = i_fifo_data;
end 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_countm1 = i_fifo_countm1;
o_ciphertext_last = i_fifo_last; o_ciphertext_last = i_fifo_last;
o_ciphertext_valid = i_fifo_valid & i_chacha_valid; o_ciphertext_valid = i_fifo_valid & i_chacha_valid;