X509_REQ* UPKCS10::readPKCS10(const UString& x, const char* format) { U_TRACE(1, "UPKCS10::readPKCS10(%.*S,%S)", U_STRING_TO_TRACE(x), format) BIO* in; UString tmp = x; X509_REQ* _request = 0; if (format == 0) format = (x.isBinary() ? "DER" : "PEM"); if (U_STREQ(format, "PEM") && U_STRNCMP(x.data(), "-----BEGIN CERTIFICATE REQUEST-----")) { unsigned length = x.size(); UString buffer(length); if (UBase64::decode(x.data(), length, buffer) == false) goto next; tmp = buffer; format = "DER"; } next: in = (BIO*) U_SYSCALL(BIO_new_mem_buf, "%p,%d", U_STRING_TO_PARAM(tmp)); _request = (X509_REQ*) (U_STREQ(format, "PEM") ? U_SYSCALL(PEM_read_bio_X509_REQ, "%p,%p,%p,%p", in, 0, 0, 0) : U_SYSCALL(d2i_X509_REQ_bio, "%p,%p", in, 0)); (void) U_SYSCALL(BIO_free, "%p", in); U_RETURN_POINTER(_request, X509_REQ); }
int main () { test_strncmp (); /* Test comparison with non-BMP characters. */ { static const UNIT input1[] = { 0x1D51F, 0 }; static const UNIT input2[] = { 0xFEFF, 0 }; ASSERT (U_STRNCMP (input1, input2, 1) > 0); ASSERT (U_STRNCMP (input2, input1, 1) < 0); ASSERT (U_STRNCMP (input1, input2, 2) > 0); ASSERT (U_STRNCMP (input2, input1, 2) < 0); ASSERT (U_STRNCMP (input1, input2, 1000000) > 0); ASSERT (U_STRNCMP (input2, input1, 1000000) < 0); } return 0; }
int main () { test_strncmp (); /* Test comparison with non-BMP characters. */ { static const UNIT input1[] = { 0xF0, 0x9D, 0x94, 0x9E, 0 }; static const UNIT input2[] = { 0xEF, 0xBB, 0xBF, 0 }; ASSERT (U_STRNCMP (input1, input2, 1) > 0); ASSERT (U_STRNCMP (input2, input1, 1) < 0); ASSERT (U_STRNCMP (input1, input2, 2) > 0); ASSERT (U_STRNCMP (input2, input1, 2) < 0); ASSERT (U_STRNCMP (input1, input2, 3) > 0); ASSERT (U_STRNCMP (input2, input1, 3) < 0); ASSERT (U_STRNCMP (input1, input2, 4) > 0); ASSERT (U_STRNCMP (input2, input1, 4) < 0); ASSERT (U_STRNCMP (input1, input2, 5) > 0); ASSERT (U_STRNCMP (input2, input1, 5) < 0); ASSERT (U_STRNCMP (input1, input2, 1000000) > 0); ASSERT (U_STRNCMP (input2, input1, 1000000) < 0); } return 0; }