jl145: #i97653# subject name of certificate are not correct displayed if they use special characters
This commit is contained in:
@@ -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() ;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user