Coverage Report - org.apache.shiro.crypto.OperationMode
 
Classes in this File Line Coverage Branch Coverage Complexity
OperationMode
100%
12/12
N/A
0
 
 1  
 /*
 2  
  * Licensed to the Apache Software Foundation (ASF) under one
 3  
  * or more contributor license agreements.  See the NOTICE file
 4  
  * distributed with this work for additional information
 5  
  * regarding copyright ownership.  The ASF licenses this file
 6  
  * to you under the Apache License, Version 2.0 (the
 7  
  * "License"); you may not use this file except in compliance
 8  
  * with the License.  You may obtain a copy of the License at
 9  
  *
 10  
  *     http://www.apache.org/licenses/LICENSE-2.0
 11  
  *
 12  
  * Unless required by applicable law or agreed to in writing,
 13  
  * software distributed under the License is distributed on an
 14  
  * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
 15  
  * KIND, either express or implied.  See the License for the
 16  
  * specific language governing permissions and limitations
 17  
  * under the License.
 18  
  */
 19  
 package org.apache.shiro.crypto;
 20  
 
 21  
 /**
 22  
  * A cipher <a href="http://en.wikipedia.org/wiki/Block_cipher_modes_of_operation">mode of operation</a>
 23  
  * directs a cipher algorithm how to convert data during the encryption or decryption process.  This enum represents
 24  
  * all JDK-standard Cipher operation mode names as defined in
 25  
  * <a href="http://java.sun.com/javase/6/docs/technotes/guides/security/StandardNames.html">JDK Security Standard
 26  
  * Names</a>, as well as a few more that are well-known and supported by other JCA Providers.
 27  
  * <p/>
 28  
  * This {@code enum} exists to provide Shiro end-users type-safety when declaring an operation mode.  This helps reduce
 29  
  * error by providing a compile-time mechanism to specify a mode and guarantees a valid name that will be
 30  
  * recognized by an underlying JCA Provider.
 31  
  * <h2>Standard or Non-Standard?</h2>
 32  
  * All modes listed specify whether they are a JDK standard mode or a non-standard mode.  Standard modes are included
 33  
  * in all JDK distributions.  Non-standard modes can
 34  
  * sometimes result in better performance or more secure output, but may not be available on the target JDK
 35  
  * platform and rely on an external JCA Provider to be installed.  Some providers
 36  
  * (like <a href="http://www.bouncycastle.org">Bouncy Castle</a>) may support these modes however.
 37  
  *
 38  
  * @see <a href="http://en.wikipedia.org/wiki/Block_cipher_modes_of_operation">Block Cipher Modes of Operation<a/>
 39  
  * @since 1.0
 40  
  */
 41  12
 public enum OperationMode {
 42  
 
 43  
     /**
 44  
      * <a href="http://en.wikipedia.org/wiki/Block_cipher_modes_of_operation#Cipher-block_chaining_.28CBC.29">
 45  
      * Cipher-block Chaining</a> mode, defined in <a href="http://csrc.nist.gov/publications/fips/index.html">FIPS
 46  
      * PUB 81</a>.
 47  
      * <p/>
 48  
      * This is a standard JDK operation mode and should be supported by all JDK environments.
 49  
      */
 50  1
     CBC,
 51  
 
 52  
     /**
 53  
      * <a href="http://en.wikipedia.org/wiki/CCM_mode">Counter with CBC-MAC</a> mode<b>*</b> - for block ciphers with
 54  
      * 128 bit block-size only. See <a href="http://www.ietf.org/rfc/rfc3610.txt">RFC 3610</a> for AES Ciphers.
 55  
      * This mode has essentially been replaced by the more-capable {@link #EAX EAX} mode.
 56  
      * <p/>
 57  
      * <b>*THIS IS A NON-STANDARD MODE</b>. It is not guaranteed to be supported across JDK installations.  You must
 58  
      * ensure you have a JCA Provider that can support this cipher operation mode.
 59  
      * <a href="http://www.bouncycastle.org">Bouncy Castle</a> <em>may</em> be one such provider.
 60  
      */
 61  1
     CCM,
 62  
 
 63  
     /**
 64  
      * <a href="http://en.wikipedia.org/wiki/Block_cipher_modes_of_operation#Cipher_feedback_.28CFB.29">Cipher
 65  
      * Feedback<a/> mode, defined in <a href="http://csrc.nist.gov/publications/fips/index.html">FIPS PUB 81</a>.
 66  
      * <p/>
 67  
      * This is a standard JDK operation mode and should be supported by all JDK environments.
 68  
      */
 69  1
     CFB,
 70  
 
 71  
     /**
 72  
      * <a href="http://en.wikipedia.org/wiki/Block_cipher_modes_of_operation#Counter_.28CTR.29">Counter Mode</a>, aka
 73  
      * Integer Counter Mode (ICM) and Segmented Integer Counter (SIC).  Counter is a simplification of {@link #OFB OFB}
 74  
      * and updates the input block as a counter.
 75  
      * <p/>
 76  
      * This is a standard JDK operation mode and should be supported by all JDK environments.
 77  
      */
 78  1
     CTR,
 79  
 
 80  
     /**
 81  
      * <a href="http://en.wikipedia.org/wiki/EAX_mode">EAX Mode</a><b>*</b>.  This is a patent-free but less-effecient
 82  
      * alternative to {@link #OCB OCB} and has capabilities beyond what {@link #CCM CCM} can provide.
 83  
      * <p/>
 84  
      * <b>*THIS IS A NON-STANDARD MODE</b>. It is not guaranteed to be supported across JDK installations.  You must
 85  
      * ensure you have a JCA Provider that can support this cipher operation mode.
 86  
      * <a href="http://www.bouncycastle.org">Bouncy Castle</a> <em>may</em> be one such provider.
 87  
      */
 88  1
     EAX,
 89  
 
 90  
     /**
 91  
      * <a href="http://en.wikipedia.org/wiki/Block_cipher_modes_of_operation#Electronic_codebook_.28ECB.29">Electronic
 92  
      * Codebook</a> mode, defined in <a href="http://csrc.nist.gov/publications/fips/index.html">FIPS PUB 81</a>.
 93  
      * ECB is the only mode that does <em>not</em> require an Initialization Vector, but because of this, can be seen
 94  
      * as less secure than operation modes that require an IV.
 95  
      * <p/>
 96  
      * This is a standard JDK operation mode and should be supported by all JDK environments.
 97  
      */
 98  1
     ECB,
 99  
 
 100  
     /**
 101  
      * <a href="http://en.wikipedia.org/wiki/GCM_mode">Galois/Counter</a> mode<b>*</b> - for block ciphers with 128
 102  
      * bit block-size only.
 103  
      * <p/>
 104  
      * <b>*THIS IS A NON-STANDARD MODE</b>. It is not guaranteed to be supported across JDK installations.  You must
 105  
      * ensure you have a JCA Provider that can support this cipher operation mode.
 106  
      * <a href="http://www.bouncycastle.org">Bouncy Castle</a> <em>may</em> be one such provider.
 107  
      */
 108  1
     GCM,
 109  
 
 110  
     /**
 111  
      * No mode.
 112  
      * <p/>
 113  
      * This is a standard JDK operation mode and should be supported by all JDK environments.
 114  
      */
 115  1
     NONE,
 116  
 
 117  
     /**
 118  
      * <a href="http://en.wikipedia.org/wiki/OCB_mode">Offset Codebook</a> mode<b>*</b>.  Parallel mode that provides
 119  
      * both message privacy and authenticity in a single pass.  This is a very efficient mode, but is patent-encumbered.
 120  
      * A less-efficient (two pass) alternative is available by using {@link #EAX EAX} mode.
 121  
      * <p/>
 122  
      * <b>*THIS IS A NON-STANDARD MODE</b>. It is not guaranteed to be supported across JDK installations.  You must
 123  
      * ensure you have a JCA Provider that can support this cipher operation mode.
 124  
      * <a href="http://www.bouncycastle.org">Bouncy Castle</a> <em>may</em> be one such provider.
 125  
      */
 126  1
     OCB,
 127  
 
 128  
     /**
 129  
      * <a href="http://en.wikipedia.org/wiki/Block_cipher_modes_of_operation#Output_feedback_.28OFB.29">Output
 130  
      * Feedback</a> mode, defined in <a href="http://csrc.nist.gov/publications/fips/index.html">FIPS PUB 81</a>.
 131  
      * <p/>
 132  
      * This is a standard JDK operation mode and should be supported by all JDK environments.
 133  
      */
 134  1
     OFB,
 135  
 
 136  
     /**
 137  
      * <a href="http://en.wikipedia.org/wiki/Block_cipher_modes_of_operation#Propagating_cipher-block_chaining_.28PCBC.29">
 138  
      * Propagating Cipher Block Chaining</a> mode, defined in <a href="http://web.mit.edu/kerberos/">Kerberos version 4<a/>.
 139  
      * <p/>
 140  
      * This is a standard JDK operation mode and should be supported by all JDK environments.
 141  
      */
 142  1
     PCBC
 143  
 }