protected static ClientKeyBlock innerEncode(
     RandomSource random,
     FreenetURI uri,
     Bucket sourceData,
     boolean isMetadata,
     short compressionCodec,
     int sourceLength,
     String compressorDescriptor)
     throws InsertException, CHKEncodeException, IOException, SSKEncodeException,
         MalformedURLException, InvalidCompressionCodecException {
   String uriType = uri.getKeyType();
   if (uriType.equals("CHK")) {
     return ClientCHKBlock.encode(
         sourceData,
         isMetadata,
         compressionCodec == -1,
         compressionCodec,
         sourceLength,
         compressorDescriptor);
   } else if (uriType.equals("SSK") || uriType.equals("KSK")) {
     InsertableClientSSK ik = InsertableClientSSK.create(uri);
     return ik.encode(
         sourceData,
         isMetadata,
         compressionCodec == -1,
         compressionCodec,
         sourceLength,
         random,
         compressorDescriptor);
   } else {
     throw new InsertException(InsertException.INVALID_URI, "Unknown keytype " + uriType, null);
   }
 }