Code Monkey home page Code Monkey logo

signal-ios's Introduction

Signal iOS

Signal is a free, open source, messaging app for simple private communication with friends.

Available on the App Store

Also available on Android and Desktop.

Questions?

For troubleshooting and questions, please visit our support center or unofficial community forum.

Contributing Bug Reports

We use GitHub for bug tracking. Please search existing issues and create a new one if the issue is not yet tracked. For Android users, please use the Signal for Android issue tracker.

Contributing Code

Instructions on how to setup your development environment and build Signal-iOS can be found in BUILDING.md. We also recommend reading the contribution guidelines.

Contributing Ideas

Have something you want to say about Signal Foundation projects or want to be part of the conversation? Get involved in the community forum.

Cryptography Notice

This distribution includes cryptographic software. The country in which you currently reside may have restrictions on the import, possession, use, and/or re-export to another country, of encryption software. BEFORE using any encryption software, please check your country's laws, regulations and policies concerning the import, possession, or use, and re-export of encryption software, to see if this is permitted. See http://www.wassenaar.org/ for more information.

The U.S. Government Department of Commerce, Bureau of Industry and Security (BIS), has classified this software as Export Commodity Control Number (ECCN) 5D002.C.1, which includes information security software using or performing cryptographic functions with asymmetric algorithms. The form and manner of this distribution makes it eligible for export under the License Exception ENC Technology Software Unrestricted (TSU) exception (see the BIS Export Administration Regulations, Section 740.13) for both object code and source code.

License

Copyright 2013-2024 Signal Messenger, LLC

Licensed under the GNU AGPLv3: https://www.gnu.org/licenses/agpl-3.0.html

Apple and the Apple logo are trademarks of Apple Inc., registered in the U.S. and other countries. App Store is a service mark of Apple Inc., registered in the U.S. and other countries.

signal-ios's People

Contributors

automated-signal avatar charlesmchen avatar charlesmchen-signal avatar corbett avatar eager-signal avatar ebistolas-signal avatar ehrenkret-signal avatar elaine-signal avatar evanhahn-signal avatar fredericjacobs avatar fumiakiy avatar george-signal avatar gte-signal avatar harry-signal avatar igor-signal avatar imperiopolis avatar jim-signal avatar jrose-signal avatar marissa-signal avatar max-signal avatar mboe avatar mboe-signal avatar michaelkirk avatar michaelkirk-signal avatar michelle-signal avatar pete-signal avatar sashaweiss-signal avatar sharplet-signal avatar strilanc avatar the-real-adammork avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

signal-ios's Issues

Explain what WhisperSystems knows about Signal users

I'm not sure if this has been documented anywhere, but I would love to see a post that explains what WhisperSystems knows about Signal users. How many users there are? Where they are in the world? Real phone numbers? Who they call and when?

French localization issues

I ran into some French localization issues mainly in the settings page:

  • capitalization of a word in the middle of a sentence.
  • text too long IIRC in the inbox tab when you have no contacts.
  • a plural "Votre Numéros".
  • English term (ie: "Change", "You can invite the following users to use Signal").

2014-07-29 - signal french issues 1

cannot launch on iphone 5s running 7.1.2

Installed the app and when i go to launch it, the screen just blacks out on me and then fades away, taking me back to the phone screen.

Re starting the phone did not have any effect.

Contacts with emoji not visible

Contacts that have emoji in their name don't show up in the "Invite Contacts" list. Haven't been able to try it in other lists.

transition data model to use TS' secure database

-sqlcipher
-this can have the option to be unencrypted
-if encrypted there will be the need for the user to set a password
-integrated model and reliance on SQL makes sense
-will make migration/backup easier

invite contacts

-invite contacts has some blank rows (no names, no underlying numbers)
-invite contacts has some names without underlying numbers
-invite contacts should maybe be linked for usecase where user has no friends yet.

Audio quality

Subjective audio quality and latency is good but not as good as Facetime Audio.

Facetime Audio sounds like it uses a much higher sampling rate whereas Signal iOS sounds more like traditional 8 KHz POTS sampling rate.

Tested between two iPhone 5s, both on LTE cellular in the same location in Australia.

transition UI to storyboard

