Kaydet (Commit) 16c5e238 authored tarafından Ashod Nakashian's avatar Ashod Nakashian Kaydeden (comit) Ashod Nakashian

sw: retrieve subject name from signature

From CryptoAPI.

Change-Id: I5ec33a754f71d3617090a03887355077d0ffedd7
Reviewed-on: https://gerrit.libreoffice.org/41789Tested-by: 's avatarJenkins <ci@libreoffice.org>
Reviewed-by: 's avatarAshod Nakashian <ashnakash@gmail.com>
üst 1d9b0dfb
......@@ -1906,6 +1906,52 @@ bool VerifyNonDetachedSignature(const std::vector<unsigned char>& aData, const s
return aActualHash.size() == rExpectedHash.size() &&
!std::memcmp(aActualHash.data(), rExpectedHash.data(), aActualHash.size());
}
OUString GetSubjectName(PCCERT_CONTEXT pCertContext)
{
OUString subjectName;
// Get Subject name size.
DWORD dwData = CertGetNameString(pCertContext,
CERT_NAME_SIMPLE_DISPLAY_TYPE,
0,
nullptr,
nullptr,
0);
if (!dwData)
{
SAL_WARN("svl.crypto", "ValidateSignature: CertGetNameString failed");
return subjectName;
}
// Allocate memory for subject name.
LPTSTR szName = (LPTSTR)LocalAlloc(LPTR, dwData * sizeof(TCHAR));
if (!szName)
{
SAL_WARN("svl.crypto", "ValidateSignature: Unable to allocate memory for subject name");
return subjectName;
}
// Get subject name.
if (!CertGetNameString(pCertContext,
CERT_NAME_SIMPLE_DISPLAY_TYPE,
0,
nullptr,
szName,
dwData))
{
SAL_WARN("svl.crypto", "ValidateSignature: CertGetNameString failed");
return subjectName;
}
subjectName = OUString::fromUtf8(OString(szName));
if (szName != nullptr)
LocalFree(szName);
return subjectName;
}
#endif
}
......@@ -2211,6 +2257,7 @@ bool Signing::Verify(const std::vector<unsigned char>& aData,
OUStringBuffer aBuffer;
comphelper::Base64::encode(aBuffer, aDerCert);
rInformation.ouX509Certificate = aBuffer.makeStringAndClear();
rInformation.ouSubject = GetSubjectName(pSignerCertContext);
}
if (bNonDetached)
......
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