Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How do I add authorizations to code sign an app from new keychain without any human interaction

I'm trying to automate the process of building iphone apps with a particular certificate. So imagine if different users uploaded their cert into the system and it was immediately available to code sign against. I want to do this without any interaction. I also don't want to clutter up the system or logon keychain with different user certificates. To this end I have:

  • turned off the requirement in XCODE to require code signing for a a build.
  • developed a ruby script to build an application via the xcodebuild command line tool
  • created a script to automatically create a new keychain for a user of my system
  • written a script to code sign a built iphone app.

Everything works, but I need to manually hit enter when the codesign program tries to exercise the sign permission. My keychains are all unlocked. Oddly enough it works if I make the keychain the default keychain, but that isn't scalable ie I could only have one build process going at any given time.

When I manually click always allow for that process, I get an entry in my keychain dump that looks like this:

entry 1:
    authorizations (6): decrypt derive export_clear export_wrapped mac sign
    don't-require-password
    description: privateKey
    applications (2):
        0: /usr/bin/codesign (OK)

So I'm thinking that I need to use the authorize command in security to pre-autorize codesign for those permissions. The security man page is pretty poor. I can't seem to get it to work using commands like this:

security -v authorize -uew sign | /usr/bin/codesign [code sign vars pointing to app and a specific keychain]

Does anyone have any ideas?

like image 895
cmos Avatar asked Oct 05 '10 14:10

cmos


People also ask

Is keychain password same as Apple ID?

Your login keychain password is normally the same as your user password (the password you use to log in to the computer). At login, if your keychain password somehow differs from your user password, it doesn't automatically unlock, and you're asked to enter the keychain's password.

What is keychain access password on Mac?

A keychain password is the master password for your Mac's "Keychain Access" app, which stores your login information for websites and accounts across the internet. When you attempt to log into one of these websites, your Mac might ask you for the keychain password, in order to retrieve your login information.


1 Answers

If you import your certificate into your keychain with a -A it will allow access to all programs trying to request that cert. This isn't very secure but works. You can also use -T to limit it to a particular app. Look up the import param found in man security.

like image 86
cmos Avatar answered Sep 21 '22 12:09

cmos