jl145: #i97653# subject name of certificate are not correct displayed if they use special characters

This commit is contained in:
Joachim Lingner
2009-12-08 15:52:14 +01:00
parent d3af929cd3
commit cbb9a21b81

View File

@@ -263,24 +263,27 @@ sal_Int16 SAL_CALL X509Certificate_MSCryptImpl :: getVersion() throw ( ::com::su
} }
} }
::rtl::OUString SAL_CALL X509Certificate_MSCryptImpl :: getSubjectName() throw ( ::com::sun::star::uno::RuntimeException) { ::rtl::OUString SAL_CALL X509Certificate_MSCryptImpl :: getSubjectName() throw ( ::com::sun::star::uno::RuntimeException)
if( m_pCertContext != NULL && m_pCertContext->pCertInfo != NULL ) { {
char* subject ; if( m_pCertContext != NULL && m_pCertContext->pCertInfo != NULL )
{
wchar_t* subject ;
DWORD cbSubject ; DWORD cbSubject ;
cbSubject = CertNameToStr( cbSubject = CertNameToStrW(
X509_ASN_ENCODING | PKCS_7_ASN_ENCODING , X509_ASN_ENCODING | PKCS_7_ASN_ENCODING ,
&( m_pCertContext->pCertInfo->Subject ), &( m_pCertContext->pCertInfo->Subject ),
CERT_X500_NAME_STR | CERT_NAME_STR_REVERSE_FLAG , CERT_X500_NAME_STR | CERT_NAME_STR_REVERSE_FLAG ,
NULL, 0 NULL, 0
) ; ) ;
if( cbSubject != 0 ) { if( cbSubject != 0 )
subject = new char[ cbSubject ] ; {
subject = new wchar_t[ cbSubject ] ;
if( subject == NULL ) if( subject == NULL )
throw RuntimeException() ; throw RuntimeException() ;
cbSubject = CertNameToStr( cbSubject = CertNameToStrW(
X509_ASN_ENCODING | PKCS_7_ASN_ENCODING , X509_ASN_ENCODING | PKCS_7_ASN_ENCODING ,
&( m_pCertContext->pCertInfo->Subject ), &( m_pCertContext->pCertInfo->Subject ),
CERT_X500_NAME_STR | CERT_NAME_STR_REVERSE_FLAG , CERT_X500_NAME_STR | CERT_NAME_STR_REVERSE_FLAG ,
@@ -292,22 +295,17 @@ sal_Int16 SAL_CALL X509Certificate_MSCryptImpl :: getVersion() throw ( ::com::su
throw RuntimeException() ; throw RuntimeException() ;
} }
// By CP , for correct encoding OUString xSubject(subject);
sal_uInt16 encoding ;
rtl_Locale *pLocale = NULL ;
osl_getProcessLocale( &pLocale ) ;
encoding = osl_getTextEncodingFromLocale( pLocale ) ;
// CP end
if(subject[cbSubject-1] == 0) cbSubject--; //delimit the last 0x00;
OUString xSubject(subject , cbSubject ,encoding ) ; //By CP
delete [] subject ; delete [] subject ;
return replaceTagSWithTagST(xSubject); return replaceTagSWithTagST(xSubject);
} else { } else
{
return OUString() ; return OUString() ;
} }
} else { }
else
{
return OUString() ; return OUString() ;
} }
} }