web-dev-qa-db-ja.com

iOS Passbookパスの署名を確認するにはどうすればよいですか?

新しいiOS6のPassbookアプリケーションは、映画のチケット、クーポン、およびその他の「パス」を追跡し、パス自体は、.pkpass拡張子が付いたファイルパッケージを介してユーザーのデバイスにロードされます。モバイルデバイスにインストールする前にpkpassファイルの整合性を確認するスクリプトを作成しようとしています。また、各pkpassに含まれている暗号化署名を確認しようとしています。 Appleの documentation は、署名が開発者のApple提供のセキュリティ証明書で署名された「PKCS#7分離署名」であることを示しています。 Appleは、署名を行うための独自の signpass アプリケーションを提供し、彼らによるPassbookアプリケーションが検証を行うため、これ以上詳細には触れません。

したがって、signatureファイルで作成されたpkpassファイルの一部を見ると、それらはX.690形式の抽象構文記法1(ASN.1)データ構造のように見えます。ファイルの値を解析できますが、それに関連するものはありません。そう...

私の質問は、これに要約されます。誰かがAppleが作成する「署名」のASN.1データ構造ツリーのリストを知っていますか?その後、うまくいけば、署名ファイルのフォーマットを理解し、Appleの専用アプリの外のパスで分離された署名を確認できます。

4

これについてApple独自のものは何もないようで、適切な検索用語を見つけなければなりませんでした。 「PKCS#7 Detached Signature」ファイルは、RFC 2315「PKCS#7:Cryptographic Message Syntax」の「 SignedData type」です。

SignedData ::= SEQUENCE {
     version Version,
     digestAlgorithms DigestAlgorithmIdentifiers,
     contentInfo ContentInfo,
     certificates
        [0] IMPLICIT ExtendedCertificatesAndCertificates
          OPTIONAL,
     crls
       [1] IMPLICIT CertificateRevocationLists OPTIONAL,
     signerInfos SignerInfos
}
2