//
// Android PDF Writer
// http://coderesearchlabs.com/androidpdfwriter
//
// by Javier Santo Domingo (j-a-s-d@coderesearchlabs.com)
//
package totalcross.util.pdf;
import totalcross.crypto.digest.*;
import totalcross.sys.*;
public class Indentifiers
{
private static char[] HexTable = { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F' };
private static final String calculateMd5(final String s)
{
StringBuffer MD5Str = new StringBuffer();
try
{
MD5Digest md5 = new MD5Digest();
md5.update(s.getBytes());
final byte binMD5[] = md5.getDigest();
final int len = binMD5.length;
for (int i = 0; i < len; i++)
{
MD5Str.append(HexTable[(binMD5[i] >> 4) & 0x0F]); // hi
MD5Str.append(HexTable[(binMD5[i] >> 0) & 0x0F]); // lo
}
}
catch (Exception e)
{
e.printStackTrace();
}
return MD5Str.toString();
}
private static String encode(Time date)
{
int m = Settings.daylightSavingsMinutes/*c.get(Calendar.DST_OFFSET) / 60000*/;
int dts_h = m / 60;
int dts_m = m % 60;
String sign = m > 0 ? "+" : "-";
return "(D:"+
Convert.spacePad(Convert.toString(date.year),40,true)+
Convert.spacePad(Convert.toString(date.month),20,true)+
Convert.spacePad(Convert.toString(date.day),20,true)+
Convert.spacePad(Convert.toString(date.hour),20,true)+
Convert.spacePad(Convert.toString(date.minute),20,true)+sign+
Convert.spacePad(Convert.toString(dts_h),20,true)+"'"+
Convert.spacePad(Convert.toString(dts_m),20,true)+"')";
}
public static String generateId()
{
return calculateMd5(encode(new Time()));
}
public static String generateId(String data)
{
return calculateMd5(data);
}
}