@@ -1064,83 +1064,72 @@ void SignatureXAdES_B::saveToXml(ostream &os) const
10641064string SignatureXAdES_B::city () const
10651065{
10661066 // return elements from SignatureProductionPlace element or SignatureProductionPlaceV2 when available
1067- const SignedSignaturePropertiesType::SignatureProductionPlaceOptional& sigProdPlaceOptional =
1068- getSignedSignatureProperties ().signatureProductionPlace ();
1069- if (sigProdPlaceOptional && sigProdPlaceOptional->city ())
1070- return sigProdPlaceOptional->city ().get ();
1071- const SignedSignaturePropertiesType::SignatureProductionPlaceV2Optional &sigProdPlaceV2Optional =
1072- getSignedSignatureProperties ().signatureProductionPlaceV2 ();
1073- if (sigProdPlaceV2Optional && sigProdPlaceV2Optional->city ())
1074- return sigProdPlaceV2Optional->city ().get ();
1067+ if (const auto &sigProdPlace = getSignedSignatureProperties ().signatureProductionPlace ();
1068+ sigProdPlace && sigProdPlace->city ())
1069+ return sigProdPlace->city ().get ();
1070+ if (const auto &sigProdPlaceV2 = getSignedSignatureProperties ().signatureProductionPlaceV2 ();
1071+ sigProdPlaceV2 && sigProdPlaceV2->city ())
1072+ return sigProdPlaceV2->city ().get ();
10751073 return {};
10761074}
10771075
10781076string SignatureXAdES_B::stateOrProvince () const
10791077{
10801078 // return elements from SignatureProductionPlace element or SignatureProductionPlaceV2 when available
1081- const SignedSignaturePropertiesType::SignatureProductionPlaceOptional& sigProdPlaceOptional =
1082- getSignedSignatureProperties ().signatureProductionPlace ();
1083- if (sigProdPlaceOptional && sigProdPlaceOptional->stateOrProvince ())
1084- return sigProdPlaceOptional->stateOrProvince ().get ();
1085- const SignedSignaturePropertiesType::SignatureProductionPlaceV2Optional &sigProdPlaceV2Optional =
1086- getSignedSignatureProperties ().signatureProductionPlaceV2 ();
1087- if (sigProdPlaceV2Optional && sigProdPlaceV2Optional->stateOrProvince ())
1088- return sigProdPlaceV2Optional->stateOrProvince ().get ();
1079+ if (const auto &sigProdPlace = getSignedSignatureProperties ().signatureProductionPlace ();
1080+ sigProdPlace && sigProdPlace->stateOrProvince ())
1081+ return sigProdPlace->stateOrProvince ().get ();
1082+ if (const auto &sigProdPlaceV2 = getSignedSignatureProperties ().signatureProductionPlaceV2 ();
1083+ sigProdPlaceV2 && sigProdPlaceV2->stateOrProvince ())
1084+ return sigProdPlaceV2->stateOrProvince ().get ();
10891085 return {};
10901086}
10911087
10921088string SignatureXAdES_B::streetAddress () const
10931089{
1094- const SignedSignaturePropertiesType::SignatureProductionPlaceV2Optional &sigProdPlaceV2Optional =
1095- getSignedSignatureProperties ().signatureProductionPlaceV2 ();
1096- if (sigProdPlaceV2Optional && sigProdPlaceV2Optional->streetAddress ())
1097- return sigProdPlaceV2Optional->streetAddress ().get ();
1090+ if (const auto &sigProdPlaceV2 = getSignedSignatureProperties ().signatureProductionPlaceV2 ();
1091+ sigProdPlaceV2 && sigProdPlaceV2->streetAddress ())
1092+ return sigProdPlaceV2->streetAddress ().get ();
10981093 return {};
10991094}
11001095
11011096string SignatureXAdES_B::postalCode () const
11021097{
11031098 // return elements from SignatureProductionPlace element or SignatureProductionPlaceV2 when available
1104- const SignedSignaturePropertiesType::SignatureProductionPlaceOptional& sigProdPlaceOptional =
1105- getSignedSignatureProperties ().signatureProductionPlace ();
1106- if (sigProdPlaceOptional && sigProdPlaceOptional->postalCode ())
1107- return sigProdPlaceOptional->postalCode ().get ();
1108- const SignedSignaturePropertiesType::SignatureProductionPlaceV2Optional &sigProdPlaceV2Optional =
1109- getSignedSignatureProperties ().signatureProductionPlaceV2 ();
1110- if (sigProdPlaceV2Optional && sigProdPlaceV2Optional->postalCode ())
1111- return sigProdPlaceV2Optional->postalCode ().get ();
1099+ if (const auto &sigProdPlace = getSignedSignatureProperties ().signatureProductionPlace ();
1100+ sigProdPlace && sigProdPlace->postalCode ())
1101+ return sigProdPlace->postalCode ().get ();
1102+ if (const auto &sigProdPlaceV2 = getSignedSignatureProperties ().signatureProductionPlaceV2 ();
1103+ sigProdPlaceV2 && sigProdPlaceV2->postalCode ())
1104+ return sigProdPlaceV2->postalCode ().get ();
11121105 return {};
11131106}
11141107
11151108string SignatureXAdES_B::countryName () const
11161109{
11171110 // return elements from SignatureProductionPlace element or SignatureProductionPlaceV2 when available
1118- const SignedSignaturePropertiesType::SignatureProductionPlaceOptional &sigProdPlaceOptional =
1119- getSignedSignatureProperties ().signatureProductionPlace ();
1120- if (sigProdPlaceOptional && sigProdPlaceOptional->countryName ())
1121- return sigProdPlaceOptional->countryName ().get ();
1122- const SignedSignaturePropertiesType::SignatureProductionPlaceV2Optional &sigProdPlaceV2Optional =
1123- getSignedSignatureProperties ().signatureProductionPlaceV2 ();
1124- if (sigProdPlaceV2Optional && sigProdPlaceV2Optional->countryName ())
1125- return sigProdPlaceV2Optional->countryName ().get ();
1111+ if (const auto &sigProdPlace = getSignedSignatureProperties ().signatureProductionPlace ();
1112+ sigProdPlace && sigProdPlace->countryName ())
1113+ return sigProdPlace->countryName ().get ();
1114+ if (const auto &sigProdPlaceV2 = getSignedSignatureProperties ().signatureProductionPlaceV2 ();
1115+ sigProdPlaceV2 && sigProdPlaceV2->countryName ())
1116+ return sigProdPlaceV2->countryName ().get ();
11261117 return {};
11271118}
11281119
11291120vector<string> SignatureXAdES_B::signerRoles () const
11301121{
1131- vector<string> roles;
1132- const SignedSignaturePropertiesType::SignerRoleOptional &roleOpt =
1133- getSignedSignatureProperties ().signerRole ();
1134- const SignedSignaturePropertiesType::SignerRoleV2Optional &roleV2Opt =
1135- getSignedSignatureProperties ().signerRoleV2 ();
11361122 const ClaimedRolesListType::ClaimedRoleSequence &claimedRoleSequence = [&] {
11371123 // return elements from SignerRole element or SignerRoleV2 when available
1138- if (roleOpt && roleOpt->claimedRoles ())
1139- return roleOpt->claimedRoles ()->claimedRole ();
1140- if (roleV2Opt && roleV2Opt->claimedRoles ())
1141- return roleV2Opt->claimedRoles ()->claimedRole ();
1124+ if (const auto &role = getSignedSignatureProperties ().signerRole ();
1125+ role && role->claimedRoles ())
1126+ return role->claimedRoles ()->claimedRole ();
1127+ if (const auto &roleV2 = getSignedSignatureProperties ().signerRoleV2 ();
1128+ roleV2 && roleV2->claimedRoles ())
1129+ return roleV2->claimedRoles ()->claimedRole ();
11421130 return ClaimedRolesListType::ClaimedRoleSequence{};
11431131 }();
1132+ vector<string> roles;
11441133 roles.reserve (claimedRoleSequence.size ());
11451134 for (const ClaimedRolesListType::ClaimedRoleType &type: claimedRoleSequence)
11461135 roles.emplace_back (type.text ());
@@ -1164,8 +1153,10 @@ X509Cert SignatureXAdES_B::signingCertificate() const
11641153 {
11651154 for (const KeyInfoType::X509DataType &x509Data: keyInfoOptional->x509Data ())
11661155 {
1167- for (const X509DataType::X509CertificateType &data: x509Data.x509Certificate ())
1168- return X509Cert ((const unsigned char *)data.data (), data.size ());
1156+ if (x509Data.x509Certificate ().empty ())
1157+ continue ;
1158+ const X509DataType::X509CertificateType &data = x509Data.x509Certificate ().front ();
1159+ return X509Cert ((const unsigned char *)data.data (), data.size ());
11691160 }
11701161 }
11711162 catch (const Exception &e)
0 commit comments