go back to 16 byte IVs for OMEMO
clients like Dino can’t handle 12 byte IVs
This commit is contained in:
		
							parent
							
								
									0e3be466ad
								
							
						
					
					
						commit
						ce46b36c33
					
				| @ -550,7 +550,7 @@ public class AxolotlService implements OnAdvancedStreamFeaturesLoaded { | ||||
| 					} else { | ||||
| 						Log.d(Config.LOGTAG, account.getJid().asBareJid() + ": own device " + session.getFingerprint() + " was active " + hours + " hours ago"); | ||||
| 					} | ||||
| 				} | ||||
| 				} //TODO print last activation diff | ||||
| 			} | ||||
| 		} | ||||
| 		return devices; | ||||
|  | ||||
| @ -4,15 +4,12 @@ import android.util.Base64; | ||||
| import android.util.Log; | ||||
| import android.util.SparseArray; | ||||
| 
 | ||||
| 
 | ||||
| import java.security.InvalidAlgorithmParameterException; | ||||
| import java.security.InvalidKeyException; | ||||
| import java.security.NoSuchAlgorithmException; | ||||
| import java.security.NoSuchProviderException; | ||||
| import java.security.SecureRandom; | ||||
| import java.util.HashMap; | ||||
| import java.util.List; | ||||
| import java.util.Map; | ||||
| 
 | ||||
| import javax.crypto.BadPaddingException; | ||||
| import javax.crypto.Cipher; | ||||
| @ -30,12 +27,12 @@ import rocks.xmpp.addr.Jid; | ||||
| 
 | ||||
| public class XmppAxolotlMessage { | ||||
| 	public static final String CONTAINERTAG = "encrypted"; | ||||
| 	public static final String HEADER = "header"; | ||||
| 	public static final String SOURCEID = "sid"; | ||||
| 	public static final String KEYTAG = "key"; | ||||
| 	public static final String REMOTEID = "rid"; | ||||
| 	public static final String IVTAG = "iv"; | ||||
| 	public static final String PAYLOAD = "payload"; | ||||
| 	private static final String HEADER = "header"; | ||||
| 	private static final String SOURCEID = "sid"; | ||||
| 	private static final String KEYTAG = "key"; | ||||
| 	private static final String REMOTEID = "rid"; | ||||
| 	private static final String IVTAG = "iv"; | ||||
| 	private static final String PAYLOAD = "payload"; | ||||
| 
 | ||||
| 	private static final String KEYTYPE = "AES"; | ||||
| 	private static final String CIPHERMODE = "AES/GCM/NoPadding"; | ||||
| @ -53,7 +50,7 @@ public class XmppAxolotlMessage { | ||||
| 		private final String plaintext; | ||||
| 		private final String fingerprint; | ||||
| 
 | ||||
| 		public XmppAxolotlPlaintextMessage(String plaintext, String fingerprint) { | ||||
| 		XmppAxolotlPlaintextMessage(String plaintext, String fingerprint) { | ||||
| 			this.plaintext = plaintext; | ||||
| 			this.fingerprint = fingerprint; | ||||
| 		} | ||||
| @ -73,7 +70,7 @@ public class XmppAxolotlMessage { | ||||
| 		private final byte[] key; | ||||
| 		private final byte[] iv; | ||||
| 
 | ||||
| 		public XmppAxolotlKeyTransportMessage(String fingerprint, byte[] key, byte[] iv) { | ||||
| 		XmppAxolotlKeyTransportMessage(String fingerprint, byte[] key, byte[] iv) { | ||||
| 			this.fingerprint = fingerprint; | ||||
| 			this.key = key; | ||||
| 			this.iv = iv; | ||||
| @ -143,7 +140,7 @@ public class XmppAxolotlMessage { | ||||
| 		} | ||||
| 	} | ||||
| 
 | ||||
| 	public XmppAxolotlMessage(Jid from, int sourceDeviceId) { | ||||
| 	XmppAxolotlMessage(Jid from, int sourceDeviceId) { | ||||
| 		this.from = from; | ||||
| 		this.sourceDeviceId = sourceDeviceId; | ||||
| 		this.keys = new SparseArray<>(); | ||||
| @ -168,7 +165,7 @@ public class XmppAxolotlMessage { | ||||
| 
 | ||||
| 	private static byte[] generateIv() { | ||||
| 		SecureRandom random = new SecureRandom(); | ||||
| 		byte[] iv = new byte[12]; | ||||
| 		byte[] iv = new byte[16]; | ||||
| 		random.nextBytes(iv); | ||||
| 		return iv; | ||||
| 	} | ||||
| @ -177,7 +174,7 @@ public class XmppAxolotlMessage { | ||||
| 		return ciphertext != null; | ||||
| 	} | ||||
| 
 | ||||
| 	public void encrypt(String plaintext) throws CryptoFailedException { | ||||
| 	void encrypt(String plaintext) throws CryptoFailedException { | ||||
| 		try { | ||||
| 			SecretKey secretKey = new SecretKeySpec(innerKey, KEYTYPE); | ||||
| 			IvParameterSpec ivSpec = new IvParameterSpec(iv); | ||||
| @ -276,7 +273,7 @@ public class XmppAxolotlMessage { | ||||
| 		return session.processReceiving(encryptedKey); | ||||
| 	} | ||||
| 
 | ||||
| 	public XmppAxolotlKeyTransportMessage getParameters(XmppAxolotlSession session, Integer sourceDeviceId) throws CryptoFailedException { | ||||
| 	XmppAxolotlKeyTransportMessage getParameters(XmppAxolotlSession session, Integer sourceDeviceId) throws CryptoFailedException { | ||||
| 		return new XmppAxolotlKeyTransportMessage(session.getFingerprint(), unpackKey(session, sourceDeviceId), getIV()); | ||||
| 	} | ||||
| 
 | ||||
|  | ||||
		Loading…
	
		Reference in New Issue
	
	Block a user
	 Daniel Gultsch
						Daniel Gultsch