gnu.javax.crypto.sasl

Class InputBuffer


public class InputBuffer
extends Object

The implementation of an incoming SASL buffer.

The data elements this class caters for are described in [1].

References:

  1. Secure Remote Password Authentication Mechanism;
    draft-burdis-cat-srp-sasl-09,
    Keith Burdis and Raïf S. Naffah.

Field Summary

protected ByteArrayInputStream
in
The internal buffer stream containing the buffer's contents.
protected int
length
The length of the buffer, according to its header.

Constructor Summary

InputBuffer(byte[] frame)
Constructs a SASL buffer given the buffer's encoded form, including its header bytes.

Method Summary

byte[]
getEOS()
Decodes a SASL EOS from the current buffer.
static InputBuffer
getInstance(byte[] raw)
Returns an instance of a SASL buffer given the buffer's encoded contents, excluding the buffer's header bytes.
static InputBuffer
getInstance(byte[] raw, int offset, int len)
Returns an instance of a SASL buffer given the buffer's encoded contents, excluding the buffer's header bytes.
BigInteger
getMPI()
Decodes a SASL MPI from the current buffer.
byte[]
getOS()
Decodes a SASL OS from the current buffer.
long
getScalar(int count)
Decodes a SASL scalar quantity, count-octet long, from the current buffer.
String
getText()
Decodes a SASL Text from the current buffer.
boolean
hasMoreElements()
static int
twoBytesToLength(byte[] b)
Converts two octets into the number that they represent.

Methods inherited from class java.lang.Object

clone, equals, extends Object> getClass, finalize, hashCode, notify, notifyAll, toString, wait, wait, wait

Field Details

in

protected ByteArrayInputStream in
The internal buffer stream containing the buffer's contents.

length

protected int length
The length of the buffer, according to its header.

Constructor Details

InputBuffer

public InputBuffer(byte[] frame)
            throws SaslEncodingException
Constructs a SASL buffer given the buffer's encoded form, including its header bytes.
Parameters:
frame - the encoded form, including the header bytes, of a SASL buffer.
Throws:
SaslEncodingException - if the buffer is malformed.

Method Details

getEOS

public byte[] getEOS()
            throws IOException
Decodes a SASL EOS from the current buffer.
Returns:
a native representation of a SASL EOS.
Throws:
IOException - if any other I/O exception occurs during the operation.

getInstance

public static InputBuffer getInstance(byte[] raw)
Returns an instance of a SASL buffer given the buffer's encoded contents, excluding the buffer's header bytes.

Calls the method with the same name and three arguments as: getInstance(raw, 0, raw.length).

Parameters:
raw - the encoded form, excluding the header bytes, of a SASL buffer.
Returns:
a new instance of InputBuffer.

getInstance

public static InputBuffer getInstance(byte[] raw,
                                      int offset,
                                      int len)
Returns an instance of a SASL buffer given the buffer's encoded contents, excluding the buffer's header bytes.
Parameters:
raw - the encoded form, excluding the header bytes, of a SASL buffer.
offset - offset where to start using raw bytes from.
len - number of bytes to use.
Returns:
a new instance of InputBuffer.

getMPI

public BigInteger getMPI()
            throws IOException
Decodes a SASL MPI from the current buffer.
Returns:
a native representation of a SASL MPI.
Throws:
IOException - if any other I/O exception occurs during the operation.

getOS

public byte[] getOS()
            throws IOException
Decodes a SASL OS from the current buffer.
Returns:
a native representation of a SASL OS.
Throws:
IOException - if any other I/O exception occurs during the operation.

getScalar

public long getScalar(int count)
            throws IOException
Decodes a SASL scalar quantity, count-octet long, from the current buffer.
Parameters:
count - the number of octets of this scalar quantity.
Returns:
a native representation of a SASL scalar (unsigned integer) quantity.
Throws:
IOException - if any other I/O exception occurs during the operation.

getText

public String getText()
            throws IOException
Decodes a SASL Text from the current buffer.
Returns:
a native representation of a SASL Text.
Throws:
IOException - if any other I/O exception occurs during the operation.

hasMoreElements

public boolean hasMoreElements()

twoBytesToLength

public static int twoBytesToLength(byte[] b)
            throws SaslEncodingException
Converts two octets into the number that they represent.
Parameters:
b - the two octets.
Returns:
the length.

InputBuffer.java -- Copyright (C) 2003, 2006 Free Software Foundation, Inc. This file is a part of GNU Classpath. GNU Classpath is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. GNU Classpath is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with GNU Classpath; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA Linking this library statically or dynamically with other modules is making a combined work based on this library. Thus, the terms and conditions of the GNU General Public License cover the whole combination. As a special exception, the copyright holders of this library give you permission to link this library with independent modules to produce an executable, regardless of the license terms of these independent modules, and to copy and distribute the resulting executable under terms of your choice, provided that you also meet, for each linked independent module, the terms and conditions of the license of that module. An independent module is a module which is not derived from or based on this library. If you modify this library, you may extend this exception to your version of the library, but you are not obligated to do so. If you do not wish to do so, delete this exception statement from your version.