Home | History | Annotate | Download | only in paddings
      1 package org.bouncycastle.crypto.paddings;
      2 
      3 import java.security.SecureRandom;
      4 
      5 import org.bouncycastle.crypto.InvalidCipherTextException;
      6 
      7 /**
      8  * A padder that adds NULL byte padding to a block.
      9  */
     10 public class ZeroBytePadding
     11     implements BlockCipherPadding
     12 {
     13     /**
     14      * Initialise the padder.
     15      *
     16      * @param random - a SecureRandom if available.
     17      */
     18     public void init(SecureRandom random)
     19         throws IllegalArgumentException
     20     {
     21         // nothing to do.
     22     }
     23 
     24     /**
     25      * Return the name of the algorithm the padder implements.
     26      *
     27      * @return the name of the algorithm the padder implements.
     28      */
     29     public String getPaddingName()
     30     {
     31         return "ZeroByte";
     32     }
     33 
     34     /**
     35      * add the pad bytes to the passed in block, returning the
     36      * number of bytes added.
     37      */
     38     public int addPadding(
     39         byte[]  in,
     40         int     inOff)
     41     {
     42         int added = (in.length - inOff);
     43 
     44         while (inOff < in.length)
     45         {
     46             in[inOff] = (byte) 0;
     47             inOff++;
     48         }
     49 
     50         return added;
     51     }
     52 
     53     /**
     54      * return the number of pad bytes present in the block.
     55      */
     56     public int padCount(byte[] in)
     57         throws InvalidCipherTextException
     58     {
     59         int count = in.length;
     60 
     61         while (count > 0)
     62         {
     63             if (in[count - 1] != 0)
     64             {
     65                 break;
     66             }
     67 
     68             count--;
     69         }
     70 
     71         return in.length - count;
     72     }
     73 }
     74