nx_poly1305_pure_test.nx source
↩ module page · 47 lines · 1836 B
1// nx_poly1305_pure_test.nx -- RV64 KAT for nx_poly1305_pure.nx.
2//
3// Same RFC 8439 ยง2.5.2 vector as the x86_64 smoke; runs through
4// qemu-riscv64 to check whether the failure is backend-specific.
5//
6// license_tier: ORIGINAL
7
8import "nx_syscalls.nx"
9import "nx_arena_types.nx"
10import "nx_poly1305_pure.nx"
11
12func main() -> i64 {
13 let backing: *u8 = sys_mmap(4096)
14 let a_raw: *u8 = sys_mmap(64)
15 let a: *NxArena = a_raw as *NxArena
16 if nx_arena_init(a, backing, 4096) != 0 { return 1 }
17
18 let key: *u8 = sys_mmap(64)
19 key[0]=0x85; key[1]=0xd6; key[2]=0xbe; key[3]=0x78
20 key[4]=0x57; key[5]=0x55; key[6]=0x6d; key[7]=0x33
21 key[8]=0x7f; key[9]=0x44; key[10]=0x52; key[11]=0xfe
22 key[12]=0x42; key[13]=0xd5; key[14]=0x06; key[15]=0xa8
23 key[16]=0x01; key[17]=0x03; key[18]=0x80; key[19]=0x8a
24 key[20]=0xfb; key[21]=0x0d; key[22]=0xb2; key[23]=0xfd
25 key[24]=0x4a; key[25]=0xbf; key[26]=0xf6; key[27]=0xaf
26 key[28]=0x41; key[29]=0x49; key[30]=0xf5; key[31]=0x1b
27
28 let msg: *u8 = sys_mmap(64)
29 msg[0]=0x43; msg[1]=0x72; msg[2]=0x79; msg[3]=0x70
30 msg[4]=0x74; msg[5]=0x6f; msg[6]=0x67; msg[7]=0x72
31 msg[8]=0x61; msg[9]=0x70; msg[10]=0x68; msg[11]=0x69
32 msg[12]=0x63; msg[13]=0x20; msg[14]=0x46; msg[15]=0x6f
33 msg[16]=0x72; msg[17]=0x75; msg[18]=0x6d; msg[19]=0x20
34 msg[20]=0x52; msg[21]=0x65; msg[22]=0x73; msg[23]=0x65
35 msg[24]=0x61; msg[25]=0x72; msg[26]=0x63; msg[27]=0x68
36 msg[28]=0x20; msg[29]=0x47; msg[30]=0x72; msg[31]=0x6f
37 msg[32]=0x75; msg[33]=0x70
38
39 let tag: *u8 = sys_mmap(32)
40 if poly1305_mac_pure(a, key, msg, 34, tag) != 0 { return 2 }
41
42 if (tag[0] & 0xff) != 0xa8 { return 10 }
43 if (tag[4] & 0xff) != 0x30 { return 11 }
44 if (tag[8] & 0xff) != 0xc2 { return 12 }
45 if (tag[15] & 0xff) != 0xa9 { return 13 }
46 return 0
47}