package es.uji.security.crypto.openxades.digidoc.c14n;
import java.io.ByteArrayOutputStream;
import java.io.RandomAccessFile;
import es.uji.security.crypto.openxades.digidoc.factory.CanonicalizationFactory;
public class TinyXMLCanonicalizer implements CanonicalizationFactory
{
public TinyXMLCanonicalizer()
{
}
public void init() throws es.uji.security.crypto.openxades.digidoc.DigiDocException
{
try
{
}
catch (java.lang.Throwable exc)
{
throw new es.uji.security.crypto.openxades.digidoc.DigiDocException((int) 0, "unknown", exc);
}
}
public byte[] canonicalize(String filename, String uri)
throws es.uji.security.crypto.openxades.digidoc.DigiDocException
{
RandomAccessFile f;
byte[] data;
byte[] byteArray3;
try
{
f = new RandomAccessFile(filename, "r");
data = new byte[((int) f.length())];
f.read(data);
f.close();
byteArray3 = this.canonicalize(data, uri);
}
catch (java.lang.Throwable exc)
{
throw new es.uji.security.crypto.openxades.digidoc.DigiDocException((int) 0, "unknown", exc);
}
return byteArray3;
}
/**
* will parse the xml document and return its canonicalized version
*/
public byte[] canonicalize(byte[] data, String uri)
throws es.uji.security.crypto.openxades.digidoc.DigiDocException
{
TinyXMLParser p;
TinyXMLCanonicalizerHandler h;
byte[] byteArray3;
try
{
p = new TinyXMLParser();
h = new TinyXMLCanonicalizerHandler();
p.Parse(h, TinyXMLCanonicalizer.NormalizeLineBreaks(data));
byteArray3 = h.get_Bytes();
}
catch (java.lang.Throwable exc)
{
throw new es.uji.security.crypto.openxades.digidoc.DigiDocException((int) 0, "unknown", exc);
}
return byteArray3;
}
public static byte[] NormalizeLineBreaks(byte[] data)
{
int len;
ByteArrayOutputStream o;
byte[] n;
int i;
byte c;
boolean skip;
len = ((int) data.length);
o = new ByteArrayOutputStream(len);
n = new byte[] { 10 };
for (i = 0; (i < len); i++)
{
c = data[i];
if ((c == 13))
{
skip = false;
if (((i + 1) < len))
{
c = data[(i + 1)];
if ((c == 10))
{
skip = true;
}
}
if (!skip)
{
o.write(n, (int) 0, (int) 1);
}
}
else
{
o.write(data, i, (int) 1);
}
}
return o.toByteArray();
}
}