2013-04-02 3 views
4

Я пытаюсь создать автоматическую сборку для Xcode. До сих пор все работает отлично. Для построения проекта из командной строки Я использую эту командуКак получить имя идентификатора распространения из файла .p12

xcodebuild –project {“xcode_project file path”}–target {“target_name”} –sdk iphoneos – 
configuration Release clean build CODE_SIGN_IDENTITY={$distribution_signing Identity} 
PROVISIONING_PROFILE={UUID for provisioning profile} 

Я хочу принести UUID и CODE_SIGN_IDENTITY динамически,

для UUID Я делаю

UUID=$(grep "<key>UUID</key>" "$PROVISIONING_PROFILE_PATH" -A 1 --binary-files=text | sed -E -e "/<key>/ d" -e "s/(^.*<string>)//" -e "s/(<.*)//") 

Над кодом сценария дает мне UUID любого профиля подготовки.

Я зациклился на получении CODE_SIGN_IDENTITY динамически. Я знаю, что он имеет такую ​​форму, как iPhone Distribution: Developer name

Как извлечь iPhone Distribution: Developer name из файла .p12.

ответ

9

Вы можете использовать утилиту security find-identity командной строки список доступных CodeSigning идентичностей в вашей системе:

/usr/bin/security find-identity -v -p codesigning 
    1) F188B6FD76D83316FCB2E594940XXXXXXXXXXXXE "Mac App Distribution" 
    2) ADDB5E33AC36FEB2CA0F1C3BC71XXXXXXXXXXXXE "iPhone Developer: Stuart M (xxxxx)" 
2 valid identities found 

Опция -v ограничивает список только «действительные» идентичности, и -p codesigning фильтров его только CodeSigning тождества, если у вас несколько.

+0

Привет стюарт. Спасибо за быстрый ответ. Эта команда перечисляет идентификаторы, но она перечисляет все, и поскольку я хочу получить эту информацию из требуемого файла .p12, как я смогу достичь этого, любой скрипт для этого? –

+0

Я не знаю, как получить идентификаторы кода из файла '.p12'. Но 'security find-identity' действительно принимает файл Keychain OS X как необязательный аргумент, поэтому вместо файла' .p12' вы можете создать отдельный Keychain, содержащий только ваш код, назначающий закрытый ключ + cert, и использовать его. –

+0

, поэтому вы подразумеваете, что для каждого нового добавленного сертификата мне нужно создать новый брелок для его сохранения? –

2

Этот бит Python работает для меня. Мне не нужно было устанавливать ничего лишнего, чтобы запустить это на Mac.

# load everything. Probably not the best idea in production... 
from OpenSSL.crypto import * 

p12 = load_pkcs12(file("./path/to/your.p12", 'rb').read(), 'YOUR_P12_PASSWORD') 
print(p12.get_friendlyname()) 

Кредит этот ответ: Python: reading a pkcs12 certificate with pyOpenSSL.crypto