2362N/A * Copyright (c) 2001, 2003, Oracle and/or its affiliates. All rights reserved. 0N/A * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. 0N/A * This code is free software; you can redistribute it and/or modify it 0N/A * under the terms of the GNU General Public License version 2 only, as 2362N/A * published by the Free Software Foundation. Oracle designates this 0N/A * particular file as subject to the "Classpath" exception as provided 2362N/A * by Oracle in the LICENSE file that accompanied this code. 0N/A * This code is distributed in the hope that it will be useful, but WITHOUT 0N/A * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or 0N/A * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License 0N/A * version 2 for more details (a copy is included in the LICENSE file that 0N/A * accompanied this code). 0N/A * You should have received a copy of the GNU General Public License version 0N/A * 2 along with this work; if not, write to the Free Software Foundation, 0N/A * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. 2362N/A * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA 2362N/A * or visit www.oracle.com if you need additional information or have any 0N/A * This class is used by clients of Java SASL that need to create an input stream 0N/A * that uses SaslClient's unwrap() method to decode the SASL buffers 0N/A * sent by the SASL server. 0N/A * Extend from InputStream instead of FilterInputStream because 0N/A * we need to override less methods in InputStream. That is, the 0N/A * behavior of the default implementations in InputStream matches 0N/A * more closely with the behavior we want in SaslInputStream. 0N/A * @author Rosanna Lee 0N/A private static final boolean debug =
false;
0N/A private byte[]
lenBuf =
new byte[
4];
// buffer for storing length 0N/A private byte[]
buf =
new byte[
0];
// buffer for storing processed bytes 0N/A // Initialized to empty buffer 0N/A private int bufPos =
0;
// read position in buf 0N/A " property must be numeric string: " +
str);
0N/A while (
actual ==
0) {
// ignore zero length content 0N/A // Requesting more that we have stored 0N/A // Return all that we have; next invocation of read() will 0N/A // Requesting less than we have stored 0N/A // Return all that was requested 0N/A * Fills the buf with more data by reading a SASL buffer, unwrapping it, 0N/A * and leaving the bytes in buf for read() to return. 0N/A * @return The number of unwrapped bytes available 0N/A // Read in length of buffer 0N/A len +
"exceeds the negotiated receive buffer size limit:" +
0N/A " bytes but got " +
actual +
" bytes before EOF");
0N/A * Read requested number of bytes before returning. 0N/A * @return The number of bytes actually read; -1 if none read 0N/A // Save exception for throwing after closing 'in' 0N/A * Returns the integer represented by 4 bytes in network byte order. 0N/A // Copied from com.sun.security.sasl.util.SaslImpl.