FileDocCategorySizeDatePackage
TBCPadding.javaAPI DocAndroid 1.5 API2115Wed May 06 22:41:06 BST 2009org.bouncycastle.crypto.paddings

TBCPadding

public class TBCPadding extends Object implements BlockCipherPadding
A padder that adds Trailing-Bit-Compliment padding to a block.

This padding pads the block out with the compliment of the last bit of the plain text.

Fields Summary
Constructors Summary
Methods Summary
public intaddPadding(byte[] in, int inOff)
add the pad bytes to the passed in block, returning the number of bytes added.

Note: this assumes that the last block of plain text is always passed to it inside in. i.e. if inOff is zero, indicating the entire block is to be overwritten with padding the value of in should be the same as the last block of plain text.

        int     count = in.length - inOff;
        byte    code;
        
        if (inOff > 0)
        {
            code = (byte)((in[inOff - 1] & 0x01) == 0 ? 0xff : 0x00);
        }
        else
        {
            code = (byte)((in[in.length - 1] & 0x01) == 0 ? 0xff : 0x00);
        }
            
        while (inOff < in.length)
        {
            in[inOff] = code;
            inOff++;
        }

        return count;
    
public java.lang.StringgetPaddingName()
Return the name of the algorithm the padder implements.

return
the name of the algorithm the padder implements.

        return "TBC";
    
public voidinit(java.security.SecureRandom random)
Initialise the padder.

param
random - a SecureRandom if available.

        // nothing to do.
    
public intpadCount(byte[] in)
return the number of pad bytes present in the block.

        byte code = in[in.length - 1];

        int index = in.length - 1;
        while (index > 0 && in[index - 1] == code)
        {
            index--;
        }

        return in.length - index;