Вот как это работает
if (asn1obj->type == V_ASN1_UTCTIME) {
NSLog(@"--------------------------->Retireve the signing time");
BIO * time = data=BIO_new(BIO_s_bio());
BIO_printf(bio_out,"\n");
i = ASN1_UTCTIME_print(bio_out,asn1obj->value.utctime); //used to display in console
i = ASN1_UTCTIME_print(time,asn1obj->value.utctime); //used to hold in BIO object
BIO_printf(bio_out,"\n");
BIO *mem = BIO_new(BIO_s_mem());
//pass this mem BIO to hold the data
i = ASN1_UTCTIME_print(mem,asn1obj->value.utctime); //converting asn1 to memory BIO
//Extract the BUF_MEM structure from a memory BIO and then free up the BIO:
BUF_MEM *bptr;
BIO_get_mem_ptr(mem, &bptr); //converting memory BIO to BUF_MEM
BIO_set_close(mem, BIO_NOCLOSE); /* So BIO_free() leaves BUF_MEM alone */
char *buff = (char *)malloc(bptr->length); //converting BUF_MEM to Char *
memcpy(buff, bptr->data, bptr->length-1); //to be used later
buff[bptr->length-1] = 0;
NSLog(@"--------------------------->%s",buff); // this is my
// OUTPUT : Apr 5 14:30:53 2012 GM
NSLog(@"--------------------------->End");
BIO_free_all(mem);
}
Надеюсь, это поможет:)