test_class.file: core/src/test/java/dk/alexandra/fresco/framework/util/TestAesCtrDrbg.java
test_class.identifier: TestAesCtrDrbg
test_case.body: @Test
    public void testInitCipher() {
      Random rand = new Random(42);
      byte[] seed = new byte[32];
      rand.nextBytes(seed);
      AesCtrDrbg drbg = new AesCtrDrbg(seed);
      drbg.initCipher(new byte[16], new byte[16]);
    }
test_case.class_method_signature: TestAesCtrDrbg.testInitCipher()
test_case.full_signature: @Test public void testInitCipher()
test_case.identifier: testInitCipher
test_case.invocations: nextBytes initCipher
test_case.modifiers: @Test public
test_case.parameters: ()
test_case.return: void
test_case.signature: void testInitCipher()
focal_class.declarator: SEED_LENGTH = 32
focal_class.modifier: public static final
focal_class.original_string: public static final int SEED_LENGTH = 32;
focal_class.type: int
focal_class.var_name: SEED_LENGTH
focal_class.declarator: IV_LENGTH = 16
focal_class.modifier: private static final
focal_class.original_string: private static final int IV_LENGTH = 16;
focal_class.type: int
focal_class.var_name: IV_LENGTH
focal_class.declarator: KEY_LENGTH = 16
focal_class.modifier: private static final
focal_class.original_string: private static final int KEY_LENGTH = 16;
focal_class.type: int
focal_class.var_name: KEY_LENGTH
focal_class.declarator: RESEED_LIMIT = 1L << 48
focal_class.modifier: private static final
focal_class.original_string: private static final long RESEED_LIMIT = 1L << 48;
focal_class.type: long
focal_class.var_name: RESEED_LIMIT
focal_class.declarator: UPDATE_LIMIT = 1 << 16
focal_class.modifier: private static final
focal_class.original_string: private static final int UPDATE_LIMIT = 1 << 16;
focal_class.type: int
focal_class.var_name: UPDATE_LIMIT
focal_class.declarator: cipher
focal_class.modifier: private
focal_class.original_string: private Cipher cipher;
focal_class.type: Cipher
focal_class.var_name: cipher
focal_class.declarator: generatedBytes
focal_class.modifier: private
focal_class.original_string: private int generatedBytes;
focal_class.type: int
focal_class.var_name: generatedBytes
focal_class.declarator: reseedCounter
focal_class.modifier: private
focal_class.original_string: private int reseedCounter;
focal_class.type: int
focal_class.var_name: reseedCounter
focal_class.file: core/src/main/java/dk/alexandra/fresco/framework/util/AesCtrDrbg.java
focal_class.identifier: AesCtrDrbg
focal_class.interfaces: implements Drbg
focal_class.class_method_signature: AesCtrDrbg.AesCtrDrbg()
focal_class.full_signature: public  AesCtrDrbg()
focal_class.identifier: AesCtrDrbg
focal_class.modifiers: public
focal_class.parameters: ()
focal_class.signature:  AesCtrDrbg()
focal_class.class_method_signature: AesCtrDrbg.AesCtrDrbg(byte[] seed)
focal_class.full_signature: public  AesCtrDrbg(byte[] seed)
focal_class.identifier: AesCtrDrbg
focal_class.modifiers: public
focal_class.parameters: (byte[] seed)
focal_class.signature:  AesCtrDrbg(byte[] seed)
focal_class.class_method_signature: AesCtrDrbg.nextBytes(byte[] bytes)
focal_class.full_signature: @Override public void nextBytes(byte[] bytes)
focal_class.identifier: nextBytes
focal_class.modifiers: @Override public
focal_class.parameters: (byte[] bytes)
focal_class.return: void
focal_class.signature: void nextBytes(byte[] bytes)
focal_class.class_method_signature: AesCtrDrbg.nextBytesBounded(byte[] zeroes, byte[] output)
focal_class.full_signature:  void nextBytesBounded(byte[] zeroes, byte[] output)
focal_class.identifier: nextBytesBounded
focal_class.parameters: (byte[] zeroes, byte[] output)
focal_class.return: void
focal_class.signature: void nextBytesBounded(byte[] zeroes, byte[] output)
focal_class.class_method_signature: AesCtrDrbg.initCipher(byte[] key, byte[] iv)
focal_class.full_signature:  void initCipher(byte[] key, byte[] iv)
focal_class.identifier: initCipher
focal_class.parameters: (byte[] key, byte[] iv)
focal_class.return: void
focal_class.signature: void initCipher(byte[] key, byte[] iv)
focal_class.class_method_signature: AesCtrDrbg.incrementReseedCounter(long increment)
focal_class.full_signature:  void incrementReseedCounter(long increment)
focal_class.identifier: incrementReseedCounter
focal_class.parameters: (long increment)
focal_class.return: void
focal_class.signature: void incrementReseedCounter(long increment)
focal_class.class_method_signature: AesCtrDrbg.update()
focal_class.full_signature: private void update()
focal_class.identifier: update
focal_class.modifiers: private
focal_class.parameters: ()
focal_class.return: void
focal_class.signature: void update()
focal_class.class_method_signature: AesCtrDrbg.generateSeed()
focal_class.full_signature: private static byte[] generateSeed()
focal_class.identifier: generateSeed
focal_class.modifiers: private static
focal_class.parameters: ()
focal_class.return: byte[]
focal_class.signature: byte[] generateSeed()
focal_method.body: void initCipher(byte[] key, byte[] iv) {
      SecretKeySpec keySpec = new SecretKeySpec(key, "AES");
      IvParameterSpec ivSpec = new IvParameterSpec(iv);
      ExceptionConverter.safe(() -> {
        cipher.init(Cipher.ENCRYPT_MODE, keySpec, ivSpec);
        return null;
      }, "Exception in initializing the cipher");
    }
focal_method.class_method_signature: AesCtrDrbg.initCipher(byte[] key, byte[] iv)
focal_method.full_signature:  void initCipher(byte[] key, byte[] iv)
focal_method.identifier: initCipher
focal_method.invocations: safe init
focal_method.parameters: (byte[] key, byte[] iv)
focal_method.return: void
focal_method.signature: void initCipher(byte[] key, byte[] iv)