Skip to content
Open
Show file tree
Hide file tree
Changes from 3 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion src/SignatureXAdES_B.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -742,7 +742,7 @@ void SignatureXAdES_B::setSignatureProductionPlace(string_view name,
*
* @param roles signer roles.
*/
void SignatureXAdES_B::setSignerRoles(string_view name, const vector<string> &roles) noexcept
void SignatureXAdES_B::setSignerRoles(string_view name, const vector<string> &roles)
{
if(roles.empty())
return;
Expand Down
2 changes: 1 addition & 1 deletion src/SignatureXAdES_B.h
Original file line number Diff line number Diff line change
Expand Up @@ -112,7 +112,7 @@ namespace digidoc
void setSignatureProductionPlace(std::string_view name, const std::string &city,
const std::string &streetAddress, const std::string &stateOrProvince,
const std::string &postalCode, const std::string &countryName) noexcept;
void setSignerRoles(std::string_view name, const std::vector<std::string> &signerRoles) noexcept;
void setSignerRoles(std::string_view name, const std::vector<std::string> &signerRoles);
constexpr XMLNode V1orV2(std::string_view v1, std::string_view v2) const noexcept;

// offline checks
Expand Down
13 changes: 12 additions & 1 deletion src/XMLDocument.h
Original file line number Diff line number Diff line change
Expand Up @@ -229,10 +229,21 @@ struct XMLNode: public XMLElem<xmlNode>
return from_base64(operator sv());
}

XMLNode& operator=(sv text) noexcept
XMLNode& operator=(sv text)
{
if(!d)
return *this;
const char *utf = text.cbegin();
int len = int(text.size());
while (utf < text.cend()) {
int uc = xmlGetUTF8Char((const unsigned char *) utf, &len);
if (len < 1) {
THROW("Invalid utf8 string in XML content");
} else if (((uc < 0x20) && (uc != 0x9) && (uc != 0xa) && (uc != 0xd)) || (uc == 0xfffe) || (uc == 0xffff)) {
THROW("Invalid character '0x%2x' in XML content", uc);
}
utf += len;
}
xmlNodeSetContentLen(d, nullptr, 0);
if(!text.empty())
xmlNodeAddContentLen(d, pcxmlChar(text.data()), int(text.length()));
Expand Down
3 changes: 3 additions & 0 deletions src/crypto/Signer.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -73,6 +73,7 @@ Signer::~Signer() = default;
* @param stateOrProvince
* @param postalCode
* @param countryName
* The strings have to be utf8 encoded and not contain any control values (any char < 0x20 except 0x9, 0xa and 0xd)
*/
void Signer::setSignatureProductionPlace(const string &city,
const string &stateOrProvince, const string &postalCode, const string &countryName)
Expand All @@ -90,6 +91,7 @@ void Signer::setSignatureProductionPlace(const string &city,
* @param stateOrProvince
* @param postalCode
* @param countryName
* The strings have to be utf8 encoded and not contain any control values (any char < 0x20 except 0x9, 0xa and 0xd)
*/
void Signer::setSignatureProductionPlaceV2(const string &city, const string &streetAddress,
const string &stateOrProvince, const string &postalCode, const string &countryName)
Expand Down Expand Up @@ -194,6 +196,7 @@ void Signer::setProfile(const string &profile)
/**
* Sets signature roles according XAdES standard. The parameter may contain the signer’s role and optionally the signer’s resolution. Note that only one signer role value (i.e. one &lt;ClaimedRole&gt; XML element) should be used.
* If the signer role contains both role and resolution then they must be separated with a slash mark, e.g. “role / resolution”.
* The strings have to be utf8 encoded and not contain any control values (any char < 0x20 except 0x9, 0xa and 0xd)
*/
void Signer::setSignerRoles(const vector<string> &signerRoles)
{
Expand Down
Loading