this is how TS iOS is and provides a greater approachability for entrance into the project while keeping up to date with iOS standard infrastructure

Debug log enabled in production build

A debug log file is created in the Library/Caches/Logs folder within the app's container on the device each time the app is run.

The log filename contains an exact date and time, which allows evidence to be collected about when the app has been used if a user's device is forensically acquired (assuming there is no log rotation, hundreds of logs could accumulate over time). The data protection class assigned to the file is NSFileProtectionCompleteUntilFirstUserAuthentication.

Suggested fix:

Don't create any log files by default in the production / App Store build.
Add a setting that enables logging for debug purposes which requires explicit opt-in.

org.whispersystems.signal 2014-07-29 20-35.log

2014/07/30 06:35:18:743 No previous version found. Possibly first launch since install.
2014/07/30 06:35:18:831 Failed to get value for key: Number
2014/07/30 06:35:18:834 Future failed: Operation failed. Expected: lnString != nil(in /Users/hubert/Signal-iOS/Signal/src/environment/SGNKeychainUtil.m at line 65)
2014/07/30 06:35:18:835 Failed to retrieve directory. Retrying in 1.000000 hours.: Operation failed. Expected: lnString != nil(in /Users/hubert/Signal-iOS/Signal/src/environment/SGNKeychainUtil.m at line 65), 0
2014/07/30 06:35:18:836 Removing object for key: Directory Bloom Data
2014/07/30 06:35:18:846 Removing object for key: Directory Bloom Hash Count
2014/07/30 06:35:18:856 Removing object for key: Directory Expiration
2014/07/30 06:35:19:331 Failed to get value for key: Signaling Cipher Key
2014/07/30 06:35:19:331 Length of data not matching. Got 0, expected 16
2014/07/30 06:35:19:333 Failed to get value for key: Signaling Mac Key
2014/07/30 06:35:19:333 Length of data not matching. Got 0, expected 20
2014/07/30 06:35:19:334 Failed to get value for key: Signaling Extra Key
2014/07/30 06:35:19:335 Length of data not matching. Got 0, expected 4
2014/07/30 06:35:19:336 Failed to get value for key: Password
2014/07/30 06:35:19:336 The server password has incorrect length. Is 0 but should be 18
2014/07/30 06:35:19:362 Opened Registration View
2014/07/30 06:35:19:448 Failed to get value for key: Signaling Cipher Key
2014/07/30 06:35:19:448 Length of data not matching. Got 0, expected 16
2014/07/30 06:35:19:449 Failed to get value for key: Signaling Mac Key
2014/07/30 06:35:19:450 Length of data not matching. Got 0, expected 20
2014/07/30 06:35:19:451 Failed to get value for key: Signaling Extra Key
2014/07/30 06:35:19:451 Length of data not matching. Got 0, expected 4
2014/07/30 06:35:19:452 Failed to get value for key: Password
2014/07/30 06:35:19:452 The server password has incorrect length. Is 0 but should be 18
2014/07/30 06:35:19:484 Latest Call is nil.
2014/07/30 06:35:19:545 Failed to register for push notifications: Error Domain=NSCocoaErrorDomain Code=3000 "no valid 'aps-environment' entitlement string found for application" UserInfo=0x178262640 {NSLocalizedDescription=no valid 'aps-environment' entitlement string found for application}
2014/07/30 06:35:48:450 Failed to get value for key: Signaling Cipher Key
2014/07/30 06:35:48:453 Length of data not matching. Got 0, expected 16
2014/07/30 06:35:48:454 Failed to get value for key: Signaling Mac Key
2014/07/30 06:35:48:454 Length of data not matching. Got 0, expected 20
2014/07/30 06:35:48:455 Failed to get value for key: Signaling Extra Key
2014/07/30 06:35:48:455 Length of data not matching. Got 0, expected 4
2014/07/30 06:35:48:456 Failed to get value for key: Password
2014/07/30 06:35:48:457 The server password has incorrect length. Is 0 but should be 18
2014/07/30 06:35:48:473 Opened Registration View
2014/07/30 06:35:48:552 Failed to get value for key: Signaling Cipher Key
2014/07/30 06:35:48:552 Length of data not matching. Got 0, expected 16
2014/07/30 06:35:48:553 Failed to get value for key: Signaling Mac Key
2014/07/30 06:35:48:553 Length of data not matching. Got 0, expected 20
2014/07/30 06:35:48:554 Failed to get value for key: Signaling Extra Key
2014/07/30 06:35:48:554 Length of data not matching. Got 0, expected 4
2014/07/30 06:35:48:555 Failed to get value for key: Password
2014/07/30 06:35:48:556 The server password has incorrect length. Is 0 but should be 18
2014/07/30 06:35:48:583 Latest Call is nil.
2014/07/30 06:37:38:206 Failed to register for push notifications: Error Domain=NSCocoaErrorDomain Code=3000 "no valid 'aps-environment' entitlement string found for application" UserInfo=0x178267300 {NSLocalizedDescription=no valid 'aps-environment' entitlement string found for application}

