¿Qué son los datos binarys alnetworkingedor del plist en un file de perfil de aprovisionamiento?

La estructura de un file .mobileprovision se ve algo como esto:

<!-- small binary data --> <?xml version="1.0" encoding="UTF-8"?> <!-- plist data --> </plist> <!-- large binary data --> 

Tengo algunas preguntas en torno a esto:

  1. ¿Qué son estos datos binarys?
  2. ¿Es útil?
  3. ¿Cómo puedo extraer el plist de un file .mobileprovision sin search límites XML?

Específicamente, consideraré esta pregunta como respondida (y otorgaré la bonificación +100 junto con ella) cuando se respondan tanto Q1 como Q3.

Finalmente obtuve la respuesta de una respuesta a otra pregunta sobre SO.

Básicamente, el file .mobileprovision es un file XML encryption de CMS . Se puede decodificar utilizando security en OS X:

 security cms -D -i /path/to/profile.mobileprovision 

No tengo una respuesta a su pregunta inicial, pero puedo explicar cómo extraer el certificate de firma del file .mobileprovision:

  1. La parte plist del .mobileprovision tiene una key 'DeveloperCertificates', cuyo valor es una matriz de NSData.
  2. Cada NSData es un file .cer: el certificate de firma que está buscando.

Tengo un script de shell corto para extraer el tema del certificate de firma directamente del file .mobileprovision aquí: https://gist.github.com/2147247 – el script funciona con un solo certificate en el array mencionado anteriormente, que debería ser el caso común

Como puede ver en el guión, no tengo respuesta a su tercera pregunta, solo estoy cortando la primera línea y todo después de la label de cierre.

El file es básicamente la key de distribución pública + la cadena de certificates pública de Apple + los dispositivos permitidos que se pueden instalar en – siempre que el file IPA también esté firmado.

Su key está codificada en la input de plist. y los datos binarys después del plist son certificates públicos asociados: el certificate público de Apple Root (descargable desde Apple y la Autoridad de certificación de Apple iPhone (descargable a través de su portal de Apple).

[Actualizado según los comentarios]

El objective real es elaborar el "nombre común" del certificate que se usa en mi file de provisión mobile para que la aplicación pueda volver a firmarse.

Dentro del file de aprovisionamiento mobile, la label ApplicationIdentifierPrefix contiene el ID de usuario del certificate. Este número podría usarse para encontrar el certificate en la herramienta llavero.

Así de forma manual, los pasos serían:

  1. Extraiga el número ApplicationIdentifierPrefix del file .mobileprovision
  2. Abre la aplicación llavero. Mira a través de cada inicio de session / certificate para encontrar el que coincida UserId

Para automatizar el process

  1. ejecute un elegante command unix para extraer la ID
  2. ejecute security find-certificate -a >a.out luego grep para la ID. Luego, encuentre el nombre común del mismo logging.

utilizar

 security cms -D -i /path/to/profile.mobileprovision 

si obtiene la security: SecPolicySetValue: One or more parameters passed to a function were not valid post de error security: SecPolicySetValue: One or more parameters passed to a function were not valid simplemente canalice el error a /dev/null

 security cms -D -i /path/to/profile.mobileprovision 2> /dev/null