os

An operating system
git clone https://erai.gay/code/os/
Log | Files | Refs | README | LICENSE

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 }