]> git.cryptolib.org Git - arm-crypto-lib.git/commitdiff
adding rabbit
authorbg <daniel.otte@rub.de>
Tue, 19 Jul 2011 20:09:37 +0000 (22:09 +0200)
committerbg <daniel.otte@rub.de>
Tue, 19 Jul 2011 20:09:37 +0000 (22:09 +0200)
12 files changed:
mkfiles/001_cli_std.mk
mkfiles/rabbit_c.mk [new file with mode: 0644]
mkfiles/rabbit_estream_c.mk [new file with mode: 0644]
rabbit/rabbit.h [new file with mode: 0644]
rabbit/rabbit_c.c [new file with mode: 0644]
scal/scal_rabbit.c [new file with mode: 0644]
scal/scal_rabbit.h [new file with mode: 0644]
test_src/main-arcfour-test.c
test_src/main-rabbit-test.c [new file with mode: 0644]
test_src/main-test-common.c [new file with mode: 0644]
test_src/main-test-common.h [new file with mode: 0644]
testvectors/rabbit-verified.test-vectors [new file with mode: 0644]

index 59a9e777df68c246249c145791d55a007e21580d..6da631af765e652e6ff27b694a6fd803c7c1254c 100644 (file)
@@ -1,2 +1,4 @@
 CLI_STD =  cli.o hexdigit_tab.o dbz_strings.o string-extras.o uart_i.o \
-           sysclock.o hw_gptm.o dump.o startup.o circularbytebuffer.o
+           sysclock.o hw_gptm.o dump.o startup.o circularbytebuffer.o \
+           main-test-common.o
+
diff --git a/mkfiles/rabbit_c.mk b/mkfiles/rabbit_c.mk
new file mode 100644 (file)
index 0000000..a43b0f4
--- /dev/null
@@ -0,0 +1,13 @@
+# Makefile for Rabbit
+ALGO_NAME := RABBIT_C
+
+# comment out the following line for removement of Rabbit from the build process
+STREAM_CIPHERS += $(ALGO_NAME)
+
+$(ALGO_NAME)_DIR      := rabbit/
+$(ALGO_NAME)_OBJ      := rabbit_c.o
+$(ALGO_NAME)_INCDIR   := memxor/ scal/
+$(ALGO_NAME)_TEST_BIN := main-rabbit-test.o $(CLI_STD) $(SCAL_STD) scal_rabbit.o
+$(ALGO_NAME)_NESSIE_TEST      := "nessie"
+$(ALGO_NAME)_PERFORMANCE_TEST := "performance"
+$(ALGO_NAME)_DEF := ESTREAM=0
diff --git a/mkfiles/rabbit_estream_c.mk b/mkfiles/rabbit_estream_c.mk
new file mode 100644 (file)
index 0000000..5070e41
--- /dev/null
@@ -0,0 +1,14 @@
+# Makefile for Rabbit
+ALGO_NAME := RABBIT_ESTREAM_C
+
+# comment out the following line for removement of Rabbit from the build process
+STREAM_CIPHERS += $(ALGO_NAME)
+
+$(ALGO_NAME)_DIR      := rabbit/
+$(ALGO_NAME)_OBJ      := rabbit_c.o
+$(ALGO_NAME)_INCDIR   := memxor/ scal/
+$(ALGO_NAME)_TEST_BIN := main-rabbit-test.o $(CLI_STD) $(SCAL_STD) scal_rabbit.o
+$(ALGO_NAME)_NESSIE_TEST      := "nessie"
+$(ALGO_NAME)_PERFORMANCE_TEST := "performance"
+$(ALGO_NAME)_DEF := ESTREAM=1
+
diff --git a/rabbit/rabbit.h b/rabbit/rabbit.h
new file mode 100644 (file)
index 0000000..b49b55a
--- /dev/null
@@ -0,0 +1,41 @@
+/* rabbit.h */
+/*
+    This file is part of the AVR-Crypto-Lib.
+    Copyright (C) 2011 Daniel Otte (daniel.otte@rub.de)
+
+    This program is free software: you can redistribute it and/or modify
+    it under the terms of the GNU General Public License as published by
+    the Free Software Foundation, either version 3 of the License, or
+    (at your option) any later version.
+
+    This program is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+    GNU General Public License for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with this program.  If not, see <http://www.gnu.org/licenses/>.
+*/
+
+#ifndef RABBIT_H_
+#define RABBIT_H_
+
+#include <stdint.h>
+
+typedef struct {
+       uint32_t x[8];
+       uint32_t c[8];
+       uint8_t  buffer[16];
+       uint8_t  carry;
+       uint8_t  buffer_idx;
+} rabbit_ctx_t;
+
+void dump_ctx(rabbit_ctx_t* ctx);
+
+uint8_t rabbit_gen(rabbit_ctx_t* ctx);
+void rabbit_init(const void* key, uint16_t keysize_b,
+                  const void* iv,
+                  rabbit_ctx_t* ctx);
+
+
+#endif /* RABBIT_H_ */
diff --git a/rabbit/rabbit_c.c b/rabbit/rabbit_c.c
new file mode 100644 (file)
index 0000000..d719b0e
--- /dev/null
@@ -0,0 +1,237 @@
+/* rabbit_c.c */
+/*
+    This file is part of the ARM-Crypto-Lib.
+    Copyright (C) 2006-2011 Daniel Otte (daniel.otte@rub.de)
+
+    This program is free software: you can redistribute it and/or modify
+    it under the terms of the GNU General Public License as published by
+    the Free Software Foundation, either version 3 of the License, or
+    (at your option) any later version.
+
+    This program is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+    GNU General Public License for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with this program.  If not, see <http://www.gnu.org/licenses/>.
+*/
+
+#include <string.h>
+#include <stdint.h>
+#include "rabbit.h"
+
+#ifndef ESTREAM
+#define ESTREAM 0
+#endif
+
+/*
+void dump_ctx(rabbit_ctx_t* ctx){
+       uint8_t i=0;
+       cli_putstr_P(PSTR("\r\n --- ctx dump ---\r\n  b = "));
+       cli_hexdump_byte(ctx->carry);
+       do{
+               if((i&3)==0){
+                       cli_putstr_P(PSTR("\r\n"));
+               }
+               cli_putstr_P(PSTR("  X"));
+               cli_hexdump_byte(i);
+               cli_putstr_P(PSTR(" = 0x"));
+               cli_hexdump_rev(&(ctx->x[i]), 4);
+       }while(++i<8);
+       i=0;
+       do{
+               if((i&3)==0){
+                       cli_putstr_P(PSTR("\r\n"));
+               }
+               cli_putstr_P(PSTR("  C"));
+               cli_hexdump_byte(i);
+               cli_putstr_P(PSTR(" = 0x"));
+               cli_hexdump_rev(&(ctx->c[i]), 4);
+       }while(++i<8);
+}
+*/
+
+static
+const uint32_t c_const[8] = {
+               0x4D34D34D, 0xD34D34D3,
+               0x34D34D34, 0x4D34D34D,
+               0xD34D34D3, 0x34D34D34,
+               0x4D34D34D, 0xD34D34D3
+};
+
+static
+void gen_g(uint32_t* dest, rabbit_ctx_t* ctx){
+       uint8_t i=0;
+       uint64_t a;
+       uint32_t t, *x, *c;
+       x = ctx->x;
+       c = ctx->c;
+       do{
+               t = *x++ + *c++;
+               a = ((uint64_t)t)*((uint64_t)t);
+               dest[i] = (uint32_t)(a^(a>>32));
+       }while(++i<8);
+}
+
+static
+void update_c(rabbit_ctx_t* ctx){
+       uint8_t i=0;
+       uint64_t a;
+       uint32_t *c;
+       const uint32_t *con;
+       c = ctx->c;
+       con = c_const;
+       a = ctx->carry;
+       do{
+               a += *c;
+               a += *con++;
+               *c++ = (uint32_t)a;
+               a >>= 32;
+       }while(++i<8);
+       ctx->carry = a?1:0;
+}
+
+#define ROT16(a) (((a)<<16) | ((a)>>16))
+#define ROT8(a)  (((a)<< 8) | ((a)>>24))
+
+static
+void step(rabbit_ctx_t* ctx){
+       uint32_t g[8];
+       uint8_t i=0;
+       update_c(ctx);
+       gen_g(g, ctx);
+       memcpy(ctx->x, g, 8*4);
+       do{
+               ctx->x[i] += ROT16(g[(i+8-1)%8]) + ROT16(g[(i+8-2)%8]);
+               ++i;
+               ctx->x[i] += ROT8(g[(i+8-1)%8]) + g[(i+8-2)%8];
+       }while(++i<8);
+}
+
+static
+void keysetup(rabbit_ctx_t* ctx, const void* key){
+       uint16_t *x, *c;
+       uint8_t i=0;
+       x = (uint16_t*)(ctx->x);
+       c = (uint16_t*)(ctx->c);
+       ctx->carry = 0;
+       do{
+               *x++ = ((uint16_t*)key)[i];
+               *x++ = ((uint16_t*)key)[(i+1)%8];
+               *c++ = ((uint16_t*)key)[(i+5)%8];
+               *c++ = ((uint16_t*)key)[(i+4)%8];
+               ++i;
+               *x++ = ((uint16_t*)key)[(i+4)%8];
+               *x++ = ((uint16_t*)key)[(i+5)%8];
+               *c++ = ((uint16_t*)key)[(i+1)%8];
+               *c++ = ((uint16_t*)key)[i];
+       }while(++i<8);
+       i=0;
+       do{
+               step(ctx);
+       }while(++i<4);
+       i=0;
+       do{
+               ctx->c[i] ^= ctx->x[(i+4)%8];
+       }while(++i<8);
+}
+
+static
+void ivsetup(rabbit_ctx_t* ctx, const void* iv){
+       uint8_t i;
+       uint32_t t;
+       uint8_t t_iv[8];
+       i=0;
+#if ESTREAM
+       memcpy(t_iv, iv, 8);
+#else
+       do{
+               t_iv[i] = ((uint8_t*)iv)[7-i];
+               t_iv[7-i] = ((uint8_t*)iv)[i];
+       }while(++i<4);
+#endif
+       ctx->c[0] ^= *((uint32_t*)t_iv);
+       ctx->c[4] ^= *((uint32_t*)t_iv);
+       ctx->c[2] ^= ((uint32_t*)t_iv)[1];
+       ctx->c[6] ^= ((uint32_t*)t_iv)[1];
+       t = (( (uint32_t)((uint16_t*)t_iv)[3])<<16) | (((uint16_t*)t_iv)[1]);
+       ctx->c[1] ^= t;
+       ctx->c[5] ^= t;
+       t = (( (uint32_t)((uint16_t*)t_iv)[2])<<16) | (((uint16_t*)t_iv)[0]);
+       ctx->c[3] ^= t;
+       ctx->c[7] ^= t;
+       i=4;
+       do{
+               step(ctx);
+       }while(--i);
+}
+
+static
+void extract(rabbit_ctx_t* ctx){
+       int8_t i=0;
+       uint8_t *t;
+       uint16_t v;
+       t = ctx->buffer;
+       i=6;
+       do{
+               v =   ((uint16_t*)(ctx->x))[(2*(i+ 8)+1)%16]
+                   ^ ((uint16_t*)(ctx->x))[(2*(i+11)+0)%16];
+               *t++ = v>>8;
+               *t++ = (uint8_t)v;
+               v =   ((uint16_t*)(ctx->x))[(2*(i+ 8)+0)%16]
+                   ^ ((uint16_t*)(ctx->x))[(2*(i+13)+1)%16];
+               *t++ = v>>8;
+               *t++ = (uint8_t)v;
+
+               i-=2;
+       }while(i>=0);
+#if ESTREAM
+       uint8_t x;
+       i=0;
+       do{
+               x = ctx->buffer[i];
+               ctx->buffer[i] = ctx->buffer[15-i];
+               ctx->buffer[15-i] = x;
+       }while(++i<8);
+#endif
+}
+
+static const uint8_t key80_pad[] = { 0xDE, 0x05, 0x6E, 0xAC, 0x8A, 0x11 };
+
+void rabbit_init(const void* key, uint16_t keysize_b,
+                  const void* iv,
+                  rabbit_ctx_t* ctx){
+       uint8_t t_key[16];
+       if(keysize_b==80){
+               memcpy(t_key, key, 10);
+               memcpy(t_key+10, key80_pad, 6);
+       }else{
+               memcpy(t_key, key, 16);
+       }
+#if !ESTREAM
+       uint8_t i=0, t;
+       do{
+               t = t_key[i];
+               t_key[i] = t_key[15-i];
+               t_key[15-i] = t;
+       }while(++i<8);
+#endif
+       keysetup(ctx, t_key);
+
+
+       if(iv){
+               ivsetup(ctx, iv);
+       }
+       extract(ctx);
+       ctx->buffer_idx = 16;
+}
+
+uint8_t rabbit_gen(rabbit_ctx_t* ctx){
+       if(ctx->buffer_idx==16){
+               step(ctx);
+               extract(ctx);
+               ctx->buffer_idx = 0;
+       }
+       return ctx->buffer[ctx->buffer_idx++];
+}
diff --git a/scal/scal_rabbit.c b/scal/scal_rabbit.c
new file mode 100644 (file)
index 0000000..9f1be77
--- /dev/null
@@ -0,0 +1,55 @@
+/* scal_rabbit.c */
+/*
+    This file is part of the AVR-Crypto-Lib.
+    Copyright (C) 2011  Daniel Otte (daniel.otte@rub.de)
+
+    This program is free software: you can redistribute it and/or modify
+    it under the terms of the GNU General Public License as published by
+    the Free Software Foundation, either version 3 of the License, or
+    (at your option) any later version.
+
+    This program is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+    GNU General Public License for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with this program.  If not, see <http://www.gnu.org/licenses/>.
+*/
+
+#include <stdlib.h>
+#include <stdint.h>
+#include "streamcipher_descriptor.h"
+#include "keysize_descriptor.h"
+
+#include "rabbit.h"
+
+const char rabbit_str[]    = "Rabbit";
+
+const uint8_t rabbit_keysize_desc[]  = {
+               KS_TYPE_LIST, 2, KS_INT(128), KS_INT(80),
+        KS_TYPE_TERMINATOR   };
+
+const uint8_t rabbit_ivsize_desc[]  = {
+               KS_TYPE_LIST, 1, KS_INT(64),
+        KS_TYPE_TERMINATOR   };
+
+const scdesc_t rabbit_desc  = {
+               SCDESC_TYPE_STREAMCIPHER,     /* abstraction layer type designator */
+               SC_INIT_TYPE_4|SC_GEN_TYPE_1, /* flags*/
+               rabbit_str,                  /* name string pointer */
+               sizeof(rabbit_ctx_t),        /* size of context */
+               8,                            /* blocksize */
+               {(void_fpt)rabbit_init},     /* init function pointer */
+               {(void_fpt)rabbit_gen},      /* key stream generator function pointer */
+               {(void_fpt)NULL},             /* key stream generator for random access function pointer */
+               (sc_free_fpt)NULL,                /* free function pointer */
+               rabbit_keysize_desc,         /* key size descriptor pointer */
+               rabbit_ivsize_desc           /* iv size descriptor pointer */
+};
+
+
+
+
+
+
diff --git a/scal/scal_rabbit.h b/scal/scal_rabbit.h
new file mode 100644 (file)
index 0000000..ee172c8
--- /dev/null
@@ -0,0 +1,27 @@
+/* scal_rabbit.h */
+/*
+    This file is part of the AVR-Crypto-Lib.
+    Copyright (C) 2011 Daniel Otte (daniel.otte@rub.de)
+
+    This program is free software: you can redistribute it and/or modify
+    it under the terms of the GNU General Public License as published by
+    the Free Software Foundation, either version 3 of the License, or
+    (at your option) any later version.
+
+    This program is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+    GNU General Public License for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with this program.  If not, see <http://www.gnu.org/licenses/>.
+*/
+
+#ifndef SCAL_RABBIT_H_
+#define SCAL_RABBIT_H_
+
+#include "streamcipher_descriptor.h"
+
+extern const scdesc_t rabbit_desc;
+
+#endif /* SCAL_RABBIT_H_ */
index 5a786e8b9fe23d081550180b45cb3c6eac97a2aa..f53e83228d1689a9d225d3773d238720e2f537e0 100644 (file)
  * arcfour (RC4 compatible) test-suit
  * 
 */
-
-#include <stdint.h>
-#include <stdlib.h>
-#include <string.h>
-#include "config.h"
-#include "cli.h"
-#include "dump.h"
-#include "uart_lowlevel.h"
-#include "sysclock.h"
-#include "hw_gptm.h"
+#include "main-test-common.h"
 
 #include "arcfour.h"
 #include "scal_arcfour.h"
 #include "nessie_stream_test.h"
 #include "performance_test.h"
 
-#include <stdlib.h>
-#include <stdint.h>
-#include <string.h>
 
 const char* algo_name = "Arcfour";
 
