Java 类org.apache.hadoop.hbase.io.crypto.KeyProviderForTesting 实例源码

项目:ditb    文件:TestHFileEncryption.java   
@BeforeClass
public static void setUp() throws Exception {
  Configuration conf = TEST_UTIL.getConfiguration();
  // Disable block cache in this test.
  conf.setFloat(HConstants.HFILE_BLOCK_CACHE_SIZE_KEY, 0.0f);
  conf.set(HConstants.CRYPTO_KEYPROVIDER_CONF_KEY, KeyProviderForTesting.class.getName());
  conf.set(HConstants.CRYPTO_MASTERKEY_NAME_CONF_KEY, "hbase");
  conf.setInt("hfile.format.version", 3);

  fs = FileSystem.get(conf);

  cryptoContext = Encryption.newContext(conf);
  String algorithm =
      conf.get(HConstants.CRYPTO_KEY_ALGORITHM_CONF_KEY, HConstants.CIPHER_AES);
  Cipher aes = Encryption.getCipher(conf, algorithm);
  assertNotNull(aes);
  cryptoContext.setCipher(aes);
  byte[] key = new byte[aes.getKeyLength()];
  RNG.nextBytes(key);
  cryptoContext.setKey(key);
}
项目:ditb    文件:IntegrationTestIngestWithEncryption.java   
@Override
public void setUpCluster() throws Exception {
  util = getTestingUtil(null);
  Configuration conf = util.getConfiguration();
  if (!util.isDistributedCluster()) {
    // Inject required configuration if we are not running in distributed mode
    conf.setInt(HFile.FORMAT_VERSION_KEY, 3);
    conf.set(HConstants.CRYPTO_KEYPROVIDER_CONF_KEY, KeyProviderForTesting.class.getName());
    conf.set(HConstants.CRYPTO_MASTERKEY_NAME_CONF_KEY, "hbase");
    conf.setClass("hbase.regionserver.hlog.reader.impl", SecureProtobufLogReader.class,
      Reader.class);
    conf.setClass("hbase.regionserver.hlog.writer.impl", SecureProtobufLogWriter.class,
      Writer.class);
    conf.setBoolean(HConstants.ENABLE_WAL_ENCRYPTION, true);
  }
  // Check if the cluster configuration can support this test
  try {
    EncryptionTest.testEncryption(conf, "AES", null);
  } catch (Exception e) {
    LOG.warn("Encryption configuration test did not pass, skipping test");
    return;
  }
  super.setUpCluster();
  initialized = true;
}
项目:ditb    文件:TestEncryptionUtil.java   
@Test
public void testWALKeyWrapping() throws Exception {
  // set up the key provider for testing to resolve a key for our test subject
  Configuration conf = new Configuration(); // we don't need HBaseConfiguration for this
  conf.set(HConstants.CRYPTO_KEYPROVIDER_CONF_KEY, KeyProviderForTesting.class.getName());

  // generate a test key
  byte[] keyBytes = new byte[AES.KEY_LENGTH];
  new SecureRandom().nextBytes(keyBytes);
  String algorithm = conf.get(HConstants.CRYPTO_WAL_ALGORITHM_CONF_KEY, HConstants.CIPHER_AES);
  Key key = new SecretKeySpec(keyBytes, algorithm);

  // wrap the test key
  byte[] wrappedKeyBytes = EncryptionUtil.wrapKey(conf, "hbase", key);
  assertNotNull(wrappedKeyBytes);

  // unwrap
  Key unwrappedKey = EncryptionUtil.unwrapWALKey(conf, "hbase", wrappedKeyBytes);
  assertNotNull(unwrappedKey);
  // only secretkeyspec supported for now
  assertTrue(unwrappedKey instanceof SecretKeySpec);
  // did we get back what we wrapped?
  assertTrue("Unwrapped key bytes do not match original",
    Bytes.equals(keyBytes, unwrappedKey.getEncoded()));
}
项目:ditb    文件:TestEncryptionUtil.java   
@Test(expected = KeyException.class)
public void testWALKeyWrappingWithIncorrectKey() throws Exception {
  // set up the key provider for testing to resolve a key for our test subject
  Configuration conf = new Configuration(); // we don't need HBaseConfiguration for this
  conf.set(HConstants.CRYPTO_KEYPROVIDER_CONF_KEY, KeyProviderForTesting.class.getName());

  // generate a test key
  byte[] keyBytes = new byte[AES.KEY_LENGTH];
  new SecureRandom().nextBytes(keyBytes);
  String algorithm = conf.get(HConstants.CRYPTO_WAL_ALGORITHM_CONF_KEY, HConstants.CIPHER_AES);
  Key key = new SecretKeySpec(keyBytes, algorithm);

  // wrap the test key
  byte[] wrappedKeyBytes = EncryptionUtil.wrapKey(conf, "hbase", key);
  assertNotNull(wrappedKeyBytes);

  // unwrap with an incorrect key
  EncryptionUtil.unwrapWALKey(conf, "other", wrappedKeyBytes);
}
项目:pbase    文件:TestHFileEncryption.java   
@BeforeClass
public static void setUp() throws Exception {
  Configuration conf = TEST_UTIL.getConfiguration();
  conf.set(HConstants.CRYPTO_KEYPROVIDER_CONF_KEY, KeyProviderForTesting.class.getName());
  conf.set(HConstants.CRYPTO_MASTERKEY_NAME_CONF_KEY, "hbase");
  conf.setInt("hfile.format.version", 3);

  fs = FileSystem.get(conf);

  cryptoContext = Encryption.newContext(conf);
  Cipher aes = Encryption.getCipher(conf, "AES");
  assertNotNull(aes);
  cryptoContext.setCipher(aes);
  byte[] key = new byte[aes.getKeyLength()];
  RNG.nextBytes(key);
  cryptoContext.setKey(key);
}
项目:HIndex    文件:TestHFileEncryption.java   
@BeforeClass
public static void setUp() throws Exception {
  Configuration conf = TEST_UTIL.getConfiguration();
  conf.set(HConstants.CRYPTO_KEYPROVIDER_CONF_KEY, KeyProviderForTesting.class.getName());
  conf.set(HConstants.CRYPTO_MASTERKEY_NAME_CONF_KEY, "hbase");
  conf.setInt("hfile.format.version", 3);

  fs = FileSystem.get(conf);

  cryptoContext = Encryption.newContext(conf);
  Cipher aes = Encryption.getCipher(conf, "AES");
  assertNotNull(aes);
  cryptoContext.setCipher(aes);
  byte[] key = new byte[aes.getKeyLength()];
  RNG.nextBytes(key);
  cryptoContext.setKey(key);
}
项目:HIndex    文件:IntegrationTestIngestWithEncryption.java   
@Override
public void setUpCluster() throws Exception {
  util = getTestingUtil(null);
  Configuration conf = util.getConfiguration();
  conf.setInt(HFile.FORMAT_VERSION_KEY, 3);
  if (!util.isDistributedCluster()) {
    // Inject the test key provider and WAL alternative if running on a
    // localhost cluster; otherwise, whether or not the schema change below
    // takes effect depends on the distributed cluster site configuration.
    conf.set(HConstants.CRYPTO_KEYPROVIDER_CONF_KEY, KeyProviderForTesting.class.getName());
    conf.set(HConstants.CRYPTO_MASTERKEY_NAME_CONF_KEY, "hbase");
    conf.setClass("hbase.regionserver.hlog.reader.impl", SecureProtobufLogReader.class,
      HLog.Reader.class);
    conf.setClass("hbase.regionserver.hlog.writer.impl", SecureProtobufLogWriter.class,
      HLog.Writer.class);
    conf.setBoolean(HConstants.ENABLE_WAL_ENCRYPTION, true);
  }
  super.setUpCluster();
}
项目:hbase    文件:TestHFileEncryption.java   
@BeforeClass
public static void setUp() throws Exception {
  Configuration conf = TEST_UTIL.getConfiguration();
  // Disable block cache in this test.
  conf.setFloat(HConstants.HFILE_BLOCK_CACHE_SIZE_KEY, 0.0f);
  conf.set(HConstants.CRYPTO_KEYPROVIDER_CONF_KEY, KeyProviderForTesting.class.getName());
  conf.set(HConstants.CRYPTO_MASTERKEY_NAME_CONF_KEY, "hbase");
  conf.setInt("hfile.format.version", 3);

  fs = FileSystem.get(conf);

  cryptoContext = Encryption.newContext(conf);
  String algorithm =
      conf.get(HConstants.CRYPTO_KEY_ALGORITHM_CONF_KEY, HConstants.CIPHER_AES);
  Cipher aes = Encryption.getCipher(conf, algorithm);
  assertNotNull(aes);
  cryptoContext.setCipher(aes);
  byte[] key = new byte[aes.getKeyLength()];
  RNG.nextBytes(key);
  cryptoContext.setKey(key);
}
项目:hbase    文件:IntegrationTestIngestWithEncryption.java   
@Override
public void setUpCluster() throws Exception {
  util = getTestingUtil(null);
  Configuration conf = util.getConfiguration();
  if (!util.isDistributedCluster()) {
    // Inject required configuration if we are not running in distributed mode
    conf.setInt(HFile.FORMAT_VERSION_KEY, 3);
    conf.set(HConstants.CRYPTO_KEYPROVIDER_CONF_KEY, KeyProviderForTesting.class.getName());
    conf.set(HConstants.CRYPTO_MASTERKEY_NAME_CONF_KEY, "hbase");
    conf.setClass("hbase.regionserver.hlog.reader.impl", SecureProtobufLogReader.class,
      Reader.class);
    conf.setClass("hbase.regionserver.hlog.writer.impl", SecureProtobufLogWriter.class,
      Writer.class);
    conf.setBoolean(HConstants.ENABLE_WAL_ENCRYPTION, true);
  }
  // Check if the cluster configuration can support this test
  try {
    EncryptionTest.testEncryption(conf, "AES", null);
  } catch (Exception e) {
    LOG.warn("Encryption configuration test did not pass, skipping test", e);
    return;
  }
  super.setUpCluster();
  initialized = true;
}
项目:hbase    文件:TestEncryptionUtil.java   
@Test
public void testWALKeyWrapping() throws Exception {
  // set up the key provider for testing to resolve a key for our test subject
  Configuration conf = new Configuration(); // we don't need HBaseConfiguration for this
  conf.set(HConstants.CRYPTO_KEYPROVIDER_CONF_KEY, KeyProviderForTesting.class.getName());

  // generate a test key
  byte[] keyBytes = new byte[AES.KEY_LENGTH];
  new SecureRandom().nextBytes(keyBytes);
  String algorithm = conf.get(HConstants.CRYPTO_WAL_ALGORITHM_CONF_KEY, HConstants.CIPHER_AES);
  Key key = new SecretKeySpec(keyBytes, algorithm);

  // wrap the test key
  byte[] wrappedKeyBytes = EncryptionUtil.wrapKey(conf, "hbase", key);
  assertNotNull(wrappedKeyBytes);

  // unwrap
  Key unwrappedKey = EncryptionUtil.unwrapWALKey(conf, "hbase", wrappedKeyBytes);
  assertNotNull(unwrappedKey);
  // only secretkeyspec supported for now
  assertTrue(unwrappedKey instanceof SecretKeySpec);
  // did we get back what we wrapped?
  assertTrue("Unwrapped key bytes do not match original",
    Bytes.equals(keyBytes, unwrappedKey.getEncoded()));
}
项目:hbase    文件:TestEncryptionUtil.java   
@Test(expected = KeyException.class)
public void testWALKeyWrappingWithIncorrectKey() throws Exception {
  // set up the key provider for testing to resolve a key for our test subject
  Configuration conf = new Configuration(); // we don't need HBaseConfiguration for this
  conf.set(HConstants.CRYPTO_KEYPROVIDER_CONF_KEY, KeyProviderForTesting.class.getName());

  // generate a test key
  byte[] keyBytes = new byte[AES.KEY_LENGTH];
  new SecureRandom().nextBytes(keyBytes);
  String algorithm = conf.get(HConstants.CRYPTO_WAL_ALGORITHM_CONF_KEY, HConstants.CIPHER_AES);
  Key key = new SecretKeySpec(keyBytes, algorithm);

  // wrap the test key
  byte[] wrappedKeyBytes = EncryptionUtil.wrapKey(conf, "hbase", key);
  assertNotNull(wrappedKeyBytes);

  // unwrap with an incorrect key
  EncryptionUtil.unwrapWALKey(conf, "other", wrappedKeyBytes);
}
项目:PyroDB    文件:TestHFileEncryption.java   
@BeforeClass
public static void setUp() throws Exception {
  Configuration conf = TEST_UTIL.getConfiguration();
  conf.set(HConstants.CRYPTO_KEYPROVIDER_CONF_KEY, KeyProviderForTesting.class.getName());
  conf.set(HConstants.CRYPTO_MASTERKEY_NAME_CONF_KEY, "hbase");
  conf.setInt("hfile.format.version", 3);

  fs = FileSystem.get(conf);

  cryptoContext = Encryption.newContext(conf);
  Cipher aes = Encryption.getCipher(conf, "AES");
  assertNotNull(aes);
  cryptoContext.setCipher(aes);
  byte[] key = new byte[aes.getKeyLength()];
  RNG.nextBytes(key);
  cryptoContext.setKey(key);
}
项目:PyroDB    文件:IntegrationTestIngestWithEncryption.java   
@Override
public void setUpCluster() throws Exception {
  util = getTestingUtil(null);
  Configuration conf = util.getConfiguration();
  conf.setInt(HFile.FORMAT_VERSION_KEY, 3);
  if (!util.isDistributedCluster()) {
    // Inject the test key provider and WAL alternative if running on a
    // localhost cluster; otherwise, whether or not the schema change below
    // takes effect depends on the distributed cluster site configuration.
    conf.set(HConstants.CRYPTO_KEYPROVIDER_CONF_KEY, KeyProviderForTesting.class.getName());
    conf.set(HConstants.CRYPTO_MASTERKEY_NAME_CONF_KEY, "hbase");
    conf.setClass("hbase.regionserver.hlog.reader.impl", SecureProtobufLogReader.class,
      HLog.Reader.class);
    conf.setClass("hbase.regionserver.hlog.writer.impl", SecureProtobufLogWriter.class,
      HLog.Writer.class);
    conf.setBoolean(HConstants.ENABLE_WAL_ENCRYPTION, true);
  }
  super.setUpCluster();
}
项目:ditb    文件:TestWALReaderOnSecureWAL.java   
@BeforeClass
public static void setUpBeforeClass() throws Exception {
  Configuration conf = TEST_UTIL.getConfiguration();
  conf.set(HConstants.CRYPTO_KEYPROVIDER_CONF_KEY, KeyProviderForTesting.class.getName());
  conf.set(HConstants.CRYPTO_MASTERKEY_NAME_CONF_KEY, "hbase");
  conf.setBoolean("hbase.hlog.split.skip.errors", true);
  conf.setBoolean(HConstants.ENABLE_WAL_ENCRYPTION, true);
  FSUtils.setRootDir(conf, TEST_UTIL.getDataTestDir());
}
项目:ditb    文件:TestSecureWAL.java   
@BeforeClass
public static void setUpBeforeClass() throws Exception {
  Configuration conf = TEST_UTIL.getConfiguration();
  conf.set(HConstants.CRYPTO_KEYPROVIDER_CONF_KEY, KeyProviderForTesting.class.getName());
  conf.set(HConstants.CRYPTO_MASTERKEY_NAME_CONF_KEY, "hbase");
  conf.setClass("hbase.regionserver.hlog.reader.impl", SecureProtobufLogReader.class,
    WAL.Reader.class);
  conf.setClass("hbase.regionserver.hlog.writer.impl", SecureProtobufLogWriter.class,
    WALProvider.Writer.class);
  conf.setBoolean(HConstants.ENABLE_WAL_ENCRYPTION, true);
  FSUtils.setRootDir(conf, TEST_UTIL.getDataTestDir());
}
项目:ditb    文件:TestHBaseFsckEncryption.java   
@Before
public void setUp() throws Exception {
  conf = TEST_UTIL.getConfiguration();
  conf.setInt("hfile.format.version", 3);
  conf.set(HConstants.CRYPTO_KEYPROVIDER_CONF_KEY, KeyProviderForTesting.class.getName());
  conf.set(HConstants.CRYPTO_MASTERKEY_NAME_CONF_KEY, "hbase");

  // Create the test encryption key
  SecureRandom rng = new SecureRandom();
  byte[] keyBytes = new byte[AES.KEY_LENGTH];
  rng.nextBytes(keyBytes);
  String algorithm =
      conf.get(HConstants.CRYPTO_KEY_ALGORITHM_CONF_KEY, HConstants.CIPHER_AES);
  cfKey = new SecretKeySpec(keyBytes,algorithm);

  // Start the minicluster
  TEST_UTIL.startMiniCluster(3);

  // Create the table
  htd = new HTableDescriptor(TableName.valueOf("default", "TestHBaseFsckEncryption"));
  HColumnDescriptor hcd = new HColumnDescriptor("cf");
  hcd.setEncryptionType(algorithm);
  hcd.setEncryptionKey(EncryptionUtil.wrapKey(conf,
    conf.get(HConstants.CRYPTO_MASTERKEY_NAME_CONF_KEY, User.getCurrent().getShortName()),
    cfKey));
  htd.addFamily(hcd);
  TEST_UTIL.getHBaseAdmin().createTable(htd);
  TEST_UTIL.waitTableAvailable(htd.getName(), 5000);
}
项目:ditb    文件:TestEncryptionKeyRotation.java   
@BeforeClass
public static void setUp() throws Exception {
  conf.setInt("hfile.format.version", 3);
  conf.set(HConstants.CRYPTO_KEYPROVIDER_CONF_KEY, KeyProviderForTesting.class.getName());
  conf.set(HConstants.CRYPTO_MASTERKEY_NAME_CONF_KEY, "hbase");
  // Enable online schema updates
  conf.setBoolean("hbase.online.schema.update.enable", true);

  // Start the minicluster
  TEST_UTIL.startMiniCluster(1);
}
项目:ditb    文件:TestSecureWALReplay.java   
@BeforeClass
public static void setUpBeforeClass() throws Exception {
  Configuration conf = TestWALReplay.TEST_UTIL.getConfiguration();
  conf.set(HConstants.CRYPTO_KEYPROVIDER_CONF_KEY, KeyProviderForTesting.class.getName());
  conf.set(HConstants.CRYPTO_MASTERKEY_NAME_CONF_KEY, "hbase");
  conf.setClass("hbase.regionserver.hlog.reader.impl", SecureProtobufLogReader.class,
    Reader.class);
  conf.setClass("hbase.regionserver.hlog.writer.impl", SecureProtobufLogWriter.class,
    Writer.class);
  conf.setBoolean(HConstants.ENABLE_WAL_ENCRYPTION, true);
  TestWALReplay.setUpBeforeClass();
}
项目:ditb    文件:TestEncryptionRandomKeying.java   
@BeforeClass
public static void setUp() throws Exception {
  conf.setInt("hfile.format.version", 3);
  conf.set(HConstants.CRYPTO_KEYPROVIDER_CONF_KEY, KeyProviderForTesting.class.getName());
  conf.set(HConstants.CRYPTO_MASTERKEY_NAME_CONF_KEY, "hbase");

  // Create the table schema
  // Specify an encryption algorithm without a key
  htd = new HTableDescriptor(TableName.valueOf("default", "TestEncryptionRandomKeying"));
  HColumnDescriptor hcd = new HColumnDescriptor("cf");
  String algorithm =
      conf.get(HConstants.CRYPTO_KEY_ALGORITHM_CONF_KEY, HConstants.CIPHER_AES);
  hcd.setEncryptionType(algorithm);
  htd.addFamily(hcd);

  // Start the minicluster
  TEST_UTIL.startMiniCluster(1);

  // Create the test table
  TEST_UTIL.getHBaseAdmin().createTable(htd);
  TEST_UTIL.waitTableAvailable(htd.getName(), 5000);

  // Create a store file
  Table table = new HTable(conf, htd.getTableName());
  try {
    table.put(new Put(Bytes.toBytes("testrow"))
      .add(hcd.getName(), Bytes.toBytes("q"), Bytes.toBytes("value")));
  } finally {
    table.close();
  }
  TEST_UTIL.getHBaseAdmin().flush(htd.getTableName());
}
项目:ditb    文件:TestEncryptionUtil.java   
@Test
public void testKeyWrapping() throws Exception {
  // set up the key provider for testing to resolve a key for our test subject
  Configuration conf = new Configuration(); // we don't need HBaseConfiguration for this
  conf.set(HConstants.CRYPTO_KEYPROVIDER_CONF_KEY, KeyProviderForTesting.class.getName());

  // generate a test key
  byte[] keyBytes = new byte[AES.KEY_LENGTH];
  new SecureRandom().nextBytes(keyBytes);
  String algorithm =
      conf.get(HConstants.CRYPTO_KEY_ALGORITHM_CONF_KEY, HConstants.CIPHER_AES);
  Key key = new SecretKeySpec(keyBytes, algorithm);

  // wrap the test key
  byte[] wrappedKeyBytes = EncryptionUtil.wrapKey(conf, "hbase", key);
  assertNotNull(wrappedKeyBytes);

  // unwrap
  Key unwrappedKey = EncryptionUtil.unwrapKey(conf, "hbase", wrappedKeyBytes);
  assertNotNull(unwrappedKey);
  // only secretkeyspec supported for now
  assertTrue(unwrappedKey instanceof SecretKeySpec);
  // did we get back what we wrapped?
  assertTrue("Unwrapped key bytes do not match original",
    Bytes.equals(keyBytes, unwrappedKey.getEncoded()));

  // unwrap with an incorrect key
  try {
    EncryptionUtil.unwrapKey(conf, "other", wrappedKeyBytes);
    fail("Unwrap with incorrect key did not throw KeyException");
  } catch (KeyException e) {
    // expected
  }
}
项目:pbase    文件:TestWALReaderOnSecureWAL.java   
@BeforeClass
public static void setUpBeforeClass() throws Exception {
  Configuration conf = TEST_UTIL.getConfiguration();
  conf.set(HConstants.CRYPTO_KEYPROVIDER_CONF_KEY, KeyProviderForTesting.class.getName());
  conf.set(HConstants.CRYPTO_MASTERKEY_NAME_CONF_KEY, "hbase");
  conf.setBoolean("hbase.hlog.split.skip.errors", true);
  conf.setBoolean(HConstants.ENABLE_WAL_ENCRYPTION, true);
  FSUtils.setRootDir(conf, TEST_UTIL.getDataTestDir());
}
项目:pbase    文件:TestSecureWAL.java   
@BeforeClass
public static void setUpBeforeClass() throws Exception {
  Configuration conf = TEST_UTIL.getConfiguration();
  conf.set(HConstants.CRYPTO_KEYPROVIDER_CONF_KEY, KeyProviderForTesting.class.getName());
  conf.set(HConstants.CRYPTO_MASTERKEY_NAME_CONF_KEY, "hbase");
  conf.setClass("hbase.regionserver.hlog.reader.impl", SecureProtobufLogReader.class,
    WAL.Reader.class);
  conf.setClass("hbase.regionserver.hlog.writer.impl", SecureProtobufLogWriter.class,
    WALProvider.Writer.class);
  conf.setBoolean(HConstants.ENABLE_WAL_ENCRYPTION, true);
  FSUtils.setRootDir(conf, TEST_UTIL.getDataTestDir());
}
项目:pbase    文件:TestHBaseFsckEncryption.java   
@Before
public void setUp() throws Exception {
  conf = TEST_UTIL.getConfiguration();
  conf.setInt("hfile.format.version", 3);
  conf.set(HConstants.CRYPTO_KEYPROVIDER_CONF_KEY, KeyProviderForTesting.class.getName());
  conf.set(HConstants.CRYPTO_MASTERKEY_NAME_CONF_KEY, "hbase");

  // Create the test encryption key
  SecureRandom rng = new SecureRandom();
  byte[] keyBytes = new byte[AES.KEY_LENGTH];
  rng.nextBytes(keyBytes);
  cfKey = new SecretKeySpec(keyBytes, "AES");

  // Start the minicluster
  TEST_UTIL.startMiniCluster(3);

  // Create the table
  htd = new HTableDescriptor(TableName.valueOf("default", "TestHBaseFsckEncryption"));
  HColumnDescriptor hcd = new HColumnDescriptor("cf");
  hcd.setEncryptionType("AES");
  hcd.setEncryptionKey(EncryptionUtil.wrapKey(conf,
    conf.get(HConstants.CRYPTO_MASTERKEY_NAME_CONF_KEY, User.getCurrent().getShortName()),
    cfKey));
  htd.addFamily(hcd);
  TEST_UTIL.getHBaseAdmin().createTable(htd);
  TEST_UTIL.waitTableAvailable(htd.getName(), 5000);
}
项目:pbase    文件:TestEncryptionKeyRotation.java   
@BeforeClass
public static void setUp() throws Exception {
  conf.setInt("hfile.format.version", 3);
  conf.set(HConstants.CRYPTO_KEYPROVIDER_CONF_KEY, KeyProviderForTesting.class.getName());
  conf.set(HConstants.CRYPTO_MASTERKEY_NAME_CONF_KEY, "hbase");
  // Enable online schema updates
  conf.setBoolean("hbase.online.schema.update.enable", true);

  // Start the minicluster
  TEST_UTIL.startMiniCluster(1);
}
项目:pbase    文件:TestSecureWALReplay.java   
@BeforeClass
public static void setUpBeforeClass() throws Exception {
  Configuration conf = TestWALReplay.TEST_UTIL.getConfiguration();
  conf.set(HConstants.CRYPTO_KEYPROVIDER_CONF_KEY, KeyProviderForTesting.class.getName());
  conf.set(HConstants.CRYPTO_MASTERKEY_NAME_CONF_KEY, "hbase");
  conf.setClass("hbase.regionserver.hlog.reader.impl", SecureProtobufLogReader.class,
    Reader.class);
  conf.setClass("hbase.regionserver.hlog.writer.impl", SecureProtobufLogWriter.class,
    Writer.class);
  conf.setBoolean(HConstants.ENABLE_WAL_ENCRYPTION, true);
  TestWALReplay.setUpBeforeClass();
}
项目:pbase    文件:TestEncryptionRandomKeying.java   
@BeforeClass
public static void setUp() throws Exception {
  conf.setInt("hfile.format.version", 3);
  conf.set(HConstants.CRYPTO_KEYPROVIDER_CONF_KEY, KeyProviderForTesting.class.getName());
  conf.set(HConstants.CRYPTO_MASTERKEY_NAME_CONF_KEY, "hbase");

  // Create the table schema
  // Specify an encryption algorithm without a key
  htd = new HTableDescriptor(TableName.valueOf("default", "TestEncryptionRandomKeying"));
  HColumnDescriptor hcd = new HColumnDescriptor("cf");
  hcd.setEncryptionType("AES");
  htd.addFamily(hcd);

  // Start the minicluster
  TEST_UTIL.startMiniCluster(1);

  // Create the test table
  TEST_UTIL.getHBaseAdmin().createTable(htd);
  TEST_UTIL.waitTableAvailable(htd.getName(), 5000);

  // Create a store file
  Table table = new HTable(conf, htd.getTableName());
  try {
    table.put(new Put(Bytes.toBytes("testrow"))
      .add(hcd.getName(), Bytes.toBytes("q"), Bytes.toBytes("value")));
  } finally {
    table.close();
  }
  TEST_UTIL.getHBaseAdmin().flush(htd.getTableName());
}
项目:pbase    文件:TestEncryptionUtil.java   
@Test
public void testKeyWrapping() throws Exception {
  // set up the key provider for testing to resolve a key for our test subject
  Configuration conf = new Configuration(); // we don't need HBaseConfiguration for this
  conf.set(HConstants.CRYPTO_KEYPROVIDER_CONF_KEY, KeyProviderForTesting.class.getName());

  // generate a test key
  byte[] keyBytes = new byte[AES.KEY_LENGTH];
  new SecureRandom().nextBytes(keyBytes);
  Key key = new SecretKeySpec(keyBytes, "AES");

  // wrap the test key
  byte[] wrappedKeyBytes = EncryptionUtil.wrapKey(conf, "hbase", key);
  assertNotNull(wrappedKeyBytes);

  // unwrap
  Key unwrappedKey = EncryptionUtil.unwrapKey(conf, "hbase", wrappedKeyBytes);
  assertNotNull(unwrappedKey);
  // only secretkeyspec supported for now
  assertTrue(unwrappedKey instanceof SecretKeySpec);
  // did we get back what we wrapped?
  assertTrue("Unwrapped key bytes do not match original",
    Bytes.equals(keyBytes, unwrappedKey.getEncoded()));

  // unwrap with an incorrect key
  try {
    EncryptionUtil.unwrapKey(conf, "other", wrappedKeyBytes);
    fail("Unwrap with incorrect key did not throw KeyException");
  } catch (KeyException e) {
    // expected
  }
}
项目:HIndex    文件:TestHBaseFsckEncryption.java   
@Before
public void setUp() throws Exception {
  conf = TEST_UTIL.getConfiguration();
  conf.setInt("hfile.format.version", 3);
  conf.set(HConstants.CRYPTO_KEYPROVIDER_CONF_KEY, KeyProviderForTesting.class.getName());
  conf.set(HConstants.CRYPTO_MASTERKEY_NAME_CONF_KEY, "hbase");

  // Create the test encryption key
  SecureRandom rng = new SecureRandom();
  byte[] keyBytes = new byte[AES.KEY_LENGTH];
  rng.nextBytes(keyBytes);
  cfKey = new SecretKeySpec(keyBytes, "AES");

  // Start the minicluster
  TEST_UTIL.startMiniCluster(3);

  // Create the table
  htd = new HTableDescriptor(TableName.valueOf("default", "TestHBaseFsckEncryption"));
  HColumnDescriptor hcd = new HColumnDescriptor("cf");
  hcd.setEncryptionType("AES");
  hcd.setEncryptionKey(EncryptionUtil.wrapKey(conf,
    conf.get(HConstants.CRYPTO_MASTERKEY_NAME_CONF_KEY, User.getCurrent().getShortName()),
    cfKey));
  htd.addFamily(hcd);
  TEST_UTIL.getHBaseAdmin().createTable(htd);
  TEST_UTIL.waitTableAvailable(htd.getName(), 5000);
}
项目:HIndex    文件:TestEncryptionKeyRotation.java   
@BeforeClass
public static void setUp() throws Exception {
  conf.setInt("hfile.format.version", 3);
  conf.set(HConstants.CRYPTO_KEYPROVIDER_CONF_KEY, KeyProviderForTesting.class.getName());
  conf.set(HConstants.CRYPTO_MASTERKEY_NAME_CONF_KEY, "hbase");
  // Enable online schema updates
  conf.setBoolean("hbase.online.schema.update.enable", true);

  // Start the minicluster
  TEST_UTIL.startMiniCluster(1);
}
项目:HIndex    文件:TestSecureHLog.java   
@BeforeClass
public static void setUpBeforeClass() throws Exception {
  Configuration conf = TEST_UTIL.getConfiguration();
  conf.set(HConstants.CRYPTO_KEYPROVIDER_CONF_KEY, KeyProviderForTesting.class.getName());
  conf.set(HConstants.CRYPTO_MASTERKEY_NAME_CONF_KEY, "hbase");
  conf.setClass("hbase.regionserver.hlog.reader.impl", SecureProtobufLogReader.class,
    HLog.Reader.class);
  conf.setClass("hbase.regionserver.hlog.writer.impl", SecureProtobufLogWriter.class,
    HLog.Writer.class);
  conf.setBoolean(HConstants.ENABLE_WAL_ENCRYPTION, true);
}
项目:HIndex    文件:TestSecureWALReplay.java   
@BeforeClass
public static void setUpBeforeClass() throws Exception {
  Configuration conf = TestWALReplay.TEST_UTIL.getConfiguration();
  conf.set(HConstants.CRYPTO_KEYPROVIDER_CONF_KEY, KeyProviderForTesting.class.getName());
  conf.set(HConstants.CRYPTO_MASTERKEY_NAME_CONF_KEY, "hbase");
  conf.setClass("hbase.regionserver.hlog.reader.impl", SecureProtobufLogReader.class,
    HLog.Reader.class);
  conf.setClass("hbase.regionserver.hlog.writer.impl", SecureProtobufLogWriter.class,
    HLog.Writer.class);
  conf.setBoolean(HConstants.ENABLE_WAL_ENCRYPTION, true);
  TestWALReplay.setUpBeforeClass();
}
项目:HIndex    文件:TestEncryptionRandomKeying.java   
@BeforeClass
public static void setUp() throws Exception {
  conf.setInt("hfile.format.version", 3);
  conf.set(HConstants.CRYPTO_KEYPROVIDER_CONF_KEY, KeyProviderForTesting.class.getName());
  conf.set(HConstants.CRYPTO_MASTERKEY_NAME_CONF_KEY, "hbase");

  // Create the table schema
  // Specify an encryption algorithm without a key
  htd = new HTableDescriptor(TableName.valueOf("default", "TestEncryptionRandomKeying"));
  HColumnDescriptor hcd = new HColumnDescriptor("cf");
  hcd.setEncryptionType("AES");
  htd.addFamily(hcd);

  // Start the minicluster
  TEST_UTIL.startMiniCluster(1);

  // Create the test table
  TEST_UTIL.getHBaseAdmin().createTable(htd);
  TEST_UTIL.waitTableAvailable(htd.getName(), 5000);

  // Create a store file
  HTable table = new HTable(conf, htd.getName());
  try {
    table.put(new Put(Bytes.toBytes("testrow"))
      .add(hcd.getName(), Bytes.toBytes("q"), Bytes.toBytes("value")));
  } finally {
    table.close();
  }
  TEST_UTIL.getHBaseAdmin().flush(htd.getName());
}
项目:HIndex    文件:TestHFilePerformance.java   
@Override
public void setConf(Configuration conf) {
  super.setConf(conf);
  try {
    fs = FileSystem.get(conf);
  } catch (IOException e) {
    throw new RuntimeException(e);
  }
  conf.set(HConstants.CRYPTO_KEYPROVIDER_CONF_KEY, KeyProviderForTesting.class.getName());
  conf.set(HConstants.CRYPTO_MASTERKEY_NAME_CONF_KEY, "hbase");
  formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
  TEST_UTIL = new HBaseTestingUtility(conf);
  ROOT_DIR = TEST_UTIL.getDataTestDir("TestHFilePerformance").toString();
}
项目:HIndex    文件:TestEncryptionUtil.java   
@Test
public void testKeyWrapping() throws Exception {
  // set up the key provider for testing to resolve a key for our test subject
  Configuration conf = new Configuration(); // we don't need HBaseConfiguration for this
  conf.set(HConstants.CRYPTO_KEYPROVIDER_CONF_KEY, KeyProviderForTesting.class.getName());

  // generate a test key
  byte[] keyBytes = new byte[AES.KEY_LENGTH];
  new SecureRandom().nextBytes(keyBytes);
  Key key = new SecretKeySpec(keyBytes, "AES");

  // wrap the test key
  byte[] wrappedKeyBytes = EncryptionUtil.wrapKey(conf, "hbase", key);
  assertNotNull(wrappedKeyBytes);

  // unwrap
  Key unwrappedKey = EncryptionUtil.unwrapKey(conf, "hbase", wrappedKeyBytes);
  assertNotNull(unwrappedKey);
  // only secretkeyspec supported for now
  assertTrue(unwrappedKey instanceof SecretKeySpec);
  // did we get back what we wrapped?
  assertTrue("Unwrapped key bytes do not match original",
    Bytes.equals(keyBytes, unwrappedKey.getEncoded()));

  // unwrap with an incorrect key
  try {
    EncryptionUtil.unwrapKey(conf, "other", wrappedKeyBytes);
    fail("Unwrap with incorrect key did not throw KeyException");
  } catch (KeyException e) {
    // expected
  }
}
项目:hbase    文件:TestWALReaderOnSecureWAL.java   
@BeforeClass
public static void setUpBeforeClass() throws Exception {
  Configuration conf = TEST_UTIL.getConfiguration();
  conf.set(HConstants.CRYPTO_KEYPROVIDER_CONF_KEY, KeyProviderForTesting.class.getName());
  conf.set(HConstants.CRYPTO_MASTERKEY_NAME_CONF_KEY, "hbase");
  conf.setBoolean("hbase.hlog.split.skip.errors", true);
  conf.setBoolean(HConstants.ENABLE_WAL_ENCRYPTION, true);
  FSUtils.setRootDir(conf, TEST_UTIL.getDataTestDir());
}
项目:hbase    文件:TestSecureWAL.java   
@BeforeClass
public static void setUpBeforeClass() throws Exception {
  Configuration conf = TEST_UTIL.getConfiguration();
  conf.set(HConstants.CRYPTO_KEYPROVIDER_CONF_KEY, KeyProviderForTesting.class.getName());
  conf.set(HConstants.CRYPTO_MASTERKEY_NAME_CONF_KEY, "hbase");
  conf.setClass("hbase.regionserver.hlog.reader.impl", SecureProtobufLogReader.class,
    WAL.Reader.class);
  conf.setClass("hbase.regionserver.hlog.writer.impl", SecureProtobufLogWriter.class,
    WALProvider.Writer.class);
  conf.setClass("hbase.regionserver.hlog.async.writer.impl", SecureAsyncProtobufLogWriter.class,
    WALProvider.AsyncWriter.class);
  conf.setBoolean(HConstants.ENABLE_WAL_ENCRYPTION, true);
  FSUtils.setRootDir(conf, TEST_UTIL.getDataTestDirOnTestFS());
  TEST_UTIL.startMiniDFSCluster(3);
}
项目:hbase    文件:TestHBaseFsckEncryption.java   
@Before
public void setUp() throws Exception {
  conf = TEST_UTIL.getConfiguration();
  conf.setInt("hfile.format.version", 3);
  conf.set(HConstants.CRYPTO_KEYPROVIDER_CONF_KEY, KeyProviderForTesting.class.getName());
  conf.set(HConstants.CRYPTO_MASTERKEY_NAME_CONF_KEY, "hbase");

  // Create the test encryption key
  SecureRandom rng = new SecureRandom();
  byte[] keyBytes = new byte[AES.KEY_LENGTH];
  rng.nextBytes(keyBytes);
  String algorithm =
      conf.get(HConstants.CRYPTO_KEY_ALGORITHM_CONF_KEY, HConstants.CIPHER_AES);
  cfKey = new SecretKeySpec(keyBytes,algorithm);

  // Start the minicluster
  TEST_UTIL.startMiniCluster(3);

  // Create the table
  htd = new HTableDescriptor(TableName.valueOf("default", "TestHBaseFsckEncryption"));
  HColumnDescriptor hcd = new HColumnDescriptor("cf");
  hcd.setEncryptionType(algorithm);
  hcd.setEncryptionKey(EncryptionUtil.wrapKey(conf,
    conf.get(HConstants.CRYPTO_MASTERKEY_NAME_CONF_KEY, User.getCurrent().getShortName()),
    cfKey));
  htd.addFamily(hcd);
  TEST_UTIL.getAdmin().createTable(htd);
  TEST_UTIL.waitTableAvailable(htd.getTableName(), 5000);
}
项目:hbase    文件:TestEncryptionKeyRotation.java   
@BeforeClass
public static void setUp() throws Exception {
  conf.setInt("hfile.format.version", 3);
  conf.set(HConstants.CRYPTO_KEYPROVIDER_CONF_KEY, KeyProviderForTesting.class.getName());
  conf.set(HConstants.CRYPTO_MASTERKEY_NAME_CONF_KEY, "hbase");

  // Start the minicluster
  TEST_UTIL.startMiniCluster(1);
}
项目:hbase    文件:TestSecureAsyncWALReplay.java   
@BeforeClass
public static void setUpBeforeClass() throws Exception {
  Configuration conf = AbstractTestWALReplay.TEST_UTIL.getConfiguration();
  conf.set(HConstants.CRYPTO_KEYPROVIDER_CONF_KEY, KeyProviderForTesting.class.getName());
  conf.set(HConstants.CRYPTO_MASTERKEY_NAME_CONF_KEY, "hbase");
  conf.setClass("hbase.regionserver.hlog.reader.impl", SecureProtobufLogReader.class,
    Reader.class);
  conf.setClass("hbase.regionserver.hlog.async.writer.impl", SecureAsyncProtobufLogWriter.class,
    AsyncWriter.class);
  conf.setBoolean(HConstants.ENABLE_WAL_ENCRYPTION, true);
  TestAsyncWALReplay.setUpBeforeClass();
}
项目:hbase    文件:TestSecureWALReplay.java   
@BeforeClass
public static void setUpBeforeClass() throws Exception {
  Configuration conf = AbstractTestWALReplay.TEST_UTIL.getConfiguration();
  conf.set(HConstants.CRYPTO_KEYPROVIDER_CONF_KEY, KeyProviderForTesting.class.getName());
  conf.set(HConstants.CRYPTO_MASTERKEY_NAME_CONF_KEY, "hbase");
  conf.setClass("hbase.regionserver.hlog.reader.impl", SecureProtobufLogReader.class,
    Reader.class);
  conf.setClass("hbase.regionserver.hlog.writer.impl", SecureProtobufLogWriter.class,
    Writer.class);
  conf.setBoolean(HConstants.ENABLE_WAL_ENCRYPTION, true);
  AbstractTestWALReplay.setUpBeforeClass();
}