com.ibm.as400.access.AS400XChgRandSeedReplyDS Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of jt400 Show documentation
Show all versions of jt400 Show documentation
The Open Source version of the IBM Toolbox for Java
The newest version!
///////////////////////////////////////////////////////////////////////////////
//
// JTOpen (IBM Toolbox for Java - OSS version)
//
// Filename: AS400XChgRandSeedReplyDS.java
//
// The source code contained herein is licensed under the IBM Public License
// Version 1.0, which has been approved by the Open Source Initiative.
// Copyright (C) 1997-2001 International Business Machines Corporation and
// others. All rights reserved.
//
///////////////////////////////////////////////////////////////////////////////
package com.ibm.as400.access;
import java.io.IOException;
import java.io.InputStream;
// A class representing a reply to an "exchange random seed" request (class AS400XChgRandSeedDS) data stream.
class AS400XChgRandSeedReplyDS extends ClientAccessDataStream
{
private static final String copyright = "Copyright (C) 1997-2001 International Business Machines Corporation and others.";
/**
Generate a new instance of this type.
@return a reference to the new instance
**/
public Object getNewDataStream()
{
return new AS400XChgRandSeedReplyDS();
}
int getRC()
{
return get32bit(20);
}
byte[] getServerSeed()
{
byte[] seed = new byte[8];
System.arraycopy(data_, 24, seed, 0, 8);
return seed;
}
int findCP(int cp)
{
int offset = 32;
while (offset < data_.length - 1)
{
int LLCP = get16bit(offset + 4);
if (LLCP == cp) return offset;
offset += get32bit(offset);
}
return -1;
}
void read(InputStream in) throws IOException
{
if (Trace.traceOn_) Trace.log(Trace.DIAGNOSTIC, "Receiving exchange random seeds reply..."); //@P0C
// Receive the header.
byte[] header = new byte[20];
if (readFromStream(in, header, 0, 20) < 20)
{
if (Trace.traceOn_) Trace.log(Trace.ERROR, "Failed to read all of the exchange random seeds reply header."); //@P0C
throw new ConnectionDroppedException(ConnectionDroppedException.CONNECTION_DROPPED);
}
// Allocate bytes for datastream.
data_ = new byte[BinaryConverter.byteArrayToInt(header, 0)];
System.arraycopy(header, 0, data_, 0, 20);
// Read in the rest of the data.
readAfterHeader(in);
}
/**
Generates a hash code for this data stream.
@return the hash code
**/
public int hashCode()
{
return 0xF001;
}
/**
* Returns Important server attributes. This field will be set to the same value that was in the request
* if using a pre-V5R1 system - this value must be 0. If running V5R1 or later, this field will be set
* to the password level value that the system is currently using. The values and their meaning are:
*
*- 0 or 1- The DES (pre-V5R1) password encryption algorithm will be used.
*
- 2 or 3- The SHA-1 (V5R1 and later) password encryption algorithm will be used.
*
* @return serverAttributes
*/
public byte getServerAttributes() {
return get8bit(5);
}
/**
* Returns whether the server accepts an additional authentication factor.
*/
boolean getAAFIndicator()
{
int offset = findCP(0x112E);
return (offset == -1) ? false : (data_[offset + 6] == 0x01);
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy