GenericCommon.java [plain text]
package CyrusSasl;
import java.util.Hashtable;
import java.net.*;
public abstract class GenericCommon
{
private native void jni_sasl_set_prop_string(int ptr, int propnum, String value);
private native void jni_sasl_set_prop_int(int ptr, int propnum, int value);
private native void jni_sasl_set_prop_bytes(int ptr, int propnum, byte[] value);
private native void jni_sasl_set_server(int ptr, byte []ipnum, int port);
private native void jni_sasl_set_client(int ptr, byte []ipnum, int port);
private native void jni_sasl_setSecurity(int ptr, int minssf, int maxssf);
private native int jni_sasl_getSecurity(int ptr);
private native byte[] jni_sasl_encode(int ptr, byte[] in,int len);
private native byte[] jni_sasl_decode(int ptr, byte[] in,int len);
private native void jni_sasl_dispose(int ptr);
public static int SASL_SSF =1;
public static int SASL_MAXOUTBUF=2;
public static int SASL_REALM =3;
public static int SASL_GETOPTCTX=4;
public static int SASL_IP_LOCAL =5;
public static int SASL_IP_REMOTE =6;
public static int SASL_SSF_EXTERNAL=100;
public static int SASL_SEC_PROPS =101;
int ptr; int ssfactive;
boolean finished;
public boolean done() { return finished; }
public void setproperty(int PROPERTY, String value)
{
jni_sasl_set_prop_string(ptr,PROPERTY,value);
}
public void setproperty(int PROPERTY, int value)
{
jni_sasl_set_prop_int(ptr,PROPERTY,value);
}
public void setproperty(int PROPERTY, byte[] value)
{
jni_sasl_set_prop_bytes(ptr,PROPERTY,value);
}
private boolean setRemoteIP(String name,int port)
{
byte[]ip=null;
try {
InetAddress server=InetAddress.getByName(name);
ip=server.getAddress();
} catch (UnknownHostException e) {
return false;
}
jni_sasl_set_server(ptr, ip, port);
return true;
}
private boolean setLocalIP(String name, int port)
{
byte[]ip=null;
try {
InetAddress server=InetAddress.getByName(name);
ip=server.getAddress();
} catch (UnknownHostException e) {
return false;
}
jni_sasl_set_client(ptr, ip, port);
return true;
}
public boolean setClient(InetAddress local,int port)
{
byte[]ip=local.getAddress();
jni_sasl_set_client(ptr, ip, port);
return true;
}
public boolean setClient(int port)
{
try {
return setClient(InetAddress.getLocalHost(),port);
} catch (UnknownHostException e) {
return false;
}
}
public boolean setSecurity(int external, int minssf, int maxssf)
{
jni_sasl_setSecurity(ptr,minssf,maxssf);
return true;
}
public int getSecurity() {
return jni_sasl_getSecurity(ptr);
}
public byte[] encode(byte[] in)
{
byte[] out=jni_sasl_encode(ptr,in,in.length);
return out;
}
public byte[] decode(byte[] in, int len)
{
byte[] out=jni_sasl_decode(ptr,in,len);
return out;
}
public byte[] decode(String in)
{
return decode(in.getBytes(),in.length());
}
protected void setcommonproperties(Hashtable props)
{
int i_ssfmin = 0;
String s_ssfmin=(String) props.get("javax.security.sasl.encryption.minimum");
if (s_ssfmin!=null) i_ssfmin = Integer.parseInt(s_ssfmin);
int i_ssfmax = 256;
String s_ssfmax=(String) props.get("javax.security.sasl.encryption.maximum");
if (s_ssfmax!=null) i_ssfmax = Integer.parseInt(s_ssfmax);
int i_external = 0;
setSecurity(i_external,
i_ssfmin,
i_ssfmax);
String iplocal = (String) props.get("javax.security.sasl.ip.local");
if (iplocal!=null) setLocalIP(iplocal,0);
String ipremote = (String) props.get("javax.security.sasl.ip.remote");
if (ipremote!=null) setRemoteIP(ipremote,0);
}
final protected void finalize () throws Throwable
{
jni_sasl_dispose(ptr);
}
protected boolean complete = false;
public boolean isComplete()
{
return complete;
}
public void setcomplete(int a)
{
complete = true;
}
}