package com.limegroup.gnutella.security; import java.io.File; import java.io.IOException; import org.limewire.util.FileUtils; import org.limewire.util.StringUtils; import com.google.inject.Inject; public class FileCertificateReaderImpl implements FileCertificateReader { private final CertificateParser certificateParser; @Inject public FileCertificateReaderImpl(CertificateParser certificateParser) { this.certificateParser = certificateParser; } /* (non-Javadoc) * @see com.limegroup.gnutella.security.FileCertificateReader#read(java.io.File) */ public Certificate read(File file) throws IOException { if (file.length() > 10000) { throw new IOException("file too big, corrupted"); } byte[] data = FileUtils.readFileFully(file); if (data == null) { throw new IOException("file could not be read"); } return certificateParser.parseCertificate(StringUtils.toUTF8String(data)); } @Override public boolean write(Certificate certificate, File file) { return FileUtils.verySafeSave(file.getParentFile(), file.getName(), StringUtils.toUTF8Bytes(certificate.getCertificateString())); } }