summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAshod Nakashian <ashod.nakashian@collabora.co.uk>2017-08-01 15:04:56 -0400
committerAshod Nakashian <ashnakash@gmail.com>2017-08-04 02:11:24 +0200
commit0a64fa41045eea8ea179bbf0eee306ffb5851500 (patch)
tree4ef71c9e6739da9e60bbde6e7eadfbb195d2894c
parentrtl: typo in doc comment (diff)
downloadcore-0a64fa41045eea8ea179bbf0eee306ffb5851500.tar.gz
core-0a64fa41045eea8ea179bbf0eee306ffb5851500.zip
svl: move DecodeHexString from vcl
Change-Id: I86da993050bde20f9ff0413ad5424673647a0e5c Reviewed-on: https://gerrit.libreoffice.org/40720 Tested-by: Jenkins <ci@libreoffice.org> Reviewed-by: Ashod Nakashian <ashnakash@gmail.com>
-rw-r--r--include/svl/cryptosign.hxx3
-rw-r--r--include/vcl/filter/pdfdocument.hxx1
-rw-r--r--include/vcl/pdfwriter.hxx3
-rw-r--r--svl/source/crypto/cryptosign.cxx49
-rw-r--r--vcl/source/filter/ipdf/pdfdocument.cxx46
5 files changed, 53 insertions, 49 deletions
diff --git a/include/svl/cryptosign.hxx b/include/svl/cryptosign.hxx
index 5d347c96d541..f8c1f36bdd8a 100644
--- a/include/svl/cryptosign.hxx
+++ b/include/svl/cryptosign.hxx
@@ -34,6 +34,9 @@ namespace svl {
namespace crypto {
+/// Converts a hex-encoded string into a byte array.
+SVL_DLLPUBLIC std::vector<unsigned char> DecodeHexString(const OString& rHex);
+
/// Helper to cryptographically sign and verify
/// arbitrary data blocks.
class SVL_DLLPUBLIC Signing
diff --git a/include/vcl/filter/pdfdocument.hxx b/include/vcl/filter/pdfdocument.hxx
index 98806a3f17e7..e36fb687e0a0 100644
--- a/include/vcl/filter/pdfdocument.hxx
+++ b/include/vcl/filter/pdfdocument.hxx
@@ -314,7 +314,6 @@ class VCL_DLLPUBLIC PDFDocument
/// All editing takes place in this buffer, if it happens.
SvMemoryStream m_aEditBuffer;
- static int AsHex(char ch);
/// Suggest a minimal, yet free signature ID to use for the next signature.
sal_uInt32 GetNextSignature();
/// Write the signature object as part of signing.
diff --git a/include/vcl/pdfwriter.hxx b/include/vcl/pdfwriter.hxx
index 78a28231ea10..b7ecbff71cd9 100644
--- a/include/vcl/pdfwriter.hxx
+++ b/include/vcl/pdfwriter.hxx
@@ -1231,9 +1231,6 @@ The following structure describes the permissions used in PDF security
*/
void AddStream( const OUString& rMimeType, PDFOutputStream* pStream );
- /// Fill a PDF signature template.
- static bool Sign(PDFSignContext& rContext);
-
/// Write rString as a PDF hex string into rBuffer.
static void AppendUnicodeTextString(const OUString& rString, OStringBuffer& rBuffer);
diff --git a/svl/source/crypto/cryptosign.cxx b/svl/source/crypto/cryptosign.cxx
index 7d81ce90dcd7..1e0712fd8850 100644
--- a/svl/source/crypto/cryptosign.cxx
+++ b/svl/source/crypto/cryptosign.cxx
@@ -878,6 +878,55 @@ namespace svl {
namespace crypto {
+static int AsHex(char ch)
+{
+ int nRet = 0;
+ if (rtl::isAsciiDigit(static_cast<unsigned char>(ch)))
+ nRet = ch - '0';
+ else
+ {
+ if (ch >= 'a' && ch <= 'f')
+ nRet = ch - 'a';
+ else if (ch >= 'A' && ch <= 'F')
+ nRet = ch - 'A';
+ else
+ return -1;
+ nRet += 10;
+ }
+ return nRet;
+}
+
+std::vector<unsigned char> DecodeHexString(const OString& rHex)
+{
+ std::vector<unsigned char> aRet;
+ size_t nHexLen = rHex.getLength();
+ {
+ int nByte = 0;
+ int nCount = 2;
+ for (size_t i = 0; i < nHexLen; ++i)
+ {
+ nByte = nByte << 4;
+ sal_Int8 nParsed = AsHex(rHex[i]);
+ if (nParsed == -1)
+ {
+ SAL_WARN("svl.crypto", "DecodeHexString: invalid hex value");
+ return aRet;
+ }
+ nByte += nParsed;
+ --nCount;
+ if (!nCount)
+ {
+ aRet.push_back(nByte);
+ nCount = 2;
+ nByte = 0;
+ }
+ }
+ }
+
+ return aRet;
+}
+
+
#if defined(SVL_CRYPTO_NSS) || defined(SVL_CRYPTO_MSCRYPTO)
bool Signing::Sign(OStringBuffer& rCMSHexBuffer)
diff --git a/vcl/source/filter/ipdf/pdfdocument.cxx b/vcl/source/filter/ipdf/pdfdocument.cxx
index 96960c407c1a..619041595c6b 100644
--- a/vcl/source/filter/ipdf/pdfdocument.cxx
+++ b/vcl/source/filter/ipdf/pdfdocument.cxx
@@ -1892,53 +1892,9 @@ std::vector<PDFObjectElement*> PDFDocument::GetSignatureWidgets()
return aRet;
}
-int PDFDocument::AsHex(char ch)
-{
- int nRet = 0;
- if (rtl::isAsciiDigit(static_cast<unsigned char>(ch)))
- nRet = ch - '0';
- else
- {
- if (ch >= 'a' && ch <= 'f')
- nRet = ch - 'a';
- else if (ch >= 'A' && ch <= 'F')
- nRet = ch - 'A';
- else
- return -1;
- nRet += 10;
- }
- return nRet;
-}
-
std::vector<unsigned char> PDFDocument::DecodeHexString(PDFHexStringElement const* pElement)
{
- std::vector<unsigned char> aRet;
- const OString& rHex = pElement->GetValue();
- size_t nHexLen = rHex.getLength();
- {
- int nByte = 0;
- int nCount = 2;
- for (size_t i = 0; i < nHexLen; ++i)
- {
- nByte = nByte << 4;
- sal_Int8 nParsed = AsHex(rHex[i]);
- if (nParsed == -1)
- {
- SAL_WARN("vcl.filter", "PDFDocument::DecodeHexString: invalid hex value");
- return aRet;
- }
- nByte += nParsed;
- --nCount;
- if (!nCount)
- {
- aRet.push_back(nByte);
- nCount = 2;
- nByte = 0;
- }
- }
- }
-
- return aRet;
+ return svl::crypto::DecodeHexString(pElement->GetValue());
}
PDFCommentElement::PDFCommentElement(PDFDocument& rDoc)