Kaydet (Commit) 9c165fe3 authored tarafından Katarina Behrens's avatar Katarina Behrens Kaydeden (comit) Thorsten Behrens

gpg4libre: When encrypting, show all available GPG keys

(not only private ones)

Change-Id: I3fd248f4cace1ea248267d5696da9cb70940744e
Reviewed-on: https://gerrit.libreoffice.org/41508Tested-by: 's avatarJenkins <ci@libreoffice.org>
Reviewed-by: 's avatarThorsten Behrens <Thorsten.Behrens@CIB.de>
üst 4f6bf3d6
...@@ -99,6 +99,13 @@ interface XSecurityEnvironment : com::sun::star::uno::XInterface ...@@ -99,6 +99,13 @@ interface XSecurityEnvironment : com::sun::star::uno::XInterface
*/ */
string getSecurityEnvironmentInformation ( ); string getSecurityEnvironmentInformation ( );
/**
* List all certificates, private (as returned by getPersonalCertificates) as well as those of other people/orgas
*
* @since LibreOffice 6.0
*/
sequence< com::sun::star::security::XCertificate > getAllCertificates() raises( com::sun::star::uno::SecurityException ) ;
} ; } ;
} ; } ; } ; } ; } ; } ; } ; } ; } ; } ;
......
...@@ -182,7 +182,10 @@ void CertificateChooser::ImplInitialize() ...@@ -182,7 +182,10 @@ void CertificateChooser::ImplInitialize()
uno::Sequence< uno::Reference< security::XCertificate > > xCerts; uno::Sequence< uno::Reference< security::XCertificate > > xCerts;
try try
{ {
xCerts = secEnvironment->getPersonalCertificates(); if ( meAction == UserAction::Sign )
xCerts = secEnvironment->getPersonalCertificates();
else
xCerts = secEnvironment->getAllCertificates();
} }
catch (security::NoPasswordException&) catch (security::NoPasswordException&)
{ {
......
...@@ -64,14 +64,14 @@ OUString SecurityEnvironmentGpg::getSecurityEnvironmentInformation() ...@@ -64,14 +64,14 @@ OUString SecurityEnvironmentGpg::getSecurityEnvironmentInformation()
return OUString(); return OUString();
} }
Sequence< Reference < XCertificate > > SecurityEnvironmentGpg::getPersonalCertificates() Sequence< Reference < XCertificate > > SecurityEnvironmentGpg::getCertificatesImpl( bool bPrivateOnly )
{ {
CertificateImpl* xCert; CertificateImpl* xCert;
std::list< GpgME::Key > keyList; std::list< GpgME::Key > keyList;
std::list< CertificateImpl* > certsList; std::list< CertificateImpl* > certsList;
m_ctx->setKeyListMode(GPGME_KEYLIST_MODE_LOCAL); m_ctx->setKeyListMode(GPGME_KEYLIST_MODE_LOCAL);
GpgME::Error err = m_ctx->startKeyListing("", true); GpgME::Error err = m_ctx->startKeyListing("", bPrivateOnly );
while (!err) { while (!err) {
GpgME::Key k = m_ctx->nextKey(err); GpgME::Key k = m_ctx->nextKey(err);
if (err) if (err)
...@@ -99,6 +99,16 @@ Sequence< Reference < XCertificate > > SecurityEnvironmentGpg::getPersonalCertif ...@@ -99,6 +99,16 @@ Sequence< Reference < XCertificate > > SecurityEnvironmentGpg::getPersonalCertif
return xCertificateSequence; return xCertificateSequence;
} }
Sequence< Reference < XCertificate > > SecurityEnvironmentGpg::getPersonalCertificates()
{
return getCertificatesImpl( true );
}
Sequence< Reference < XCertificate > > SecurityEnvironmentGpg::getAllCertificates()
{
return getCertificatesImpl( false );
}
Reference< XCertificate > SecurityEnvironmentGpg::getCertificate( const OUString& keyId, const Sequence< sal_Int8 >& /*serialNumber*/ ) Reference< XCertificate > SecurityEnvironmentGpg::getCertificate( const OUString& keyId, const Sequence< sal_Int8 >& /*serialNumber*/ )
{ {
CertificateImpl* xCert=nullptr; CertificateImpl* xCert=nullptr;
......
...@@ -67,6 +67,10 @@ public: ...@@ -67,6 +67,10 @@ public:
const OUString& asciiCertificate ) override; const OUString& asciiCertificate ) override;
GpgME::Context& getGpgContext() { return *m_ctx.get(); } GpgME::Context& getGpgContext() { return *m_ctx.get(); }
virtual css::uno::Sequence< css::uno::Reference< css::security::XCertificate > > SAL_CALL getAllCertificates() override;
private:
css::uno::Sequence< css::uno::Reference< css::security::XCertificate > > getCertificatesImpl( bool bPrivateOnly );
} ; } ;
#endif // INCLUDED_XMLSECURITY_SOURCE_GPG_SECURITYENVIRONMENT_HXX #endif // INCLUDED_XMLSECURITY_SOURCE_GPG_SECURITYENVIRONMENT_HXX
......
...@@ -84,6 +84,8 @@ class SecurityEnvironment_MSCryptImpl : public ::cppu::WeakImplHelper< ...@@ -84,6 +84,8 @@ class SecurityEnvironment_MSCryptImpl : public ::cppu::WeakImplHelper<
//Methods from XSecurityEnvironment //Methods from XSecurityEnvironment
virtual css::uno::Sequence< css::uno::Reference< css::security::XCertificate > > SAL_CALL getPersonalCertificates() override; virtual css::uno::Sequence< css::uno::Reference< css::security::XCertificate > > SAL_CALL getPersonalCertificates() override;
virtual css::uno::Sequence< css::uno::Reference< css::security::XCertificate > > SAL_CALL getAllCertificates() override
{ return css::uno::Sequence< css::uno::Reference< css::security::XCertificate > >(); }
virtual css::uno::Reference< css::security::XCertificate > SAL_CALL getCertificate( virtual css::uno::Reference< css::security::XCertificate > SAL_CALL getCertificate(
const OUString& issuerName, const OUString& issuerName,
......
...@@ -127,6 +127,8 @@ private: ...@@ -127,6 +127,8 @@ private:
SECKEYPrivateKey* getPriKey( unsigned int position ) ; SECKEYPrivateKey* getPriKey( unsigned int position ) ;
virtual css::uno::Sequence< css::uno::Reference< css::security::XCertificate > > SAL_CALL getPersonalCertificates() override ; virtual css::uno::Sequence< css::uno::Reference< css::security::XCertificate > > SAL_CALL getPersonalCertificates() override ;
virtual css::uno::Sequence< css::uno::Reference< css::security::XCertificate > > SAL_CALL getAllCertificates() override
{ return css::uno::Sequence< css::uno::Reference< css::security::XCertificate > >(); }
virtual css::uno::Reference< css::security::XCertificate > SAL_CALL getCertificate( const OUString& issuerName, const css::uno::Sequence< sal_Int8 >& serialNumber ) override ; virtual css::uno::Reference< css::security::XCertificate > SAL_CALL getCertificate( const OUString& issuerName, const css::uno::Sequence< sal_Int8 >& serialNumber ) override ;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment