을 구문 분석하는 동안 애플의 영수증 검증 프로그래밍 가이드 다음 currently implementing 지역 영수증 검증입니다. 내가 테스트 확인을받을 그러나 나는 다음과 같이 구문 분석 할 때오류 "예상 : [UNIVERSAL 17], 기대 실패 (TN = 0, TM = 0)"ASN.1 신청 접수
rval = asn_DEF_Payload.ber_decoder(NULL, &asn_DEF_Payload, (void **)&payload, pld, pld_sz, 0);
내가
Expected: [UNIVERSAL 17], expectation failed (tn=0, tm=0)
(
ASN_DEBUG()
에서 출력) 오류 다음과 같은 혜택을받을 수있는 (즉, 가이드의 1-5 목록에 제안) 할 수
asn_DEF_Payload
(및 기타 C 코드)은 ans1c
(ASN.1 컴파일러, v0.9.24)에 의해 생성되었으며 가이드 1-1을 입력으로 사용합니다. 먼저 NSBundle appStoreReceiptURL
으로 표시된 URL에서 NSData dataWithContentsOfURL
으로 영수증을 읽었습니다. pld
및 pld_sz
은 각각 데이터 bytes
및 length
입니다.
이 오류는 무엇을 나타내며 어떻게 피할 수 있습니까?
업데이트 테스트 레서피의 시작 부분에 태그 17 (SET 및 SET OF)가있을 때 파서가 태그 16 (SEQUENCE 및 SEQUENCE OF)을 보는 것처럼 보입니다. 목록 1-1의 Payload 정의는 실제로 SET를 참조합니다.
업데이트 나는 asn1c
과 함께 제공되는 변환기를 다음과 같이 관리합니다.
export CFLAGS=-DPDU=Payload
make -f Makefile.am.sample
./progname -h
또한 so처럼 OS X에 물리적 iOS 장비에서 영수증을 복사하는 데 성공했다. 지금 ./progname -d -iber -otext receipt
와 영수증을 덤프 할 때 나는이 출력을 얻을 :
AD: Processing receipt
AD: Decoding 4704 bytes
AD: decode(0) consumed 0+0b (4704), code 2
AD: Clean up partially decoded structure
AD: ofp 1, no=0, oo=0, dbl=0
receipt.ber: Decode failed past byte 0: Input processing error
UPDATE를 흠, this 온라인 ASN.1 디코더는 내 테스트 요리법은 잘 덤프 수 있습니다. (그것은 시퀀스로 시작합니다.) 분명히 서명하고 내 실수는 서명 된 봉투 안쪽에서 페이로드를 가져와야한다는 것입니다 ...