Get poly1305 core to kind of work
This commit is contained in:
146
ChaCha20_Poly1305_64/doc/poly1305.drawio
Normal file
146
ChaCha20_Poly1305_64/doc/poly1305.drawio
Normal file
@@ -0,0 +1,146 @@
|
||||
<mxfile host="Electron" agent="Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) draw.io/26.2.2 Chrome/134.0.6998.178 Electron/35.1.2 Safari/537.36" version="26.2.2">
|
||||
<diagram name="Page-1" id="gIy_vrPza4QP03Kn0wfk">
|
||||
<mxGraphModel dx="655" dy="442" grid="1" gridSize="10" guides="1" tooltips="1" connect="1" arrows="1" fold="1" page="1" pageScale="1" pageWidth="850" pageHeight="1100" math="0" shadow="0">
|
||||
<root>
|
||||
<mxCell id="0" />
|
||||
<mxCell id="1" parent="0" />
|
||||
<mxCell id="GA09nmFLpfHeItamLD5O-24" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=1;exitY=0.25;exitDx=0;exitDy=0;entryX=0.5;entryY=1;entryDx=0;entryDy=0;" edge="1" parent="1" source="GA09nmFLpfHeItamLD5O-1" target="GA09nmFLpfHeItamLD5O-21">
|
||||
<mxGeometry relative="1" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="GA09nmFLpfHeItamLD5O-25" value="r" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];" vertex="1" connectable="0" parent="GA09nmFLpfHeItamLD5O-24">
|
||||
<mxGeometry x="0.5579" y="-1" relative="1" as="geometry">
|
||||
<mxPoint x="9" y="5" as="offset" />
|
||||
</mxGeometry>
|
||||
</mxCell>
|
||||
<mxCell id="GA09nmFLpfHeItamLD5O-35" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=1;exitY=0.75;exitDx=0;exitDy=0;entryX=0.5;entryY=1;entryDx=0;entryDy=0;" edge="1" parent="1" source="GA09nmFLpfHeItamLD5O-1" target="GA09nmFLpfHeItamLD5O-34">
|
||||
<mxGeometry relative="1" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="GA09nmFLpfHeItamLD5O-38" value="s" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];" vertex="1" connectable="0" parent="GA09nmFLpfHeItamLD5O-35">
|
||||
<mxGeometry x="-0.6624" y="1" relative="1" as="geometry">
|
||||
<mxPoint x="-9" y="-9" as="offset" />
|
||||
</mxGeometry>
|
||||
</mxCell>
|
||||
<mxCell id="GA09nmFLpfHeItamLD5O-1" value="r/s" style="rounded=0;whiteSpace=wrap;html=1;" vertex="1" parent="1">
|
||||
<mxGeometry x="360" y="200" width="80" height="40" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="GA09nmFLpfHeItamLD5O-2" value="" style="endArrow=classic;html=1;rounded=0;entryX=0;entryY=0.25;entryDx=0;entryDy=0;" edge="1" parent="1" target="GA09nmFLpfHeItamLD5O-1">
|
||||
<mxGeometry width="50" height="50" relative="1" as="geometry">
|
||||
<mxPoint x="320" y="210" as="sourcePoint" />
|
||||
<mxPoint x="410" y="270" as="targetPoint" />
|
||||
</mxGeometry>
|
||||
</mxCell>
|
||||
<mxCell id="GA09nmFLpfHeItamLD5O-3" value="otk" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];" vertex="1" connectable="0" parent="GA09nmFLpfHeItamLD5O-2">
|
||||
<mxGeometry x="-0.3946" y="1" relative="1" as="geometry">
|
||||
<mxPoint x="-22" as="offset" />
|
||||
</mxGeometry>
|
||||
</mxCell>
|
||||
<mxCell id="GA09nmFLpfHeItamLD5O-10" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=0;entryY=0.5;entryDx=0;entryDy=0;" edge="1" parent="1" source="GA09nmFLpfHeItamLD5O-4" target="GA09nmFLpfHeItamLD5O-6">
|
||||
<mxGeometry relative="1" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="GA09nmFLpfHeItamLD5O-4" value="64-&gt;128" style="rounded=0;whiteSpace=wrap;html=1;" vertex="1" parent="1">
|
||||
<mxGeometry x="175" y="130" width="50" height="20" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="GA09nmFLpfHeItamLD5O-5" value="" style="endArrow=classic;html=1;rounded=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;" edge="1" parent="1" target="GA09nmFLpfHeItamLD5O-4">
|
||||
<mxGeometry width="50" height="50" relative="1" as="geometry">
|
||||
<mxPoint x="120" y="140" as="sourcePoint" />
|
||||
<mxPoint x="290" y="110" as="targetPoint" />
|
||||
</mxGeometry>
|
||||
</mxCell>
|
||||
<mxCell id="GA09nmFLpfHeItamLD5O-15" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=0;entryY=0.5;entryDx=0;entryDy=0;" edge="1" parent="1" source="GA09nmFLpfHeItamLD5O-6" target="GA09nmFLpfHeItamLD5O-14">
|
||||
<mxGeometry relative="1" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="GA09nmFLpfHeItamLD5O-40" value="data_one_extended" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];" vertex="1" connectable="0" parent="GA09nmFLpfHeItamLD5O-15">
|
||||
<mxGeometry x="-0.3532" y="-1" relative="1" as="geometry">
|
||||
<mxPoint x="7" y="29" as="offset" />
|
||||
</mxGeometry>
|
||||
</mxCell>
|
||||
<mxCell id="GA09nmFLpfHeItamLD5O-6" value="bit add" style="ellipse;whiteSpace=wrap;html=1;aspect=fixed;" vertex="1" parent="1">
|
||||
<mxGeometry x="240" y="120" width="40" height="40" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="GA09nmFLpfHeItamLD5O-8" value="" style="endArrow=classic;html=1;rounded=0;entryX=0.5;entryY=0;entryDx=0;entryDy=0;" edge="1" parent="1" target="GA09nmFLpfHeItamLD5O-6">
|
||||
<mxGeometry width="50" height="50" relative="1" as="geometry">
|
||||
<mxPoint x="260" y="80" as="sourcePoint" />
|
||||
<mxPoint x="290" y="70" as="targetPoint" />
|
||||
</mxGeometry>
|
||||
</mxCell>
|
||||
<mxCell id="GA09nmFLpfHeItamLD5O-9" value="tkeep" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];" vertex="1" connectable="0" parent="GA09nmFLpfHeItamLD5O-8">
|
||||
<mxGeometry x="-0.699" relative="1" as="geometry">
|
||||
<mxPoint y="-16" as="offset" />
|
||||
</mxGeometry>
|
||||
</mxCell>
|
||||
<mxCell id="GA09nmFLpfHeItamLD5O-11" value="P" style="rounded=0;whiteSpace=wrap;html=1;" vertex="1" parent="1">
|
||||
<mxGeometry x="540" y="180" width="80" height="20" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="GA09nmFLpfHeItamLD5O-18" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=0.5;entryY=0;entryDx=0;entryDy=0;" edge="1" parent="1" source="GA09nmFLpfHeItamLD5O-12" target="GA09nmFLpfHeItamLD5O-14">
|
||||
<mxGeometry relative="1" as="geometry">
|
||||
<Array as="points">
|
||||
<mxPoint x="340" y="100" />
|
||||
</Array>
|
||||
</mxGeometry>
|
||||
</mxCell>
|
||||
<mxCell id="GA09nmFLpfHeItamLD5O-36" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=0.5;entryY=0;entryDx=0;entryDy=0;" edge="1" parent="1" source="GA09nmFLpfHeItamLD5O-12" target="GA09nmFLpfHeItamLD5O-34">
|
||||
<mxGeometry relative="1" as="geometry">
|
||||
<Array as="points">
|
||||
<mxPoint x="400" y="60" />
|
||||
<mxPoint x="660" y="60" />
|
||||
</Array>
|
||||
</mxGeometry>
|
||||
</mxCell>
|
||||
<mxCell id="GA09nmFLpfHeItamLD5O-12" value="acc" style="rounded=0;whiteSpace=wrap;html=1;" vertex="1" parent="1">
|
||||
<mxGeometry x="360" y="80" width="80" height="40" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="GA09nmFLpfHeItamLD5O-14" value="+" style="ellipse;whiteSpace=wrap;html=1;aspect=fixed;" vertex="1" parent="1">
|
||||
<mxGeometry x="320" y="120" width="40" height="40" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="GA09nmFLpfHeItamLD5O-32" value="" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;" edge="1" parent="1" source="GA09nmFLpfHeItamLD5O-21" target="GA09nmFLpfHeItamLD5O-31">
|
||||
<mxGeometry relative="1" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="GA09nmFLpfHeItamLD5O-21" value="*" style="ellipse;whiteSpace=wrap;html=1;aspect=fixed;" vertex="1" parent="1">
|
||||
<mxGeometry x="440" y="120" width="40" height="40" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="GA09nmFLpfHeItamLD5O-22" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=0;entryY=0.5;entryDx=0;entryDy=0;" edge="1" parent="1" source="GA09nmFLpfHeItamLD5O-14" target="GA09nmFLpfHeItamLD5O-21">
|
||||
<mxGeometry relative="1" as="geometry">
|
||||
<mxPoint x="460" y="140" as="targetPoint" />
|
||||
</mxGeometry>
|
||||
</mxCell>
|
||||
<mxCell id="GA09nmFLpfHeItamLD5O-41" value="data_post_add" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];" vertex="1" connectable="0" parent="GA09nmFLpfHeItamLD5O-22">
|
||||
<mxGeometry x="-0.1925" y="-1" relative="1" as="geometry">
|
||||
<mxPoint x="8" y="19" as="offset" />
|
||||
</mxGeometry>
|
||||
</mxCell>
|
||||
<mxCell id="GA09nmFLpfHeItamLD5O-26" value="%" style="ellipse;whiteSpace=wrap;html=1;aspect=fixed;" vertex="1" parent="1">
|
||||
<mxGeometry x="560" y="120" width="40" height="40" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="GA09nmFLpfHeItamLD5O-29" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=0.51;entryY=1.007;entryDx=0;entryDy=0;entryPerimeter=0;" edge="1" parent="1" source="GA09nmFLpfHeItamLD5O-11" target="GA09nmFLpfHeItamLD5O-26">
|
||||
<mxGeometry relative="1" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="GA09nmFLpfHeItamLD5O-30" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=1.022;entryY=0.482;entryDx=0;entryDy=0;entryPerimeter=0;" edge="1" parent="1" source="GA09nmFLpfHeItamLD5O-26" target="GA09nmFLpfHeItamLD5O-12">
|
||||
<mxGeometry relative="1" as="geometry">
|
||||
<Array as="points">
|
||||
<mxPoint x="580" y="99" />
|
||||
</Array>
|
||||
</mxGeometry>
|
||||
</mxCell>
|
||||
<mxCell id="GA09nmFLpfHeItamLD5O-33" value="" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;" edge="1" parent="1" source="GA09nmFLpfHeItamLD5O-31" target="GA09nmFLpfHeItamLD5O-26">
|
||||
<mxGeometry relative="1" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="GA09nmFLpfHeItamLD5O-31" value="reg" style="rounded=0;whiteSpace=wrap;html=1;" vertex="1" parent="1">
|
||||
<mxGeometry x="500" y="130" width="40" height="20" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="GA09nmFLpfHeItamLD5O-37" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;" edge="1" parent="1" source="GA09nmFLpfHeItamLD5O-34">
|
||||
<mxGeometry relative="1" as="geometry">
|
||||
<mxPoint x="720" y="140" as="targetPoint" />
|
||||
</mxGeometry>
|
||||
</mxCell>
|
||||
<mxCell id="GA09nmFLpfHeItamLD5O-39" value="tag" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];" vertex="1" connectable="0" parent="GA09nmFLpfHeItamLD5O-37">
|
||||
<mxGeometry x="0.6531" y="2" relative="1" as="geometry">
|
||||
<mxPoint x="17" y="2" as="offset" />
|
||||
</mxGeometry>
|
||||
</mxCell>
|
||||
<mxCell id="GA09nmFLpfHeItamLD5O-34" value="+" style="ellipse;whiteSpace=wrap;html=1;aspect=fixed;" vertex="1" parent="1">
|
||||
<mxGeometry x="640" y="120" width="40" height="40" as="geometry" />
|
||||
</mxCell>
|
||||
</root>
|
||||
</mxGraphModel>
|
||||
</diagram>
|
||||
</mxfile>
|
||||
7
ChaCha20_Poly1305_64/sim/poly1305.yaml
Normal file
7
ChaCha20_Poly1305_64/sim/poly1305.yaml
Normal file
@@ -0,0 +1,7 @@
|
||||
tests:
|
||||
- name: "poly1305_core"
|
||||
toplevel: "poly1305_core_harness"
|
||||
modules:
|
||||
- "poly1305_core"
|
||||
sources: "sources.list"
|
||||
waves: True
|
||||
73
ChaCha20_Poly1305_64/sim/poly1305_core.py
Normal file
73
ChaCha20_Poly1305_64/sim/poly1305_core.py
Normal file
@@ -0,0 +1,73 @@
|
||||
import logging
|
||||
|
||||
|
||||
import cocotb
|
||||
from cocotb.clock import Clock
|
||||
from cocotb.triggers import Timer, RisingEdge, FallingEdge
|
||||
from cocotb.queue import Queue
|
||||
|
||||
from cocotbext.axi import AxiStreamBus, AxiStreamSource
|
||||
|
||||
CLK_PERIOD = 4
|
||||
|
||||
|
||||
class TB:
|
||||
def __init__(self, dut):
|
||||
self.dut = dut
|
||||
|
||||
self.log = logging.getLogger("cocotb.tb")
|
||||
self.log.setLevel(logging.INFO)
|
||||
|
||||
cocotb.start_soon(Clock(self.dut.i_clk, CLK_PERIOD, units="ns").start())
|
||||
|
||||
self.s_data_axis = AxiStreamSource(AxiStreamBus.from_prefix(dut.s_data_axis, ""), dut.i_clk, dut.i_rst)
|
||||
|
||||
async def cycle_reset(self):
|
||||
await self._cycle_reset(self.dut.i_rst, self.dut.i_clk)
|
||||
|
||||
async def _cycle_reset(self, rst, clk):
|
||||
rst.setimmediatevalue(0)
|
||||
await RisingEdge(clk)
|
||||
await RisingEdge(clk)
|
||||
rst.value = 1
|
||||
await RisingEdge(clk)
|
||||
await RisingEdge(clk)
|
||||
rst.value = 0
|
||||
await RisingEdge(clk)
|
||||
await RisingEdge(clk)
|
||||
|
||||
@cocotb.test
|
||||
async def test_sanity(dut):
|
||||
tb = TB(dut)
|
||||
|
||||
await tb.cycle_reset()
|
||||
|
||||
s = 0x1bf54941aff6bf4afdb20dfb8a800301
|
||||
r = 0xa806d542fe52447f336d555778bed685
|
||||
r_masked = 0x0806d5400e52447c036d555408bed685
|
||||
|
||||
result = 0xa927010caf8b2bc2c6365130c11d06a8
|
||||
|
||||
msg = b"Cryptographic Forum Research Group"
|
||||
|
||||
|
||||
tb.dut.i_otk.value = ((r << 128) | s)
|
||||
tb.dut.i_otk_valid.value = 1
|
||||
await RisingEdge(tb.dut.i_clk)
|
||||
tb.dut.i_otk_valid.value = 0
|
||||
await RisingEdge(tb.dut.i_clk)
|
||||
|
||||
dut_s = tb.dut.u_dut.poly1305_s.value.integer
|
||||
dut_r = tb.dut.u_dut.poly1305_r.value.integer
|
||||
|
||||
assert dut_s == s
|
||||
assert dut_r == r_masked
|
||||
|
||||
await tb.s_data_axis.send(msg)
|
||||
|
||||
await RisingEdge(tb.dut.o_tag_valid)
|
||||
tag = tb.dut.o_tag.value.integer
|
||||
|
||||
tb.log.info(f"tag: {tag:x}")
|
||||
|
||||
await Timer(1, "us")
|
||||
26
ChaCha20_Poly1305_64/sim/poly1305_core_harness.sv
Normal file
26
ChaCha20_Poly1305_64/sim/poly1305_core_harness.sv
Normal file
@@ -0,0 +1,26 @@
|
||||
module poly1305_core_harness();
|
||||
|
||||
taxi_axis_if #(.DATA_W(128)) s_data_axis();
|
||||
|
||||
logic i_clk;
|
||||
logic i_rst;
|
||||
|
||||
logic [255:0] i_otk;
|
||||
logic i_otk_valid;
|
||||
|
||||
logic [127:0] o_tag;
|
||||
logic o_tag_valid;
|
||||
|
||||
poly1305_core u_dut (
|
||||
.i_clk (i_clk),
|
||||
.i_rst (i_rst),
|
||||
.i_otk (i_otk),
|
||||
.i_otk_valid (i_otk_valid),
|
||||
|
||||
.o_tag (o_tag),
|
||||
.o_tag_valid (o_tag_valid),
|
||||
|
||||
.s_data_axis (s_data_axis)
|
||||
);
|
||||
|
||||
endmodule
|
||||
@@ -1 +1,4 @@
|
||||
../src/sources.list
|
||||
poly1305_core_harness.sv
|
||||
|
||||
../src/sources.list
|
||||
../../common/sim/sub/taxi/src/axis/rtl/taxi_axis_if.sv
|
||||
|
||||
24
ChaCha20_Poly1305_64/src/chacha20_poly1305_64.sv
Normal file
24
ChaCha20_Poly1305_64/src/chacha20_poly1305_64.sv
Normal file
@@ -0,0 +1,24 @@
|
||||
module chacha20_poly1305_64 (
|
||||
input i_clk,
|
||||
input i_rst,
|
||||
|
||||
taxi_axis_if.snk s_ctrl_axis,
|
||||
taxi_axis_if.snk s_data_axis,
|
||||
taxi_axis_if.src m_data_axis
|
||||
);
|
||||
|
||||
//TODO the rest of this
|
||||
|
||||
// control axis decoder.
|
||||
|
||||
localparam R_MASK = 128'h0ffffffc0ffffffc0ffffffc0fffffff;
|
||||
|
||||
chacha20_pipelined_block u_chacha20_pipelined_block (
|
||||
|
||||
);
|
||||
|
||||
poly1305 u_poly1305 (
|
||||
|
||||
);
|
||||
|
||||
endmodule
|
||||
84
ChaCha20_Poly1305_64/src/poly1305_core.sv
Normal file
84
ChaCha20_Poly1305_64/src/poly1305_core.sv
Normal file
@@ -0,0 +1,84 @@
|
||||
module poly1305_core #(
|
||||
|
||||
) (
|
||||
input i_clk,
|
||||
input i_rst,
|
||||
|
||||
input [255:0] i_otk,
|
||||
input i_otk_valid,
|
||||
|
||||
output [127:0] o_tag,
|
||||
output o_tag_valid,
|
||||
|
||||
taxi_axis_if.snk s_data_axis
|
||||
);
|
||||
|
||||
// incoming data must be 128 bit and packed, i.e. tkeep is 1 except for the last beat with no gaps
|
||||
|
||||
|
||||
localparam R_MASK = 128'h0ffffffc0ffffffc0ffffffc0fffffff;
|
||||
localparam P130M5 = 258'h3fffffffffffffffffffffffffffffffb;
|
||||
|
||||
logic [127:0] poly1305_r, poly1305_s;
|
||||
logic [129:0] accumulator, accumulator_next;
|
||||
|
||||
logic [129:0] data_one_extended;
|
||||
logic [130:0] data_post_add;
|
||||
|
||||
logic [257:0] data_post_mul, data_post_mul_reg;
|
||||
|
||||
logic phase;
|
||||
|
||||
logic [1:0] valid_sr;
|
||||
|
||||
function logic [129:0] tkeep_expand (input [15:0] tkeep);
|
||||
tkeep_expand = '0;
|
||||
for (int i = 0; i < 16; i++) begin
|
||||
tkeep_expand[i*8 +: 8] = {8{tkeep[i]}};
|
||||
end
|
||||
endfunction
|
||||
|
||||
// only ready in phase 0
|
||||
assign s_data_axis.tready = phase == 0;
|
||||
assign o_tag_valid = valid_sr[1];
|
||||
|
||||
always_ff @(posedge i_clk) begin
|
||||
if (i_rst) begin
|
||||
phase <= '0;
|
||||
valid_sr <= '0;
|
||||
end
|
||||
|
||||
valid_sr <= {valid_sr[0], s_data_axis.tlast & s_data_axis.tvalid & s_data_axis.tready & ~phase};
|
||||
|
||||
if (i_otk_valid) begin
|
||||
poly1305_r <= i_otk[255:128] & R_MASK;
|
||||
poly1305_s <= i_otk[127:0];
|
||||
end
|
||||
|
||||
if (s_data_axis.tvalid && phase == 0) begin
|
||||
data_post_mul_reg <= data_post_mul;
|
||||
phase <= '1;
|
||||
end
|
||||
|
||||
if (phase == '1) begin
|
||||
accumulator <= accumulator_next;
|
||||
phase <= '0;
|
||||
end
|
||||
end
|
||||
|
||||
always_comb begin
|
||||
accumulator_next = accumulator;
|
||||
data_post_mul = '0;
|
||||
|
||||
// phase == 0
|
||||
data_one_extended = (tkeep_expand(s_data_axis.tkeep) + 1) | {2'b0, s_data_axis.tdata};
|
||||
data_post_add = data_one_extended + accumulator;
|
||||
data_post_mul = data_post_add * poly1305_r;
|
||||
|
||||
// phase == 1
|
||||
accumulator_next = 130'(data_post_mul_reg % P130M5);
|
||||
end
|
||||
|
||||
assign o_tag = accumulator[127:0] + poly1305_s;
|
||||
|
||||
endmodule
|
||||
@@ -1,4 +1,6 @@
|
||||
chacha20_qr.sv
|
||||
chacha20_block.sv
|
||||
chacha20_pipelined_round.sv
|
||||
chacha20_pipelined_block.sv
|
||||
chacha20_pipelined_block.sv
|
||||
|
||||
poly1305_core.sv
|
||||
Reference in New Issue
Block a user