protected static ClientKeyBlock innerEncode(RandomSource random, FreenetURI uri, Bucket sourceData, boolean isMetadata, short compressionCodec, int sourceLength, String compressorDescriptor, boolean pre1254, byte cryptoAlgorithm, byte[] cryptoKey) 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, pre1254, cryptoKey, cryptoAlgorithm);
} else if(uriType.equals("SSK") || uriType.equals("KSK")) {
InsertableClientSSK ik = InsertableClientSSK.create(uri);
return ik.encode(sourceData, isMetadata, compressionCodec == -1, compressionCodec, sourceLength, random, compressorDescriptor, pre1254);
} else {
throw new InsertException(InsertExceptionMode.INVALID_URI, "Unknown keytype "+uriType, null);
}
}