10#include <config_gpgme.h>
18#include <com/sun/star/security/KeyUsage.hpp>
19#include <officecfg/Office/Common.hxx>
26using namespace css::uno;
27using namespace css::security;
28using namespace css::util;
53 const GpgME::UserID userId =
m_pKey.userID(0);
57 return OStringToOUString(userId.id(), RTL_TEXTENCODING_UTF8);
67 DateTime convertUnixTimeToDateTime(time_t time)
70 struct tm *timeStruct = gmtime(&time);
71 dateTime.Year = timeStruct->tm_year + 1900;
72 dateTime.Month = timeStruct->tm_mon + 1;
73 dateTime.Day = timeStruct->tm_mday;
74 dateTime.Hours = timeStruct->tm_hour;
75 dateTime.Minutes = timeStruct->tm_min;
76 dateTime.Seconds = timeStruct->tm_sec;
83 const GpgME::Subkey subkey =
m_pKey.subkey(0);
87 return convertUnixTimeToDateTime(
m_pKey.subkey(0).creationTime());
92 const GpgME::Subkey subkey =
m_pKey.subkey(0);
93 if (subkey.isNull() || subkey.neverExpires())
96 return convertUnixTimeToDateTime(
m_pKey.subkey(0).expirationTime());
114 return Sequence< Reference< XCertificateExtension > > ();
120 return Reference< XCertificateExtension > ();
131 const GpgME::Subkey subkey =
m_pKey.subkey(0);
135 return OStringToOUString(subkey.publicKeyAlgorithmAsString(), RTL_TEXTENCODING_UTF8);
145 const GpgME::UserID userId =
m_pKey.userID(0);
149 const GpgME::UserID::Signature signature = userId.signature(0);
150 if (signature.isNull())
153 return OStringToOUString(signature.algorithmAsString(), RTL_TEXTENCODING_UTF8);
159 const char* keyId =
m_pKey.primaryFingerprint();
160 return comphelper::arrayToSequence<sal_Int8>(
161 keyId, strlen(keyId)+1);
168 const char* keyId =
m_pKey.primaryFingerprint();
169 return comphelper::arrayToSequence<sal_Int8>(
170 keyId, strlen(keyId)+1);
181 const char* keyId =
m_pKey.keyID();
182 return comphelper::arrayToSequence<sal_Int8>(
183 keyId, strlen(keyId)+1);
188 return CertificateKind_OPENPGP;
193 return KeyUsage::DIGITAL_SIGNATURE | KeyUsage::NON_REPUDIATION | KeyUsage::KEY_ENCIPHERMENT | KeyUsage::DATA_ENCIPHERMENT;
201 GpgME::Data data_out;
202 ctx->setArmor(
false);
203 GpgME::Error
err =
ctx->exportPublicKeys(
204 key.primaryFingerprint(),
206 officecfg::Office::Common::Security::OpenPGP::MinimalKeyExport::get()
207 ? GpgME::Context::ExportMinimal : 0
211 throw RuntimeException(
"The GpgME library failed to retrieve the public key");
213 off_t
result = data_out.seek(0,SEEK_SET);
216 int len=0, curr=0;
char buf;
217 while( (curr=data_out.read(&buf, 1)) )
222 result = data_out.seek(0,SEEK_SET);
224 if( data_out.read(
m_aBits.getArray(), len) != len )
236 return "com.sun.star.xml.security.gpg.XCertificate_GpgImpl";
virtual css::uno::Sequence< css::uno::Reference< css::security::XCertificateExtension > > SAL_CALL getExtensions() override
virtual css::uno::Sequence< sal_Int8 > SAL_CALL getIssuerUniqueID() override
virtual css::uno::Sequence< OUString > SAL_CALL getSupportedServiceNames() override
virtual OUString SAL_CALL getSubjectName() override
void setCertificate(GpgME::Context *ctx, const GpgME::Key &key)
virtual css::uno::Sequence< sal_Int8 > SAL_CALL getSerialNumber() override
virtual svl::crypto::SignatureMethodAlgorithm getSignatureMethodAlgorithm() override
virtual sal_Int16 SAL_CALL getVersion() override
virtual OUString SAL_CALL getImplementationName() override
virtual css::uno::Sequence< sal_Int8 > SAL_CALL getMD5Thumbprint() override
virtual css::uno::Sequence< sal_Int8 > SAL_CALL getEncoded() override
virtual css::uno::Sequence< sal_Int8 > SAL_CALL getSubjectUniqueID() override
virtual css::uno::Sequence< sal_Int8 > getSHA256Thumbprint() override
virtual css::uno::Reference< css::security::XCertificateExtension > SAL_CALL findCertificateExtension(const css::uno::Sequence< sal_Int8 > &oid) override
virtual css::uno::Sequence< sal_Int8 > SAL_CALL getSHA1Thumbprint() override
virtual css::uno::Sequence< sal_Int8 > SAL_CALL getSubjectPublicKeyValue() override
virtual sal_Bool SAL_CALL supportsService(const OUString &ServiceName) override
const GpgME::Key * getCertificate() const
virtual OUString SAL_CALL getSubjectPublicKeyAlgorithm() override
virtual OUString SAL_CALL getSignatureAlgorithm() override
virtual css::util::DateTime SAL_CALL getNotValidBefore() override
css::uno::Sequence< sal_Int8 > m_aBits
virtual OUString SAL_CALL getIssuerName() override
virtual css::util::DateTime SAL_CALL getNotValidAfter() override
virtual css::security::CertificateKind SAL_CALL getCertificateKind() override
virtual sal_Int32 SAL_CALL getCertificateUsage() override
virtual ~CertificateImpl() override
bool CPPUHELPER_DLLPUBLIC supportsService(css::lang::XServiceInfo *implementation, rtl::OUString const &name)
TransliterationModules tm