UX of permissions dialog

a lot of beta testers are confused by the onslaught of permissions requested by iOS, and many accidentally or purposely don't enable one or a few. this then causes weird behavior (like not having access to the microphone!) which isn't highlighted but for not being able to hear anything on the part of the user. what we'd want would be to
-manage the permissions more in line with apple UX guidelines, and maybe only access permissions as needed (for example the microphone when the user first accepts a call or calls), or right after they go ahead and register instead of before they even start to use the app
-notice when permissions have been denied and remind the user of the features they will not benefit from (microphone is mandatory, but a user could try to call another signal user without given the app access to their contact address book)

design for TS integration

-any feature that's in the Android TS app should be reviewed and decided how to put in Signal
-share this with the devs in a sketch or mockup.
-and eventually get us assets.

No SMS received issue

this bug is the Michael bug. this has been reported by several testers as their only issue, they had to ask for the phone call. I realize Moxie said this is more of a rate limited thing, not particular to our client, but just in case here is the issue in case it can be improved, or Moxie can comment how common this is reported on the droid side.

Add 24h time format

Could you add another override for the time format (12h/24h)? Or respect the system setting?

teamMetricSystem #teamDateFormatYYYYMMDD

Allow URLSchemes support

Examples:

  • sgnl://call:+111111111
  • sgnl://text:+111111111
  • sgnal://vcode:3322256 (for signup verification link in SMS)

iOS 8 Support

Looks like iOS8 users are not able to sign up. We won't support it until public launch though.

Invite scroll blocks contacts

Contacts at the bottom of the Invite Contacts page are block by the bottom bar. These contacts cannot be selected when scrolling. Only workaround I have found is to search for the person by name.

Cant send SMS to invite non-user from iPad/iPod touch

Signal app works fine on iPad/iPod touch; but when attempting to dial non-user it offers to send invitation via SMS. Then a "New message" window is displayed momentarily, with message pre-filled, to immediately disappear (due to crash, presumably since iPad does not have default SMS app or numerical identity). This is accompanied with MessagesViewService EXC_CRASH dump in Diagnostic&Usage Data... I can provide more details about the crash dump if needed.

--igor

Unable to answer call in lock screen

iPhone 4S
iOS 7.1.2

If call comes in when phone is locked and I slide the notification to the right, input the lock screen code, Signal either crashes or does not appear.

In one instance, Signal somehow reset itself and I have to do the registration (input phone number, wait for SMS) again.

todo in tryParsePhoneNumberFromUserSpecifiedText

This issue represents the todo in tryParsePhoneNumberFromUserSpecifiedText.

Currently, phone numbers in users' contacts are being parsed by stripping everything except ascii digits and +s (the library being used couldn't deal with the unicode separator character iOS was auto-inserting, IIRC). This could be an internationalization issue:

  • Some locales might use unicode digits?
  • Are other symbols, like brackets, ever significant?
  • Can a fix be pushed upstream, for the underlying library?

App specific address book

I don't want to give Signal access to my whole address book. It would be great if Signal offered an app specific address book that users could manually add RedPhone and Signal contacts to.

Explain what the passphrase is for

When initiating a call, the app on my phone will display a two-word passphrase (e.g. "briefcase backwater"). The person I am calling will hopefully see the same two-word passphrase. It would be great if Signal could explain what this passphrase is for and what I should do if the person I am calling does not see the same passphrase.

Explain how the app finds other Signal users in the address book

