Start line:  
End line:  

Snippet Preview

Snippet HTML Code

Stack Overflow Questions
  /*
   * Licensed to the Apache Software Foundation (ASF) under one
   * or more contributor license agreements.  See the NOTICE file
   * distributed with this work for additional information
   * regarding copyright ownership.  The ASF licenses this file
   * to you under the Apache License, Version 2.0 (the
   * "License"); you may not use this file except in compliance
   * with the License.  You may obtain a copy of the License at
   *
  * http://www.apache.org/licenses/LICENSE-2.0
  *
  * Unless required by applicable law or agreed to in writing,
  * software distributed under the License is distributed on an
  * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
  * KIND, either express or implied.  See the License for the
  * specific language governing permissions and limitations
  * under the License.
  */
 package org.apache.flume.channel.file.encryption;
 
 
 
 
 
 public class AESCTRNoPaddingProvider extends CipherProvider {
   private static final Logger LOG = LoggerFactory
       .getLogger(AESCTRNoPaddingProvider.class);
   static final String TYPE = "AES/CTR/NoPadding";
 
 
     return new EncryptorBuilder();
   }
     return new DecryptorBuilder();
   }
 
   public static class EncryptorBuilder
     @Override
     public AESCTRNoPaddingEncryptor build() {
       ByteBuffer buffer = ByteBuffer.allocate(16);
       byte[] seed = new byte[12];
       SecureRandom random = new SecureRandom();
       random.nextBytes(seed);
       buffer.put(seed).putInt(1);
       return new AESCTRNoPaddingEncryptor(buffer.array());
     }
   }
 
 
   public static class DecryptorBuilder
     @Override
     public AESCTRNoPaddingDecryptor build() {
       return new AESCTRNoPaddingDecryptor();
     }
   }
 
   private static class AESCTRNoPaddingEncryptor extends Encryptor {
     private byte[] parameters;
     private Cipher cipher;
     private AESCTRNoPaddingEncryptor(Key keybyte[] parameters) {
       this. = parameters;
        = getCipher(key.parameters);
     }
     @Override
     public byte[] getParameters() {
       return ;
     }
     @Override
     public String getCodec() {
       return ;
     }
     @Override
     public byte[] encrypt(byte[] clearText) {
       return doFinal(clearText);
     }
   }
 
   private static class AESCTRNoPaddingDecryptor extends Decryptor {
     private Cipher cipher;
     private AESCTRNoPaddingDecryptor(Key keybyte[] parameters) {
        = getCipher(key.parameters);
     }
     @Override
     public byte[] decrypt(byte[] cipherText) {
       return doFinal(cipherText);
     }
    @Override
    public String getCodec() {
      return ;
    }
  }
  private static byte[] doFinal(Cipher cipherbyte[] input)
    try {
      return cipher.doFinal(input);
    } catch (Exception e) {
      String msg = "Unable to encrypt or decrypt data " + 
          + " input.length " + input.length;
      .error(msge);
      throw new DecryptionFailureException(msge);
    }
  }
  private static Cipher getCipher(Key keyint modebyte[] parameters) {
    try {
      Cipher cipher = Cipher.getInstance();
      cipher.init(modekeynew IvParameterSpec(parameters));
      return cipher;
    } catch (Exception e) {
      String msg = "Unable to load key using transformation: " + ;
      if (e instanceof InvalidKeyException) {
        try {
          int maxAllowedLen = Cipher.getMaxAllowedKeyLength();
          if (maxAllowedLen < 256) {
            msg += "; Warning: Maximum allowed key length = " + maxAllowedLen
                + " with the available JCE security policy files. Have you"
                + " installed the JCE unlimited strength jurisdiction policy"
                + " files?";
          }
        } catch (NoSuchAlgorithmException ex) {
          msg += "; Unable to find specified algorithm?";
        }
      }
      .error(msge);
      throw Throwables.propagate(e);
    }
  }
New to GrepCode? Check out our FAQ X