2013-10-17 33 views
0

我试图找出如果IA5STRING格式(ASN.1)实际上相当于ASCII。也就是说,我应该能够做到:IA5STRING ASN.1编码格式:在应用程序内购买收据验证和解码

NSString *ia5StringWithDate = [[NSString alloc] initWithBytes:is5StringData length:is5StringLength encoding:NSASCIIStringEncoding]; 

这里是上下文:

我从this apple doc 工作,并从2013 WWDC会议“使用收据来保护您的数字销售”。

我已经得到了大部分代码(未经测试!),但试图实际取出收据的应用内购买部分时,应用内购买收据字段购买日期被描述为一个RFC 3339日期。鉴于我有一个RFC 3339日期作为NSString,我想我有一个方法将NSString日期转换为NSDate(请参阅How to format convert the string 2013-01-27T02:31:47+08:00 into NSDate)。但是,购买日期的格式为IA5STRING (请参阅this reference)。

the Wiki page for IA5STRING,它说:“这些角色通常等同于ASCII字母的第一个128个字符”。我不喜欢“普遍”的声音。

This reference表明IA5STRING的是相同的ASCII。

想法?

谢谢, 克里斯。

+0

您不妨去看看我的类iOS的下做收货验证:https://github.com/rmaddy/VerifyStoreReceiptiOS – rmaddy

+0

谢谢。这有助于。我看到你已经使用NSASCIIStringEncoding编码将IA5STRING日期​​转换为NSString。很高兴看到它的作品。是否有没有使用asn1c来生成ASN.1解析器的原因? –

+0

我没有编写ASN解析器代码。我从我引用的其他项目中获得了这一点。 – rmaddy

回答

3

为ASN.1 IA5String的字符集是Unicode的前128个字符。这相当于US ASCII。具体细节可参见ITU-T Rec。 X.680,它定义了IA5String类型。