From c839f05c17cf6f445fedd3e6390e47cff967c497 Mon Sep 17 00:00:00 2001 From: Frederic Jacobs Date: Thu, 17 Jul 2014 00:50:56 +0200 Subject: [PATCH] Cleaning environment prefs --- Signal/src/environment/Environment.m | 1 + Signal/src/network/rtp/srtp/SrtpStream.m | 18 +++++++++--------- 2 files changed, 10 insertions(+), 9 deletions(-) diff --git a/Signal/src/environment/Environment.m b/Signal/src/environment/Environment.m index db42c6031..5c70fd8b9 100644 --- a/Signal/src/environment/Environment.m +++ b/Signal/src/environment/Environment.m @@ -168,6 +168,7 @@ static Environment* environment = nil; +(void)resetAppData{ [SGNKeychainUtil wipeKeychain]; [NSUserDefaults resetStandardUserDefaults]; + [[[Environment getCurrent] preferences] clear]; } @end diff --git a/Signal/src/network/rtp/srtp/SrtpStream.m b/Signal/src/network/rtp/srtp/SrtpStream.m index 46d4b6a7a..54b5aafdb 100644 --- a/Signal/src/network/rtp/srtp/SrtpStream.m +++ b/Signal/src/network/rtp/srtp/SrtpStream.m @@ -12,7 +12,7 @@ require(macKey != nil); require(cipherIvSalt != nil); require([cipherIvSalt length] == IV_SALT_LENGTH); - + SrtpStream* s = [SrtpStream new]; s->cipherIvSalt = cipherIvSalt; s->macKey = macKey; @@ -24,38 +24,38 @@ -(RtpPacket*) encryptAndAuthenticateNormalRtpPacket:(RtpPacket*)normalRtpPacket { require(normalRtpPacket != nil); NSData* payload = [normalRtpPacket payload]; - + NSData* iv = [self getIvForSequenceNumber:[normalRtpPacket sequenceNumber] andSynchronizationSourceIdentifier:[normalRtpPacket synchronizationSourceIdentifier]]; NSData* encryptedPayload = [payload encryptWithAesInCounterModeWithKey:cipherKey andIv:iv]; - + RtpPacket* encryptedRtpPacket = [normalRtpPacket withPayload:encryptedPayload]; NSData* hmac = [[encryptedRtpPacket rawPacketDataUsingInteropOptions:@[]] hmacWithSha1WithKey:macKey]; NSData* authenticatedEncryptedPayload = [@[encryptedPayload, hmac] concatDatas]; - + return [encryptedRtpPacket withPayload:authenticatedEncryptedPayload]; } -(RtpPacket*) verifyAuthenticationAndDecryptSecuredRtpPacket:(RtpPacket*)securedRtpPacket { require(securedRtpPacket != nil); checkOperationDescribe([[securedRtpPacket payload] length] >= HMAC_LENGTH, @"Payload not long enough to include hmac"); - + NSData* authenticatedData = [securedRtpPacket rawPacketDataUsingInteropOptions:nil]; NSData* includedHmac = [authenticatedData takeLastVolatile:HMAC_LENGTH]; NSData* expectedHmac = [[authenticatedData skipLastVolatile:HMAC_LENGTH] hmacWithSha1WithKey:macKey]; checkOperationDescribe([expectedHmac length] == HMAC_LENGTH, @"Hmac length constant is wrong"); checkOperationDescribe([includedHmac isEqualToData_TimingSafe:expectedHmac], @"Authentication failed."); - + NSData* iv = [self getIvForSequenceNumber:[securedRtpPacket sequenceNumber] andSynchronizationSourceIdentifier:[securedRtpPacket synchronizationSourceIdentifier]]; NSData* encryptedPayload = [[securedRtpPacket payload] skipLastVolatile:HMAC_LENGTH]; NSData* decryptedPayload = [encryptedPayload decryptWithAesInCounterModeWithKey:cipherKey andIv:iv]; - + return [securedRtpPacket withPayload:decryptedPayload]; } -(NSData*)getIvForSequenceNumber:(uint16_t)sequenceNumber andSynchronizationSourceIdentifier:(uint64_t)synchronizationSourceIdentifier { int64_t logicalSequence = [sequenceCounter convertNext:sequenceNumber]; NSMutableData* iv = [NSMutableData dataWithLength:IV_LENGTH]; - + [iv replaceBytesStartingAt:0 withData:cipherIvSalt]; uint8_t* b = (uint8_t*)[iv bytes]; @@ -67,7 +67,7 @@ b[11] ^= (uint8_t)((logicalSequence >> 16) & 0xFF); b[12] ^= (uint8_t)((logicalSequence >> 8) & 0xFF); b[13] ^= (uint8_t)((logicalSequence >> 0) & 0xFF); - + return iv; }