It would be great if Signal (the app and/or the website) could explain what happens with your information when you (a) give Signal access to your address book, and (b) invite friends to use Signal. For example, how does Signal know whether one of your contacts use either RedPhone or Signal?

Signal does not ask for Microphone or Contacts at first start w/Restrictions enabled on IOS 7.1.2

At first start, Signal app does not ask for permission to use Microphone or Contacts.

2x iPhone, both IOS 7.1.2 with Restrictions ("Do not allow changes" on most/all items)
Installed Signal, verified using SMS (very smooth!)

Upon calling other iPhone, secure connection was established, challenge identical, but no voice. This is confusing, as no error message is displayed about lack of access to Microphone/Contacts.

Workaround:

  • Set Restrictions on Microphone and Contacts to "Allow changes", then restart Signal app.
  • It now asks for permissions. Grant access.
  • Afterwards, set Restrictions to "Do not allow changes" again.

Contact not showing when first number not registered cellphone

I tested Signal between my girlfriend iPhone and mine. Both accounts were properly activated.

Issue: Her contact tab was empty even after a force close. I was able to see her in my contact tab. I was able to call her as an unknown caller.

Workaround: I opened my contact card on her phone and noticed the first phone number was our house. I switched the house and cellphone numer positions. And voila... it works.

Details: we use the international format to store our phone numbers (+33 for France in our case).

call not dropped but one party can't hear other

"I used Signal on a call yesterday with an Android user, worked great for about 5 minutes, very low latency. Then he couldn't hear me any more, though I heard him. "

regarding the person who could not be heard whether they could have accidentally pushed the mute button
"Guess I can't rule it out but I was using wired earbud/mic setup so unlikely. "

Payload shorter than HMAC.

In SRTPStream.m, a lot of streams are having issues with payloads that are too short:

Operation failed: Payload not long enough to include hmac Expected: [[securedRtpPacket payload] length] >= HMAC_LENGTH(in Signal-iOS/Signal/src/network/rtp/srtp/SrtpStream.m at line 39)

No clue why this happens.

Cannot Register under iOS 7.1.2

After I have chosen my country and entered my phone number, I get the message "REGISTRATION_ERROR [next line] REGISTRATION_BODY" when hitting "register".

Push Notifications HMAC not matching

Error parsing remote notification. Error: Operation failed. Expected: [includedMac isEqualToData_TimingSafe:computedMac](in Signal-iOS/Signal/src/phone/signaling/ResponderSessionDescriptor.m at line 95)

Add calltime label

People are used to have call-time label. Historically, I believe they made sense from a billing perspective too but they are probably a "nice to have"

Disclose 'discoverability' on the app download page.

This is a fantastic app which I'm sure many will be quick to adopt, specially in oppressive regimes where government surveillance has life or death consequences.

One suggestion however: make clear to users that they are 'discoverable' (i.e an interested party can query to see if they're a user of this app -- either through the app or via testing against the bloom filter/API).

I realize this is something that will eventually be addressed but for now, a simple warning might help protect those that might be at risk.

Call records stored unprotected on device

Numbers called and times of calls are being stored in plain text in the file Library/Preferences/ org.whispersystems.signal.plist within the app's container on the device.

This file will be backed up to the host computer as part of routine syncs & backups performed in iTunes.

Forensic acquisition of recent call records / metadata is possible in a number of scenarios:

-Access to iTunes backup files
-Physical access to unlocked device
-Physical access to locked device (iPhone 4 or older) using bootrom exploit
-Physical access to locked device + access to pairing keys from trusted host
-Remote network access to port TCP/62078 on device + access to pairing keys

The file is stored with data protection class NSFileProtectionNone:

# ./FileDP -f /var/mobile/Applications/[...]/Library/Preferences/org.whispersystems.signal.plist 2014-07-30 06:40:38.906 FileDP[1216:507] prot type is NSFileProtectionNone

Suggested fix:

Store call records in an encrypted file with data protection class NSFileProtectionComplete.

The encryption key can be randomly generated and stored in iOS keychain with protection class WhenUnlockedThisDeviceOnly (this will prevent the key from being backed up). sqlcipher for iOS might be suitable.

Add an optional setting to prevent any call records from being stored on the device.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.