[freenet-dev] [freenet-cvs] r19344 - trunk/freenet/src/freenet/keys

Matthew Toseland toad at amphibian.dyndns.org
Tue Apr 15 10:56:23 UTC 2008


Please keep indenting separate from functional changes.

On Tuesday 15 April 2008 07:47, nextgens at freenetproject.org wrote:
> Author: nextgens
> Date: 2008-04-15 06:47:01 +0000 (Tue, 15 Apr 2008)
> New Revision: 19344
> 
> Modified:
>    trunk/freenet/src/freenet/keys/FreenetURI.java
> Log:
> doh
> 
> Modified: trunk/freenet/src/freenet/keys/FreenetURI.java
> ===================================================================
> --- trunk/freenet/src/freenet/keys/FreenetURI.java	2008-04-15 06:46:12 UTC 
(rev 19343)
> +++ trunk/freenet/src/freenet/keys/FreenetURI.java	2008-04-15 06:47:01 UTC 
(rev 19344)
> @@ -72,25 +72,26 @@
>   * REDFLAG: Old code has a FieldSet, and the ability to put arbitrary 
metadata
>   * in through name/value pairs. Do we want this?
>   */
> -public class FreenetURI implements Cloneable{
> +public class FreenetURI implements Cloneable {
>  
> -	private final String keyType, docName;
> +	private final String keyType,  docName;
>  	private final String[] metaStr;
> -	private final byte[] routingKey, cryptoKey, extra;
> +	private final byte[] routingKey,  cryptoKey,  extra;
>  	private final long suggestedEdition; // for USKs
>  	private boolean hasHashCode;
>  	private int hashCode;
>  	static final String[] VALID_KEY_TYPES =
> -		new String[] { "CHK", "SSK", "KSK", "USK" };
> -	
> +		new String[]{"CHK", "SSK", "KSK", "USK"};
> +
>  	public int hashCode() {
> -		if(hasHashCode) return hashCode;
> +		if(hasHashCode)
> +			return hashCode;
>  		int x = keyType.hashCode();
> -		if(docName != null) x ^= docName.hashCode();
> -		if(metaStr != null) {
> -			for(int i=0;i<metaStr.length;i++)
> +		if(docName != null)
> +			x ^= docName.hashCode();
> +		if(metaStr != null)
> +			for(int i = 0; i < metaStr.length; i++)
>  				x ^= metaStr[i].hashCode();
> -		}
>  		if(routingKey != null)
>  			x ^= Fields.hashCode(routingKey);
>  		if(cryptoKey != null)
> @@ -108,21 +109,32 @@
>  		if(!(o instanceof FreenetURI))
>  			return false;
>  		else {
> -			FreenetURI f = (FreenetURI)o;
> -			if(!keyType.equals(f.keyType)) return false;
> -			if(keyType.equals("USK")) {
> -				if(!(suggestedEdition == f.suggestedEdition)) return false;
> -			}
> -			if((docName == null) ^ (f.docName == null)) return false;
> -			if((metaStr == null) ^ (f.metaStr == null)) return false;
> -			if((routingKey == null) ^ (f.routingKey == null)) return false;
> -			if((cryptoKey == null) ^ (f.cryptoKey == null)) return false;
> -			if((extra == null) ^ (f.extra == null)) return false;
> -			if((docName != null) && !docName.equals(f.docName)) return false;
> -			if((metaStr != null) && !Arrays.equals(metaStr, f.metaStr)) return 
false;
> -			if((routingKey != null) && !Arrays.equals(routingKey, f.routingKey)) 
return false;
> -			if((cryptoKey != null) && !Arrays.equals(cryptoKey, f.cryptoKey)) return 
false;
> -			if((extra != null) && !Arrays.equals(extra, f.extra)) return false;
> +			FreenetURI f = (FreenetURI) o;
> +			if(!keyType.equals(f.keyType))
> +				return false;
> +			if(keyType.equals("USK"))
> +				if(!(suggestedEdition == f.suggestedEdition))
> +					return false;
> +			if((docName == null) ^ (f.docName == null))
> +				return false;
> +			if((metaStr == null) ^ (f.metaStr == null))
> +				return false;
> +			if((routingKey == null) ^ (f.routingKey == null))
> +				return false;
> +			if((cryptoKey == null) ^ (f.cryptoKey == null))
> +				return false;
> +			if((extra == null) ^ (f.extra == null))
> +				return false;
> +			if((docName != null) && !docName.equals(f.docName))
> +				return false;
> +			if((metaStr != null) && !Arrays.equals(metaStr, f.metaStr))
> +				return false;
> +			if((routingKey != null) && !Arrays.equals(routingKey, f.routingKey))
> +				return false;
> +			if((cryptoKey != null) && !Arrays.equals(cryptoKey, f.cryptoKey))
> +				return false;
> +			if((extra != null) && !Arrays.equals(extra, f.extra))
> +				return false;
>  			return true;
>  		}
>  	}
> @@ -130,39 +142,35 @@
>  	public final Object clone() {
>  		return new FreenetURI(this);
>  	}
> -	
> +
>  	public FreenetURI(FreenetURI uri) {
>  		keyType = uri.keyType;
>  		docName = uri.docName;
>  		metaStr = new String[uri.metaStr.length];
> -        System.arraycopy(uri.metaStr, 0, metaStr, 0, metaStr.length);
> -        if(uri.routingKey != null) {
> +		System.arraycopy(uri.metaStr, 0, metaStr, 0, metaStr.length);
> +		if(uri.routingKey != null) {
>  			routingKey = new byte[uri.routingKey.length];
>  			System.arraycopy(uri.routingKey, 0, routingKey, 0, routingKey.length);
> -		} else {
> +		} else
>  			routingKey = null;
> -		}
>  		if(uri.cryptoKey != null) {
>  			cryptoKey = new byte[uri.cryptoKey.length];
>  			System.arraycopy(uri.cryptoKey, 0, cryptoKey, 0, cryptoKey.length);
> -		} else {
> +		} else
>  			cryptoKey = null;
> -		}
>  		if(uri.extra != null) {
>  			extra = new byte[uri.extra.length];
>  			System.arraycopy(uri.extra, 0, extra, 0, extra.length);
> -		} else {
> +		} else
>  			extra = null;
> -		}
>  		this.suggestedEdition = uri.suggestedEdition;
>  	}
> -	
> +
>  	public FreenetURI(String keyType, String docName) {
>  		this(keyType, docName, (String[]) null, null, null, null);
>  	}
> +	public static final FreenetURI EMPTY_CHK_URI = new FreenetURI("CHK", null, 
null, null, null, null);
>  
> -	public static final FreenetURI EMPTY_CHK_URI = new FreenetURI("CHK", null, 
null, null, null, null);
> -	
>  	public FreenetURI(
>  		String keyType,
>  		String docName,
> @@ -180,7 +188,7 @@
>  		this(
>  			keyType,
>  			docName,
> -			(metaStr == null ? (String[]) null : new String[] { metaStr }),
> +			(metaStr == null ? (String[]) null : new String[]{metaStr}),
>  			routingKey,
>  			cryptoKey,
>  			null);
> @@ -202,97 +210,99 @@
>  	}
>  
>  	public FreenetURI(
> -			String keyType,
> -			String docName,
> -			String[] metaStr,
> -			byte[] routingKey,
> -			byte[] cryptoKey, byte[] extra2,
> -			long suggestedEdition) {
> -			this.keyType = keyType.trim().toUpperCase();
> -			this.docName = docName;
> -			this.metaStr = metaStr;
> -			this.routingKey = routingKey;
> -			this.cryptoKey = cryptoKey;
> -			this.extra = extra2;
> -			this.suggestedEdition = suggestedEdition;
> -		}
> +		String keyType,
> +		String docName,
> +		String[] metaStr,
> +		byte[] routingKey,
> +		byte[] cryptoKey, byte[] extra2,
> +		long suggestedEdition) {
> +		this.keyType = keyType.trim().toUpperCase();
> +		this.docName = docName;
> +		this.metaStr = metaStr;
> +		this.routingKey = routingKey;
> +		this.cryptoKey = cryptoKey;
> +		this.extra = extra2;
> +		this.suggestedEdition = suggestedEdition;
> +	}
>  
>  	public FreenetURI(String URI) throws MalformedURLException {
> -		if (URI == null) {
> +		if(URI == null)
>  			throw new MalformedURLException("No URI specified");
> -		} else
> +		else
>  			URI = URI.trim();
> -		
> -		if(URI.startsWith("freenet:")) {
> +
> +		if(URI.startsWith("freenet:"))
>  			URI = URI.substring("freenet:".length());
> +
> +		// Strip any leading /
> +		while(URI.startsWith("/")) {
> +			URI = URI.substring(1);
>  		}
> -		
> -		// Strip any leading /
> -		while(URI.startsWith("/")) URI = URI.substring(1);
> -		
> -		if(URI.indexOf('@') < 0 || URI.indexOf('/') < 0) {
> +
> +		if(URI.indexOf('@') < 0 || URI.indexOf('/') < 0)
>  			// Encoded URL?
>  			try {
> -				URI=URLDecoder.decode(URI, false);
> -			} catch (URLEncodedFormatException e) {
> +				URI = URLDecoder.decode(URI, false);
> +			} catch(URLEncodedFormatException e) {
>  				throw new MalformedURLException("Invalid URI: no @ or /, or @ or / is 
escaped but there are invalid escapes");
>  			}
> -		}
> -		
> +
>  		// Strip http:// prefix
> -		URI = URI.replaceFirst("^http://[^/]+/+","");
> -		
> +		URI = URI.replaceFirst("^http://[^/]+/+", "");
> +
>  		// decode keyType
>  		int atchar = URI.indexOf('@');
> -		if (atchar == -1) {
> -			throw new MalformedURLException("There is no @ in that URI! ("+URI+')');
> -		} else {
> +		if(atchar == -1)
> +			throw new MalformedURLException("There is no @ in that URI! (" + URI 
+ ')');
> +		else
>  			keyType = URI.substring(0, atchar).toUpperCase().trim();
> -		}
>  		URI = URI.substring(atchar + 1);
> -		
> +
>  		boolean validKeyType = false;
> -		for(int i=0;i<VALID_KEY_TYPES.length;i++) {
> -			if(keyType.equals(VALID_KEY_TYPES[i])) validKeyType = true;
> +		for(int i = 0; i < VALID_KEY_TYPES.length; i++) {
> +			if(keyType.equals(VALID_KEY_TYPES[i]))
> +				validKeyType = true;
>  		}
> -		if(!validKeyType) throw new MalformedURLException("Invalid key 
type: "+keyType);
> -		
> +		if(!validKeyType)
> +			throw new MalformedURLException("Invalid key type: " + keyType);
> +
>  		// decode metaString
>  		Vector sv = null;
>  		int slash2;
>  		sv = new Vector();
> -		while ((slash2 = URI.lastIndexOf("/")) != -1) {
> +		while((slash2 = URI.lastIndexOf("/")) != -1) {
>  			String s;
>  			try {
>  				s = URLDecoder.decode(URI.substring(slash2 + "/".length()), true);
> -			} catch (URLEncodedFormatException e) {
> +			} catch(URLEncodedFormatException e) {
>  				MalformedURLException ue = new MalformedURLException(e.toString());
>  				ue.initCause(e);
>  				throw ue;
>  			}
> -			if (s != null)
> +			if(s != null)
>  				sv.addElement(s);
>  			URI = URI.substring(0, slash2);
>  		}
> -		
> +
>  		// sv is *backwards*
>  		// this makes for more efficient handling
> -		
> +
>  		boolean isSSK = "SSK".equals(keyType);
>  		boolean isUSK = "USK".equals(keyType);
>  		boolean isKSK = "KSK".equals(keyType);
> -		
> +
>  		if(isSSK || isUSK) {
> -			
> +
>  			if(sv.isEmpty())
> -				throw new MalformedURLException("No docname for "+keyType);
> -			docName = (String) sv.remove(sv.size()-1);
> +				throw new MalformedURLException("No docname for " + keyType);
> +			docName = (String) sv.remove(sv.size() - 1);
>  			if(isUSK) {
> -				if(sv.isEmpty()) throw new MalformedURLException("No suggested edition 
number for USK");
> +				if(sv.isEmpty())
> +					throw new MalformedURLException("No suggested edition number for 
USK");
>  				try {
> -					suggestedEdition = Long.parseLong((String)sv.remove(sv.size()-1));
> -				} catch (NumberFormatException e) {
> -					MalformedURLException e1 = new MalformedURLException("Invalid 
suggested edition: "+e);
> +					suggestedEdition = Long.parseLong((String) sv.remove(sv.size() - 1));
> +				} catch(NumberFormatException e) {
> +					MalformedURLException e1 = new MalformedURLException("Invalid 
suggested edition: " + e);
>  					e1.initCause(e);
>  					throw e1;
>  				}
> @@ -307,38 +317,37 @@
>  			docName = null;
>  			suggestedEdition = -1;
>  		}
> -		
> -		if (!sv.isEmpty()) {
> +
> +		if(!sv.isEmpty()) {
>  			metaStr = new String[sv.size()];
> -			for (int i = 0; i < metaStr.length; i++) {
> +			for(int i = 0; i < metaStr.length; i++) {
>  				metaStr[i] = (String) sv.elementAt(metaStr.length - 1 - i);
> -				if(metaStr[i] == null) throw new NullPointerException();
> +				if(metaStr[i] == null)
> +					throw new NullPointerException();
>  			}
> -		} else {
> +		} else
>  			metaStr = null;
> -		}
>  
>  		if(isKSK) {
>  			routingKey = extra = cryptoKey = null;
>  			return;
>  		}
> -		
> -        // strip 'file extensions' from CHKs
> -        // added by aum (david at rebirthing.co.nz)
> -        if ("CHK".equals(keyType)) {
> -            URI = URI.split("[.]")[0];
> -        }
>  
> +		// strip 'file extensions' from CHKs
> +		// added by aum (david at rebirthing.co.nz)
> +		if("CHK".equals(keyType))
> +			URI = URI.split("[.]")[0];
> +
>  		// URI now contains: routingKey[,cryptoKey][,metaInfo]
>  		StringTokenizer st = new StringTokenizer(URI, ",");
>  		try {
> -			if (st.hasMoreTokens()) {
> +			if(st.hasMoreTokens())
>  				routingKey = Base64.decode(st.nextToken());
> -			} else {
> +			else {
>  				routingKey = cryptoKey = extra = null;
>  				return;
>  			}
> -			if (!st.hasMoreTokens()) {
> +			if(!st.hasMoreTokens()) {
>  				cryptoKey = extra = null;
>  				return;
>  			}
> @@ -346,13 +355,13 @@
>  			// Can be cryptokey or name-value pair.
>  			String t = st.nextToken();
>  			cryptoKey = Base64.decode(t);
> -			if (!st.hasMoreTokens()) {
> +			if(!st.hasMoreTokens()) {
>  				extra = null;
>  				return;
>  			}
>  			extra = Base64.decode(st.nextToken());
>  
> -		} catch (IllegalBase64Exception e) {
> +		} catch(IllegalBase64Exception e) {
>  			throw new MalformedURLException("Invalid Base64 quantity: " + e);
>  		}
>  	}
> @@ -378,18 +387,17 @@
>  		System.out.println("Crypto key : " + k);
>  		System.out.println("Extra      : " + e);
>  		System.out.println(
> -		        "Doc name   : " + (docName == null ? "none" : docName));
> +			"Doc name   : " + (docName == null ? "none" : docName));
>  		System.out.print("Meta strings: ");
> -		if (metaStr == null) {
> +		if(metaStr == null)
>  			System.err.println("none");
> -		} else
> -			for (int i = 0; i < metaStr.length; i++) {
> +		else
> +			for(int i = 0; i < metaStr.length; i++) {
>  				System.err.print(metaStr[i]);
> -				if (i == metaStr.length - 1) {
> +				if(i == metaStr.length - 1)
>  					System.err.println();
> -				} else {
> +				else
>  					System.err.print(", ");
> -				}
>  			}
>  	}
>  
> @@ -406,13 +414,13 @@
>  	}
>  
>  	public String lastMetaString() {
> -		return ((metaStr == null ) || (metaStr.length == 0)) ? null : 
metaStr[metaStr.length-1]; 
> +		return ((metaStr == null) || (metaStr.length == 0)) ? null : 
metaStr[metaStr.length - 1];
>  	}
> -	
> +
>  	public String[] getAllMetaStrings() {
>  		return metaStr;
>  	}
> -	
> +
>  	public boolean hasMetaStrings() {
>  		return !(metaStr == null || metaStr.length == 0);
>  	}
> @@ -435,7 +443,7 @@
>  	public FreenetURI popMetaString() {
>  		String[] newMetaStr = null;
>  		final int metaStrLength = metaStr.length;
> -		if ((metaStr != null) && (metaStrLength > 1)) {
> +		if((metaStr != null) && (metaStrLength > 1)) {
>  			newMetaStr = new String[metaStrLength - 1];
>  			System.arraycopy(metaStr, 1, newMetaStr, 0, newMetaStr.length);
>  		}
> @@ -444,8 +452,9 @@
>  
>  	public FreenetURI dropLastMetaStrings(int i) {
>  		String[] newMetaStr = null;
> -		if ((metaStr != null) && (metaStr.length > 1)) {
> -			if(i > metaStr.length) i = metaStr.length;
> +		if((metaStr != null) && (metaStr.length > 1)) {
> +			if(i > metaStr.length)
> +				i = metaStr.length;
>  			newMetaStr = new String[metaStr.length - i];
>  			System.arraycopy(metaStr, 0, newMetaStr, 0, newMetaStr.length);
>  		}
> @@ -457,30 +466,33 @@
>  	 */
>  	public FreenetURI pushMetaString(String name) {
>  		String[] newMetaStr;
> -		if(name == null) throw new NullPointerException();
> +		if(name == null)
> +			throw new NullPointerException();
>  		if(metaStr == null)
> -			newMetaStr = new String[] { name };
> +			newMetaStr = new String[]{name};
>  		else {
> -			newMetaStr = new String[metaStr.length+1];
> +			newMetaStr = new String[metaStr.length + 1];
>  			System.arraycopy(metaStr, 0, newMetaStr, 0, metaStr.length);
>  			newMetaStr[metaStr.length] = name;
>  		}
>  		return setMetaString(newMetaStr);
>  	}
> -	
> +
>  	/**
>  	 * Returns a copy of this URI with the those meta strings appended.
>  	 */
>  	public FreenetURI addMetaStrings(String[] strs) {
> -		if (strs == null)
> +		if(strs == null)
>  			return this; // legal noop, since getMetaStrings can return null
> -		for(int i=0;i<strs.length;i++) if(strs[i] == null) throw new 
NullPointerException("element "+i+" of "+strs.length+" is null");
> +		for(int i = 0; i < strs.length; i++)
> +			if(strs[i] == null)
> +				throw new NullPointerException("element " + i + " of " + strs.length 
+ " is null");
>  		String[] newMetaStr;
> -		if (metaStr == null)
> +		if(metaStr == null)
>  			return setMetaString(strs);
>  		else {
>  			newMetaStr = new String[metaStr.length + strs.length];
> -			if (metaStr != null)
> +			if(metaStr != null)
>  				System.arraycopy(metaStr, 0, newMetaStr, 0, metaStr.length);
>  			System.arraycopy(strs, 0, newMetaStr, metaStr.length, strs.length);
>  			return setMetaString(strs);
> @@ -488,9 +500,9 @@
>  	}
>  
>  	public FreenetURI addMetaStrings(LinkedList metaStrings) {
> -		return addMetaStrings((String[])metaStrings.toArray(new 
String[metaStrings.size()]));
> +		return addMetaStrings((String[]) metaStrings.toArray(new 
String[metaStrings.size()]));
>  	}
> -	
> +
>  	/**
>  	 * Returns a copy of this URI with a new Document name set.
>  	 */
> @@ -520,67 +532,65 @@
>  	public String toString() {
>  		return toString(false, false);
>  	}
> -	
> +
>  	public String toACIIString() {
>  		return toString(true, true);
>  	}
>  
>  	public String toString(boolean prefix, boolean pureAscii) {
>  		StringBuffer b;
> -		if (prefix)
> +		if(prefix)
>  			b = new StringBuffer("freenet:");
>  		else
>  			b = new StringBuffer();
>  
>  		b.append(keyType).append('@');
>  
> -		if (!"KSK".equals(keyType)) {
> -			if (routingKey != null)
> +		if(!"KSK".equals(keyType)) {
> +			if(routingKey != null)
>  				b.append(Base64.encode(routingKey));
> -			if (cryptoKey != null)
> +			if(cryptoKey != null)
>  				b.append(',').append(Base64.encode(cryptoKey));
> -			if (extra != null)
> -			    b.append(',').append(Base64.encode(extra));
> -			if (docName != null)
> +			if(extra != null)
> +				b.append(',').append(Base64.encode(extra));
> +			if(docName != null)
>  				b.append('/');
>  		}
>  
> -		if (docName != null)
> +		if(docName != null)
>  			b.append(URLEncoder.encode(docName, "/", pureAscii));
>  		if(keyType.equals("USK")) {
>  			b.append('/');
>  			b.append(suggestedEdition);
>  		}
> -		if (metaStr != null) {
> -			for (int i = 0; i < metaStr.length; i++) {
> +		if(metaStr != null)
> +			for(int i = 0; i < metaStr.length; i++) {
>  				b.append('/').append(URLEncoder.encode(metaStr[i], "/", pureAscii));
>  			}
> -		}
>  		return b.toString();
>  	}
> -	
> +
>  	public String toShortString() {
>  		StringBuffer b = new StringBuffer();
> -		
> +
>  		b.append(keyType).append('@');
> -		
> -		if (!"KSK".equals(keyType)) {
> +
> +		if(!"KSK".equals(keyType)) {
>  			b.append("...");
> -			if (docName != null)
> +			if(docName != null)
>  				b.append('/');
>  		}
> -		
> -		if (docName != null)
> +
> +		if(docName != null)
>  			b.append(URLEncoder.encode(docName, "/", false));
>  		if(keyType.equals("USK")) {
>  			b.append('/');
>  			b.append(suggestedEdition);
>  		}
> -		if (metaStr != null) {
> -			for (int i = 0; i < metaStr.length; i++) {
> +		if(metaStr != null)
> +			for(int i = 0; i < metaStr.length; i++) {
>  				b.append('/').append(URLEncoder.encode(metaStr[i], "/", false));
>  			}
> -		}
>  		return b.toString();
>  	}
>  
> @@ -588,39 +598,37 @@
>  		(new FreenetURI(args[0])).decompose();
>  	}
>  
> -    public byte[] getExtra() {
> -        return extra;
> -    }
> +	public byte[] getExtra() {
> +		return extra;
> +	}
>  
>  	public LinkedList listMetaStrings() {
>  		LinkedList l = new LinkedList();
> -		if(metaStr != null) {
> -			for(int i=0;i<metaStr.length;i++)
> +		if(metaStr != null)
> +			for(int i = 0; i < metaStr.length; i++)
>  				l.addLast(metaStr[i]);
> -		}
>  		return l;
>  	}
> -	
>  	static final byte CHK = 1;
>  	static final byte SSK = 2;
>  	static final byte KSK = 3;
>  	static final byte USK = 4;
> -	
> +
>  	public static FreenetURI readFullBinaryKeyWithLength(DataInputStream dis) 
throws IOException {
>  		int len = dis.readShort();
>  		byte[] buf = new byte[len];
>  		dis.readFully(buf);
>  		if(Logger.shouldLog(Logger.MINOR, FreenetURI.class))
> -			Logger.minor(FreenetURI.class, "Read "+len+" bytes for key");
> +			Logger.minor(FreenetURI.class, "Read " + len + " bytes for key");
>  		return fromFullBinaryKey(buf);
>  	}
> -	
> +
>  	public static FreenetURI fromFullBinaryKey(byte[] buf) throws IOException 
{
>  		ByteArrayInputStream bais = new ByteArrayInputStream(buf);
>  		DataInputStream dis = new DataInputStream(bais);
>  		return readFullBinaryKey(dis);
>  	}
> -	
> +
>  	public static FreenetURI readFullBinaryKey(DataInputStream dis) throws 
IOException {
>  		byte type = dis.readByte();
>  		String keyType;
> @@ -631,7 +639,7 @@
>  		else if(type == KSK)
>  			keyType = "KSK";
>  		else
> -			throw new MalformedURLException("Unrecognized type "+type);
> +			throw new MalformedURLException("Unrecognized type " + type);
>  		byte[] routingKey = null;
>  		byte[] cryptoKey = null;
>  		byte[] extra = null;
> @@ -644,19 +652,17 @@
>  			dis.readFully(cryptoKey);
>  			// Number of bytes of extra depends on key type
>  			int extraLen;
> -			if((type == CHK) || (type == SSK)) {
> -				extraLen = ClientCHK.EXTRA_LENGTH;
> -				extra = new byte[extraLen];
> -				dis.readFully(extra);
> -			} else
> -				extra = new byte[0];
> +			extraLen = (type == CHK ? ClientCHK.EXTRA_LENGTH : 
ClientSSK.EXTRA_LENGTH);
> +			extra = new byte[extraLen];
> +			dis.readFully(extra);
>  		}
>  		String docName = null;
>  		if(type != CHK)
>  			docName = dis.readUTF();
>  		int count = dis.readInt();
>  		String[] metaStrings = new String[count];
> -		for(int i=0;i<metaStrings.length;i++) metaStrings[i] = dis.readUTF();
> +		for(int i = 0; i < metaStrings.length; i++)
> +			metaStrings[i] = dis.readUTF();
>  		return new FreenetURI(keyType, docName, metaStrings, routingKey, 
cryptoKey, extra);
>  	}
>  
> @@ -674,10 +680,10 @@
>  		ndos.close();
>  		byte[] data = baos.toByteArray();
>  		if(data.length > Short.MAX_VALUE)
> -			throw new MalformedURLException("Full key too 
long: "+data.length+" - "+this);
> -		dos.writeShort((short)data.length);
> +			throw new MalformedURLException("Full key too long: " + data.length 
+ " - " + this);
> +		dos.writeShort((short) data.length);
>  		if(Logger.shouldLog(Logger.MINOR, FreenetURI.class))
> -			Logger.minor(this, "Written "+data.length+" bytes");
> +			Logger.minor(this, "Written " + data.length + " bytes");
>  		dos.write(data);
>  	}
>  
> @@ -689,16 +695,16 @@
>  	 * @throws IOException If an error occurred while writing the key.
>  	 */
>  	private void writeFullBinaryKey(DataOutputStream dos) throws IOException {
> -		if(keyType.equals("CHK")) {
> +		if(keyType.equals("CHK"))
>  			dos.writeByte(CHK);
> -		} else if(keyType.equals("SSK")) {
> +		else if(keyType.equals("SSK"))
>  			dos.writeByte(SSK);
> -		} else if(keyType.equals("KSK")) {
> +		else if(keyType.equals("KSK"))
>  			dos.writeByte(KSK);
> -		} else if(keyType.equals("USK")) {
> +		else if(keyType.equals("USK"))
>  			throw new MalformedURLException("Cannot write USKs as binary keys");
> -		} else
> -			throw new MalformedURLException("Cannot write key of type "+keyType+" - 
do not know how");
> +		else
> +			throw new MalformedURLException("Cannot write key of type " + keyType 
+ " - do not know how");
>  		if(!keyType.equals("KSK")) {
>  			if(routingKey.length != 32)
>  				throw new MalformedURLException("Routing key must be of length 32");
> @@ -716,7 +722,7 @@
>  			dos.writeUTF(docName);
>  		if(metaStr != null) {
>  			dos.writeInt(metaStr.length);
> -			for(int i=0;i<metaStr.length;i++)
> +			for(int i = 0; i < metaStr.length; i++)
>  				dos.writeUTF(metaStr[i]);
>  		} else
>  			dos.writeInt(0);
> @@ -726,41 +732,47 @@
>  	public long getSuggestedEdition() {
>  		if(keyType.equals("USK"))
>  			return suggestedEdition;
> -		else throw new IllegalArgumentException("Not a USK requesting suggested 
edition");
> +		else
> +			throw new IllegalArgumentException("Not a USK requesting suggested 
edition");
>  	}
>  
>  	public String getPreferredFilename() {
>  		boolean logMINOR = Logger.shouldLog(Logger.MINOR, this);
> -		Logger.minor(this, "Getting preferred filename for "+this);
> +		Logger.minor(this, "Getting preferred filename for " + this);
>  		Vector names = new Vector();
>  		if(keyType != null && (keyType.equals("KSK") || keyType.equals("SSK") || 
keyType.equals("USK"))) {
> -			if(logMINOR) Logger.minor(this, "Adding docName: "+docName);
> +			if(logMINOR)
> +				Logger.minor(this, "Adding docName: " + docName);
>  			names.add(docName);
> -			if(keyType.equals("USK")) {
> +			if(keyType.equals("USK"))
>  				names.add(Long.toString(suggestedEdition));
> -			}
>  		}
>  		if(metaStr != null)
> -			for(int i=0;i<metaStr.length;i++) {
> -				if(logMINOR) Logger.minor(this, "Adding 
metaString "+i+": "+metaStr[i]);
> +			for(int i = 0; i < metaStr.length; i++) {
> +				if(logMINOR)
> +					Logger.minor(this, "Adding metaString " + i + ": " + metaStr[i]);
>  				names.add(metaStr[i]);
>  			}
>  		StringBuffer out = new StringBuffer();
> -		for(int i=0;i<names.size();i++) {
> +		for(int i = 0; i < names.size(); i++) {
>  			String s = (String) names.get(i);
> -			if(logMINOR) Logger.minor(this, "name "+i+" = "+s);
> +			if(logMINOR)
> +				Logger.minor(this, "name " + i + " = " + s);
>  			s = FileUtil.sanitize(s);
> -			if(logMINOR) Logger.minor(this, "Sanitized name "+i+" = "+s);
> +			if(logMINOR)
> +				Logger.minor(this, "Sanitized name " + i + " = " + s);
>  			if(s.length() > 0) {
>  				if(out.length() > 0)
>  					out.append('-');
>  				out.append(s);
>  			}
>  		}
> -		if(logMINOR) Logger.minor(this, "out = "+out.toString());
> +		if(logMINOR)
> +			Logger.minor(this, "out = " + out.toString());
>  		if(out.length() == 0) {
>  			if(routingKey != null) {
> -				if(logMINOR) Logger.minor(this, "Returning base64 encoded routing 
key");
> +				if(logMINOR)
> +					Logger.minor(this, "Returning base64 encoded routing key");
>  				return Base64.encode(routingKey);
>  			}
>  			return "unknown";
> @@ -770,44 +782,46 @@
>  
>  	public FreenetURI setSuggestedEdition(long newEdition) {
>  		return new FreenetURI(
> -				keyType,
> -				docName,
> -				metaStr,
> -				routingKey,
> -				cryptoKey,
> -				extra,
> -				newEdition);
> +			keyType,
> +			docName,
> +			metaStr,
> +			routingKey,
> +			cryptoKey,
> +			extra,
> +			newEdition);
>  	}
>  
>  	public FreenetURI setKeyType(String newKeyType) {
>  		return new FreenetURI(
> -				newKeyType,
> -				docName,
> -				metaStr,
> -				routingKey,
> -				cryptoKey,
> -				extra,
> -				suggestedEdition);
> +			newKeyType,
> +			docName,
> +			metaStr,
> +			routingKey,
> +			cryptoKey,
> +			extra,
> +			suggestedEdition);
>  	}
> -	
> +
>  	public FreenetURI setRoutingKey(byte[] newRoutingKey) {
>  		return new FreenetURI(
> -				keyType,
> -				docName,
> -				metaStr,
> -				newRoutingKey,
> -				cryptoKey,
> -				extra,
> -				suggestedEdition);
> +			keyType,
> +			docName,
> +			metaStr,
> +			newRoutingKey,
> +			cryptoKey,
> +			extra,
> +			suggestedEdition);
>  	}
>  
>  	public void checkInsertURI() throws InsertException {
>  		if(metaStr != null && metaStr.length > 0)
> -			throw new 
InsertException(InsertException.META_STRINGS_NOT_SUPPORTED,this);
> +			throw new InsertException(InsertException.META_STRINGS_NOT_SUPPORTED, 
this);
>  	}
> -	
> -	public static void checkInsertURI(FreenetURI uri) throws InsertException { 
uri.checkInsertURI(); }
>  
> +	public static void checkInsertURI(FreenetURI uri) throws InsertException {
> +		uri.checkInsertURI();
> +	}
> +
>  	public URI toRelativeURI() throws URISyntaxException {
>  		// Single-argument constructor used because it preserves encoded /'es in 
path.
>  		// Hence we can have slashes, question marks etc in the path, but they 
are encoded.
> @@ -817,5 +831,4 @@
>  	public URI toURI(String basePath) throws URISyntaxException {
>  		return new URI(basePath + toString(false, false));
>  	}
> -
>  }
> 
> _______________________________________________
> cvs mailing list
> cvs at freenetproject.org
> http://emu.freenetproject.org/cgi-bin/mailman/listinfo/cvs
> 
> 
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 189 bytes
Desc: not available
Url : http://emu.freenetproject.org/pipermail/devl/attachments/20080415/69010518/attachment.pgp 


More information about the Devl mailing list