-void uart0_putc(char byte){
-       uart_putc(UART_0, byte);
-}
-
-char uart0_getc(void){
-       return uart_getc(UART_0);
-}
 
 /*****************************************************************************
  *  additional validation-functions                                                                                     *
@@ -104,22 +85,10 @@ const cmdlist_entry_t cmdlist[] = {
 };
 
 int main (void){
-       sysclk_set_freq(SYS_FREQ);
-       sysclk_mosc_verify_enable();
-       uart_init(UART_0, 115200, 8, UART_PARATY_NONE, UART_STOPBITS_ONE);
-       gptm_set_timer_32periodic(TIMER0);
-
-       cli_rx = uart0_getc;
-       cli_tx = uart0_putc;
+       main_setup();
        
        for(;;){
-               cli_putstr("\r\n\r\nARM-Crypto-Lib VS (");
-               cli_putstr(algo_name);
-               cli_putstr("; ");
-               cli_putstr(__DATE__);
-               cli_putc(' ');
-               cli_putstr(__TIME__);
-               cli_putstr(")\r\nloaded and running\r\n");
+               welcome_msg(algo_name);
                cmd_interface(cmdlist);
        }
 }
diff --git a/test_src/main-rabbit-test.c b/test_src/main-rabbit-test.c
new file mode 100644 (file)
index 0000000..58cbebf
--- /dev/null
@@ -0,0 +1,222 @@
+/* main-rabbit-test.c */
+/*
+    This file is part of the ARM-Crypto-Lib.
+    Copyright (C) 2006-2011 Daniel Otte (daniel.otte@rub.de)
+
+    This program is free software: you can redistribute it and/or modify
+    it under the terms of the GNU General Public License as published by
+    the Free Software Foundation, either version 3 of the License, or
+    (at your option) any later version.
+
+    This program is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+    GNU General Public License for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with this program.  If not, see <http://www.gnu.org/licenses/>.
+*/
+
+#include "main-test-common.h"
+
+#include "rabbit.h"
+#include "performance_test.h"
+#include "scal_rabbit.h"
+#include "scal-basic.h"
+#include "scal-nessie.h"
+
+char* algo_name = "Rabbit";
+
+/*****************************************************************************
+ *  additional validation-functions                                                                                     *
+ *****************************************************************************/
+
+void test_vector(void* key, void* iv, const void* ref){
+       rabbit_ctx_t ctx;
+       uint8_t fail=0;
+       cli_putstr("\r\n testing with\r\n key:  ");
+       cli_hexdump(key, 16);
+       cli_putstr("\r\n iv:   ");
+       if(iv){
+               cli_hexdump(iv, 8);
+       }else{
+               cli_putstr("[no iv]");
+       }
+       rabbit_init(key, 128, iv, &ctx);
+       rabbit_gen(&ctx);
+       if(!ref || (memcmp(ctx.buffer, ref, 16))!=0){
+               fail = 1;
+               cli_putstr("\r\n S[0]: ");
+               cli_hexdump(ctx.buffer, 16);
+       }
+       ctx.buffer_idx=16;
+       if(!ref || (memcmp(ctx.buffer, ref, 16))!=0){
+               fail = 1;
+               cli_putstr("\r\n S[0]: ");
+               cli_hexdump(ctx.buffer, 16);
+       }
+       ctx.buffer_idx=16;
+       if(!ref || (memcmp(ctx.buffer, ref, 16))!=0){
+               fail = 1;
+               cli_putstr("\r\n S[0]: ");
+               cli_hexdump(ctx.buffer, 16);
+       }
+       if(ref){
+               cli_putstr(fail?"\r\n [fail]":"\r\n [ok]");
+       }
+       cli_putstr("\r\n");
+}
+
+void nessie_first(void){
+       uint8_t key[16];
+    uint8_t iv[8];
+
+       memset(iv, 0, 8);
+       memset(key, 0, 16);
+       key[0] = 0x80;
+       test_vector(key, iv, NULL);
+       key[0] = 0x00;
+
+       key[15] = 0x80;
+       test_vector(key, iv, NULL);
+
+}
+
+
+const uint8_t spec_key1[] = {
+       0x91, 0x28, 0x13, 0x29, 0x2E, /* 0xED */ 0x3D, 0x36, 0xFE,
+       0x3B, 0xFC, 0x62, 0xF1, 0xDC, 0x51, 0xC3, 0xAC
+};
+
+const uint8_t spec_key2[] = {
+       0x83, 0x95, 0x74, 0x15, 0x87, 0xE0, 0xC7, 0x33,
+       0xE9, 0xE9, 0xAB, 0x01, 0xC0, 0x9B, 0x00, 0x43
+};
+
+const uint8_t spec_iv1[] = {
+       0xC3, 0x73, 0xF5, 0x75, 0xC1, 0x26, 0x7E, 0x59
+};
+
+const uint8_t spec_iv2[] = {
+       0xA6, 0xEB, 0x56, 0x1A, 0xD2, 0xF4, 0x17, 0x27
+};
+
+const uint8_t spec_ref[] = {
+       0xB1, 0x57, 0x54, 0xF0, 0x36, 0xA5, 0xD6, 0xEC, 0xF5, 0x6B, 0x45, 0x26, 0x1C, 0x4A, 0xF7, 0x02,
+       0x88, 0xE8, 0xD8, 0x15, 0xC5, 0x9C, 0x0C, 0x39, 0x7B, 0x69, 0x6C, 0x47, 0x89, 0xC6, 0x8A, 0xA7,
+       0xF4, 0x16, 0xA1, 0xC3, 0x70, 0x0C, 0xD4, 0x51, 0xDA, 0x68, 0xD1, 0x88, 0x16, 0x73, 0xD6, 0x96,
+
+       0x3D, 0x2D, 0xF3, 0xC8, 0x3E, 0xF6, 0x27, 0xA1, 0xE9, 0x7F, 0xC3, 0x84, 0x87, 0xE2, 0x51, 0x9C,
+       0xF5, 0x76, 0xCD, 0x61, 0xF4, 0x40, 0x5B, 0x88, 0x96, 0xBF, 0x53, 0xAA, 0x85, 0x54, 0xFC, 0x19,
+       0xE5, 0x54, 0x74, 0x73, 0xFB, 0xDB, 0x43, 0x50, 0x8A, 0xE5, 0x3B, 0x20, 0x20, 0x4D, 0x4C, 0x5E,
+
+       0x0C, 0xB1, 0x0D, 0xCD, 0xA0, 0x41, 0xCD, 0xAC, 0x32, 0xEB, 0x5C, 0xFD, 0x02, 0xD0, 0x60, 0x9B,
+       0x95, 0xFC, 0x9F, 0xCA, 0x0F, 0x17, 0x01, 0x5A, 0x7B, 0x70, 0x92, 0x11, 0x4C, 0xFF, 0x3E, 0xAD,
+       0x96, 0x49, 0xE5, 0xDE, 0x8B, 0xFC, 0x7F, 0x3F, 0x92, 0x41, 0x47, 0xAD, 0x3A, 0x94, 0x74, 0x28,
+
+       0xC6, 0xA7, 0x27, 0x5E, 0xF8, 0x54, 0x95, 0xD8, 0x7C, 0xCD, 0x5D, 0x37, 0x67, 0x05, 0xB7, 0xED,
+       0x5F, 0x29, 0xA6, 0xAC, 0x04, 0xF5, 0xEF, 0xD4, 0x7B, 0x8F, 0x29, 0x32, 0x70, 0xDC, 0x4A, 0x8D,
+       0x2A, 0xDE, 0x82, 0x2B, 0x29, 0xDE, 0x6C, 0x1E, 0xE5, 0x2B, 0xDB, 0x8A, 0x47, 0xBF, 0x8F, 0x66,
+
+       0x1F, 0xCD, 0x4E, 0xB9, 0x58, 0x00, 0x12, 0xE2, 0xE0, 0xDC, 0xCC, 0x92, 0x22, 0x01, 0x7D, 0x6D,
+       0xA7, 0x5F, 0x4E, 0x10, 0xD1, 0x21, 0x25, 0x01, 0x7B, 0x24, 0x99, 0xFF, 0xED, 0x93, 0x6F, 0x2E,
+       0xEB, 0xC1, 0x12, 0xC3, 0x93, 0xE7, 0x38, 0x39, 0x23, 0x56, 0xBD, 0xD0, 0x12, 0x02, 0x9B, 0xA7,
+
+       0x44, 0x5A, 0xD8, 0xC8, 0x05, 0x85, 0x8D, 0xBF, 0x70, 0xB6, 0xAF, 0x23, 0xA1, 0x51, 0x10, 0x4D,
+       0x96, 0xC8, 0xF2, 0x79, 0x47, 0xF4, 0x2C, 0x5B, 0xAE, 0xAE, 0x67, 0xC6, 0xAC, 0xC3, 0x5B, 0x03,
+       0x9F, 0xCB, 0xFC, 0x89, 0x5F, 0xA7, 0x1C, 0x17, 0x31, 0x3D, 0xF0, 0x34, 0xF0, 0x15, 0x51, 0xCB
+};
+
+void spec_test(void){
+       uint8_t key[16];
+    uint8_t iv[8];
+    const uint8_t *ref;
+    ref = spec_ref;
+
+       memset(key, 0, 16);
+       test_vector(key, NULL, ref);
+       memcpy(key, spec_key1, 16);
+       ref += 48;
+       test_vector(key, NULL, ref);
+       memcpy(key, spec_key2, 16);
+       ref += 48;
+       test_vector(key, NULL, ref);
+
+
+       memset(key, 0, 16);
+       memset(iv, 0, 8);
+       ref += 48;
+       test_vector(key, iv, ref);
+       memcpy(iv,  spec_iv1,   8);
+       ref += 48;
+       test_vector(key, iv, ref);
+       memcpy(iv,  spec_iv2,   8);
+       ref += 48;
+       test_vector(key, iv, ref);
+}
+
+
+void testrun_nessie_rabbit(void){
+       scal_nessie_set_estream(1);
+       scal_nessie_run(&rabbit_desc);
+}
+
+
+
+void testrun_performance_rabbit(void){
+       uint64_t t;
+       char str[16];
+       uint8_t key[16];
+       rabbit_ctx_t ctx;
+
+       calibrateTimer();
+       print_overhead();
+
+       memset(key,  0, 16);
+
+       startTimer(1);
+       rabbit_init(key, 128, NULL, &ctx);
+       t = stopTimer();
+       cli_putstr("\r\n\tctx-gen time: ");
+       ultoa((unsigned long)t, str, 10);
+       cli_putstr(str);
+
+       startTimer(1);
+       rabbit_gen(&ctx);
+       t = stopTimer();
+       cli_putstr("\r\n\tencrypt time: ");
+       ultoa((unsigned long)t, str, 10);
+       cli_putstr(str);
+
+       cli_putstr("\r\n");
+}
+
+
+/*****************************************************************************
+ *  main                                                                                                                                        *
+ *****************************************************************************/
+
+const char nessie_str[] = "nessie";
+const char first_str[] = "first";
+const char test_str[] = "test";
+const char performance_str[] = "performance";
+const char echo_str[] = "echo";
+
+cmdlist_entry_t cmdlist[] = {
+       { nessie_str,      NULL, testrun_nessie_rabbit},
+       { performance_str, NULL, testrun_performance_rabbit},
+       { first_str,       NULL, nessie_first},
+       { test_str,        NULL, spec_test},
+       { echo_str,    (void*)1, (void_fpt)echo_ctrl},
+       { NULL,            NULL, NULL}
+};
+
+int main (void){
+       main_setup();
+
+       for(;;){
+               welcome_msg(algo_name);
+               cmd_interface(cmdlist);
+       }
+}
+
diff --git a/test_src/main-test-common.c b/test_src/main-test-common.c
new file mode 100644 (file)
index 0000000..8709eb3
--- /dev/null
@@ -0,0 +1,50 @@
+/* main-test-common.c */
+/*
+    This file is part of the ARM-Crypto-Lib.
+    Copyright (C) 2006-2011 Daniel Otte (daniel.otte@rub.de)
+
+    This program is free software: you can redistribute it and/or modify
+    it under the terms of the GNU General Public License as published by
+    the Free Software Foundation, either version 3 of the License, or
+    (at your option) any later version.
+
+    This program is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+    GNU General Public License for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with this program.  If not, see <http://www.gnu.org/licenses/>.
+*/
+
+#include "main-test-common.h"
+
+static
+void uart0_putc(char byte){
+       uart_putc(UART_0, byte);
+}
+
+static
+char uart0_getc(void){
+       return uart_getc(UART_0);
+}
+
+void main_setup(void){
+       sysclk_set_freq(SYS_FREQ);
+       sysclk_mosc_verify_enable();
+       uart_init(UART_0, 115200, 8, UART_PARATY_NONE, UART_STOPBITS_ONE);
+       gptm_set_timer_32periodic(TIMER0);
+
+       cli_rx = uart0_getc;
+       cli_tx = uart0_putc;
+}
+
+void welcome_msg(const char* algoname){
+       cli_putstr("\r\n\r\nARM-Crypto-Lib VS (");
+       cli_putstr(algoname);
+       cli_putstr("; ");
+       cli_putstr(__DATE__);
+       cli_putc(' ');
+       cli_putstr(__TIME__);
+       cli_putstr(")\r\nloaded and running\r\n");
+}
diff --git a/test_src/main-test-common.h b/test_src/main-test-common.h
new file mode 100644 (file)
index 0000000..3649c05
--- /dev/null
@@ -0,0 +1,37 @@
+/* main-test-common.h */
+/*
+    This file is part of the AVR-Crypto-Lib.
+    Copyright (C) 2011 Daniel Otte (daniel.otte@rub.de)
+
+    This program is free software: you can redistribute it and/or modify
+    it under the terms of the GNU General Public License as published by
+    the Free Software Foundation, either version 3 of the License, or
+    (at your option) any later version.
+
+    This program is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+    GNU General Public License for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with this program.  If not, see <http://www.gnu.org/licenses/>.
+*/
+
+#ifndef MAINTESTCOMMON_H_
+#define MAINTESTCOMMON_H_
+
+
+#include <stdint.h>
+#include <stdlib.h>
+#include <string.h>
+#include "config.h"
+#include "cli.h"
+#include "dump.h"
+#include "uart_lowlevel.h"
+#include "sysclock.h"
+#include "hw_gptm.h"
+
+void main_setup(void);
+void welcome_msg(const char* algoname);
+
+#endif /* MAINTESTCOMMON_H_ */
diff --git a/testvectors/rabbit-verified.test-vectors b/testvectors/rabbit-verified.test-vectors
new file mode 100644 (file)
index 0000000..8da63fd
--- /dev/null
@@ -0,0 +1,2169 @@
+********************************************************************************
+*                          ECRYPT Stream Cipher Project                        *
+********************************************************************************
+
+Primitive Name: Rabbit
+======================
+Profile: S3___
+Key size: 128 bits
+IV size: 64 bits
+
+Test vectors -- set 1
+=====================
+
+(stream is generated by encrypting 512 zero bytes)
+
+Set 1, vector#  0:
+                         key = 80000000000000000000000000000000
+                          IV = 0000000000000000
+               stream[0..63] = DCDCB614F738A20CE103637E58091766
+                               010B16EACD06A9108671B1EEEFE8CC17
+                               2EC9402DD54C53079767A6299561EE50
+                               66A5DD404C4D6875F4B5D611B007B106
+            stream[192..255] = 7117ABB7629B9853960F256CC2BD5739
+                               F1AA813DCFAA0CD49E132E64459789C2
+                               01295F09CA42F88CDBBE2B4D5B11FB2E
+                               CCB36DD1ED6CFE96FE21FB5401DA1E20
+            stream[256..319] = 12555C74594362AC415427715F62AC35
+                               6344F4EB3D384382EA4B7724F4707699
+                               6BBB73449FB55D7DCB59E96A8C674D0F
+                               7398193E519A33FB3C7F49015AFC3C56
+            stream[448..511] = 63FB65776A91527C170EBFD625D0D5BB
+                               3715D348FA47C027FCA3AF0CA1A716D6
+                               304F2E82E888531FAB33A57E8230E36F
+                               0922F8C744BDD1755644D1C83352A958
+                  xor-digest = 5E681B68614BB795C35EE3C0D0A84953
+                               170EE94E9B01ED744E33801591345B8E
+                               9D90EA87123CD30312204A6499BBD413
+                               29EB409967B125F24CBA7608D4A56B0A
+
+Set 1, vector#  9:
+                         key = 00400000000000000000000000000000
+                          IV = 0000000000000000
+               stream[0..63] = 0847A3706C54B746E480F34DF10AC86E
+                               C67799AA56694ABBE8A2D10AB5B32D7B
+                               575DDAB74D2D8F37AFDF0923B9A1C504
+                               0DC31CF5A11E43A5E92B326A2A366D8A
+            stream[192..255] = 1D9527A29B459829DC9524F266AB10F4
+                               B288EB887C85A36AE628281C43A96C6A
+                               A99C2CF791098B30611DB96690D1CB6C
+                               2E283E819BE12053040113DC1865B017
+            stream[256..319] = 56467CF20A734D51CC3EABCA1A44BE54
+                               2308DB174D37FE67F015CB8D395BA7DA
+                               43B947F5FEE26780F02EA3BCA36F0465
+                               86B2713C1AB4FB460982F19EA6DEC945
+            stream[448..511] = 1A04CA6C992E6930A551A01D56B403CC
+                               2A348CD66FB7B5921051BF1D73A47F7F
+                               4C1CFB5EFC9395DDBA74374C2F27EA3B
+                               D656ACAA87D701CB09D39945482C5399
+                  xor-digest = 879ECB08604CCAD26AC8706F621485C2
+                               2180AD25C088702444AB1779657EEF5F
+                               76ADB9E7657BA8DC0480A58D6C453155
+                               F04A739297E966E8BA50F51F74CDC1BF
+
+Set 1, vector# 18:
+                         key = 00002000000000000000000000000000
+                          IV = 0000000000000000
+               stream[0..63] = 178EDB78577D3F241A490303CC019F1D
+                               FD286FE86DC73287B43CF5CE60DB3D7F
+                               2A35768D44B8325F5F91A0AFCD8D8EEE
+                               B4F7188A087FBB156AF0833F669C11D2
+            stream[192..255] = 30CEC1DE9C101E5ECE19ED7E31D8F307
+                               F97D86F5FF71B09CA84F84327FC2BA1F
+                               E876776BC4FEA6CA11E1C99B7DC46993
+                               898A1CCD7D901E464365FE5ED3D97010
+            stream[256..319] = DFAB7A700E747801E03B43B503CA02BF
+                               B6862DF1CA287683FC0AA4AC6D6F9FE3
+                               C36D9F289CAACC42BAC35BF1B1CD2838
+                               BF15086131C7DFCBD626CAD4CC14984D
+            stream[448..511] = 85FFCBD014E13679EA9AB9F0D4B2E453
+                               E5FDE7E41080B9A360A069DDEA8DA2CD
+                               6B69FB27FD8C1ABEFE63322B4A2F0A40
+                               7ED2D6F7E4D4B80D2A79C0A6CDE4D367
+                  xor-digest = 903E1B7F2A5B1FA04B9E81A946A1C7DB
+                               9962506A652A0FB3D05D2B959221214F
+                               ACE2A69DEB4A70B9A5D7C06EC8514C17
+                               61BC83EA753AD3EB31E592F479F7B1A0
+
+Set 1, vector# 27:
+                         key = 00000010000000000000000000000000
+                          IV = 0000000000000000
+               stream[0..63] = 77FE705EE55BAB05978AA54D63071707
+                               009ADC8C18FC68A4D5941E0CAFB8E68C
+                               A218F1724EB5FA29485F0924F612AE67
+                               0D975B485190040F9E112783D665E031
+            stream[192..255] = 2BEAB3BB73A4DB0A4F8CA65FC6D52C02
+                               9D4E7678EE1C063B86D24B7D1C981B27
+                               6965B5E787FACEFB3D1FD03473252970
+                               55DF4909BFA8E54452C9BD4775018C48
+            stream[256..319] = 1D318B326B705E0E07263CAAE8B4F842
+                               F7595FA3B05BEE9EA595B51BA7F17AD4
+                               85899E1B550D3AC8735AC5BD13D6F658
+                               A7AC51BCC039110FD313978639A28AF9
+            stream[448..511] = 091F49BDC8504F7FDCA3AA469F4C331E
+                               52C81B2C4458F8D5E9CFE7B2D649DEF1
+                               BBA70D51AFC4C3F713C1CFF92C819BB0
+                               9BEC67AA7D45274B95D90F409209711A
+                  xor-digest = 6B7856EB005B9CEEDF4D1300961C67D7
+                               5CD309BA37E632D339EFD24F72AA5D2D
+                               AB20C1218533CE8E2F30C1F65D63FD03
+                               8955076A5358F0887A3C84C30FE72861
+
+Set 1, vector# 36:
+                         key = 00000000080000000000000000000000
+                          IV = 0000000000000000
+               stream[0..63] = 6414520BFA7AD13784F125CA63868602
+                               B83A834E403F6ED50F097107EFF80FE5
+                               67987486EDC31CBFF000A52CB9AEDEA4
+                               B35F5DBD8438E901356A542A94232350
+            stream[192..255] = DB271F6264119C704197219DFD7702A9
+                               6196CD64C6E3F2558C330174BCF3DFB3
+                               67294EB0AAE517BF8DE9F58E2849E885
+                               195D0F86B30280AC048605372FB3A2B9
+            stream[256..319] = 43541F31E889E83D7BB532111A364AD0
+                               6ACFE745DD93FC6CD6B11078EED66F0D
+                               9402A48D7C9F5F0ACCD9EE49E03A28DD
+                               E13FE9D694FD21D056ECA0F6AF53CB2A
+            stream[448..511] = 63F7181EB551CAEE406A54BB95FA4401
+                               36268D73758528ECB01620224661473D
+                               DF663FEAF506FA01F9A6B7FA5E4B5296
+                               E0CAD52A242275C346CC385EF3D04441
+                  xor-digest = 3F701BA013EB02D51C6060D25FDDC912
+                               EA8C11A4FCDB9FA3236F40EBFD1A63EE
+                               B04CB11E9CC0809FAE402656D5BA618B
+                               23630775786717E99297A47CEE7107ED
+
+Set 1, vector# 45:
+                         key = 00000000000400000000000000000000
+                          IV = 0000000000000000
+               stream[0..63] = BAA234DC594C3D1CC88CC9EC7D012730
+                               45D2E6157174BE898070ED8AED84988D
+                               07E8496AA0EEABCD0ED86F68F5705F25
+                               490DE5E3D40611E3E8AAC382E99EB7B7
+            stream[192..255] = 8AFD7873CB17CA9113A5C3B4DA41E6B8
+                               837A0B2FE4F360702CCA80F364210F51
+                               D83EF8D12599571B40C150B40705B3B1
+                               99D84B03F5AC154CCD485F862D5E915C
+            stream[256..319] = EFA5B5E9A59C63BF8A230A5C4266E159
+                               36BAE705BCF15824D82EC2435218B3DC
+                               72B1B11EB63F29D5224C68E19F651AF1
+                               8E05038A1689C70DED473710C9141035
+            stream[448..511] = FB89F9AE501FC080F84285A080B12589
+                               548EB87D6926511E036151DB7AF7DA1D
+                               CE10635B672DB5BBD7437AE3234F0D99
+                               B2BC0619A2C87D322849946BF393F59E
+                  xor-digest = 472066F9AFF63926784E81EB0C2CB197
+                               51B8B2C4359B62077739761E50CAF90F
+                               2ACD0A59FF17CD9627D8138E17DA1740
+                               C1B18C94A27F17187763E8E07F842593
+
+Set 1, vector# 54:
+                         key = 00000000000002000000000000000000
+                          IV = 0000000000000000
+               stream[0..63] = 8105BB206CCCED69F9132B7FB44902BA
+                               C0C2206FB09AB8989A09A15562EAEDD6
+                               3A7D1E9ADF90CA8A3F7107E452D5488C
+                               A386A722C4F73762C1E4672B0D01868E
+            stream[192..255] = 3D660C3E7BDD436118F49C4839F577BD
+                               82910452B5FEBB0AF245B2711BC37D03
+                               3E9E5BC90E7C238765270CAFC38D987B
+                               50499A55BD0C29E40FC01FD56DCCACFD
+            stream[256..319] = 26F935F3274A49DBB15445809F44833F
+                               E952AC5A424B5E3E8F23CE6834743CC3
+                               09D8269EFD7DD78BC8727AA7873A9CAA
+                               6A84354B46E770465E2E2DA48E34990D
+            stream[448..511] = 33453B4A5294C04C680420CBFC5D62DB
+                               4EB42F5B3535D3DDEF1845BB6A4B952B
+                               9A0D06018A0E3DE76DF672A94C067CAE
+                               F48B1D2EF19E78DDBD5112CFECE5834A
+                  xor-digest = EF9F1C5B04AC3656EDAC919AA7B80B5F
+                               669642AFAEEFE0B51A7A01DE3CC9B798
+                               7F509098E9901734718A290B74FB954D
+                               E4B9A3962643CC524F8991CB1F7A6517
+
+Set 1, vector# 63:
+                         key = 00000000000000010000000000000000
+                          IV = 0000000000000000
+               stream[0..63] = B2F746E4CBC062068FA953B1EDC2C7C0
+                               5BFFBAABC77CEBDC6D1C9C930C3DE23A
+                               2BE98C3EA3E2A49BFD2C7987DBD4516C
+                               FC6E5F81FC1F58EF9DA996D565B6FA21
+            stream[192..255] = C28157C3DBB101C812823A3D2201835D
+                               BDA16B3006EDF9C2A89FBD0566F651AB
+                               F4DFD31548C34079DD63782CE9A8ECBA
+                               1ECF590D6645090C333DD5240EA4F17E
+            stream[256..319] = 1D74EA209542EF7B09A1B03D995D178D
+                               3088E4AAE0E30FEAAE531A53246C78E5
+                               0A4D6E2AC70B11A7E123E4FE26D82E66
+                               9EC9248785FD7EB5BE1D36FC85BFBCB8
+            stream[448..511] = 48CBA063235997E9E93A4D3F9E994103
+                               0680C0636ED64D055E057F7461A1B660
+                               71AEE9BC86EFF9EEABE02DFCDA753948
+                               A7C14057339314092CB3750CC4EDB7D3
+                  xor-digest = 1D3D67A63568877BE046E107C1A548B2
+                               34EAF54CF4BE9630B886C8E846173330
+                               798132C040BBE341AEBDEFB671E359C2
+                               21C0FFFDF3B1524C4EF4439DA4BAE537
+
+Set 1, vector# 72:
+                         key = 00000000000000000080000000000000
+                          IV = 0000000000000000
+               stream[0..63] = F6B2157EDE86467D5EB6AB4201F8C3FD
+                               F309ED03CC3B83213F31ADA62BAC1089
+                               1A4A4FCC9C1586D47655594CA3D6873F
+                               175FB977B5C188707A72416EF64A7FBD
+            stream[192..255] = 41F37DF1EE2987CB567672880D2B6046
+                               67BD8F347A4DEE5082CB4C3C3496E399
+                               6566C8800CBE194B994382760E981571
+                               A52ACE1FDFC0CC5C1ACEC5FC17D46E0C
+            stream[256..319] = 6EAC6BD474192CF1461E73F7B2357625
+                               93616AD2EA10CAE5AC56893A5DC68DD0
+                               F839D49F0DF076AC2373F5CBC2FFB224
+                               9F43C984FABEC387A2C195CE77407295
+            stream[448..511] = 19B0F855E69328BB3467ECE9C47C2F8D
+                               F389803CDECEFB7EFDB4D872527C05C0
+                               DB80286F0F606C2EC43F48B64CA2CEC5
+                               77951C1DFF73024D5D52FA048EA47F58
+                  xor-digest = A1848B0D933572FB2FCF58035893F88D
+                               01D95BB6598647A9DC8EA326254FFC43
+                               DF34FB16BE6FB8A830EFC584DE2D5BEC
+                               7A68A03B4956CB89FEA243B54F6D8FCC
+
+Set 1, vector# 81:
+                         key = 00000000000000000000400000000000
+                          IV = 0000000000000000
+               stream[0..63] = FBF7BF104F3EB499BCD76A4D90AB9F49
+                               4DAB13F5888DB91FCB94AA3663384118
+                               3F8DA5008EBA653A56CFE160D97CA7E9
+                               345D5262DDBF047E401DF8AA6A9C3660
+            stream[192..255] = 7E8B3CA581D546B3CA71BC6FF852C602
+                               3D83D85641A7582DFE4BFA0BA035859B
+                               87141018DDBDC3075CB7DB5F0A7C1A3A
+                               E98F41F6F81D275324B5ADCB1DFBBCCB
+            stream[256..319] = B8DBBA37593A92AC49B54E01834BCD9C
+                               01D482150AE64B6D3E4FDEC546231245
+                               480217E7B0007BCC12F81E841BB8ED13
+                               5A17964F27BCC08269ED900709F7E5CB
+            stream[448..511] = CA073241DEA3E74D0AD65B5B5BC3A728
+                               637C42263CE6ED5FB60760DEB7709901
+                               39D6E784FF306C7B91FC9CA87B760596
+                               54EF5F0B0A1CD518D89C31AB13A97AB1
+                  xor-digest = FD5A37EF99CD511340250D71074318A0
+                               F9EBFA19242AE466CD64D60286843510
+                               6A741DBC09F86BA7C5DF38B606FDCC0E
+                               652D4AE2B1271DF63CA71B49639B809C
+
+Set 1, vector# 90:
+                         key = 00000000000000000000002000000000
+                          IV = 0000000000000000
+               stream[0..63] = A48202A2119A3809D95031267D92471F
+                               83774767C0F38A6D69D7A5FAE6827E2B
+                               687F878FD3582A83BD41AECCBA2A9189
+                               7C7CC66C1BC7E090D17E5B22C7245136
+            stream[192..255] = 8731DEED2A95CDF8CA78FAEC4ED9F2D3
+                               B782AE73D50549ECD92889F0624E7C4E
+                               67C8FBFFAA09FACF8523E578800355E3
+                               D5568304D3FF78A12452371570F0885E
+            stream[256..319] = BCEC4E14C2E112E66347B218421D1823
+                               325A3D7866FB654AA247F4CCFE1E5772
+                               A3975B88D84BE71A7392EAE83E836DD9
+                               A0E422E2C191080F1478C55EC8E70EE0
+            stream[448..511] = 4D334A264A4596DE241152DC705C09FF
+                               C61E771659488096FD2B088456A067E3
+                               680C0C060BCB072B3F5553156048379B
+                               26845BAD16A0E6C996AD1E6B94926B63
+                  xor-digest = 40269A7002F3910AECD0DAA32568537F
+                               27E19E221B5BA830AF317B294BF40363
+                               07E3D1E52F894707133AE15129AB070D
+                               22A3064254B52374DDDC02C50CB2ACA7
+
+Set 1, vector# 99:
+                         key = 00000000000000000000000010000000
+                          IV = 0000000000000000
+               stream[0..63] = 73A1348E48E50F450ABCEF31F8C777FB
+                               80754EDE5B17D226391FF1AE3394D81C
+                               E47B748155E1FB7EE5289CDDFB872A59
+                               083BDCAC8BF36DF8B7DF265EE1A5E4DB
+            stream[192..255] = D77041F6E5F9E992E0A6B735344A7ACA
+                               5038453D4409DF0DF40077256F47F203
+                               1602B65530DF45AE4C75A00E7D85C35F
+                               5228157DF511F970334F79D256E8C2A4
+            stream[256..319] = 45503E7C51C62DB78A736484BB3ECA38
+                               CF520F6417A54C460DC345CBF20975BB
+                               6D96A8DCA5F8D9E87DD8DDD90DAA63B7
+                               EE15BB426ED88DE79D4568EDE5F4008A
+            stream[448..511] = F313C6E3D2C09C36372AB808CD1D4BC2
+                               C1BF5C88409059935A812B059EE70513
+                               E96356B1525B6DA7C50EC0E3312EB5C3
+                               12839384038A933C1C1D20276B76A16E
+                  xor-digest = 6BB72FBDF66E44C6292AA5CFC2F59F5A
+                               50251793125E28D9F2860B75F4CA4E65
+                               9CC449227191CD9BCDA4B2E5076727DB
+                               BC210B0D5BA09CC8C39E3A946FB879DA
+
+Set 1, vector#108:
+                         key = 00000000000000000000000000080000
+                          IV = 0000000000000000
+               stream[0..63] = AE8AAC412BC6B6F81AD0100B231A84BE
+                               EE3686E0ED509F08A7B40E4329883212
+                               32198A234B5115F1360B4F93EA74F20F
+                               295FBDCD1805CA4D68145A9024B0754F
+            stream[192..255] = 2B182FF4FC75360E8E5B923E7ADE0AAA
+                               9013E613CE8378F1AFB29C1254C84E2D
+                               1B4864DF76120CEEB123908699AE1DA5
+                               48F23E67C1DAEF359DA0498E6DCDF2B2
+            stream[256..319] = E90BA1D435CCC1DE56FBCCC6A84DCBE7
+                               9E18D7EDB585BD8E6D36EF692DF9C78B
+                               2695BBE2DB8E46166F1DF03F8003A2CD
+                               96EB1CEA4111FE22B30CCC52B0EFE07E
+            stream[448..511] = D41C9F872600EEDFDACF659D9FFD9260
+                               5944446D321E0CBD1B12C2106FD7CFDE
+                               7A2A5A52B9B3DDDD8253176B9C9F9F55
+                               687ED6A310F923978A2B27D99BDF32C3
+                  xor-digest = 00D0133EBAE055DB7F000B24E58EA36B
+                               82018514417EA1AC2B69B6D96BF8DD45
+                               9063725F32CA06CB4DCB7335E8EEEEFA
+                               A338BF9C98E01DCAE9297FAFB1DED59D
+
+Set 1, vector#117:
+                         key = 00000000000000000000000000000400
+                          IV = 0000000000000000
+               stream[0..63] = BED2F045FD3AE491375F44FF89915FB5
+                               77B8AE4949BE93D027C999D4B0FA24B3
+                               0DE2C9A498350F9D19879C477D791E31
+                               CD29D20E5575428B5035A26B4EBA52A4
+            stream[192..255] = D5B1D692191B789C154C9F73080DA95A
+                               FA5029189CDC7675DF29E8260EA589EB
+                               07D22713C074AB04F17D1B608808D371
+                               6D514626FEE626962B1FD417B637A534
+            stream[256..319] = DE7854CFCBF99FE8D68025711E78CBAA
+                               6029E88DC7620F9B87308D97D4F46DC4
+                               FF40A3F3D4E781FD7B899C621D42AA9E
+                               07871DBB8DBD2B8398AF921B01B17E62
+            stream[448..511] = A408101324D5B636A4D67D11DEB3DC14
+                               911C7412181944C8268127303163F4FF
+                               FA4681D85352B1230ACD8663797A0C45
+                               A6DF090A2229B93C6EC7D08959919E42
+                  xor-digest = 9C45A25D754235C191A748811F9C8483
+                               7C06795D0636CAF8984DD1C3E1DC9A84
+                               639481D2629D363A8F3AE7952048FCCD
+                               122AF5B2F9C1F1E9736B0894514F692C
+
+Set 1, vector#126:
+                         key = 00000000000000000000000000000002
+                          IV = 0000000000000000
+               stream[0..63] = 2668749B5D1436CC4A7C43AB4381EC91
+                               BF447D1F1F552F7C2493DACB72ADD952
+                               2A0A3397D2550C01CAA56B107BA2AF0C
+                               8A107A285BF087515E6973C128581B80
+            stream[192..255] = D79AF153B28AB48B6E18F79357E56906
+                               0AA8A10D528014AE4F6C8A088F38DAAD
+                               6DA52A44D52EA554E195AD84E6180EB5
+                               D9B4EB680BBBD715105DAA9041F73646
+            stream[256..319] = 401F99CB4DD08640B512F8E0899A97E7
+                               F98A7B9A60B93B3BCE05661A93699470
+                               6FB4B484BB3CD05D4B7855F6A54FEEF1
+                               47E850FF33E8BC2B4801C6A96F306DBF
+            stream[448..511] = 610B5B3AA681D9A5B8A3FA34F1B273A0
+                               A1643935C609BEFE896CA2E91FD13D79
+                               B4423DA10E93CEF63C34F0CF9C552346
+                               C180D73C7AC283CD9E6193406038AC17
+                  xor-digest = 8AA39CD16339D283557423BE770F25E8
+                               B897345FE6CE733C81709269C0E2E65C
+                               8105B7A62BB8C8B0BF9F3407DBDAD0C0
+                               781E452D54BC73BC8518D9679762F322
+
+Test vectors -- set 2
+=====================
+
+Set 2, vector#  0:
+                         key = 00000000000000000000000000000000
+                          IV = 0000000000000000
+               stream[0..63] = EDB70567375DCD7CD89554F85E27A7C6
+                               8D4ADC7032298F7BD4EFF504ACA6295F
+                               668FBF478ADB2BE51E6CDE292B82DE2A
+                               B48D2AC6565979220EC909A7E7576098
+            stream[192..255] = 706630D4C431BC49E07D9CBF98FAB946
+                               7108299DD9B358BBB4AEE64AF67F1E5F
+                               EC3DBA07A0CEE1BE2E2F0AAB10BB8106
+                               35F403DA20B8ACAACDE4D85546D0A820
+            stream[256..319] = B35DB614A32070FE8CAC67B378184C45
+                               354753D37EE6D057ECB36E0D5BE5DAC4
+                               11CC36DA10A2B670BC201B2C8804377F
+                               25C599ED29294F3E267C866DCC68276B
+            stream[448..511] = 109D5563D46DD78C2905F7D90036300C
+                               60326EBE3B1AA385FB75F1C5C7311BFD
+                               6DDA960C716C33E51C5A2B1906200C40
+                               CFF62FB5782A41BF816F7639C9341244
+                  xor-digest = B4BCD9E0E9CAAE180CE6EBEB12826CE7
+                               8FEBC2BA6A374C39C90F1FFF0C059FCE
+                               2A197950302FEC15C2C21602C83233D9
+                               A8DAADCBCB0C5E93F1361E7C29E1BEE9
+
+Set 2, vector#  9:
+                         key = 09090909090909090909090909090909
+                          IV = 0000000000000000
+               stream[0..63] = E7F8DC75257F98D89124464C5DDCDC86
+                               93F8456B7FA2E2E0A907F6B4D9A56F2C
+                               86E5978203A6C8791C119D7AEC91D5CD
+                               F087AE3943091B2788B675353A0AB24A
+            stream[192..255] = FB8986A91C6CAD907E90A47F962ACB15
+                               5112027212D69E08C230A8495147F6B4
+                               3E769D9CCB01F6472E8FBA993AC6ACB1
+                               D37918D00C269B7BBE14766579938E69
+            stream[256..319] = C665BDB6306B6C8AD987BBDAAD5C3B35
+                               EC8D0552058472C8E6E2A068C7BAFB3A
+                               301724B7B601FBBC2289114CED423467
+                               59BCF7776083801EAC2C6330C81B0E45
+            stream[448..511] = EB0629217238ABDA20897FA7D81CE478
+                               F83CE9BD5B45490D94780C17F796CAC8
+                               B16A60B66D31BF21F0BA3A7AB08C6262
+                               3AB28229B1B716E21C6D2DAB92559B71
+                  xor-digest = 0D6B57A05FD49F29D9B90297B5DE1D51
+                               38846792553D4B5766AD55C04A6DC58C
+                               58B678EE1313F96293D6CA6BD6AA2E7E
+                               8D5B500C2BFDF05DCF2D1435B8C5E00C
+
+Set 2, vector# 18:
+                         key = 12121212121212121212121212121212
+                          IV = 0000000000000000
+               stream[0..63] = 62B5D123F8E578D991AD64A698339366
+                               6EE1107AB0EE844D000087F52F9E9038
+                               A413E3B500D1A7B50F94359B004F2132
+                               D1F229686673D12DCEF24700C297AD74
+            stream[192..255] = 28277E2776C9D0917541F37A1EF8E761
+                               06E75AFB73BB9217AB350F3D78411A63
+                               A6D3E8AD8850178D241E969F9A035228
+                               92FB2EED1EB486802C9DD456ED42F67A
+            stream[256..319] = 56476411E296B39BDF320E5FCFE843F7
+                               4592BA463785CA8FA7BE44CA965E0F5E
+                               347CD9703F9CE09856817F8F2F221F62
+                               D0762E166E9A7737903DC0CC06DF5628
+            stream[448..511] = 21F84D08F4A321A883C2C9ADBEA4342E
+                               6F490D3D44417AE971324F3A0A6DE56F
+                               E1A2C791DFD35B73355F9CE8F9C30D94
+                               94F97CCFEFCBA9613423595BD95D11F6
+                  xor-digest = CB88021CA78ED00336DD0FEEB7186864
+                               1B5CA80234B91E6A12A079048EF3AFD6
+                               D4DF9AE4237E9B367D56E7F61A563DB1
+                               94E5D00218CB7DA829AC23757A6A4A20
+
+Set 2, vector# 27:
+                         key = 1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B
+                          IV = 0000000000000000
+               stream[0..63] = B8BE166D69975D3D9D991DC28F7B334B
+                               D14CA741BAE95E93FEE603D54509F8E0
+                               A265373D1A5BFA0EF97B61E2998E7228
+                               3727FE5A3DED85B73CD41B86BE594684
+            stream[192..255] = 6A883DFC1E145178A884566EBDAC1BA2
+                               5ED178C449E6609CB2C500DAF811C876
+                               3B96A073A74A8E5B461AA88290352BBC
+                               D3CB63F8D071B76F78A939147AD5E0D6
+            stream[256..319] = E531C743E67BC628C9FD3D8312940115
+                               8BFECEC99A22DF0ADC73501ACFF26011
+                               5B6D1094EA51A841817919FA5375599E
+                               60652CF37FE2100FEC4E6C45B6AB162D
+            stream[448..511] = 01C885E74B3A5438A005E35E8F04ADF2
+                               DA312163CCE2372B2E89EA10FA9D269B
+                               6D9301A30A652D4CDDA0EE147DF05286
+                               8D16156743B90439F66C018FF4FED91A
+                  xor-digest = F0FB24690E099CCBBFC949D2AB526549
+                               A0279BB0289370DCD79F96D3C8E91BB5
+                               9588FFEF12E9333349002EF3CDBFF5B7
+                               560CF367DC52E75A1C0AB920358B921F
+
+Set 2, vector# 36:
+                         key = 24242424242424242424242424242424
+                          IV = 0000000000000000
+               stream[0..63] = 97260F8165CB32935F6E82380645E129
+                               05550F2DE054C5C443489C27706D8E40
+                               5B02C5F17288C72B5E91D9635B7FFED5
+                               E20A533FC30AAB90362A4CFFE1158446
+            stream[192..255] = 5E5426797F310DEA867640CA530B1F9D
+                               2F8178F9B9996E1435EE0541580F1D08
+                               D2AD17DDCC93A4E250800D902CD56FBD
+                               E779D40A0958550709CAC29040F9BF70
+            stream[256..319] = 86CF2D6EA2FE0DE8BEE8F52CC742E98D
+                               55763BF9EC2F7ABA63C12E9487E7948C
+                               0A864D78FB5E99D0587254286196B239
+                               02F4BC3A5E55B3C63142D10F8401AF63
+            stream[448..511] = 4A809F1147E7FF8B541DB96B56567268
+                               741E623467751CF3AD7FDFE88525A052
+                               60DEB94B88FD630433D568C5C964168B
+                               8CF3EF696841ED6E4FADAF86E3D920C3
+                  xor-digest = D5FAF09F542D5B25286E6DEB8CBCB0EE
+                               F6070718EFB5D4C320B2EB4A57401A55
+                               CFB921E2C33C1802D0A190D5CFCBFB22
+                               DD8ED5D0C1BDCE5B37438A2F9ADD2973
+
+Set 2, vector# 45:
+                         key = 2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D
+                          IV = 0000000000000000
+               stream[0..63] = A98720472640C385E68F7407CCA56859
+                               E667C471121418C3F1F653EDD1A2DDE7
+                               AC6735CE67A92CA65772773829CBA796
+                               ABF7F318AE8F6E0FEB8C8D20D099627C
+            stream[192..255] = F62CE9708066A91A88EA206F2E1B4899
+                               DD81D6194868B67B6144470AFA708810
+                               36F624ED7BED52A5A1C68E953E22F5D8
+                               3ED08F9B4819BA0DACAB6B8E5DE254B1
+            stream[256..319] = CA275CD70DA59F4D0EBB25D5F347C421
+                               CDD4B7739DA4226824FEBD7C598322BD
+                               2C8AC19059FC7857239CEFE7D3570927
+                               DF199C62570723FEBCE55E5D2E97C230
+            stream[448..511] = 4974E94DDBE366813E27CBEE6CE96A4A
+                               D09E2D6BF52037AE474B05B1A1B55703
+                               EE529170AE3DBA70EE7159892660249C
+                               AAB273AFC70AB8C8E47844017E6581C3
+                  xor-digest = FECBD4C1438F3E74A3AEF0F4809F9DF5
+                               564345AA54D338B71DF1D457CF9235D8
+                               CC2BB61B758F08DDB16B5E29713A9AA0
+                               5F50D69C2279E64194BE87A8DA1B6609
+
+Set 2, vector# 54:
+                         key = 36363636363636363636363636363636
+                          IV = 0000000000000000
+               stream[0..63] = 215C64657D3E1F9103C791A68D1B2CE3
+                               0FB7E40AE433E5D490C76F3FC87C3E43
+                               12798A3468E7A9BE956966C9C23969F8
+                               E7F5732F046AF520162F559D6C5DEF8D
+            stream[192..255] = 3FA8C3032AD52534D2D18395FF42D32F
+                               271B2BE17A79FDD809B5FC0BA8840B03
+                               32DA45D5B47ACEE16B0F2E567CEC953C
+                               63810E98F4FD978525A770B6CD520ECD
+            stream[256..319] = 326170765A7499E7826E4DE5AE7DA1FF
+                               506E6693DEA0816934A04470A9A6F820
+                               89687B52EEB399E9E7491F6F50F66146
+                               BF551711108E279B3ABA667EAC965EB4
+            stream[448..511] = 0AC5911B6BCB6E3110A4EC1AC0FD473F
+                               1D4E8AACB643022C376E2231F6039ABA
+                               9A3B81A155D3972F8987CDE1E467069E
+                               B889BEA2F814950A0FB9D97D17B6B1A7
+                  xor-digest = D5A28A548DD779BF9D8ADD8047C09973
+                               7218D27AB9B357F62382E4FA35364672
+                               FB71A0B735C1DE9F6A3695EF6DBCA5B8
+                               233B5CA9C7E2D42650469C860F7711BF
+
+Set 2, vector# 63:
+                         key = 3F3F3F3F3F3F3F3F3F3F3F3F3F3F3F3F
+                          IV = 0000000000000000
+               stream[0..63] = 07A2104DF55468A03A06D5A031DC2CB3
+                               BA0AE5D8262133A553630048B0F0C19C
+                               CEA0CD6D03A5ED394698F6DF83C8D16E
+                               6E578BD1B2145AD9D92AEC5F298EA6E7
+            stream[192..255] = E8E5FC6B90D0E9745F7E26CB6E6318D3
+                               B09DB532355C29D451183B83AFB24A5A
+                               309FFA6D9ACFD6059775522E6616B5FF
+                               0F994D08657304D560573974A39FA086
+            stream[256..319] = 3ACA2DAD216828E27A8A69ED65BDB748
+                               F612A7891B734E39291B86A19DABBB55
+                               942539D6275A94A60EC29007EBAF4DFE
+                               7A4911D83B951D226EB992FBBF552B08
+            stream[448..511] = FC03429989E2B4549D88DF29C39290AA
+                               087E2ACD95404F1E605FF510F63D1FFE
+                               9F2D0BF8B709B92038C56A3FCF60A8C3
+                               208A50A09F015078EB14E972C45C73EE
+                  xor-digest = 3E0084DDB6836BC98BA3E878FE321128
+                               A56218279BA6155C6BCB601ABD259CB9
+                               8D4CC8FD6F547D8E7DB155DA0DE3A6DD
+                               4F957C6BD41A1A09FFB6214AD39779BA
+
+Set 2, vector# 72:
+                         key = 48484848484848484848484848484848
+                          IV = 0000000000000000
+               stream[0..63] = 7D492821BA504459DDF1B750789689C8
+                               79363F723E05AC35302C46219B542AD4
+                               AFDD29854FDB8753235354C9F2D9AF71
+                               5BA712F8AF8E9C98328597A63AE9E338
+            stream[192..255] = D79196E3EBAE2CC7B1E361D693DEDF92
+                               3020B5B69B96FA91CB54D0A039CBEAC5
+                               D85C6F192B57AB2AD2C5818E946D4275
+                               08956D83FCBC2883266BD702A43A7242
+            stream[256..319] = F06D97724EF4A84819C18A9F039F8007
+                               A7FAF92A4670370C84FFAA31D5AB00EE
+                               29A541A23511FE62E10077FB274EE114
+                               E667D96ABF0D2FD2249AC38F11C627CB
+            stream[448..511] = 1C692D1455CAB3D3CF9B4D0C6DDDDEE4
+                               F63ABC2FA458917B4CF04436EAB75CE3
+                               FBC6B56CF1D3D24CD285F1080BFB6189
+                               EF8B8F2A9B851A721445FFED5B66C073
+                  xor-digest = B5560C273215214C7E1B552528BD100B
+                               87CDA0FC7DD3DE92827787F3BF41FD51
+                               E35EF7237F14E2A027573D05995297F0
+                               D559383CF9CAC082A215D113B2FE255B
+
+Set 2, vector# 81:
+                         key = 51515151515151515151515151515151
+                          IV = 0000000000000000
+               stream[0..63] = 9B50B71FDEC27AF3F5224C02D0BF435E
+                               64EAA7E927F6E0FA4B6F0E444389DDA1
+                               C8AC946BF3BCE3EC2F8474E386634D0D
+                               DDD2399C592D41B6B9242948E29722C1
+            stream[192..255] = 58425A250481646F6C4114C73D4148FC
+                               CBF2A8EFE6094232C10D7DA2F2B3283B
+                               F80C101C6F42A0B45024509AACA67EB5
+                               7972C8D1842A2D452CFEA460FF9C65BA
+            stream[256..319] = B03B836E5E1536CEECCD98FE0E30DA3B
+                               2106B0480E599765DB406BDB9FDF2313
+                               2B4B4D4D0B8B321B1CA1AAE0E62A8676
+                               B7D0CA9D953B6F80CCEF7CF33E91DD20
+            stream[448..511] = D36E8B836369ED37416D47D699C7EC92
+                               75A30B8BD30B3831042A41D2D7418AC1
+                               847E9F918B6E348644EED62B47B6ECF0
+                               906D3B8D4CC533100652E7503CE77FF0
+                  xor-digest = 86A6D63324A4A691A3110F89C9809B09
+                               61FB6E36E181C9715A56B5C07A890DFD
+                               48687CA7D5006A364EC9EFE8D4C7E1D4
+                               D9306C85A09351FA9063D8AF3D007F95
+
+Set 2, vector# 90:
+                         key = 5A5A5A5A5A5A5A5A5A5A5A5A5A5A5A5A
+                          IV = 0000000000000000
+               stream[0..63] = 947BF8D9CB76D72AD11300E9F87DC775
+                               CAD0F21E55A9B4E3442A811848C8D3C4
+                               403733DEC1E0AD651762E9C76649FD34
+                               9B161773B20FA271CF88753173CC9A3E
+            stream[192..255] = 250E5FDC25CFA6556EC8D14291213495
+                               9C48BE9E99FA11204C4F0D2E60256BD2
+                               E7BDDB750028D1FFCA7890F2E1052A99
+                               C5FF22A1EECA028B42E48ACBFC022CFE
+            stream[256..319] = E13B33F7C1D963D4306902C90ABDB406
+                               847EF90C72574CD04CB8407DD1B1F984
+                               5732F9E7D782B93E1A76D8B3D55A4635
+                               D2F56730C54F7099B80C843AC738A641
+            stream[448..511] = F80EE18B800754361D4008E630A34740
+                               B7D07A89A711F0F3F3FD18AA2B9CA689
+                               29A1E8684EC396188E9A4E970217624E
+                               22BE83F87B593FB548DA290256F072BD
+                  xor-digest = B258C26705ED398D8912A42D5E87E326
+                               1A25E341828A19E14D0C2C628DA3C105
+                               69816731909374079DB5F9FA68E499EE
+                               6FCDF2D00CC1BEFAE0EADEF7AA1C8365
+
+Set 2, vector# 99:
+                         key = 63636363636363636363636363636363
+                          IV = 0000000000000000
+               stream[0..63] = 51CDD88200CC5E396ECDEE75342E2797
+                               09AA9675D6945A1046AAFA2171FA3ADE
+                               5126A367BB1DE48B9751F9CFB9A617CE
+                               365964AF30AB56F36C436D095C9140CD
+            stream[192..255] = EC7DB5108C2B535694E1B2CAD6EEC51F
+                               E52B2587F8A0DFAC557B15A8F30CB73E
+                               A87C5ED19079265FDB218D364F3E09C4
+                               7E733376E8005BD2A198A1D13BA75E77
+            stream[256..319] = 4112BE43D8BD6668DFA0C1F2B688906B
+                               338F6CFCD500F004E7BF2BC903C6E1EF
+                               DE4039331A26A144298759002F7464A7
+                               FE5B68CF7DDCE26001D9EE6BF8318FD3
+            stream[448..511] = 7893CAC1C6065126DC81170B16EC751F
+                               69012E1E3CF63CD7E34FFD4231D89FD0
+                               6D3933066527A096E2E2ABCEE979C950
+                               771302C80EFF7A69FE0960390BCEA519
+                  xor-digest = 48B42918042606E89451B9CB4E943B48
+                               79E9384F1394561A8CB45000BADF1BB6
+                               66834FAB3AD77AD3D4F449E8706C52E8
+                               38E071357076B8D0E6D4D9C07028A23E
+
+Set 2, vector#108:
+                         key = 6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C
+                          IV = 0000000000000000
+               stream[0..63] = 718EC9CE30AFA1D0227EB4C258E3E021
+                               E5A8C79FDE66D5E77DA9AC2E03C4B215
+                               438961E4B7547DE3D25364139603680B
+                               ABB795E71E68DC8BE87D2044B5C3A6EA
+            stream[192..255] = 2BE5B79C27D0DF9E5C9664D6BF5A0809
+                               D77EDE0CCA5F975EC178AB63D3DC660A
+                               AA79118FB469BDBB118A7EC3B0782BA3
+                               6F9E5681020A77FC0F63096D4CC4FEAE
+            stream[256..319] = AFFDA31EBB725443EE0913591359D3D3
+                               FC82DC94F39E331FFD9A622C260778BD
+                               2BF519E6C6048251254654159E4CBE24
+                               6310BB1A7B6EA285586AACF0F84F3D98
+            stream[448..511] = 10310F70CFF2222A64C1CF1CED8CA57B
+                               BAC520E01B2035EB4C4E029C5E7E8DBC
+                               4A02C3095A1AAA65A7779A5FC9C8D1C4
+                               8CD462021A992E2FF0D782E042E96EDC
+                  xor-digest = 7EEE6D4E90322574C6694FFE5D2E21E3
+                               8D9639EA13B0C38F428ED8B9F8FD0158
+                               A26F50CEDBDE38772A7E069ACC4E2203
+                               39EC4288EBAB10CF1F0A54B0D8FA1B9D
+
+Set 2, vector#117:
+                         key = 75757575757575757575757575757575
+                          IV = 0000000000000000
+               stream[0..63] = 735BDE23068FCD60A416443FA9C0689C
+                               5239DFF5785E7852F08EE0904BEA8BD3
+                               9DA1B26EC7025F91179B7B7A421B999D
+                               716EB9653312FCA12F4829C5012A802D
+            stream[192..255] = 6AFE2440ABB1AC5EBAB9246DACC8554E
+                               B5E8F9B2A256E99AC6418BAECF68D3FF
+                               66087F0F82B3D3E3900527B1FC8DEB8E
+                               7915673DC0FAE985FFBFAECC8E4AF31D
+            stream[256..319] = 4BB43B3E90BF7E949B77924790EC46B3
+                               522C2B413983C4B0DE143772E2A35F9D
+                               D27EA8A3723EE996D79F6A07C957405D
+                               3B264FFE5A4B3EBD985A459EBF30AA8D
+            stream[448..511] = BB9E0A1828F1451B1D12FECCA3B9DA6B
+                               15F7B80BB16A2EEC694945ED3034C799
+                               F15D1754820F8B1AF07DC5B5F8566320
+                               EB1162641025DAD7C99856050A92A6C0
+                  xor-digest = 0C46AA24CADA3276ABED94075916980F
+                               BB3B609B8898036BA0824403771FD240
+                               51858E248985B6F6F6DB450000BF3144
+                               909084962E5AD310C049EBDD37110F6E
+
+Set 2, vector#126:
+                         key = 7E7E7E7E7E7E7E7E7E7E7E7E7E7E7E7E
+                          IV = 0000000000000000
+               stream[0..63] = 97CB4027B82651B0CB7D6CE5B391307E
+                               830190157E94E8F0F4A51177006AE316
+                               9A0EF288684AD26E960F28CE91A74C80
+                               40E153A6436100F3629E54DE8A7543AA
+            stream[192..255] = 730F3617B24C69D06B69ADBC0FDADAC3
+                               736DE952DDD088BDEF58E33AFE75FC40
+                               B44A3014ACFD59A41FF785FA79F8C4C8
+                               24783435F6DFB1280484CE23BBFCD13E
+            stream[256..319] = 2E4158B11314F19A08A6CED50ED9B751
+                               ABF952E7F803A60FBF497C56EE6B0016
+                               1857ECE7AAAE45715405C2A1CFD5780B
+                               906A11E3383B9539F0B47F325F278E51
+            stream[448..511] = 2AE2FFBCF916B76CF0C12B5F15312331
+                               316A7CA30D1DFF8EE7307F4B9182E73F
+                               F3951640C0E1BE2F62EC909D7F1AA193
+                               B9BB78BC67269BA40CC80C068123D812
+                  xor-digest = 96CF2189FE7BF7919EF7518DF21DEC7E
+                               33AC83F6002D9DC83777AFB7C883549B
+                               6BA6790EDF911A1C732EE1E7FEE3286F
+                               8A521B18A5495C93948219BD86302591
+
+Set 2, vector#135:
+                         key = 87878787878787878787878787878787
+                          IV = 0000000000000000
+               stream[0..63] = 691C8D4B72F476352162F33DB1C2D4BF
+                               0093525DA58DD95F092599E3F79D7E4F
+                               81B241314E9C701F93CE1D5104D0BFAF
+                               8226B3D7F89FA3C0DF85F387264BD1B6
+            stream[192..255] = 54545F7F0C033B3987DFD2F262BDA81C
+                               9AFCC996841E9EEDC56CA8624FF1C8BA
+                               7A5E9312A3F60DAD2D3AFAF374CC8801
+                               54389AC3E9B671D7E3DE35CB2F5070AD
+            stream[256..319] = B1FF911D70563286EC15DD205E255484
+                               DCEE25DB2FD91C0370341266812EE245
+                               3989AA76B1CF122DE8407137491A8CA6
+                               470ED10B208D146C014D2598FFF29971
+            stream[448..511] = 6264AB7DFD5F9B519B20BF4338BE57D4
+                               70D9A2FAC0800A1C3FBFDE4BE56CEE62
+                               9D9C4DD638CB9AED526A4F9DF5E6DC98
+                               03AFB8CAF727D3920F48B32F7D10D3C2
+                  xor-digest = A703B8C516343A5A7BDA170ED35AE0E7
+                               8C3AD265CE8108CFC6894EEB172018D3
+                               3369BA9635576641E381B3DEB3709894
+                               001B31DF53A7A21BD3365479C055DCE5
+
+Set 2, vector#144:
+                         key = 90909090909090909090909090909090
+                          IV = 0000000000000000
+               stream[0..63] = BC29877AC7EEBA85EB0CCD51520A2DA5
+                               F12B9B8BF67BF79914805B7CFB885B50
+                               E4486A6B986D2D72F90B7FFF720BFAD9
+                               9560CCDD9AC940A9FEDCE4E57B7D1D6E
+            stream[192..255] = 933AEB49B31D4D912A42989EF0DFB3E9
+                               6E58AAFB82A9734906EFA9438C213ED7
+                               650806FD669F8E8351685E6C9A80E54E
+                               A392F7E976BCB4A9950ED13FF8525950
+            stream[256..319] = 7774781474D51E242AA0ED506FADD4BF
+                               819F4D4B5940D3C4B9FE29137F44C240
+                               CC7703D605ED34756FFCE645B8B739DA
+                               89D101D9417331652790D11E945E022E
+            stream[448..511] = 8A2AE04BE3C2EC0A80543E7FB1FD5B8D
+                               3C37A388B926CC2E07557F69BAD423E4
+                               A48B7140FED20CCB311A5367B15FC7E9
+                               4599882B51B4EF7553227DC645D1EB12
+                  xor-digest = EF83377A740FAA9F53967E618A2F83AC
+                               85EDD1D47AB532930C85AC7E2C06D170
+                               C7C11CC9D12DB35CC5A33FEE72F51306
+                               EE8B295D5B379F96469B0EAEDA9F7ADD
+
+Set 2, vector#153:
+                         key = 99999999999999999999999999999999
+                          IV = 0000000000000000
+               stream[0..63] = FFF8FFA5CAE356592905AB22F66D9C1B
+                               4C163EC0213E2485996FF1BF67C81C93
+                               CA37F2195D03DE03AEFE7295DAE49C1A
+                               FFD2ADAC39212A73BFC0FD9C78946004
+            stream[192..255] = 5D05324036F89E337415058019D12847
+                               787875A2358C4CC99FC1A540D63D5391
+                               C1392A152276D94F32B0B7239BCC98F5
+                               D3D051371724EA9D905784FCC42AE9D1
+            stream[256..319] = 1B61EB32CB5E3636A178CA53E88632F5
+                               E777C04BBFDCB9B737077A10E34EAD3B
+                               17A4A37AF5F15DF29FF69032F8187C9A
+                               907B0EF39060E5B828248BDED883DB7B
+            stream[448..511] = 643E75D6C08C2F0D0DDABF94B4963B26
+                               95F45FAA44B440CDFBAA7270DCC41828
+                               0AA1CCE520845A6C89B6357C2B03AA3F
+                               3216B26690C1804408B9B76DE64AB5D6
+                  xor-digest = FB18205988C1A8F57138CF821120688F
+                               51CB7030ABD1A9513380C6D07BD667C9
+                               281D8DBC2D745F4A2F8E0E7CC2968B4D
+                               F2A2409455BF45970A66B212C4932E59
+
+Set 2, vector#162:
+                         key = A2A2A2A2A2A2A2A2A2A2A2A2A2A2A2A2
+                          IV = 0000000000000000
+               stream[0..63] = 067EB690A95E007395D0D7557C696EF9
+                               37A3FB5403F6CEC8A76612C4A8AC48DF
+                               BA2EFE0BFAD60D6841C8D1ACD1C4C79C
+                               ED6EEF0AF9E289BC1A88F000A553B753
+            stream[192..255] = 5D4B1B0BA65454466C778EF5DEF9827E
+                               79AC5F042551964F3725C5CCA5E5E283
+                               D0ACD45088D1F67E2D85B918569D69DC
+                               E323733E16C83D3428E2478D6F1E8766
+            stream[256..319] = 2AE22BD0B6DE5565DA5E82F10BC62BE2
+                               32AAFEB29190C3189320CB512C0CB544
+                               C173743D6BFD18E4037571F68B34987F
+                               6956A8E932A0B89759A691594A22CA49
+            stream[448..511] = 1A563154F3CF5EBB95962A0F1DF8E37A
+                               F0A286273ADBF25B37762DC042E70D5D
+                               BDB28FBABBD50CC35A7590C1E9BA24B5
+                               75B45A147A514C038024577B8AEBD681
+                  xor-digest = 17EE61E94001F77D8F3C436768E5B6BB
+                               E202704AD61FA9DB9C32EABBD5C55729
+                               F9BBF56FC4686C65E4E341AF86420BDB
+                               24CFB0B1A9A9024A9C5C901B2059C4ED
+
+Set 2, vector#171:
+                         key = ABABABABABABABABABABABABABABABAB
+                          IV = 0000000000000000
+               stream[0..63] = 545C27A12E1DD9411BC1BCF189105E8E
+                               A2286537B78122FCE0E95DF7ACC9088D
+                               37461D61817CFDAECADDC8663D2FF849
+                               C2A1BAF9999C67537654CBA119EE1F94
+            stream[192..255] = 2FFD4F6CB89432E59E4CE374AE175DFB
+                               99995172DD0D122854E47C4CAD5B1D1B
+                               4A8EB2612C8C21559D92713765DA0B86
+                               1E6F75929B8B235B154B224E28A0FF0A
+            stream[256..319] = E3A12DC9155DE6C1040D44185B644648
+                               A67B787ACF472FE054F9A106496AE778
+                               3DC7F313DE299E385C74D4088647BDD2
+                               0198FA4A0E613BD41D6D80E5470AA7DF
+            stream[448..511] = 0FD043205ACD3163FCFCBCE388C8E912
+                               0AF0E34F9FB2C46D9AFFBA7385D51872
+                               1D53349FB44822270A863415CAB90600
+                               1F412376709B7ADFD3F99EEE5A9A25A6
+                  xor-digest = 3365C1CDD5C7C60BBF75402829BC7582
+                               4989105902270967E240EBF6ABCF3B06
+                               9426AD0668D6AF70D5BD32C1C398A0D8
+                               5723E976AD93CBB93BEF46E5578F3C43
+
+Set 2, vector#180:
+                         key = B4B4B4B4B4B4B4B4B4B4B4B4B4B4B4B4
+                          IV = 0000000000000000
+               stream[0..63] = 97C252D3DC5B0BC06A9E3CCFF0A88593
+                               451B5207CF1299AC5061386B3706BF69
+                               45FFBC060E250146F0725B096C2A3390
+                               DA6B4548DA3440BB6245AEAF8FC5C1BF
+            stream[192..255] = 965194C8A4163FD2DE3F82E4B50C0997
+                               016E88EF508657CC86DABB70B185624D
+                               D9CE3C74BD735B78BAA3D35F0C99EF85
+                               8096CC51472D4B73ABE69765A77EEE47
+            stream[256..319] = 89E4A8FDB029B59B61EE7619F75E8EFF
+                               37FBA6E011C2E669546F80301FB21CED
+                               D58C928D6EDBB9AD1AB0BADAF88FCB19
+                               2AB3473868AA7409C48CEBE690D007F8
+            stream[448..511] = CDFE4AF0D25CC0CE5469422F3EF2EEE7
+                               9B1365D01A36B9D159EC9730524AFD49
+                               59A36A2AF2EECAC181C08F14AECE9123
+                               9DBCA8A7C86601C4A4445B0036BC7A77
+                  xor-digest = 7DCC8F903C429AA1524A2C5B8B362AD8
+                               DB74C8B56A17083591D2DBA843F1FE09
+                               4931DCBFDB18C59C251055B71F303287
+                               CA3CDF2989639EF6AA7F22496EA784B8
+
+Set 2, vector#189:
+                         key = BDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBD
+                          IV = 0000000000000000
+               stream[0..63] = 4C90ED8E7CDE917A218A58DE158CBF98
+                               DE171190BEFFCB31C1F6318578D210D9
+                               5F2707EE1D6BEFC7303598061460894C
+                               7B2DB117E1998B24193B57F9121CF00E
+            stream[192..255] = 65E99A7815A4F7227A28BD253D275D1F
+                               8BFCBC8D72267CA221FC28E14C2B0FB5
+                               8F0312BC8DADF8BAEEA838AE314C8BF9
+                               4D9B292D0C8F093E3EAD6D8CCE1C4E05
+            stream[256..319] = 47DD67B6D1778546BFDFFA83202A15DE
+                               A0A02B7172D764E8EBD41D7D4C6B1AF5
+                               164532367FAA52F35C63029E7EB6DF0D
+                               69D693FA41099EFFB3DC24A183CEC482
+            stream[448..511] = BD4E150CCD803DF7A70307B306D69EBE
+                               A04033C5889709F1E8D2FAA01BC236CB
+                               D3EA172F53CE1C3B05FEA8874ED2F6BF
+                               1A7A64D69317C121B47F018C7B03B6CC
+                  xor-digest = A72F5D1A12628451F19AB66FF5F5DDC0
+                               E1F6AE4E03D97E8BFA917EFA14877E83
+                               6352AC191030FDAE82A0CDC57CFFBDC0
+                               79D6D1309B2D228BFB050164A6ED5506
+
+Set 2, vector#198:
+                         key = C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6
+                          IV = 0000000000000000
+               stream[0..63] = 61761E8265DCD6428005F25C66430E69
+                               E508B4D63E7A0746123AF7959DE08D64
+                               286A22946A03D623E57C59B5FBC78185
+                               84CD0FFAFCD313A9D03384BDCE947703
+            stream[192..255] = 722E974795C1EAC480268959F71BCC89
+                               53AE515C290C7132EC448297C0BDC7D2
+                               F24A9AA9BE107A241F2FEF07AAD735F2
+                               D98995C21A3F204916F98E68EC6B7AF5
+            stream[256..319] = 0116AFB180A3E154522F4BD234997887
+                               EC424889A0DC92683FB924DA28E750C6
+                               F4F91D21146708C5130A8A6864CC3CAA
+                               7EFF7BA1A1F09E1B92EB2BDD103810E9
+            stream[448..511] = 6AEE8931388A469AC8B5E5641E870B8A
+                               39D22BD7C8A61EF04F9D988F17130BD9
+                               8DFBAD94C7E68C5F161B46571E8C4396
+                               2109C393B9AD566778DEAC09687020A8
+                  xor-digest = 02E032A9A4EFABD204131C39F36E18D9
+                               2777BDF68F5A6B85B1563436B7DB9AD5
+                               0B4BB47C80FE8330D50A4ECCCD76FB9F
+                               E77E53A799AD95111FEB7EA2C0CE781E
+
+Set 2, vector#207:
+                         key = CFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCF
+                          IV = 0000000000000000
+               stream[0..63] = 07ECA06EDF7435732E1A3DF0C8FD5FE5
+                               E9A14EC485950AF0586769584346D9C0
+                               F501EDA74407F0259F17533A32B98EFD
+                               19351EB8FDE4317CBCE57ACD76E528B1
+            stream[192..255] = 06392E1B9A23F685F65E1DB264D4F9CC
+                               C16A5840403F7AE9E261E41A0ED8F5B2
+                               C958B7B8CD7EF8AA1BC43FD1D88ED5B1
+                               9DC0D5F99A8F0C119CDB25D5A73E593F
+            stream[256..319] = D520C6CB4461EA4D57BB3D93AF5CB2D1
+                               222EFE518CB9FF5C1319CFBD7E751EEA
+                               847CB491E49FF4DEB914355C91A5D98A
+                               8ACE00A3798A04EAF30BA0CBB163A149
+            stream[448..511] = 6194F2657A0FF3F2AA9329EBACCC660C
+                               121AAFE3B5CA4D45801177DB48652860
+                               950B6F2BA2C88535B0EFDAABE4F7D8C0
+                               A07CAD3417F5495A6348E2076D83DC9C
+                  xor-digest = C6417A693D5B27F82B115DCEE4EAAF7A
+                               DEE0061728D59023C4E707C41B5830B0
+                               DCBD60E662FB7D747837D55842672948
+                               4939C2C8AA1EE53899B4CEF1CC80682E
+
+Set 2, vector#216:
+                         key = D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8
+                          IV = 0000000000000000
+               stream[0..63] = 7F51E124DE7011292790C991D92AA730
+                               B0C28EC739CDF7497D9B0B7299A46E8D
+                               82ACA3593EAEB4705ED2E310940F55CA
+                               B2D152AD7D4936BAD877AD328C1D1E57
+            stream[192..255] = 67A961516B49F08D550C61443B2668B8
+                               891F6FFF0D690DAEA7844757CBA0E3FC
+                               910209AFC9972854426FC57003C5A11E
+                               FBA5C4D2DFDD1CEE5C7E616C61BCAD7A
+            stream[256..319] = C02B7A7ECEAFCED8D8EA92F53DE40A1C
+                               BF26F0A24EF73AD81924168FB6AFA085
+                               ACB72647FB6B259160BC3E29D1C87912
+                               E4F6755B33E2E34F86E31B0D63011FF2
+            stream[448..511] = 4C0CBC0DDFD5881B04D321342D8890AA
+                               EEFFD98E3110656F60C8600D5D11CF00
+                               B071FF8769DD775A5C09B92EC68DC494
+                               6C5C6A2E2AC5C037BFE3C00346C4112C
+                  xor-digest = 2DF067AAF237429388B235E728B3D917
+                               E0EDFA56CCDC81E55F33D5A332E52D68
+                               81E0DE585840AE5D93B23403F60ACD63
+                               EC0DF42D4DA322AFBFCD886E1A581468
+
+Set 2, vector#225:
+                         key = E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1
+                          IV = 0000000000000000
+               stream[0..63] = ED1FDD5ADA19BECAE0FE43BD3C6813BA
+                               A54C70D0F270407ACA453A4FDBBE4D0A
+                               B14482673B74281385496EEBA9548DA7
+                               A3E9012F702E3155A3F8108D79FBBE5B
+            stream[192..255] = F11DC4E2CE10EA7859015A36808B45B7
+                               F1CB4B9C699975D15991FD8DEE2AB52C
+                               7F505F6D1DD2BED794D4747D6813DEC1
+                               F50CA56251EB814D32FE9776ADE56D22
+            stream[256..319] = 8E9FF31F7A370CF111F0537B208272ED
+                               DF88E13B871F9B5FFD1DE2EFB22BFDEA
+                               A42F96CA49A1F1E0E2598343C953F6CB
+                               2B7DED9B557925A3F24CCA83329AC6FF
+            stream[448..511] = FE8280084BF7F75AE6917333CF6D9CD5
+                               3B5EB638FD1FC47436255FC249A2C65D
+                               8D3CC92A5E55313A2B9FD1C3DFAB29F0
+                               5393C7D50CF5F1C6F0A49E61DB3E8844
+                  xor-digest = F6215C116D2942069BE90B9BFA43F9F4
+                               DA855215E57F479472F65300220A53AB
+                               FE9051AA965E303D9404C85D8D9F9837
+                               87B5EF73D5747AD67D3B9A559068A44E
+
+Set 2, vector#234:
+                         key = EAEAEAEAEAEAEAEAEAEAEAEAEAEAEAEA
+                          IV = 0000000000000000
+               stream[0..63] = 19BAF0AB98DC18BFC7F18C4EA0895AE9
+                               2B5CE05E692208F0540EA02AD6683539
+                               00F2C6456E001C19B274C3D120B2E000
+                               58A941390A93703CBFBFFDBAE6D6999B
+            stream[192..255] = 4F9E5B8605A975BC66575441377901F7
+                               DAD3A34F2EFBBF8F4F396B1357E51B51
+                               3095B8874136E59B0BFC12B65846F379
+                               A73BEDE415D9E3CF0AE3F9C2188AED09
+            stream[256..319] = DEF4E5823763FB50F9421F6415E64D19
+                               DD6A2857CBF578339E0CDD96A53ECFA8
+                               14B0ED3F25E35999EB1B29D16BEC526F
+                               BDCE8C7A4BA6FC5C8375673CA2E1C1B1
+            stream[448..511] = F3183BF8876E91A1DC4FECFA22538777
+                               AB9DDDD736C9F3BCF75D583A8AB61D25
+                               35E16969BD6A492A648BEA0D9A7C7424
+                               12DCB9DCC6F41630634CBAD201AD1A87
+                  xor-digest = 1F31814EAD7F918E293366CAA6AB5A2F
+                               2B39C6AE5FB851B092DAFDE3607C0795
+                               9F1F027689D64DCD341B34949E4DC3CF
+                               CAA73F1F73F478B0762801321843E5DA
+
+Set 2, vector#243:
+                         key = F3F3F3F3F3F3F3F3F3F3F3F3F3F3F3F3
+                          IV = 0000000000000000
+               stream[0..63] = 23B2D353FE88CED2F55235FF0C4F7057
+                               9D0BC72FD108C1D87B95B879261248D2
+                               E6D6B536E9C5B096D7B6DD101AB1B99E
+                               8FE6ADC9DFFB0C183DDC23C26EDC6709
+            stream[192..255] = E552DE13929EFA66F421A8DA140E418D
+                               1011B9A44A46D4F9A5DD24E5D68F7D38
+                               E4D043DF4E46D2C6D4A4E5CB8AC02708
+                               3317C50A1755D50E4C74D69CA9C6FEEB
+            stream[256..319] = 29EEE8B0E77DD5D445805CA0A7A4D21F
+                               4BC45E4BD10099ABDB9A0605CC51E64B
+                               9FDF7EA5ABB394247729585EE934DF7F
+                               DC3D0AC0D0D500F655083628FA7F7657
+            stream[448..511] = 3020F4ECA0972842E3A14B0729BCB401
+                               B4AE6F110D596361A5FE7153DF1CF2D5
+                               3544552FAD0B8FAD79CA28136AB58873
+                               D7C359CD5DF5836355C9C208F5E4779A
+                  xor-digest = 5B55C2C11190D429E7A6DB6A498A66CC
+                               8759825A363E33E4AB8575D313667CA4
+                               84793E2D9791A51CAEF569C27251435B
+                               8C4E0BE710EC1597EE6BD420AFDB8F02
+
+Set 2, vector#252:
+                         key = FCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFC
+                          IV = 0000000000000000
+               stream[0..63] = C739A8B50201D54EB5DAAC71D922A67F
+                               DBEB286F909E2DB02CFF896B2253DD83
+                               D17A171CE063F3DB1FE898AFC8F4887B
+                               4776A9D645B1625B10C4C61DAA46BECD
+            stream[192..255] = 35A7790648C6BC56627893C32155CBDB
+                               879CBF8414FC294C6F69586CE081FBC8
+                               BFB7C23E165F28F571ADECA3C8703B5F
+                               B2194C798E2C3CD35F9714C08772EC18
+            stream[256..319] = C61B1C1FDC54873AD65FE0E452853172
+                               44D446147338C6B11DB6CCC15F5C94E3
+                               078C3315AD2EBDB435B7CCD322533274
+                               BB7B09C79473A0E2150DFA99814E07B8
+            stream[448..511] = 72D3A4EAE1E7C83A78E4AC79AFE2B88A
+                               E33ADAFCB177938429026E291C187FF0
+                               0AC89BE3CA542124289FC607FED0408B
+                               F379359A67BEBD85D9584D3A68A2C443
+                  xor-digest = B5C9850723BBE418AC19BC47159643ED
+                               B1D72EF577432499F2D42A989FEEADD7
+                               F9955A14600D5B6D62E0DE239C265884
+                               6879323E63E6DE12F2FC7B200AF789DB
+
+Test vectors -- set 3
+=====================
+
+Set 3, vector#  0:
+                         key = 000102030405060708090A0B0C0D0E0F
+                          IV = 0000000000000000
+               stream[0..63] = A8F7E69B6940A78D136A5C154A157952
+                               A6E4235859E30220EA686436BB38EF53
+                               9C2940556B09ECD7FEA2B0AC8307F169
+                               6265A3D644281C39C9CD5E1E2F9BE4D0
+            stream[192..255] = B3378F62D121027463200A43E2DDA9CF
+                               91F02D4810282CB9990E28D857EAC359
+                               D83BF4C5BFEA00EC6815E0B208B9D1F2
+                               E0BF3649EC4B9A25E76498F857420788
+            stream[256..319] = 422F2A8ECBBDA3496414C8D1A0B72350
+                               AEFAC933F5D4880E2680FB0B9DBB3195
+                               64E56EC9222C50F7E2608325D068F178
+                               22F8A7438AF00C282C9AA0486342EF2D
+            stream[448..511] = F9AF33AAF2F0293C0739E052C5BF732F
+                               B721B00CF97D0E71B755686DDD739B70
+                               C99E194E2181C1AD8D36D0F1B130CF79
+                               EA4E32F9D2BE3479758CFCCC98155A1D
+                  xor-digest = 5C9460F674596ED739332147ACB6B2DA
+                               662C1A4A9C0A470E3686951E690CFB99
+                               3E31BDA80E006EDC8877B3AE044759AD
+                               AA153D767715B44E90CAFF983C93F73F
+
+Set 3, vector#  9:
+                         key = 090A0B0C0D0E0F101112131415161718
+                          IV = 0000000000000000
+               stream[0..63] = 9C75803C70528B539235C01796AA016C
+                               7A5ED9AF5B54F3B9232C43727318801A
+                               A11E406463C68D6E5A3252D2BE4F387D
+                               B8D09713EF02EB6DAB6E3A3FC2DAE936
+            stream[192..255] = 41D7BD566BCC2FE295CDFC4C98C9107D
+                               88DB492FC1F7DDFC9421A62705EDC9E8
+                               5E25AA954BD0B85AACC83957E624B1C1
+                               10005D5E6DDC353DF0BD5E26D9B79E9E
+            stream[256..319] = B0A9151C1DBF6EDD60E4994D87FA1BB6
+                               8DB1733CADD3455C1DC56981755DAC9E
+                               0C16A17DAE062A382881FBD5DC4B7B43
+                               543039EC1A0445C07981208FD73410BF
+            stream[448..511] = 4887700FF78520D280E81CC71B51EC09
+                               E58A1FD72500538DC2A04A946C1F6525
+                               F9711922248FF47D06C824E40B5512C0
+                               46F028F3E5CEC7252FA4BD95E890505E
+                  xor-digest = DBB8BC98482B5C3996F0A4AAA54AB27A
+                               32A6E1807A8DC772BB9CCE2F8DF2B4A9
+                               D6F5FA93DF893ADECB74721F269F20EE
+                               C27AB5353597E3C525A6F3C1687EB347
+
+Set 3, vector# 18:
+                         key = 12131415161718191A1B1C1D1E1F2021
+                          IV = 0000000000000000
+               stream[0..63] = CEB8BE2CA5CEBBB8259C6ECA73FBC5F3
+                               D1E527A864E03CBF077FAEF9160F7393
+                               7B75A6E13B056AA47AB962F6E97961D1
+                               B529A7FF1B580F393A1097328C1F7D0F
+            stream[192..255] = 5E27DB13939D6923B9B516E183D75552
+                               7C19F16689D1EA89AA1E50857A9F3F0B
+                               C90696747F21D9FC69511611836B34BA
+                               FA6CF379D8553EE4A3010AD275B13B42
+            stream[256..319] = FEBDFF94C13CCAEC8DDA7CE54DCBB5B5
+                               74D33BDD8380834AB018717B6F97FA97
+                               D3C33727D22E53EB2C249D129169441A
+                               FD94F6FC96B8339F2842501074808825
+            stream[448..511] = 19054D7AA84BC7E662383E1215CC137E
+                               9F8001CCD02D895641029519DE50956B
+                               38264F96B531FBEB509FDBE9759CF61B
+                               B98F599AE146B41EF6563B5D864C2B6A
+                  xor-digest = 4520A8F72839DA7EB3EE38BF9DB60DC7
+                               3ECC852DCE725F83319744A9C75BB84E
+                               4EF1B0D318B34D08CCE1369CACB5A0E8
+                               790005C0D431D2CFD380D872FDC1146E
+
+Set 3, vector# 27:
+                         key = 1B1C1D1E1F202122232425262728292A
+                          IV = 0000000000000000
+               stream[0..63] = 8AA4421F2858E1BC0125939C4F6F0E7B
+                               5418CF975674E57F17A4CFDA935F04F2
+                               958847A37DCF577A1D35320EB01797CF
+                               AC41EAECF1D1B19A01AD353B9B7FA387
+            stream[192..255] = 24633DDE77AFC07D48A8DFADC8E25C2B
+                               2F3AE3297EEB3ACE8562F2406F2A1FEE
+                               9E9E19AC6A8D2904745C35C48FD0E4F7
+                               B4C7C261DAC8F536341A352C92DFE86F
+            stream[256..319] = D97482F65AAE9678EB9883524491FD40
+                               B57C31D5AAF0DB436252B3D6AABA12D1
+                               80BECB346C8A4AC3710C182A084B322A
+                               937C68FF4C05197EDC6720128374046F
+            stream[448..511] = 8F604597C790334398A2F4A818D12FC3
+                               63BE3E8CE33662A259F109951DE5CD60
+                               E2C86869C2D54E49B892125D49F1ADAF
+                               63ACBADDAC218AB227637675A11DE12E
+                  xor-digest = C8BA461613A40511C3C8E324BBB93BBA
+                               85FDC45ACD88952EDD22E0CB30CA0C18
+                               59416169DCF3679D5A094B01B4584585
+                               03044E59FD3A430FD5E61AFCF40F830F
+
+Set 3, vector# 36:
+                         key = 2425262728292A2B2C2D2E2F30313233
+                          IV = 0000000000000000
+               stream[0..63] = 3FD49CEC6AD6D112A23AFBC78959FC84
+                               35FA11A8279D4A9F1C385CDFD9E081F1
+                               788C19D0B797C448A61E593703006882
+                               3D23FA98350955A8DE1A20D2433919E4
+            stream[192..255] = BDD2DF9AB00F131E6A3FA9D0F1E8E42B
+                               3701FBADA64D18371953486E0913525A
+                               8DD760FF62931B4921DD43D0536EB935
+                               3200A55F58DB7BA9E428485F98D57B1C
+            stream[256..319] = 3240488DE5123777C17AA3858D0F45CC
+                               D6272BF7FFC1F30010243BEEE9CEB429
+                               86D22FFDC576E68DBB9E11A114720855
+                               B32631A84467F8F25ADC795987C8F396
+            stream[448..511] = DF0B64330DCB54BF390DEB8F5B593395
+                               643A2468F0DE4268148D17B94A72E039
+                               D7A4CA53CE5D65A5E559B5E053B609CD
+                               77DEC40BF2BACAF6E7E9C4B68345FBB8
+                  xor-digest = 5BBE5B0A961F3F7372144943273DB23C
+                               42D40D3DC34F6532700FFE767982F63A
+                               C5A9AD0687EF49C9A309E1E2700FCECE
+                               F8FA3080D15F61FE45E0E2C140D3883B
+
+Set 3, vector# 45:
+                         key = 2D2E2F303132333435363738393A3B3C
+                          IV = 0000000000000000
+               stream[0..63] = 3F1DE6C663092E7C2BBD00E2FE8041A6
+                               D3FC3BAF6C46B783B29855BB8C58EED5
+                               4E83B368329B5C1C995217770787965A
+                               C7EF9C416197F5FD238C24BBC7B1C8BC
+            stream[192..255] = 27D566FFB20758DF87E6B981125572AD
+                               D6663D95E7DF277716EC2B92166D7E4D
+                               B30E396ECA96A0E8F020EF3185B313F8
+                               1D5449B10E5CD308FCEA9860C03F7499
+            stream[256..319] = C0C84E0CAE2AEDE28A5C61C21103AB2E
+                               F338A6B1E6DABAD989F09F80242FA5A8
+                               7CD49D7097BA8077FB1B5A86459663C9
+                               14D6060B0701D6CBC5CA36E2D4F16391
+            stream[448..511] = D2782ACBF9BF5B9A7D5F954B7E237F0C
+                               D6D7D71BBA72D996C5FD8DE7C6534CDE
+                               BBF63382F812B62A007C56CC0BDB705B
+                               540D7D7D4C3DEA49BE0B47AA17E540F1
+                  xor-digest = 6178A04F576C327AD94B29644222B566
+                               8A973BE850685D8D3D81FA5B81594D71
+                               BE558CC2EF588ED0CDC515A1EE602A33
+                               AF27F1D64E17504971D1EE4F7D16E483
+
+Set 3, vector# 54:
+                         key = 363738393A3B3C3D3E3F404142434445
+                          IV = 0000000000000000
+               stream[0..63] = 598EF6260979853F06470BD98FBE6C5E
+                               4399C6240743789F096DD2B4024116DF
+                               328AB398AF4C2B8D49A2484526240489
+                               918A7FEB2F1E60473BDDE6F6460E05A7
+            stream[192..255] = 01EEFD56FF31574CD05FFC35BA0654E2
+                               D621A8B937EF5738384779C5BE3AF999
+                               6551ED266A2224CF40DE82A669CAF835
+                               435BD74080AB3B480B91822DCB6181F8
+            stream[256..319] = 568025C9091317B00E7EEAAB3AF91373
+                               E6239CB5C65BD626AA8A0E195EA59FEA
+                               B24B9733EE8E58370C481196DF56DF8A
+                               2C8739CEEAAD38061AE32E961C4A86D2
+            stream[448..511] = F5BE34F3B5790E0B28A80F9B94407866
+                               092A4F3EF2A650882DF027F744A64789
+                               94EB41ECC5EB79ECE17B87450F0BD48D
+                               8A9866F373EBBDFE78A56E1B02C86A90
+                  xor-digest = 13F75D32B948D7D0FA260DAD241FF615
+                               8FEA17E68F8C40DB209D959F84907F05
+                               4EBAFAA2F846C3805A672ABB8F574F29
+                               BB5F6CEAFFF71EC61C838CC4B3D577D9
+
+Set 3, vector# 63:
+                         key = 3F404142434445464748494A4B4C4D4E
+                          IV = 0000000000000000
+               stream[0..63] = ED55F27D6789B97BDCAD0F0C86C9423F
+                               84A6F4EBF5891173F958E77D7E0C7488
+                               28D03F55223F0116F5F36C8849E408A3
+                               FE4D6976284D1EE93D20E4E7235BF874
+            stream[192..255] = 82975D508A7AAE7A057C9E7C9044E54B
+                               0C40CDEF737E393A1608E9753D6DD6A9
+                               B93E91585D2F6D427281D3B082442997
+                               5159562C1039E29558A9A8C308597C4A
+            stream[256..319] = A506106FDC1A32959123E20AE275CF0F
+                               2E8E1794794EAFF1BB8FE59CDAB5D7D4
+                               7065032F250F41D1B8DA9C6AA691429B
+                               961EC13DBC9247D5C883BF747E3D35A6
+            stream[448..511] = 5EF107C90BD579ACCDABC4FDE47C3C78
+                               02D89CE984262E86227FB066425733A4
+                               26771FCB37A12B2621D1AFEAC10D383C
+                               D996A5E0616335D5F512ED9693D4962C
+                  xor-digest = A2C4BF12F052978B03D59E2DDF54EA7D
+                               254FC13F7D2AF32E23F8148BC46D4878
+                               127BC53590282F3C4848C9499F567375
+                               B30F3C22DB38941DD1199DA8B977FBB5
+
+Set 3, vector# 72:
+                         key = 48494A4B4C4D4E4F5051525354555657
+                          IV = 0000000000000000
+               stream[0..63] = BBE36FAC29E8097873AAD0BD26C41B38
+                               4AF8FEF4153744E79732CA8F7CC0130B
+                               470A6B1D32EB62BAC555DA88A69A7091
+                               069E56A26E44447411666ACF2000DD62
+            stream[192..255] = 844BEB56299A05C635682966DC15F6C0
+                               8A28147C36272AA1FA136F7ECAFD7C62
+                               1B23B9DBBE3C25F9F6F6B7C7C9931C56
+                               AC47A2CF61F504E55A5BDB6BB26E3FB5
+            stream[256..319] = 6371F94DB065B3E125BD0BE899C83A1D
+                               01DCD89AE781E9A90E12FF48E4B6046C
+                               AEC9DCE7DFEB3036D97E5D1AB0215BF1
+                               081084EB16EE562DC9E613F3A615A9AC
+            stream[448..511] = 43994C6E8701610AEAE9190F3116690B
+                               BE0950B706DA3CE1D86A6AEF4D4FB781
+                               70BD84674CBF3EB6CCB0C588D53B2DD4
+                               A3923A6F6968C06541C422248B66D115
+                  xor-digest = A8B60A61C42E5ABCF9B0040BB380CE6B
+                               9D54F41EEAB4E0822B4A1BD9733D96DA
+                               7A16CBBF104C8B0CDED360099A0582F7
+                               1E957ECFAB3D46591A6461E688067D46
+
+Set 3, vector# 81:
+                         key = 5152535455565758595A5B5C5D5E5F60
+                          IV = 0000000000000000
+               stream[0..63] = 17B496C4F998676C6D57D00B973B392E
+                               F055805142AA6B5D94F23CAD740A2290
+                               11F0770C57590D1B301ADF2E6FE3B3F5
+                               30F355C527330373CF8A3AAFCBE0BE2B
+            stream[192..255] = 6F44FD362D8A3B559E2D267AB821D91F
+                               A43B67F59DDD7EFC8E90B8BAB6A8AFA9
+                               CC5120761FE0F9E047C4978E761E5146
+                               CA01E2431E1A44809D6E0786D5729B36
+            stream[256..319] = 8EDCE30988CC80F96FF9649069688C53
+                               C8E6FCF57F00BB4B00E47E143B4DBFDB
+                               C48AB43A8972EFE9FAC3E9C10858AEDF
+                               ECA5AE463845A3C5434CE92DD03B8FCC
+            stream[448..511] = B8C415B59D0A661525D1A01D6B8F2BC3
+                               F2C9087CE11C0B49EC84205D15054495
+                               550913ADA21A64684FB2257CC3612967
+                               795E8560FC7D64D84A20065173788F36
+                  xor-digest = 66E287C220F5E9CC0973891E49A55D24
+                               6A9EB718894022BD5155DF2E5A4EED4F
+                               FA0B7DA22DF5749D5D4541B221022B31
+                               E3A291C8A00CEC86FCD42B888E5F626F
+
+Set 3, vector# 90:
+                         key = 5A5B5C5D5E5F60616263646566676869
+                          IV = 0000000000000000
+               stream[0..63] = F901D64CFCB8FA39F8FB8310C169063D
+                               9986203380EF433C3B01B72422E1DC45
+                               C40575CCAB09A87EC4B070A1F6DD25C4
+                               3463DC8074E8E985522BE574C5DE6155
+            stream[192..255] = A045600187B251BF1A4370FB00B692DF
+                               EBBFE447A2C58EFF954941EF22DBBA29
+                               4759533997C73170D8944B68BDB9223E
+                               20F3EDE5D9DCEF7BD3DD27CBD2457B0B
+            stream[256..319] = 570A1D6A383DECAD2A1AAF2F838BC7D0
+                               7F2D6E7DF74D4CB36FB60C9B4BCFE562
+                               96538DE0A8DE1116D5C1868BFF8C789B
+                               8A895429BE96101F060233F9D7A1ADCA
+            stream[448..511] = 52D62CC7050822CDCF515F4D8ECA66FE
+                               BBA746A767AAA6CE4EE90ABB0836176D
+                               B5AE9A3BECF2B8A9D405B9505A194104
+                               AA37349D18E2E98BD2FA21519E005494
+                  xor-digest = 57920FABFB00D455D515E6E95AEF8240
+                               89194649C16508A6DEE47597F564D148
+                               A5D921791F777C175FC027C3FBA680CC
+                               A928E2E1ACB6385EA3EE0D518170B026
+
+Set 3, vector# 99:
+                         key = 636465666768696A6B6C6D6E6F707172
+                          IV = 0000000000000000
+               stream[0..63] = 4BDC73208B12082D1CD306ADA9E7C893
+                               DFF7B299BDCD08755FF58B8C99B6CFDC
+                               3F3D3F42F7FA1B68D925B1D6C40E8113
+                               69308768D435A3EA6BC8EE6B04E244F3
+            stream[192..255] = DDCC077A122916E50EFEE81E9E53AE83
+                               746A9B855CCC1CFCEAFC7117D6846376
+                               E072ABB32C54151D8DE3354F45A0A777
+                               C606049F7E815D5EFE066BC2B9B5037C
+            stream[256..319] = A148C1449969EDC4CF0691CC486FB9BD
+                               657A7B00CC47D520EBE63BE0BE9EE00B
+                               0D33F478649CF1C69A3E37104059CC13
+                               BEE66E820B1F583F483BD9F69B6A0D89
+            stream[448..511] = 6A6293FC21975C345F2B7D82F8EE1846
+                               589AA1062046F7B794431571B9653A29
+                               594054832E0AA3B9F6FA12AAC43B8845
+                               F5C393547EC6C2A3976613F583C3CA43
+                  xor-digest = 6E3B68281D2E5E408B22C7C03EFC0874
+                               B105E1C59DE05394B9DF75CD16154D43
+                               A32A02C0C52CAF74082948DF2C3F004C
+                               3A42A2E89BBD5D4CC29F8BE0FD0AE13C
+
+Set 3, vector#108:
+                         key = 6C6D6E6F707172737475767778797A7B
+                          IV = 0000000000000000
+               stream[0..63] = AB3E96DE9D091FF94F6E41681441A788
+                               BFF6EEE5562505C56CC69773EC1D9B36
+                               142C811EFD0AFFFF1D6FE198825DB029
+                               5E2282B1836D3CB6FC3EE32A0B27E331
+            stream[192..255] = 105A113A6FEDAE8A270CD144A9523848
+                               F5E3B1C6D0E486B331DCC230DC06D2C1
+                               51512D6CEE10558C771EFF5FB9EEB3BB
+                               F756019882B48587E027561476DAF949
+            stream[256..319] = 1DFD142EA63D1752D6DABDAFCF01A141
+                               76A29186AE16100D85D0FDB484A36912
+                               4B70D7AEA207E95662DB08298A945B95
+                               C8B793C8B8CA0B9AD59F9DB593E3F825
+            stream[448..511] = CB52F4D67C19887BA565EA4DE18EA6C5
+                               9367553F05C364B974BD337302655A87
+                               3B44FE6DB5473D0FCB34A72B15206D4E
+                               32546236A4D568DD69AFF50D38E57BFA
+                  xor-digest = 4C352758A2086EB13BB10B1131FA15B3
+                               F889AF58C3DD4F9CF94D9847EEC1A814
+                               AD4D159DAC1EF7DD4F7E8AD58F40024D
+                               A97BCA9A56F7939EE0B1F12B36205EBC
+
+Set 3, vector#117:
+                         key = 75767778797A7B7C7D7E7F8081828384
+                          IV = 0000000000000000
+               stream[0..63] = 76BB00C566E1AB42102D9DECE873C28F
+                               D4938D8AA8D3FC052225D33D156A9A4D
+                               10A81FE9581B0FE0769452CDA51EFECC
+                               5E2D72D149E6EA4F2766F4B20FB2FD38
+            stream[192..255] = 59B419C334C5221D065DB8B598F8C071
+                               3F5B6D8A3D1190A1066E9CACC18DDF36
+                               E3CA201C72517BD170C900D5572AAA3F
+                               51836704EEFF50FA1B8B2EA695A50263
+            stream[256..319] = 4DA1F66FC5BDAAD59E183F6E2A61A56E
+                               4FB5E5F8CE7D4726E39121B0F6C5DBB9
+                               8FF719A52CC56870A83888C1A798AE56
+                               4E8A440C59445BD33E9C6E59F51919D7
+            stream[448..511] = 268824C6E8F0E50D2A1D1E92FB87F51C
+                               3DDC0448C13887C1F66594808B49B971
+                               713E8D48B5F9077DA4267330CB4945FD
+                               6F4DF4F1F2EE13BA54A398C1C910B350
+                  xor-digest = E71462ACA328FC592014D68A489F2453
+                               85E57C42C4FE16F6B213FA27B2E19C32
+                               2C3053992B51316F1A6E6B12DD3C841E
+                               BEFB0DFA389D60FE4F562400E23BF93C
+
+Set 3, vector#126:
+                         key = 7E7F808182838485868788898A8B8C8D
+                          IV = 0000000000000000
+               stream[0..63] = E3A9CC680C0773F34D33696AD7BCB5E5
+                               BA1D70D66C78DC99DFA778B1F5A8F98B
+                               2D1E13A7761A6505010896618166011D
+                               4F3D873422B63FBE6731488C95E24E0E
+            stream[192..255] = 21C4CA8606898C138AF1DC62D2E96D35
+                               04B7FC5EF7D8FE39081A6B83CA0B5738
+                               37F028346492B429E0C9426962A2373E
+                               25BABB2D9A82D983092DE4ACE437627D
+            stream[256..319] = A7A1CE3AF5B675147B985A0B884A8C56
+                               8AB6CFDF8C2CA6E1414A98DE90107270
+                               38FBD1C77C904CE2025CBC708D510F78
+                               001E9B387427A9210190CFA1EAF76B6E
+            stream[448..511] = 3D3C6A3915A16E9E8A6690D4AC61DB15
+                               098B4BBCD39227ACC88E6C0B2A2A15AC
+                               3FF032435BAD05C525813B4940EB15EB
+                               21B38E6E931E7A55220F6B561C9E60F3
+                  xor-digest = F2C9E1E9963C2105CF32EF030552A4E5
+                               550660D81620439C78F6C878E7D3AA04
+                               34C933F1661B7EBA4B4C03738B0FAFAE
+                               DFB0F6F7F472C29B9D63AA910F1385FC
+
+Set 3, vector#135:
+                         key = 8788898A8B8C8D8E8F90919293949596
+                          IV = 0000000000000000
+               stream[0..63] = F8E0E1A0BE45C2F3019BDDA7123F7CDE
+                               ACF74FEBFBDE272B532D55F26AD1564E
+                               1314D5267A69BCACAB2CFDC7217662AE
+                               EAF848FCC9C3CC7067BB93F3FBCF4D7E
+            stream[192..255] = EAED3FB03B7C496648B6BA14B6D1DF51
+                               FD88F7FF9D8EB55C0491EA603ACAA8DF
+                               AED64FB48345472067914606DEB344FE
+                               21FE34182E99883CCC0CAF6C47D00B88
+            stream[256..319] = A72D36A455DBE937118E13FAB653D8D3
+                               C29EF2E81B635C59D605F2E438269875
+                               F8D1545E44FF0D8918BD9F8F7EDF1A2E
+                               B4F8150E0F9F465AE465E0D0BB319795
+            stream[448..511] = 8E17D0390EB35B039A0EC1A3CF09B942
+                               BB637C6DD6551DFB3C2AE2A69A91FFD1
+                               A9D7385B1B23CF56AD63A31505781F25
+                               42A43F8B3A5EC7CEF39C3C1FD5127454
+                  xor-digest = 39C51BFC1980990BBBF136199F509D3B
+                               9FBC7B41D4861AFDE9C04482E504ABAC
+                               4460791C91C6D32FA17A1310E3A674B4
+                               566A598B6954B2970F2A82790EB7DE3A
+
+Set 3, vector#144:
+                         key = 909192939495969798999A9B9C9D9E9F
+                          IV = 0000000000000000
+               stream[0..63] = DB5DB3C8AD550940017570BABC37DC40
+                               5B39E1EAB64FA9A281BB545548909A26
+                               0DB3CE59E35E48C6D8511C5239317152
+                               CEB3AEDA8675B470B221AC0439A2BFCC
+            stream[192..255] = 2FFC234C2391A5A44BD98FC5B89F51B5
+                               05FCB12D9E65E889DA8A514031878E7F
+                               BF87A5720A5B6FE9E6139AEF3A3CCAD8
+                               A1CE1DFD6592CB2CEA04618C15FAF7DB
+            stream[256..319] = 1D716F258E16F5ED837958F506B00B6E
+                               B784CF3BA415EB2CD301021493A3B654
+                               D644A9A52BD3560B91F5224EDE24C72A
+                               4508CB78DFBCCE6034AE0AF26DC5F9DF
+            stream[448..511] = 2EB24B1048E053781B564255FEF304A6
+                               EAA79ED748AF357BC1FF061FB308C820
+                               65083C216A31D23DC3018B03F356CF33
+                               67653DCAF14194F0725012EDD674A740
+                  xor-digest = D76C3B99D66D3C58A1D6338658AF76BE
+                               4BE6099C40F0461298CF7F008BA91979
+                               45A370F3794F822FC0D2637F01C3CAED
+                               9616CF5069D6FB261D89EB2523338CEF
+
+Set 3, vector#153:
+                         key = 999A9B9C9D9E9FA0A1A2A3A4A5A6A7A8
+                          IV = 0000000000000000
+               stream[0..63] = C08ED7A73C376240AA50C4941C23C76E
+                               314B4A5BD1947AED90D9F8F95E63FDD6
+                               1FC8EB7E674BF49AB44D411C5C2640DC
+                               BDB7F7A136C49AA5897C058D3421CD57
+            stream[192..255] = 9CFE56D456837A4B0CDE3F46A424F2A7
+                               5FF901ADED22AF434F14AE66EA8C3446
+                               61D2EEE405A37E821FC78A19F09CBB63
+                               5E3CCB143D20963A3A29BEB258FFD5BD
+            stream[256..319] = 084AB28D158B038CE8C10D185580A2EF
+                               37DC167EE908BD14A041526CA91BC3ED
+                               95BEED5406F51E541026324FA7E395A3
+                               79484319783738B3C6688107141C140F
+            stream[448..511] = 4CEC62A9A8547134642F790E9819C533
+                               4B27054A3FA222A1C8513B9C32E8028B
+                               A0DE4A3FF59BC76EB8730252D49E7195
+                               4892F39C21A3DE11376956462C39A60A
+                  xor-digest = 285487F7108B86E18F9EA613E65C8F5E
+                               46A74C5F9C6EB9E9E870B0C18F130DA4
+                               1DB858320F3B1C13C047F5FD47DE5343
+                               804330B03CA3AA9925C3143A184C135D
+
+Set 3, vector#162:
+                         key = A2A3A4A5A6A7A8A9AAABACADAEAFB0B1
+                          IV = 0000000000000000
+               stream[0..63] = 2DBC230A1D4077730133CB681C63803C
+                               FE655F1F83628A49A0E74BCACC9185C9
+                               32C61657E653D98D88EA9EA7D97BDDAE
+                               D2627AAE38494630178A72ABDE934395
+            stream[192..255] = 2C193A98DCA4BE342DF061456538095C
+                               E96612F6E319A2884694A9E436A69DF8
+                               35DC45A6BD750099DF49C4F5B11B8C5D
+                               0BF9939CBE55A39C7B1A1F7F5C55AC71
+            stream[256..319] = F98313F042A755DDA8A1BD1BD6E1C6DF
+                               E9F63282598225C7C2FB43438278B0C8
+                               F37985D8F99BF0E88D9C4AC2A00F9FB3
+                               FE2C7585574A4846D6B0F107198D9842
+            stream[448..511] = 779D4449233A4790DC0FB467D720041D
+                               C55097068381D5C06847A45973DFCDA3
+                               CB9570A83B7DB21AC572E5EBD33ED557
+                               2DB842E7331DE32B3848149279B5E358
+                  xor-digest = 12A33437E6CA1F733B009817B0602B5F
+                               9F2785DAD2176B256BBE16F8477C425B
+                               1A2D29173ED791F0F9C5E8BE4D5CCF96
+                               6CD8090EE59FF9880D836EBFEB62F9E2
+
+Set 3, vector#171:
+                         key = ABACADAEAFB0B1B2B3B4B5B6B7B8B9BA
+                          IV = 0000000000000000
+               stream[0..63] = 2AD70E5D6074FF8692077E8EA3A7065C
+                               6542A2C44DD873C2B37DF8A12FA41C7F
+                               B460A5FD7904613CE9E013BD1B93F7C9
+                               23FBDA997C538423F20C026173A6B14C
+            stream[192..255] = D13EC8E72786E941F00778FDACFA5725
+                               A492BA589423B67048912D154C21EABE
+                               0B44AE534B5EF031C37F1FE868D1DFE7
+                               42DC82A7595F0BC8C87EBD3D8952A307
+            stream[256..319] = E76DD6290D8A97E4D52FF3CFE619F2CA
+                               80F9FE773E9C05D214C7ED782BEAC1CA
+                               0375C8D0C27BEB8734682AA24B1F7895
+                               0D8B27728F277E0D5F647769794C596A
+            stream[448..511] = 7ACA69E52A3A394093750862B4681B14
+                               2F64810C39808C3796615D5D26166920
+                               2F9B14336CCEFEECD0F556EB57747A66
+                               AFA55E3C0F65BC2D668A354A9179537E
+                  xor-digest = 6F624E09773A90A696623CFEB4641365
+                               3C80738E53FE029499F0CAC108DE703D
+                               B72A543BB726BEC219F866338BE81A32
+                               E359A076D2D7ECA632D68CCCEACC9958
+
+Set 3, vector#180:
+                         key = B4B5B6B7B8B9BABBBCBDBEBFC0C1C2C3
+                          IV = 0000000000000000
+               stream[0..63] = 3796064A20EE2432983FFEAEF238BDFA
+                               EBE4EEC8BDD2243A12B226A4E4AB73D1
+                               8A1A3B85A9A6E8C1B73D7A35E634AFF3
+                               53C500FFA905BD00A57E2884D278CE48
+            stream[192..255] = 668C680E63C447175F14D290474D5556
+                               07877E0962775596A6F865737CCCA16C
+                               CD5879978EFF9D6CA02F6F4406B8B801
+                               5BDBDF02B188F6AC3ED46AE30D403810
+            stream[256..319] = 806BB3ADD4D4AD22E1BF3BF3AEB98E85
+                               CC54E714B20281FAF72655963C76031B
+                               38F0FA6132AC9ADE3F712FEC747BF114
+                               9C30C023F63E17336AB508188165DBA6
+            stream[448..511] = FE2DB543BC4F4A89510FC9442B83F304
+                               6A77EC2086861CA7959DF633513ABDCA
+                               BC23AB39FBB97078202B73787404FF4C
+                               8F38FEC8BCE76D29A9D675F6E85FB5F5
+                  xor-digest = 3C6894118B379B4F625357C4FA56C8E3
+                               D747CFB06CECDFF2E98E52D3FE5C2C5E
+                               A3216EAF35F6D86734162056A2CF9232
+                               C99E571FB7C1CAAE835FD5941DD2315D
+
+Set 3, vector#189:
+                         key = BDBEBFC0C1C2C3C4C5C6C7C8C9CACBCC
+                          IV = 0000000000000000
+               stream[0..63] = 450EF26E87C27359A71BE95BE322B656
+                               6609B25A34090E97462D93369850AB4A
+                               D61C7F9F67F9B12847899C40F0EAFA22
+                               8B7A6BC7F1BC4CBA7A85F5266177B0A0
+            stream[192..255] = B28AB576E12232FB85B3B854A3991526
+                               8D1AED4D5A96F7E71F9E4F55AAC75993
+                               A9D2780C5EFA4191F506D9FFE1153B90
+                               4C15394CF60269D715697D7B2163F32F
+            stream[256..319] = 4F1671090637F6E96159EB93B26B779C
+                               1C31EDF7E13B1BF23E3A67953FCD5A45
+                               07DAAA1D0EB1E352C621F5C4C3CAC2E0
+                               25C7631345E7C46D2BA641B915705BF7
+            stream[448..511] = 78C100DE69AE45C1B10EEF08B91CC675
+                               29356C7D44DF8FF8EEB2646B528F5F8F
+                               AFCD97E36005D72185D90B52A09F38A7
+                               80332270DCC28AFC85FB68390315BB20
+                  xor-digest = E58B774698C56AE46F5A3393EBFE1F49
+                               2948859745368817D41C99EFC019F2A0
+                               55EBA9182818888103681DEA9D5B07AE
+                               E7A758D602437217B6E782419B651CE9
+
+Set 3, vector#198:
+                         key = C6C7C8C9CACBCCCDCECFD0D1D2D3D4D5
+                          IV = 0000000000000000
+               stream[0..63] = 96E4CF1A2758D880AADBB05273DF3E03
+                               69BB35AC9B71160C0E893355DBE033FA
+                               DAE988C496D15BE772BC5E6A46283DBC
+                               8A0BC506DB145FD2BF309992B37F0963
+            stream[192..255] = 173473B2C415BDD25932D8A969077ACD
+                               6BFB6D34F92611B3264A268E5F2D2E52
+                               9B9979DB645E2530B318E85D6018D82C
+                               AA6A85F7DAF9AC9731769021708C5431
+            stream[256..319] = B79574437BDAC05826104F473DBEE18A
+                               2B4919577599E3360189C7DF666B56B9
+                               C814834E8644C98C42BB05D4E54692F8
+                               8FB69AA708C4051E5E0DDF4E39887BED
+            stream[448..511] = DB9661BDC10059CDDB501C1AB1AE9E8C
+                               CB8E192EBABBDEE6B0CF1DD7F7B02F7E
+                               F3ADC85AFFC380D977CE9462A5951107
+                               D9C20AAA87D9FC790591994B96AA4761
+                  xor-digest = 682D31225C8415A2FEE30A2FA180B5D8
+                               10B54936B2029086C72ABBE0544054E4
+                               4AEA61FB87FE50C6B6DDC28AF0932EEC
+                               41A5A5988E5CBDC3B9F4DFBCDE63FF40
+
+Set 3, vector#207:
+                         key = CFD0D1D2D3D4D5D6D7D8D9DADBDCDDDE
+                          IV = 0000000000000000
+               stream[0..63] = 3B662BCC798F80C6426786FB81D2C2C9
+                               BCCBD772216A31A626C9F54E6577495E
+                               773989D830F03A230B9B2C37B6432C56
+                               4550AFF6C63BB220BC4BFC4B07678580
+            stream[192..255] = B63D8B4CE396950F7291360B6122FE5C
+                               EBE69E43D3D0B4EF1F55664E9D6AFF3F
+                               35DEDFAB5971395403FC2A88A76FBA68
+                               959F8DDE7B1D07D3D2F42FF6CA7AAF08
+            stream[256..319] = A0FC0EB648C3236EF72D6C9CC38456C7
+                               9FCD5E22415C7C1ED26CAB2E5E3DA6A0
+                               9AA6616798B37147D3DDE6EB8AA63DDA
+                               31B5CDBCE315FA267B7DED7FF54CFB82
+            stream[448..511] = 059FD351E88F27F793E3A1CD61B2FAE2
+                               7D9AF1DAC4558BED9D1B59E339EBFF37
+                               41E150E2C714E29B64075119B26793EE
+                               BD4C854AFDE7BE17DDB3E47CB7FAC255
+                  xor-digest = 8A00652704B7A1D1E92D3C8D607ED02B
+                               DD22C20142826474E40EC2E08C57DDF3
+                               94D9BF77B46E74F74230C60720C5EF9D
+                               03264AE59599027DEE4CE5B8942971C4
+
+Set 3, vector#216:
+                         key = D8D9DADBDCDDDEDFE0E1E2E3E4E5E6E7
+                          IV = 0000000000000000
+               stream[0..63] = B846B5C09ED72772529CE3FA897AD2A7
+                               737C5B6CEE99896812A051E6EA98D584
+                               54FE1BAA29AF50B50DA15B093EBC67A5
+                               6DAF9F3AEB5E838177820E0056BC1909
+            stream[192..255] = 0866854B2B80E405FC09F2E68C869B4B
+                               76043A96F4B31C3C7052A2F0C81B9DEE
+                               75DC8197AAAA396643A16E484E9422D6
+                               D4E8C3FDB9044F236B7968943994D134
+            stream[256..319] = DDE30AD953EE55C9C69C794F9147D2B6
+                               7C27029B6B35BB4678D383140C93D7C4
+                               EF1C42D66C8E1557FA9F7122423C525F
+                               FDC06407EA90FE8DD2FB267B680BA44E
+            stream[448..511] = 64E714C1298785190F9C2871293D3BD9
+                               84889FC5CDCE9C4E1110CDF5F0EBDDDC
+                               0233AA81715D55C2205CD105662E14BB
+                               B02F937A159DE32F518D3A2A5E2B7B02
+                  xor-digest = 6410131CC0C81448A94959D7C42AE896
+                               A615AD69571488BE8310B88D90F9A221
+                               1625D608D03625C8097FF29D5D16142D
+                               E44094582DA29D09365A969C35BB1BB0
+
+Set 3, vector#225:
+                         key = E1E2E3E4E5E6E7E8E9EAEBECEDEEEFF0
+                          IV = 0000000000000000
+               stream[0..63] = A3B43F8553B670D450AFEAE6A477AB98
+                               B5910C7E4FD443006A09FC88E0EF8A60
+                               DC951FD794F6F79A82E32D803D53D293
+                               9BEE4AB66917D7D6F795EB22BB60876C
+            stream[192..255] = 6A1B01499E4FF44563879C3A1146CE6D
+                               7A1D3BEF1FE59C522A78FD8F3DE2A3D6
+                               1B6D42F2FF3ABCFEEE24FAEFFB1DF01E
+                               8408FEE0701D1FEF5C13197194A71C6C
+            stream[256..319] = 5627CC31308C06067E54303BA576DAE8
+                               0FEB49B0AA6DF21224F5B4FD4F0AAC03
+                               363ED2188A3BBC18F4808362CFC18407
+                               F5A4B3E8AE93E271875ED208C77D96B8
+            stream[448..511] = F45B25AAECD34C2BDE2B5735A945B10A
+                               ACDD6BC4257FFF3BB3DCE5C0352655E0
+                               E855B71482A97887C74B6709F4DB006A
+                               6BB9F6B11E48E437063C48FA9EF6CC46
+                  xor-digest = 74A2A448F6FEF9F5A12BB04D6386845B
+                               8EF85072C29A36BD6FD84CD3E92D965E
+                               60600E999EF0668B2E62A0A59356AE76
+                               4B5ABED9AA5BAE74BED25E56A804B687
+
+Set 3, vector#234:
+                         key = EAEBECEDEEEFF0F1F2F3F4F5F6F7F8F9
+                          IV = 0000000000000000
+               stream[0..63] = 8381B53D5301DBE45CC692C81D125D17
+                               CE55CCD0C28B36B37EF77CD326CC3F22
+                               9EF3C2509BD7B94F7D6A2B6CDB98A83C
+                               9D40B37869D27CE76A753BD80E5C2197
+            stream[192..255] = BC1754703E057CBACC863E8DF3E013F4
+                               6FA6798B281074ED5C7B09AD6B11BC02
+                               5F509F6B398A57D9F96B1E422B4324FA
+                               EB7C2B22C2F564862D3720973F5FEB85
+            stream[256..319] = 816758D426295057847E101E0AB6EB91
+                               5AFF310E44564EE0C56F064B5502EDA0
+                               AF568A0F07E040A54969DF2AF1D503A8
+                               F44FAD5FAB32585F8706CB46A9192BD4
+            stream[448..511] = 72F6FBDBFAF78752767E853764FAE20D
+                               94ECF8F2D3AF283C6737D2411CFE1EDD
+                               362274C3281616E15D79549E5ED20F74
+                               4DBD2BD2DC40D42AF7C87ED4E36ADB0A
+                  xor-digest = B137019A384CB7689EB1AFA9EEEA9A8E
+                               597C15F897072EC491473ABFF86C5F70
+                               8DB1519D72619A00CB3C1A1D0ED882A1
+                               1A4EDFBB582998E8A036CC12F0A4DDCB
+
+Set 3, vector#243:
+                         key = F3F4F5F6F7F8F9FAFBFCFDFEFF000102
+                          IV = 0000000000000000
+               stream[0..63] = AC7A285AD6C329DAFC4C24B7082C56A1
+                               1267101A40123E8BA3D26753FEC8E492
+                               D7C7FD6C6C7871AFCD2B90DEFB9ACA82
+                               61A568F6566F14B98F5D7B57DBD02372
+            stream[192..255] = 4E6B2E9F7CAB0E633D2988B48A5E4812
+                               B813629CFE4D31ED00FAD6EB2D999B06
+                               810BE53BB739E8153BD8783F2500FDFC
+                               2E59959596276159F6D56ECAD1FC8B1B
+            stream[256..319] = 4269B2EEFE51858D2E16262FF9E44576
+                               CA0402E234B73EEE10A4388FA477996D
+                               0F0DEA985C2BDB06641A060228DDCAAD
+                               37E5BF555348A04F04A0408B15E6CCDC
+            stream[448..511] = 6B7FAE2235360C09C3A25901E773C13C
+                               559DCE935685A7695DD05466CEBF4B6E
+                               73AFC1705842C2212A382D8CC658A332
+                               FBFF451071B5A72930D92A1EB6199EC7
+                  xor-digest = 8A4E381256C845006DB04B853BD1A68F
+                               DCEF054903875142BB34D09BB496E035
+                               4A111C754A7DAAFEA22F173CEBDC2A46
+                               950912739905FC8B8F5252F5734447E3
+
+Set 3, vector#252:
+                         key = FCFDFEFF000102030405060708090A0B
+                          IV = 0000000000000000
+               stream[0..63] = B4F871C18B4BBA8E427AB5C06985D403
+                               27943574F02CA0A6BBBB27F8B72A6787
+                               BC8211C25FF3E180F0F1326E4D24BAA5
+                               0B293633535FE6D3B1323C9188211AA2
+            stream[192..255] = 4C69731BFDEF59A443688DFEBF345AF2
+                               2A42CAF816824246254D1D2EC09461A5
+                               77014047EB0A8A300DAE0E461CA5D536
+                               1A29BA8C68A1F1BFD1ABA0FEA96BE7D9
+            stream[256..319] = A86A988B6C0B65A354D43F4C342C0FF0
+                               629FD4FF3C6CE05AB2B1386CFC094D0D
+                               16F5496D31F9DCA6F583708722FD2BAA
+                               248170602C87007EE428F574DA725CBB
+            stream[448..511] = 064CFE4EA4580AB39F27811DF269BDBF
+                               8AA58157C97CDF454D6B50430EA518F7
+                               39F70449AE6AE35D8E50C818A2EB169E
+                               595B86587475EF7001945098E20B5A62
+                  xor-digest = 21E47DCE3950D31956CA26371008A79B
+                               2B79361C719DB799481294D6913006C8
+                               3766DFFCF186B5A21B0C63A4D5303A89
+                               BE1118BD4096D5C388C88139109D9B7F
+
+Test vectors -- set 4
+=====================
+
+Set 4, vector#  0:
+                         key = 0053A6F94C9FF24598EB3E91E4378ADD
+                          IV = 0000000000000000
+               stream[0..63] = B1D49BA344C9B6E8D439A2D0BBD004E7
+                               03D49516938A231AC30F868C93233D38
+                               E679549FDFEFBE314D548B457946ECC5
+                               DFF062DA84EC561DF55F95AD1A13211C
+        stream[65472..65535] = B7FBF55E9E9430A0411BE9EEFFF15786
+                               899FE9D89955B99396ABA845D9D19596
+                               7CDA3F357216CA4E6BA9D8FDAAC41EEE
+                               37C48C144C143228ADA892E5649E560A
+        stream[65536..65599] = 811976603CBCE60AB97FD73179AB9184
+                               B3A2861B47AE4A6DADF3338F118920A6
+                               60FB1944F04712802227C1BF7F270821
+                               DF4A85699D96C69CA8D13178F5EF5407
+      stream[131008..131071] = 4AAB727DDFC1996787C40E969AFC6241
+                               CEB02F3D2DF9E72F17D4316CBAD15297
+                               46E3D0A347776C6FB5523050742EC23F
+                               3D8EB54DA83D4721AC90B443E5B7897C
+                  xor-digest = 575E0A4B0EE5BA64E0037B8D5B4CB1E5
+                               F8470765A9C43D94DE01DF68F2691376
+                               1CA9768B3796E9691C73671CC35110F9
+                               314CDB97773FF2C6FD81D28D030CBF83
+
+Set 4, vector#  1:
+                         key = 0558ABFE51A4F74A9DF04396E93C8FE2
+                          IV = 0000000000000000
+               stream[0..63] = 4F02EFC370C559549DE321F2BFB5AEA6
+                               5279F3855ED9E03972FC3EB954063644
+                               C4721C6F23CDF6DAA6CC18637E6AADB0
+                               04136F6814B55FEDC3BFBE1E54CE1037
+        stream[65472..65535] = A121054D6B04FC419494ED83C13ECF89
+                               D82E7D0372EB12E2A0BE31867E52E1D5
+                               C8C8E3762ABAC1546AB0E0AA023C4567
+                               13515F4B743A55D00E2D09FBF816C2B1
+        stream[65536..65599] = 749CCDDCB3869D30500ABDB940AA49AF
+                               240F1F563DCB72F27040AA81A8C0A916
+                               59BB1DF537DE4E0B5CABFC606A07F926
+                               A78A17F6A1B60D38E707CD0D9642357F
+      stream[131008..131071] = D54A39330C57875A0241302C45BA9808
+                               790228A0967534904FDC810504E8AAE9
+                               B5DE76BB50F0F53EA9488565E44B55E1
+                               2F1E17CBA3F9E31B21B7C5DFC31FC0B5
+                  xor-digest = 56155DF6B0503D7108264B9A21C0891F
+                               3575D50A697C5C4DD708A733F2964446
+                               18E618B627E7F34FB72CBE34BFABE5C2
+                               09BDFD51AD2A8EF567BEEE56D10217E7
+
+Set 4, vector#  2:
+                         key = 0A5DB00356A9FC4FA2F5489BEE4194E7
+                          IV = 0000000000000000
+               stream[0..63] = C31AE4DCE8209D9F78B080FDC84BA5DB
+                               36A71F2FEECB6E9FCBC1ACB8D295D85F
+                               FE420068D7CCB265F5EB2F6D483ACDF5
+                               1DBCCFCF113906CEF57495D437E4D62E
+        stream[65472..65535] = 2F7142D43A6496E6EAA53487788CEF37
+                               975C73E679FE630295ABECE5A82F556D
+                               0A76F4676473A223A08A9EE3ED18AED6
+                               27C61A48B5A7655D096B73BD4AFEB5B9
+        stream[65536..65599] = 34EF0C90B6FB4580E7EDC0908CD41158
+                               2D6C4101AD8D4C198693FF75F6008E71
+                               EC790DB82B8F1080E709770F072732C7
+                               A77758449A9F5B63095A5CAA86E70878
+      stream[131008..131071] = CB3EFA61C5FDE9C369BD641F840983D8
+                               B366F631AABD1CEE7F03A5E6DAF93427
+                               D4ACBDEE6D005B962E325703BC3528E0
+                               13FEC419EF2E4BD8B472429652F9B9EE
+                  xor-digest = F6FF458A757C5886A04538A0F4F24022
+                               20D27148FEBF791BC13D2DA63C443E72
+                               68E5D547F176D945B1A12AD15BE11A04
+                               E819FD4D3C7E6B672EA6E3A95653A342
+
+Set 4, vector#  3:
+                         key = 0F62B5085BAE0154A7FA4DA0F34699EC
+                          IV = 0000000000000000
+               stream[0..63] = 9AF7391762B4D5793B26A1DAA5FC9DA8
+                               387BBBD1301D3931F761CF2C34634AB3
+                               FEDDB3B4C8833077367095AC02D3D788
+                               03650FAF6156D27B08A8888572BFBFBE
+        stream[65472..65535] = 359727441F419C0AF5E28CDCE21CBF03
+                               7CFBC26D8756912EF895A601AD4FE124
+                               4B044DE78C52AD0917EF641ECB82130C
+                               60B33DFF82A1FF4517561CCFAA42ECC3
+        stream[65536..65599] = ACDB13B4B4EFFF36DE5F8BE675537D3F
+                               62DFBB2529511A6038E2540469FDEF7F
+                               5603FE388A094BA2C43592002EDAE9F4
+                               D4A9C73F0C229F19DCFCED6586D9CBBB
+      stream[131008..131071] = A6F0676C38330BC828E57E7193A05FA1
+                               57836E04837DA478CEB8EDB8E0BD7F20
+                               A2B83BBED25799CFB3D748FF4F2E06C0
+                               29FE28C1F41C93DC7816AA3D2FFE10BB
+                  xor-digest = 997D53473AA526C2C455561DB22F4F62
+                               33334FAAE8833FFE88F31A51357D1F60
+                               A8D0C53253F79FE499F2C5F5E5F69653
+                               A61520DE49381B5884595A3B3FFCE035
+
+Test vectors -- set 5
+=====================
+
+Set 5, vector#  0:
+                         key = 00000000000000000000000000000000
+                          IV = 8000000000000000
+               stream[0..63] = 8C3E70D63D8541A33621912CC8385F9E
+                               A74DFE692DBF17090767E5D7D8468D9A
+                               A5E3FD7FE6164F731B49C92E42AAA448
+                               4635D6480BA792AD013655F19C47C599
+            stream[192..255] = A7CFF1A495CB9B1162767912050D4961
+                               59EB515A34B1828E38B0540D3D4C3A5B
+                               7D0121F6C76C47FD3AF92788E694FC5E
+                               FBB28E611DC1CD8EDAF4266E140B5147
+            stream[256..319] = 806E59A52AE255D282623985344FE728
+                               EAF4E37DEB249603F419F31FE833ED6C
+                               04A9BA1D83FFE372975D132380D232F5
+                               82AC8DF10C244FE2996A3F29304661E8
+            stream[448..511] = 046433985C9FA18B949BCB73194176E2
+                               6CBD4F854A9E1E9D81423C817220E771
+                               690FCD44B3B849EEC317F4B924A8DAE0
+                               13EA88D817E1170A0EDF4E650721CAD9
+                  xor-digest = 86FA5BDD94242A1DC63FD46744F7B74A
+                               48BAD4F2272EC61B0F046CDF65250538
+                               4210E838D5E391F9BE4F80D68ABC379A
+                               3E20E90A01B5AC4004D5D518EB184A4D
+
+Set 5, vector#  9:
+                         key = 00000000000000000000000000000000
+                          IV = 0040000000000000
+               stream[0..63] = 691CB2E41CB212A1954126DAF622BFF7
+                               F1B10335B9775EE2D44DF8179C582583
+                               F0116EFE70537F4F336E7B13851BE7C7
+                               CADFE15702AEC662830C40EF3E5CDAB2
+            stream[192..255] = 55AB6D8C6500E9743E481F589D5DE55E
+                               1E6C80BCB3B9A4F349EF55EF02B7A99F
+                               8F9EDAB2FCBC91D50D43E9A87A861846
+                               C44E00EEBBCF4D25449F27BE22A4A590
+            stream[256..319] = 7B843EFA230A1B609B8AB310EBF53AED
+                               4E2DE7FDA117E3CFF2B7BCD37A7DDC0D
+                               2BBCDD806854AE330E09F5B55133BEAD
+                               73D7F6C41B3EE3EC221F12E3D2CED02E
+            stream[448..511] = D522C112371EDAB20456AEE8A5603920
+                               5EC3451D013B50B33343A2950088EA4E
+                               66E282DA12455C5EF6F8BF0011A2B3DF
+                               06DF1B24A4979FF8966527D2F8EDF420
+                  xor-digest = 2943923E644706ED585C9C60A0BE5816
+                               598CE026DEBC7835F02D28DF2D4C53E1
+                               C5DBDAB5A21182B4D5B4259A7C185593
+                               E0D91AD07C63F3E1E5B71EB4A6BA5091
+
+Set 5, vector# 18:
+                         key = 00000000000000000000000000000000
+                          IV = 0000200000000000
+               stream[0..63] = A8346F600E8B4B335BDC2BF73BAFBE7C
+                               FA9BAB3F4136DC162853184D14897412
+                               88924BB8C1C3856EADA27C0A78A0CB5B
+                               FB7D31F207378B7DD0781C51FB9AAFB9
+            stream[192..255] = 3E80F6ECFF37DE8B053B0A0DF55FDDBC
+                               995F6C65BF11A035369F1B924884D9C8
+                               357B4BE42C0329C3E30698B511FDD106
+                               6073D332FC61FA1EEF4F6434833CD5A8
+            stream[256..319] = 9186CB5B8DA3BCFA90C4768BD9B27BE2
+                               B38B9A65995C5791D8197AFE3188B53F
+                               BA5DAFEAE2B179AC0799A25AEEF539E8
+                               2AC8FBA1F8DD1DF7006B7373696F6486
+            stream[448..511] = 41D8F9AD87DC7A70DF1639A2DD3E18F9
+                               C2FCF9C70DF45F06950D84C655150305
+                               55B0A418189F3E10266CFB89CDE5C2E0
+                               04A0CB031D45F7EB60E96556182D181D
+                  xor-digest = B152B86A3A175808797E611B79505815
+                               7ED95B9747EF8F449DC0FFF0F020EC72
+                               35726C5CB6650B33AB88AE2B151A5E83
+                               45B39F97949037002276DBE9851A5F5D
+
+Set 5, vector# 27:
+                         key = 00000000000000000000000000000000
+                          IV = 0000001000000000
+               stream[0..63] = AD1CEF2DBC992972709AD20046F141DE
+                               692C0A1960425A7E97CD5CA012974946
+                               3F3D9F605EDEB7B104DD648C5AC03035
+                               106F90B8879DA7F5AA59EB0E7B348F67
+            stream[192..255] = 82693BDC426221E5250934A2089154E8
+                               1B0B2D2D398E903DA3F15541C9B0BDF6
+                               162AFD2E3CBCECDD3EE3E187F67225E3
+                               6C425A461EABA7FC11312370F54EC727
+            stream[256..319] = 83AED2E804EB005C4A6149EC98FC23BD
+                               287FB680FBBCD74B8E0D11BC7468D315
+                               EE80378859CFAC5D05A9AC03351D9286
+                               2EE56C841308FE15641F14F1FF1226DD
+            stream[448..511] = 0DC61BC0188D40CEB3FF1F5609FAC338
+                               063490128A2D90529BC769F5434DA68D
+                               58C5F6812D40B67303445407FF2395E9
+                               57A2D4CDD9A0C7129596B36E9A187A5D
+                  xor-digest = 3FE6B175DAB56A211E0846CE1BF146CD
+                               59C2FE9BEFDFF644607C68B31FB5FE54
+                               31D32FAD6639011115DD4E0271573510
+                               2F356FBDFF9E96CE991B28AC7234E036
+
+Set 5, vector# 36:
+                         key = 00000000000000000000000000000000
+                          IV = 0000000008000000
+               stream[0..63] = 3A2A8DC611360210D764A8461B18CBB7
+                               C9E7683C14DB3AFADB084220821CC6BC
+                               292D4F2519CABDAE9948ED6763660B6C
+                               B2E8F80E987E95EB15995990EE1AEC47
+            stream[192..255] = E6FB803B9F92355BC191D9211AC4434E
+                               3B9F3EC20FB043D80A02F3082CA062C7
+                               8D5AB8C56571EC113500A61908733825
+                               1A1FF1A9DD11DF9154D7E7954AADEE0D
+            stream[256..319] = 219F88C3EB9F2ED869FB680121D463E6
+                               E74480406032B4C25D9ADA942F9301D3
+                               F93914CC09DCBA4A4699189FE033E6ED
+                               F2809FB5A16779EB5D1483DF4CAC7BE4
+            stream[448..511] = 9D8B1483CA286AFCBC5A56F6EC99205A
+                               C40DCDE3239E3224D5F4E33B5A10785B
+                               F4EEEA0F5AD1817C81EC9F6A3BA707F3
+                               5C570217C7B55B1810E8B75CCD14ACBE
+                  xor-digest = EA24BC34FF6BFB75F8C1CAADDF993972
+                               D16A8F6B54A189104A401609D5A04A6B
+                               615177DAA4968FEB10940C6E530447EA
+                               B5CA0067D8EFCFD362EE8A956AC3425D
+
+Set 5, vector# 45:
+                         key = 00000000000000000000000000000000
+                          IV = 0000000000040000
+               stream[0..63] = 091021A7297C69E10442E24B0D06DBB6
+                               E3B30829BC0BA7AED758DF6E35487701
+                               25FE1E3BED56CD212B249DFA7B040AA5
+                               0087FEF28729239A272BC0CA7C82EED3
+            stream[192..255] = 635ED01A5A21FFA51F18190F4908DC3E
+                               68E09644DCFE1E4F3C5B4B9BFD0D4AAB
+                               7E995DF674DE183EE261C6D42D8BEF5B
+                               265AB53DE0CE0781603886B90B07657B
+            stream[256..319] = FFE79E722B87D8767421C01FE16C7E51
+                               43150CD79CEAEFC45683459F08713282
+                               09FB7850F3DD1052DA55D6B34367D56E
+                               4D37EBD37114C3C495122529246918F5
+            stream[448..511] = 5519177B672C421F4B96494222188E82
+                               EE7CCF83DE51397ECCDD5A5B96965BCE
+                               00DA24C8188475BF04E8501E1440FCA3
+                               B1C0B8104EC8D6DBE7341F2194F0C3F5
+                  xor-digest = 4850B008CEFBF281BA581C067E5224AA
+                               1E4920503D373335FE14B99AFEDBC883
+                               D24CFDC9E6D1A7DB473C9BD77845E08A
+                               654570A9DF0809FDF4C0D769368FC20F
+
+Set 5, vector# 54:
+                         key = 00000000000000000000000000000000
+                          IV = 0000000000000200
+               stream[0..63] = 5FD06EDB1E00BFB4465CDAFAEDD38725
+                               B37BDCC92558651CF9233DE0CE17CD92
+                               1EBF9ABBD37C1A3DEBD7E34BBB0885B1
+                               E370C510811F4FAE7B3CCCB3A2FB7851
+            stream[192..255] = F4611AD0A04D3281AE3312FACE53DE10
+                               7BCCDC6487F4FF40FAECF0E342E04023
+                               1AF3FA1EC0D97C2E497BEF918AB98EE2
+                               6B88C3A41C89C1C003F43FC802F3978F
+            stream[256..319] = 141057F473D4ACA6AD9761DFA8F5172A
+                               CB381F7E6E9F0AD929D16F8E86512AA3
+                               8645B74020C7F86DED2713FD854E0349
+                               DB77BDDDD52E742B35AE362C7A7267DA
+            stream[448..511] = CCD2A83A7D6D353F24EA309165FC20A3
+                               F4AB36D578CAAC4658D08C6DE4480908
+                               9C33B5F536B041C28A02A1C725FE4F9B
+                               2DBE4621CDAE50BE84E863F2B58AAB05
+                  xor-digest = 99463BD3014AAB2C07E6227763E170FC
+                               E14CE3A1AEFDC3683193889E316C6428
+                               4B0665B75E43440C0DB54771EB410223
+                               5F78865DB8D4AF1206523090C3310E55
+
+Set 5, vector# 63:
+                         key = 00000000000000000000000000000000
+                          IV = 0000000000000001
+               stream[0..63] = 55FB0B90A9FB953AE96D372BADBEBD30
+                               F531A454D31B669BCD8BAAD78C6C9994
+                               FFCCEC7ACB22F914A072DA22A617C0B7
+                               B1ABC91C8604D55ABB61B7AA88749C29
+            stream[192..255] = 09336FD5B777A613FC490DE262D72787
+                               2B066C2A5DAA406224FB1CD844A98D90
+                               2E56E734FFBA09F524292C8CF655E123
+                               C6FC9EDDB0D794ED3351E1F15F403AAE
+            stream[256..319] = 7673EFDB39793122B538847DF651EDBF
+                               2F2DB7959EDFA01E73075F8125F47E14
+                               1198528ED6F6D74F3DA5239B4FF003D5
+                               EBB28B9319ECE253C844A86E44892611
+            stream[448..511] = A9BDEFF05695E0835C3596571177C489
+                               848E6B99221F71DFA5B77F92466CBFAB
+                               6D3514A6B172C4F5B3E163BC5A844BC1
+                               0402A13EC657FF82B23AB3B1C6793195
+                  xor-digest = B923DC54547EEE7A9A45E6283B7BD0E1
+                               80F91F1ADD1F6A2A02835AF643BD0AB9
+                               5B2C684E9867ABF5D56EA7E8583CD08D
+                               81572A6DC04CC290AB04BF6D917366F7
+
+Test vectors -- set 6
+=====================
+
+Set 6, vector#  0:
+                         key = 0053A6F94C9FF24598EB3E91E4378ADD
+                          IV = 0D74DB42A91077DE
+               stream[0..63] = 75D186D6BC6905C64F1B2DFDD51F7BFC
+                               D74F926E6976CD0A9B1A3AE9DD8CB43F
+                               F5CD60F2541FF7F22C5C70CE07613989
+                               71D8779A8423157A9136C194BD0570A4
+        stream[65472..65535] = 8B043B72E059CDD5444436D4FF0440B4
+                               C0A7A6BD84A3D958C70B9945DBE07E08
+                               889482606365B39976A538D94E12D800
+                               526151C540FCFC9B46D6841D5FF330BC
+        stream[65536..65599] = 3460B5305B19C17C3E5B023616628F57
+                               D3CAC65E4065DBE6A2A3A786C1D5EE6E
+                               4DF2227E0D1D366756746420D1B54252
+                               74B66CE57B0C05077E09DAD1BAF9AA37
+      stream[131008..131071] = 7C28F9D069B6D1380AAA5A21F165DE47
+                               149BB4AEEDFA75C56F52B1375878C340
+                               30EB6C77CA5271E12FB28067B7A48915
+                               47C7149DC562326941DE8DDA4A91AEE1
+                  xor-digest = 3D2DF1B3EB9EF523140A679F5A9E3650
+                               B37C8B34D98B6298E678753E1018E222
+                               99E469418E9B0F2483FA5E655FF1785F
+                               B6492CA458A013929973F4C8DCF3EEA3
+
+Set 6, vector#  1:
+                         key = 0558ABFE51A4F74A9DF04396E93C8FE2
+                          IV = 167DE44BB21980E7
+               stream[0..63] = 476E2750C73856C93563B5F546F56A6A
+                               E5F97D8888655222812E3EDDB86BB8AD
+                               214AE0AA107CEAB4993CC74F63932885
+                               F0A585C735D590D194AC90717D0BADCF
+        stream[65472..65535] = 3D5E36D1D7DE3AB2905F27EAD076D990
+                               47AB98783EFB85EBF454256736D27126
+                               69DEE9B78F1D9E26E958C3E0065FE5E2
+                               91384E884A885CFFB68B29129483368E
+        stream[65536..65599] = 4206D36807E7935012303086A3977E83
+                               740A7B00A1773F7FE76DA6A569F02056
+                               1B0BD6C640573F585565D6CADA5F38A5
+                               45763C7ABDA4CEA8D210BFE3F8839DEE
+      stream[131008..131071] = 8C044756D4610B9BA4292E3C67F166C4
+                               5AD0E1D6666050BDADDF6CAA609D3E8E
+                               3C76CC20D1C3D0C7CD2CA6006CDB3B23
+                               A26901C1CB989FA74797A16FDBE03428
+                  xor-digest = 0EE069762C0F2E6EE05446FCA071A147
+                               BD23359A1A3141B550658319725EEA8B
+                               570AB7FF253C6735B64D3E2B99403403
+                               69E597C0E1230B102E38B2CBC49EED4F
+
+Set 6, vector#  2:
+                         key = 0A5DB00356A9FC4FA2F5489BEE4194E7
+                          IV = 1F86ED54BB2289F0
+               stream[0..63] = 921FCF4983891365A7DC901924B5E24B
+                               50F615D59FCD61CBD27280474F3D23C9
+                               ADF14BACADF99E5A163B836B0CFF02C0
+                               FF60F4B64EE7C824C98C3481EF656894
+        stream[65472..65535] = 60F32B38AC646685723EE812C1C5EB87
+                               48D9C367CB5B320C79338A3F76CC095C
+                               9D26D5933216230E787C5C3AF2B000E4
+                               1842FE39ED966F41AB36DECA719B92A3
+        stream[65536..65599] = E562F28ECA6D9606D792EEBAB1694C6E
+                               D9C0C34C59F7CE59D0BE302AF58D065F
+                               59F8AC95F4722143B3AC55D711381F33
+                               D87AF8B4FE0BEEFFA86A0E879CA84123
+      stream[131008..131071] = C73A00E366B8F5FE717802F1BC843B8C
+                               4603B902EF2D6D65567E2F637EC99FC4
+                               6321FA6F5A1CCDDE9447807EE21C0460
+                               7569D1F793F413699A1E8921559AFC0C
+                  xor-digest = 56C1143571F210037B9857DDC9A51690
+                               75AB5A9DD158B141A83F50D3DD171ED7
+                               8927DEC249E06212216284723C5F8988
+                               38F5FC5035100BF7C1FFBD2A54CF9329
+
+Set 6, vector#  3:
+                         key = 0F62B5085BAE0154A7FA4DA0F34699EC
+                          IV = 288FF65DC42B92F9
+               stream[0..63] = 613CB0BA96AFF6CACF2A459A102A7F78
+                               CA985CF8FDD1474018758E36AE9923F5
+                               19D13D718DAF8D7C0C109B79D5749439
+                               B7EFA4C4C9C8D29DC5B3888314A6816F
+        stream[65472..65535] = 743222D98533857C9EE38BDC410ACF39
+                               A823CE0C4CF2939EBE6B95DA668396BB
+                               D823429F47F81B5D65308E83604C95B4
+                               E419FDB115F6E9E77B7225F14464C396
+        stream[65536..65599] = F2732DC10349ABC9C212326CE22A3C2A
+                               CF233A6EF8469659BDA3EDAACC759CD5
+                               3EA71F9E338302F802C3A90793721BCF
+                               875CFA332B4BA4E14B41C689F1FA4C1D
+      stream[131008..131071] = 79037775E485C71704F308611AD1FE54
+                               5B77CFFD982AF1FE0EDD3E926931AA54
+                               EE55F24DBC7B385ECA940EA73EE627CF
+                               A3BD376BF5D8D7F1E8AFFE344D6A34F0
+                  xor-digest = 92CA61A5E18F6081082008975C842332
+                               2AB413AFB1874755D7ED9742062A4C40
+                               77CF6106CEC3452E2C1023013B5C5B5D
+                               D72FAFF59B4C82FD0C5A1979B7550DC8
+
+
+
+End of test vectors