diff options
Diffstat (limited to 'xmlsecurity')
3 files changed, 30 insertions, 42 deletions
diff --git a/xmlsecurity/source/xmlsec/mscrypt/securityenvironment_mscryptimpl.cxx b/xmlsecurity/source/xmlsec/mscrypt/securityenvironment_mscryptimpl.cxx index 8df7520a9897..44b430fe939a 100644 --- a/xmlsecurity/source/xmlsec/mscrypt/securityenvironment_mscryptimpl.cxx +++ b/xmlsecurity/source/xmlsec/mscrypt/securityenvironment_mscryptimpl.cxx @@ -372,7 +372,7 @@ Sequence< Reference < XCertificate > > SecurityEnvironment_MSCryptImpl::getPerso CertEnumSystemStore(CERT_SYSTEM_STORE_CURRENT_USER, nullptr, nullptr, cert_enum_system_store_callback); #endif - hSystemKeyStore = CertOpenSystemStore( 0, "MY" ) ; + hSystemKeyStore = CertOpenSystemStoreW( 0, L"MY" ) ; if( hSystemKeyStore != nullptr ) { pCertContext = CertEnumCertificatesInStore( hSystemKeyStore, pCertContext ); while (pCertContext) @@ -420,7 +420,6 @@ Sequence< Reference < XCertificate > > SecurityEnvironment_MSCryptImpl::getPerso Reference< XCertificate > SecurityEnvironment_MSCryptImpl::getCertificate( const OUString& issuerName, const Sequence< sal_Int8 >& serialNumber ) { unsigned int i ; - LPCSTR pszName ; X509Certificate_MSCryptImpl *xcert = nullptr ; PCCERT_CONTEXT pCertContext = nullptr ; HCERTSTORE hCertStore = nullptr ; @@ -434,10 +433,9 @@ Reference< XCertificate > SecurityEnvironment_MSCryptImpl::getCertificate( const encoding = osl_getTextEncodingFromLocale( pLocale ) ; //Create cert info from issue and serial - OString oissuer = OUStringToOString( issuerName , encoding ) ; - pszName = oissuer.getStr() ; + LPCWSTR pszName = SAL_W( issuerName.getStr() ); - if( ! ( CertStrToName( + if( ! ( CertStrToNameW( X509_ASN_ENCODING | PKCS_7_ASN_ENCODING , pszName , CERT_X500_NAME_STR | CERT_NAME_STR_REVERSE_FLAG | CERT_NAME_STR_ENABLE_UTF8_UNICODE_FLAG, @@ -452,7 +450,7 @@ Reference< XCertificate > SecurityEnvironment_MSCryptImpl::getCertificate( const if(!certInfo.Issuer.pbData) throw RuntimeException() ; - if( ! ( CertStrToName( + if( ! ( CertStrToNameW( X509_ASN_ENCODING | PKCS_7_ASN_ENCODING , pszName , CERT_X500_NAME_STR | CERT_NAME_STR_REVERSE_FLAG | CERT_NAME_STR_ENABLE_UTF8_UNICODE_FLAG, @@ -492,19 +490,19 @@ Reference< XCertificate > SecurityEnvironment_MSCryptImpl::getCertificate( const hCertStore = m_hCertStore ; break; case 2: - hCertStore = CertOpenSystemStore( 0, "MY" ) ; + hCertStore = CertOpenSystemStoreW( 0, L"MY" ) ; if(hCertStore == nullptr || !m_bEnableDefault) continue ; break; case 3: - hCertStore = CertOpenSystemStore( 0, "Root" ) ; + hCertStore = CertOpenSystemStoreW( 0, L"Root" ) ; if(hCertStore == nullptr || !m_bEnableDefault) continue ; break; case 4: - hCertStore = CertOpenSystemStore( 0, "Trust" ) ; + hCertStore = CertOpenSystemStoreW( 0, L"Trust" ) ; if(hCertStore == nullptr || !m_bEnableDefault) continue ; break; case 5: - hCertStore = CertOpenSystemStore( 0, "CA" ) ; + hCertStore = CertOpenSystemStoreW( 0, L"CA" ) ; if(hCertStore == nullptr || !m_bEnableDefault) continue ; break; default: @@ -1055,7 +1053,7 @@ xmlSecKeysMngrPtr SecurityEnvironment_MSCryptImpl::createKeysManager() { */ if( defaultEnabled() ) { //Add system key store into the keys manager. - m_hMySystemStore = CertOpenSystemStore( 0, "MY" ) ; + m_hMySystemStore = CertOpenSystemStoreW( 0, L"MY" ) ; if( m_hMySystemStore != nullptr ) { if( xmlSecMSCryptoAppliedKeysMngrAdoptKeyStore( pKeysMngr, m_hMySystemStore ) < 0 ) { CertCloseStore( m_hMySystemStore, CERT_CLOSE_STORE_CHECK_FLAG ) ; @@ -1065,7 +1063,7 @@ xmlSecKeysMngrPtr SecurityEnvironment_MSCryptImpl::createKeysManager() { } //Add system root store into the keys manager. - m_hRootSystemStore = CertOpenSystemStore( 0, "Root" ) ; + m_hRootSystemStore = CertOpenSystemStoreW( 0, L"Root" ) ; if( m_hRootSystemStore != nullptr ) { if( xmlSecMSCryptoAppliedKeysMngrAdoptTrustedStore( pKeysMngr, m_hRootSystemStore ) < 0 ) { CertCloseStore( m_hRootSystemStore, CERT_CLOSE_STORE_CHECK_FLAG ) ; @@ -1075,7 +1073,7 @@ xmlSecKeysMngrPtr SecurityEnvironment_MSCryptImpl::createKeysManager() { } //Add system trusted store into the keys manager. - m_hTrustSystemStore = CertOpenSystemStore( 0, "Trust" ) ; + m_hTrustSystemStore = CertOpenSystemStoreW( 0, L"Trust" ) ; if( m_hTrustSystemStore != nullptr ) { if( xmlSecMSCryptoAppliedKeysMngrAdoptUntrustedStore( pKeysMngr, m_hTrustSystemStore ) < 0 ) { CertCloseStore( m_hTrustSystemStore, CERT_CLOSE_STORE_CHECK_FLAG ) ; @@ -1085,7 +1083,7 @@ xmlSecKeysMngrPtr SecurityEnvironment_MSCryptImpl::createKeysManager() { } //Add system CA store into the keys manager. - m_hCaSystemStore = CertOpenSystemStore( 0, "CA" ) ; + m_hCaSystemStore = CertOpenSystemStoreW( 0, L"CA" ) ; if( m_hCaSystemStore != nullptr ) { if( xmlSecMSCryptoAppliedKeysMngrAdoptUntrustedStore( pKeysMngr, m_hCaSystemStore ) < 0 ) { CertCloseStore( m_hCaSystemStore, CERT_CLOSE_STORE_CHECK_FLAG ) ; diff --git a/xmlsecurity/source/xmlsec/mscrypt/seinitializer_mscryptimpl.cxx b/xmlsecurity/source/xmlsec/mscrypt/seinitializer_mscryptimpl.cxx index 72b50e292079..6fd3bdc85c24 100644 --- a/xmlsecurity/source/xmlsec/mscrypt/seinitializer_mscryptimpl.cxx +++ b/xmlsecurity/source/xmlsec/mscrypt/seinitializer_mscryptimpl.cxx @@ -50,13 +50,14 @@ cssu::Reference< cssxc::XXMLSecurityContext > SAL_CALL { const char* n_pCertStore ; HCERTSTORE n_hStoreHandle ; + OString sCertDir; //Initialize the crypto engine if( sCertDB.getLength() > 0 ) { - OString sCertDir(sCertDB.getStr(), sCertDB.getLength(), RTL_TEXTENCODING_ASCII_US); + sCertDir = OString(sCertDB.getStr(), sCertDB.getLength(), RTL_TEXTENCODING_ASCII_US); n_pCertStore = sCertDir.getStr(); - n_hStoreHandle = CertOpenSystemStore( NULL, n_pCertStore ) ; + n_hStoreHandle = CertOpenSystemStoreW( NULL, SAL_W(sCertDB.getStr())) ; if( n_hStoreHandle == nullptr ) { return nullptr; diff --git a/xmlsecurity/source/xmlsec/mscrypt/x509certificate_mscryptimpl.cxx b/xmlsecurity/source/xmlsec/mscrypt/x509certificate_mscryptimpl.cxx index 7fcc699b8a25..c45b541cf3d7 100644 --- a/xmlsecurity/source/xmlsec/mscrypt/x509certificate_mscryptimpl.cxx +++ b/xmlsecurity/source/xmlsec/mscrypt/x509certificate_mscryptimpl.cxx @@ -205,9 +205,7 @@ css::uno::Sequence< sal_Int8 > SAL_CALL X509Certificate_MSCryptImpl::getSerialNu OUString SAL_CALL X509Certificate_MSCryptImpl::getIssuerName() { if( m_pCertContext != nullptr && m_pCertContext->pCertInfo != nullptr ) { - DWORD cbIssuer ; - - cbIssuer = CertNameToStr( + DWORD cchIssuer = CertNameToStrW( X509_ASN_ENCODING | PKCS_7_ASN_ENCODING , &( m_pCertContext->pCertInfo->Issuer ), CERT_X500_NAME_STR | CERT_NAME_STR_REVERSE_FLAG , @@ -215,28 +213,22 @@ OUString SAL_CALL X509Certificate_MSCryptImpl::getIssuerName() { ) ; // Here the cbIssuer count the last 0x00 , take care. - if( cbIssuer != 0 ) { - auto issuer = std::unique_ptr<char[]>(new char[ cbIssuer ]); + if( cchIssuer != 0 ) { + auto issuer = std::unique_ptr<wchar_t[]>(new wchar_t[ cchIssuer ]); - cbIssuer = CertNameToStr( + cchIssuer = CertNameToStrW( X509_ASN_ENCODING | PKCS_7_ASN_ENCODING , &( m_pCertContext->pCertInfo->Issuer ), CERT_X500_NAME_STR | CERT_NAME_STR_REVERSE_FLAG , - issuer.get(), cbIssuer + issuer.get(), cchIssuer ) ; - if( cbIssuer <= 0 ) { + if( cchIssuer <= 0 ) { throw RuntimeException() ; } - // for correct encoding - sal_uInt16 encoding ; - rtl_Locale *pLocale = nullptr ; - osl_getProcessLocale( &pLocale ) ; - encoding = osl_getTextEncodingFromLocale( pLocale ) ; - - if(issuer.get()[cbIssuer-1] == 0) cbIssuer--; //delimit the last 0x00; - OUString xIssuer(issuer.get() , cbIssuer ,encoding ) ; + if(issuer.get()[cchIssuer -1] == 0) cchIssuer--; //delimit the last 0x00; + OUString xIssuer(SAL_U(issuer.get()), cchIssuer) ; return replaceTagSWithTagST(xIssuer); } else { @@ -251,32 +243,29 @@ OUString SAL_CALL X509Certificate_MSCryptImpl::getSubjectName() { if( m_pCertContext != nullptr && m_pCertContext->pCertInfo != nullptr ) { - DWORD cbSubject ; - - cbSubject = CertNameToStrW( + DWORD cchSubject = CertNameToStrW( X509_ASN_ENCODING | PKCS_7_ASN_ENCODING , &( m_pCertContext->pCertInfo->Subject ), CERT_X500_NAME_STR | CERT_NAME_STR_REVERSE_FLAG , nullptr, 0 ) ; - if( cbSubject != 0 ) + if( cchSubject != 0 ) { - auto subject = std::unique_ptr<wchar_t[]>(new wchar_t[ cbSubject ]); + auto subject = std::unique_ptr<wchar_t[]>(new wchar_t[ cchSubject ]); - cbSubject = CertNameToStrW( + cchSubject = CertNameToStrW( X509_ASN_ENCODING | PKCS_7_ASN_ENCODING , &( m_pCertContext->pCertInfo->Subject ), CERT_X500_NAME_STR | CERT_NAME_STR_REVERSE_FLAG , - subject.get(), cbSubject + subject.get(), cchSubject ) ; - if( cbSubject <= 0 ) { + if( cchSubject <= 0 ) { throw RuntimeException() ; } - OUString xSubject( - reinterpret_cast<const sal_Unicode*>(subject.get())); + OUString xSubject(SAL_U(subject.get())); return replaceTagSWithTagST(xSubject); } else |