⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 ipseckeyrecord.java

📁 DNS Java 是java实现的DNS
💻 JAVA
字号:
// Copyright (c) 2004 Brian Wellington (bwelling@xbill.org)package org.xbill.DNS;import java.io.*;import java.net.*;import org.xbill.DNS.utils.*;/** * IPsec Keying Material (RFC 4025) * * @author Brian Wellington */public class IPSECKEYRecord extends Record {public static class Algorithm {	private Algorithm() {}	public static final int RSA = 1;	public static final int DSS = 2;}public static class Gateway {	private Gateway() {}	public static final int None = 0;	public static final int IPv4 = 1;	public static final int IPv6 = 2;	public static final int Name = 3;}private int precedence;private int gatewayType;private int algorithmType;private Object gateway;private byte [] key;IPSECKEYRecord() {} RecordgetObject() {	return new IPSECKEYRecord();}/** * Creates an IPSECKEY Record from the given data. * @param precedence The record's precedence. * @param gatewayType The record's gateway type. * @param algorithmType The record's algorithm type. * @param gateway The record's gateway. * @param key The record's public key. */publicIPSECKEYRecord(Name name, int dclass, long ttl, int precedence,	       int gatewayType, int algorithmType, Object gateway,	       byte [] key){	super(name, Type.IPSECKEY, dclass, ttl);	this.precedence = checkU8("precedence", precedence);	this.gatewayType = checkU8("gatewayType", gatewayType);	this.algorithmType = checkU8("algorithmType", algorithmType);	switch (gatewayType) {	case Gateway.None:		this.gateway = null;		break;	case Gateway.IPv4:		if (!(gateway instanceof InetAddress))			throw new IllegalArgumentException("\"gateway\" " +							   "must be an IPv4 " +							   "address");		this.gateway = gateway;		break;	case Gateway.IPv6:		if (!(gateway instanceof Inet6Address))			throw new IllegalArgumentException("\"gateway\" " +							   "must be an IPv6 " +							   "address");		this.gateway = gateway;		break;	case Gateway.Name:		if (!(gateway instanceof Name))			throw new IllegalArgumentException("\"gateway\" " +							   "must be a DNS " +							   "name");		this.gateway = checkName("gateway", (Name) gateway);		break;	default:		throw new IllegalArgumentException("\"gatewayType\" " +						   "must be between 0 and 3");	}	this.key = key;}voidrrFromWire(DNSInput in) throws IOException {	precedence = in.readU8();	gatewayType = in.readU8();	algorithmType = in.readU8();	switch (gatewayType) {	case Gateway.None:		gateway = null;		break;	case Gateway.IPv4:		gateway = InetAddress.getByAddress(in.readByteArray(4));		break;	case Gateway.IPv6:		gateway = InetAddress.getByAddress(in.readByteArray(16));		break;	case Gateway.Name:		gateway = new Name(in);		break;	default:		throw new WireParseException("invalid gateway type");	}	if (in.remaining() > 0)		key = in.readByteArray();}voidrdataFromString(Tokenizer st, Name origin) throws IOException {	precedence = st.getUInt8();	gatewayType = st.getUInt8();	algorithmType = st.getUInt8();	switch (gatewayType) {	case Gateway.None:		String s = st.getString();		if (!s.equals("."))			throw new TextParseException("invalid gateway format");		gateway = null;		break;	case Gateway.IPv4:		gateway = st.getAddress(Address.IPv4);		break;	case Gateway.IPv6:		gateway = st.getAddress(Address.IPv6);		break;	case Gateway.Name:		gateway = st.getName(origin);		break;	default:		throw new WireParseException("invalid gateway type");	}	key = st.getBase64(false);}StringrrToString() {	StringBuffer sb = new StringBuffer();	sb.append(precedence);	sb.append(" ");	sb.append(gatewayType);	sb.append(" ");	sb.append(algorithmType);	sb.append(" ");	switch (gatewayType) {	case Gateway.None:		sb.append(".");		break;	case Gateway.IPv4:	case Gateway.IPv6:		InetAddress gatewayAddr = (InetAddress) gateway;		sb.append(gatewayAddr.getHostAddress());		break;	case Gateway.Name:		sb.append(gateway);		break;	}	if (key != null) {		sb.append(" ");		sb.append(base64.toString(key));	}	return sb.toString();}/** Returns the record's precedence. */public intgetPrecedence() {	return precedence;}/** Returns the record's gateway type. */public intgetGatewayType() {	return gatewayType;}/** Returns the record's algorithm type. */public intgetAlgorithmType() {	return algorithmType;}/** Returns the record's gateway. */public ObjectgetGateway() {	return gateway;}/** Returns the record's public key */public byte []getKey() {	return key;}voidrrToWire(DNSOutput out, Compression c, boolean canonical) {	out.writeU8(precedence);	out.writeU8(gatewayType);	out.writeU8(algorithmType);	switch (gatewayType) {	case Gateway.None:		break;	case Gateway.IPv4:	case Gateway.IPv6:		InetAddress gatewayAddr = (InetAddress) gateway;		out.writeByteArray(gatewayAddr.getAddress());		break;	case Gateway.Name:		Name gatewayName = (Name) gateway;		gatewayName.toWire(out, null, canonical);		break;	}	if (key != null)		out.writeByteArray(key);}}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -