2014-07-11 3 views
1

을 구문 분석하는 동안 애플의 영수증 검증 프로그래밍 가이드 다음 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으로 영수증을 읽었습니다. pldpld_sz은 각각 데이터 byteslength입니다.

이 오류는 무엇을 나타내며 어떻게 피할 수 있습니까?

업데이트 테스트 레서피의 시작 부분에 태그 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 디코더는 내 테스트 요리법은 잘 덤프 수 있습니다. (그것은 시퀀스로 시작합니다.) 분명히 서명하고 내 실수는 서명 된 봉투 안쪽에서 페이로드를 가져와야한다는 것입니다 ...

답변

0

글쎄,이 솔루션은 실제로 저를 쳐다보고 있습니다. 얼굴 : 소개 및 접수 확인 로컬로 Apple 영수증 확인 프로그래밍 가이드 및 그 그림 1-1.

최 외측부 (도면에 표시된 영수증)의 페이로드 ASN.1 (추상 구문 표기법 1)를 이용하여 인코딩하여 ITU에 의해 정의 된 바와 같이, RFC 2315에 의해 정의하는 PKCS # 7 컨테이너 -T X.690.

서명을 검사하면 (목록 1-4) 페이로드 (목록 1-5의 구문 분석 용)에 액세스 할 수 있습니다.

관련 문제