chacha20_test.om (1039B)
1 func main(c:int,v:**byte,e:**byte) { 2 var _key: _chacha20_state; 3 var key: *byte; 4 var _nonce: _chacha20_state; 5 var nonce: *byte; 6 var _block: _chacha20_state; 7 var block: *byte; 8 var out: *file; 9 10 key = (&_key) as *byte; 11 nonce = (&_nonce) as *byte; 12 block = (&_block) as *byte; 13 14 bzero(key, sizeof(_key)); 15 bzero(nonce, sizeof(_nonce)); 16 17 out = nil; 18 19 chacha20_block(block, key, 0, nonce); 20 fputd(out, 1); 21 fputs(out, ":\n"); 22 fxxd(out, block, 64); 23 fputc(out, '\n'); 24 25 chacha20_block(block, key, 1, nonce); 26 fputd(out, 2); 27 fputs(out, ":\n"); 28 fxxd(out, block, 64); 29 fputc(out, '\n'); 30 31 key[31] = 1 as byte; 32 chacha20_block(block, key, 1, nonce); 33 fputd(out, 3); 34 fputs(out, ":\n"); 35 fxxd(out, block, 64); 36 fputc(out, '\n'); 37 38 key[1] = 0xff as byte; 39 key[31] = 0 as byte; 40 chacha20_block(block, key, 2, nonce); 41 fputd(out, 4); 42 fputs(out, ":\n"); 43 fxxd(out, block, 64); 44 fputc(out, '\n'); 45 46 key[1] = 0 as byte; 47 nonce[11] = 2 as byte; 48 chacha20_block(block, key, 0, nonce); 49 fputd(out, 5); 50 fputs(out, ":\n"); 51 fxxd(out, block, 64); 52 }