Module: wine Branch: master Commit: 462af2f91be09e869ab9ca92f7515956db7661fe URL: http://source.winehq.org/git/wine.git/?a=commit;h=462af2f91be09e869ab9ca92f7...
Author: Juan Lang juan.lang@gmail.com Date: Mon Oct 18 14:19:01 2010 -0700
crypt32: Test more encoded string to string conversions.
---
dlls/crypt32/tests/str.c | 138 +++++++++++++++++++++++++++++++-------------- 1 files changed, 95 insertions(+), 43 deletions(-)
diff --git a/dlls/crypt32/tests/str.c b/dlls/crypt32/tests/str.c index 614039e..573219d 100644 --- a/dlls/crypt32/tests/str.c +++ b/dlls/crypt32/tests/str.c @@ -312,24 +312,70 @@ static void test_CertRDNValueToStrW(void) }
static void test_NameToStrConversionA(PCERT_NAME_BLOB pName, DWORD dwStrType, - LPCSTR expected) + LPCSTR expected, BOOL todo) { char buffer[2000] = { 0 }; DWORD i;
i = pCertNameToStrA(X509_ASN_ENCODING, pName, dwStrType, NULL, 0); - ok(i == strlen(expected) + 1, "Expected %d chars, got %d\n", - lstrlenA(expected) + 1, i); + if (todo) + todo_wine + ok(i == strlen(expected) + 1, "Expected %d chars, got %d\n", + lstrlenA(expected) + 1, i); + else + ok(i == strlen(expected) + 1, "Expected %d chars, got %d\n", + lstrlenA(expected) + 1, i); i = pCertNameToStrA(X509_ASN_ENCODING,pName, dwStrType, buffer, sizeof(buffer)); - ok(i == strlen(expected) + 1, "Expected %d chars, got %d\n", - lstrlenA(expected) + 1, i); - ok(!strcmp(buffer, expected), "Expected %s, got %s\n", expected, buffer); + if (todo) + todo_wine + ok(i == strlen(expected) + 1, "Expected %d chars, got %d\n", + lstrlenA(expected) + 1, i); + else + ok(i == strlen(expected) + 1, "Expected %d chars, got %d\n", + lstrlenA(expected) + 1, i); + if (todo) + todo_wine + ok(!strcmp(buffer, expected), "Expected %s, got %s\n", expected, + buffer); + else + ok(!strcmp(buffer, expected), "Expected %s, got %s\n", expected, + buffer); }
+static BYTE encodedSimpleCN[] = { +0x30,0x0c,0x31,0x0a,0x30,0x08,0x06,0x03,0x55,0x04,0x03,0x13,0x01,0x31 }; +static BYTE encodedSingleQuotedCN[] = { 0x30,0x0e,0x31,0x0c,0x30,0x0a, + 0x06,0x03,0x55,0x04,0x03,0x13,0x03,0x27,0x31,0x27 }; +static BYTE encodedSpacedCN[] = { 0x30,0x0e,0x31,0x0c,0x30,0x0a,0x06,0x03, + 0x55,0x04,0x03,0x13,0x03,0x20,0x31,0x20 }; +static BYTE encodedQuotedCN[] = { 0x30,0x11,0x31,0x0f,0x30,0x0d,0x06,0x03, + 0x55, 0x04,0x03,0x1e,0x06,0x00,0x22,0x00,0x31,0x00,0x22, }; +static BYTE encodedMultipleAttrCN[] = { 0x30,0x0e,0x31,0x0c,0x30,0x0a, + 0x06,0x03,0x55,0x04,0x03,0x13,0x03,0x31,0x2b,0x32 }; +static BYTE encodedCommaCN[] = { +0x30,0x0e,0x31,0x0c,0x30,0x0a,0x06,0x03,0x55,0x04,0x03,0x13,0x03,0x61,0x2c, +0x62 }; +static BYTE encodedEqualCN[] = { +0x30,0x0e,0x31,0x0c,0x30,0x0a,0x06,0x03,0x55,0x04,0x03,0x13,0x03,0x61,0x3d, +0x62 }; +static BYTE encodedLessThanCN[] = { +0x30,0x0d,0x31,0x0b,0x30,0x09,0x06,0x03,0x55,0x04,0x03,0x1e,0x02,0x00,0x3c +}; +static BYTE encodedGreaterThanCN[] = { +0x30,0x0d,0x31,0x0b,0x30,0x09,0x06,0x03,0x55,0x04,0x03,0x1e,0x02,0x00,0x3e +}; +static BYTE encodedHashCN[] = { +0x30,0x0d,0x31,0x0b,0x30,0x09,0x06,0x03,0x55,0x04,0x03,0x1e,0x02,0x00,0x23 +}; +static BYTE encodedSemiCN[] = { +0x30,0x0d,0x31,0x0b,0x30,0x09,0x06,0x03,0x55,0x04,0x03,0x1e,0x02,0x00,0x3b +}; + static void test_CertNameToStrA(void) { PCCERT_CONTEXT context; + CERT_NAME_BLOB blob;
if (!pCertNameToStrA) { @@ -362,28 +408,63 @@ static void test_CertNameToStrA(void) ret, GetLastError());
test_NameToStrConversionA(&context->pCertInfo->Issuer, - CERT_SIMPLE_NAME_STR, issuerStr); + CERT_SIMPLE_NAME_STR, issuerStr, FALSE); test_NameToStrConversionA(&context->pCertInfo->Issuer, CERT_SIMPLE_NAME_STR | CERT_NAME_STR_SEMICOLON_FLAG, - issuerStrSemicolon); + issuerStrSemicolon, FALSE); test_NameToStrConversionA(&context->pCertInfo->Issuer, CERT_SIMPLE_NAME_STR | CERT_NAME_STR_CRLF_FLAG, - issuerStrCRLF); + issuerStrCRLF, FALSE); test_NameToStrConversionA(&context->pCertInfo->Subject, - CERT_OID_NAME_STR, subjectStr); + CERT_OID_NAME_STR, subjectStr, FALSE); test_NameToStrConversionA(&context->pCertInfo->Subject, CERT_OID_NAME_STR | CERT_NAME_STR_SEMICOLON_FLAG, - subjectStrSemicolon); + subjectStrSemicolon, FALSE); test_NameToStrConversionA(&context->pCertInfo->Subject, CERT_OID_NAME_STR | CERT_NAME_STR_CRLF_FLAG, - subjectStrCRLF); + subjectStrCRLF, FALSE); test_NameToStrConversionA(&context->pCertInfo->Subject, - CERT_X500_NAME_STR, x500SubjectStr); + CERT_X500_NAME_STR, x500SubjectStr, FALSE); test_NameToStrConversionA(&context->pCertInfo->Subject, - CERT_X500_NAME_STR | CERT_NAME_STR_SEMICOLON_FLAG | CERT_NAME_STR_REVERSE_FLAG, x500SubjectStrSemicolonReverse); + CERT_X500_NAME_STR | CERT_NAME_STR_SEMICOLON_FLAG | CERT_NAME_STR_REVERSE_FLAG, + x500SubjectStrSemicolonReverse, FALSE);
CertFreeCertificateContext(context); } + blob.pbData = encodedSimpleCN; + blob.cbData = sizeof(encodedSimpleCN); + test_NameToStrConversionA(&blob, CERT_X500_NAME_STR, "CN=1", FALSE); + blob.pbData = encodedSingleQuotedCN; + blob.cbData = sizeof(encodedSingleQuotedCN); + test_NameToStrConversionA(&blob, CERT_X500_NAME_STR, "CN='1'", FALSE); + blob.pbData = encodedSpacedCN; + blob.cbData = sizeof(encodedSpacedCN); + test_NameToStrConversionA(&blob, CERT_X500_NAME_STR, "CN=" 1 "", TRUE); + blob.pbData = encodedQuotedCN; + blob.cbData = sizeof(encodedQuotedCN); + test_NameToStrConversionA(&blob, CERT_X500_NAME_STR, "CN="""1"""", + TRUE); + blob.pbData = encodedMultipleAttrCN; + blob.cbData = sizeof(encodedMultipleAttrCN); + test_NameToStrConversionA(&blob, CERT_X500_NAME_STR, "CN="1+2"", TRUE); + blob.pbData = encodedCommaCN; + blob.cbData = sizeof(encodedCommaCN); + test_NameToStrConversionA(&blob, CERT_X500_NAME_STR, "CN="a,b"", TRUE); + blob.pbData = encodedEqualCN; + blob.cbData = sizeof(encodedEqualCN); + test_NameToStrConversionA(&blob, CERT_X500_NAME_STR, "CN="a=b"", TRUE); + blob.pbData = encodedLessThanCN; + blob.cbData = sizeof(encodedLessThanCN); + test_NameToStrConversionA(&blob, CERT_X500_NAME_STR, "CN="<"", TRUE); + blob.pbData = encodedGreaterThanCN; + blob.cbData = sizeof(encodedGreaterThanCN); + test_NameToStrConversionA(&blob, CERT_X500_NAME_STR, "CN=">"", TRUE); + blob.pbData = encodedHashCN; + blob.cbData = sizeof(encodedHashCN); + test_NameToStrConversionA(&blob, CERT_X500_NAME_STR, "CN="#"", TRUE); + blob.pbData = encodedSemiCN; + blob.cbData = sizeof(encodedSemiCN); + test_NameToStrConversionA(&blob, CERT_X500_NAME_STR, "CN=";"", TRUE); }
static void test_NameToStrConversionW(PCERT_NAME_BLOB pName, DWORD dwStrType, @@ -470,35 +551,6 @@ struct StrToNameA const BYTE *encoded; };
-static const BYTE encodedSimpleCN[] = { -0x30,0x0c,0x31,0x0a,0x30,0x08,0x06,0x03,0x55,0x04,0x03,0x13,0x01,0x31 }; -static const BYTE encodedSingleQuotedCN[] = { 0x30,0x0e,0x31,0x0c,0x30,0x0a, - 0x06,0x03,0x55,0x04,0x03,0x13,0x03,0x27,0x31,0x27 }; -static const BYTE encodedSpacedCN[] = { 0x30,0x0e,0x31,0x0c,0x30,0x0a,0x06,0x03, - 0x55,0x04,0x03,0x13,0x03,0x20,0x31,0x20 }; -static const BYTE encodedQuotedCN[] = { 0x30,0x11,0x31,0x0f,0x30,0x0d,0x06,0x03, - 0x55, 0x04,0x03,0x1e,0x06,0x00,0x22,0x00,0x31,0x00,0x22, }; -static const BYTE encodedMultipleAttrCN[] = { 0x30,0x0e,0x31,0x0c,0x30,0x0a, - 0x06,0x03,0x55,0x04,0x03,0x13,0x03,0x31,0x2b,0x32 }; -static const BYTE encodedCommaCN[] = { -0x30,0x0e,0x31,0x0c,0x30,0x0a,0x06,0x03,0x55,0x04,0x03,0x13,0x03,0x61,0x2c, -0x62 }; -static const BYTE encodedEqualCN[] = { -0x30,0x0e,0x31,0x0c,0x30,0x0a,0x06,0x03,0x55,0x04,0x03,0x13,0x03,0x61,0x3d, -0x62 }; -static const BYTE encodedLessThanCN[] = { -0x30,0x0d,0x31,0x0b,0x30,0x09,0x06,0x03,0x55,0x04,0x03,0x1e,0x02,0x00,0x3c -}; -static const BYTE encodedGreaterThanCN[] = { -0x30,0x0d,0x31,0x0b,0x30,0x09,0x06,0x03,0x55,0x04,0x03,0x1e,0x02,0x00,0x3e -}; -static const BYTE encodedHashCN[] = { -0x30,0x0d,0x31,0x0b,0x30,0x09,0x06,0x03,0x55,0x04,0x03,0x1e,0x02,0x00,0x23 -}; -static const BYTE encodedSemiCN[] = { -0x30,0x0d,0x31,0x0b,0x30,0x09,0x06,0x03,0x55,0x04,0x03,0x1e,0x02,0x00,0x3b -}; - static const struct StrToNameA namesA[] = { { "CN=1", sizeof(encodedSimpleCN), encodedSimpleCN }, { "CN="1"", sizeof(encodedSimpleCN), encodedSimpleCN },