mirror of
https://github.com/moparisthebest/Conversations
synced 2024-11-24 01:32:17 -05:00
add sha1 sum to file
This commit is contained in:
parent
96be96f9f8
commit
d936a830e4
@ -1,11 +1,15 @@
|
||||
package eu.siacs.conversations.persistance;
|
||||
|
||||
import java.io.BufferedInputStream;
|
||||
import java.io.File;
|
||||
import java.io.FileInputStream;
|
||||
import java.io.FileNotFoundException;
|
||||
import java.io.FileOutputStream;
|
||||
import java.io.IOException;
|
||||
import java.io.InputStream;
|
||||
import java.io.OutputStream;
|
||||
import java.security.MessageDigest;
|
||||
import java.security.NoSuchAlgorithmException;
|
||||
|
||||
import android.content.Context;
|
||||
import android.graphics.Bitmap;
|
||||
@ -16,6 +20,7 @@ import android.util.LruCache;
|
||||
|
||||
import eu.siacs.conversations.entities.Conversation;
|
||||
import eu.siacs.conversations.entities.Message;
|
||||
import eu.siacs.conversations.utils.CryptoHelper;
|
||||
|
||||
public class FileBackend {
|
||||
|
||||
@ -84,6 +89,7 @@ public class FileBackend {
|
||||
Log.d("xmppService", "couldnt compress");
|
||||
}
|
||||
os.close();
|
||||
message.setBody(this.createSha1(file));
|
||||
return file;
|
||||
} catch (FileNotFoundException e) {
|
||||
// TODO Auto-generated catch block
|
||||
@ -112,4 +118,43 @@ public class FileBackend {
|
||||
}
|
||||
return thumbnail;
|
||||
}
|
||||
|
||||
private String createSha1(final File file) {
|
||||
InputStream fis = null;
|
||||
try {
|
||||
MessageDigest digest = MessageDigest.getInstance("SHA-1");
|
||||
fis = new FileInputStream(file);
|
||||
int n = 0;
|
||||
byte[] buffer = new byte[8192];
|
||||
while (n != -1) {
|
||||
n = fis.read(buffer);
|
||||
if (n > 0) {
|
||||
digest.update(buffer, 0, n);
|
||||
}
|
||||
}
|
||||
fis.close();
|
||||
return CryptoHelper.bytesToHex(digest.digest());
|
||||
} catch (NoSuchAlgorithmException e) {
|
||||
return null;
|
||||
} catch (FileNotFoundException e) {
|
||||
if (fis!=null) {
|
||||
try {
|
||||
fis.close();
|
||||
return null;
|
||||
} catch (IOException e1) {
|
||||
return null;
|
||||
}
|
||||
}
|
||||
} catch (IOException e) {
|
||||
if (fis!=null) {
|
||||
try {
|
||||
fis.close();
|
||||
return null;
|
||||
} catch (IOException e1) {
|
||||
return null;
|
||||
}
|
||||
}
|
||||
}
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
@ -407,7 +407,6 @@ public class XmppConnectionService extends Service {
|
||||
message.setPresence(presence);
|
||||
message.setType(Message.TYPE_IMAGE);
|
||||
File file = this.fileBackend.copyImageToPrivateStorage(message, uri);
|
||||
Log.d(LOGTAG,"new file"+file.getAbsolutePath());
|
||||
conversation.getMessages().add(message);
|
||||
databaseBackend.createMessage(message);
|
||||
sendMessage(message, null);
|
||||
|
@ -34,6 +34,7 @@ public class JingleConnection {
|
||||
private String responder;
|
||||
private List<Element> candidates = new ArrayList<Element>();
|
||||
private HashMap<String, SocksConnection> connections = new HashMap<String, SocksConnection>();
|
||||
private File file = null;
|
||||
|
||||
private OnIqPacketReceived responseListener = new OnIqPacketReceived() {
|
||||
|
||||
@ -110,7 +111,8 @@ public class JingleConnection {
|
||||
if (message.getType() == Message.TYPE_IMAGE) {
|
||||
content.setAttribute("creator", "initiator");
|
||||
content.setAttribute("name", "a-file-offer");
|
||||
content.offerFile(this.mXmppConnectionService.getFileBackend().getImageFile(message));
|
||||
this.file = this.mXmppConnectionService.getFileBackend().getImageFile(message);
|
||||
content.offerFile(file,message.getBody());
|
||||
content.setCandidates(this.mJingleConnectionManager.nextRandomId(),this.candidates);
|
||||
packet.setContent(content);
|
||||
Log.d("xmppService",packet.toString());
|
||||
|
@ -15,12 +15,13 @@ public class Content extends Element {
|
||||
super("content");
|
||||
}
|
||||
|
||||
public void offerFile(File actualFile) {
|
||||
public void offerFile(File actualFile, String hash) {
|
||||
Element description = this.addChild("description", "urn:xmpp:jingle:apps:file-transfer:3");
|
||||
Element offer = description.addChild("offer");
|
||||
Element file = offer.addChild("file");
|
||||
file.addChild("size").setContent(""+actualFile.length());
|
||||
file.addChild("name").setContent(actualFile.getName());
|
||||
file.addChild("hash","urn:xmpp:hashes:1").setAttribute("algo", "sha-1").setContent(hash);
|
||||
}
|
||||
|
||||
public void setCandidates(String transportId, List<Element> canditates) {
|
||||
|
Loading…
Reference in New Issue
Block a user