
org.jgroups.auth.ChallengeResponseHeader Maven / Gradle / Ivy
package org.jgroups.auth;
import org.jgroups.Global;
import org.jgroups.Header;
import org.jgroups.util.Util;
import java.io.DataInput;
import java.io.DataOutput;
import java.util.function.Supplier;
/**
* @author Bela Ban
* @since 3.3
*/
public class ChallengeResponseHeader extends Header {
protected static final byte CHALLENGE = 1;
protected static final byte RESPONSE = 2;
protected byte type;
protected byte[] payload; // CHALLENGE
protected long hash; // RESPONSE
public ChallengeResponseHeader() {
}
public ChallengeResponseHeader(byte[] payload) {
this.type=CHALLENGE;
this.payload=payload;
}
public ChallengeResponseHeader(long hash) {
type=RESPONSE;
this.hash=hash;
}
public short getMagicId() {return 90;}
public Supplier extends Header> create() {
return ChallengeResponseHeader::new;
}
public void writeTo(DataOutput out) throws Exception {
out.writeByte(type);
switch(type) {
case CHALLENGE:
Util.writeByteBuffer(payload, out);
break;
case RESPONSE:
out.writeLong(hash);
break;
}
}
public void readFrom(DataInput in) throws Exception {
type=in.readByte();
switch(type) {
case CHALLENGE:
payload=Util.readByteBuffer(in);
break;
case RESPONSE:
hash=in.readLong();
break;
}
}
public int serializedSize() {
int retval=Global.BYTE_SIZE; // type
switch(type) {
case CHALLENGE:
retval+=Util.size(payload);
break;
case RESPONSE:
retval+=Global.LONG_SIZE;
break;
}
return retval;
}
public String toString() {
return type == CHALLENGE? "CHALLENGE" : "RESPONSE" + ", payload=" + (payload != null? payload.length : 0) + " bytes";
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy