Loading ccsrc/security/src/certs_cache.cc +3 −3 Original line number Diff line number Diff line Loading @@ -241,9 +241,8 @@ const std::string certs_cache::cert_to_string(const std::string& p_certificate_i int certs_cache::publickey_to_string(const EVP_PKEY* p_public_kep, std::vector<unsigned char>& p_buffer) { loggers::get_instance().log(">>> certs_cache::publickey_to_string: '%p'", p_public_kep); unsigned char buffer[512]; unsigned char* ptr = &buffer[0]; int ret = ::i2d_PublicKey((EVP_PKEY*)p_public_kep, &ptr); unsigned char* buffer = nullptr; int ret = ::i2d_PublicKey((EVP_PKEY*)p_public_kep, &buffer); loggers::get_instance().log("certs_cache::publickey_to_string: ret: '%d'", ret); if (ret < 0) { loggers::get_instance().warning("certs_cache::publickey_to_string: Failed to dunp certificate"); Loading @@ -252,6 +251,7 @@ int certs_cache::publickey_to_string(const EVP_PKEY* p_public_kep, std::vector<u } p_buffer.assign((unsigned char*)buffer, (unsigned char*)(buffer + ret)); ::OPENSSL_free(buffer); loggers::get_instance().log("certs_cache::publickey_to_string: p_buffer len: '%d'", p_buffer.size()); loggers::get_instance().log("certs_cache::publickey_to_string: dump: '%s'", converter::get_instance().bytes_to_hexa(p_buffer).c_str()); Loading ccsrc/security/src/security_externals.cc +13 −3 Original line number Diff line number Diff line Loading @@ -32,6 +32,12 @@ static int transform_signature_workaround(std::string& str) { //loggers::get_instance().log("transform_signature_workaround: New str (3): '%s'", str.c_str()); first = str.find("""); } // End of 'while'statement first = str.find(" "); while ((first != -1) && (first < str.length())) { str = str.substr(0, first) + "\r" + str.substr(first + 5, str.length() - 5); //loggers::get_instance().log("transform_signature_workaround: New str (4): '%s'", str.c_str()); first = str.find(" "); } // End of 'while'statement std::replace(str.begin(), str.end(), '\'', '\"'); Loading @@ -49,23 +55,26 @@ static int transform_xslt_workaround(std::string& str) { int first = str.find("<", start); while ((first != -1) && (first < stop)) { //loggers::get_instance().log("transform_xslt_workaround: first='%d' ", first); str = str.substr(0, first - 1) + "<" + str.substr(first + 1, str.length() - 1); str = str.substr(0, first) + "<" + str.substr(first + 1, str.length() - 1); //loggers::get_instance().log("transform_xslt_workaround: New str (1): '%s'", str.c_str()); first = str.find("<", first); stop = str.find("</Transform>"); } // End of 'while'statement first = str.find(">", start); while ((first != -1) && (first < stop)) { //loggers::get_instance().log("transform_xslt_workaround: first='%d' ", first); str = str.substr(0, first - 1) + ">" + str.substr(first + 1, str.length() - 1); str = str.substr(0, first) + ">" + str.substr(first + 1, str.length() - 1); //loggers::get_instance().log("transform_xslt_workaround: New str (1): '%s'", str.c_str()); first = str.find(">", first); stop = str.find("</Transform>"); } // End of 'while'statement first = str.find("\"", start); while ((first != -1) && (first < stop)) { //loggers::get_instance().log("transform_xslt_workaround: first='%d' ", first); str = str.substr(0, first - 1) + """ + str.substr(first + 1, str.length() - 1); str = str.substr(0, first) + """ + str.substr(first + 1, str.length() - 1); //loggers::get_instance().log("transform_xslt_workaround: New str (1): '%s'", str.c_str()); first = str.find("\"", first); stop = str.find("</Transform>"); } // End of 'while'statement loggers::get_instance().log("<<< transform_xslt_workaround: '%s'", str.c_str()); Loading Loading @@ -176,6 +185,7 @@ INTEGER LibSecurity__Signature::fx__dec__xmldsig(BITSTRING& bs, http__www__w3__o std::string str(static_cast<const char*>(oct2char(bit2oct(bs)))); loggers::get_instance().log("fx__dec__xmldsig: Before str: '%s'", str.c_str()); transform_signature_workaround(str); transform_xslt_workaround(str); loggers::get_instance().log("fx__dec__xmldsig: Afer str: '%s'", str.c_str()); Loading ccsrc/security/src/securty_services.cc +11 −1 Original line number Diff line number Diff line Loading @@ -318,10 +318,20 @@ bool security_services::do_sign_verify(const CHARSTRING& p_message, const OCTETS } loggers::get_instance().log("security_services::do_sign_verify: public_key: '%p'", public_key); std::vector<unsigned char> buffer; _certs_db->publickey_to_string(public_key, buffer); ret = _certs_db->publickey_to_string(public_key, buffer); if (ret == 1) { loggers::get_instance().warning("security_services::do_sign_verify: Failed to convert public key into string"); return false; } // Update the DigestValue loggers::get_instance().log("security_services::do_sign_verify: canonicalized: '%s'", canonicalized.c_str()); int i = canonicalized.find("<DigestValue>"); if (i == std::string::npos) { loggers::get_instance().warning("security_services::do_sign_verify: DigestValue entry not found"); return false; } loggers::get_instance().log("security_services::do_sign_verify: i='%d'", i); canonicalized = canonicalized.substr(0, i + 13) + std::string(to64.cbegin(), to64.cend()) + canonicalized.substr(i + 13, canonicalized.length() - i - 13); OCTETSTRING to_be_signed(char2oct(CHARSTRING(canonicalized.c_str()))); loggers::get_instance().log_msg("security_services::do_sign_verify: to_be_signed: ", to_be_signed); Loading ttcn/LibSecurity/ttcn/http_www_w3_org_2000_09_xmldsig.ttcn +37 −36 Original line number Diff line number Diff line Loading @@ -40,6 +40,16 @@ import from XSD all; //import from http_www_cise_eu_sevicemodel_v1_message all; type record Transform { XSD.String algorithm, XSD.String path } with { variant "element"; variant (algorithm) "name as capitalized"; variant (algorithm) "attribute"; variant (path) "untagged"; } type record Signature { Loading @@ -52,12 +62,7 @@ type record Signature } signatureMethod, record { XSD.String uRI, record { record { XSD.String algorithm, XSD.String path } transform } transforms, record of Transform transforms, record { XSD.String algorithm } digestMethod, Loading Loading @@ -85,10 +90,6 @@ with { variant (signedInfo.reference.uRI) "name as capitalized"; variant (signedInfo.reference.uRI) "attribute"; variant (signedInfo.reference.transforms) "name as capitalized"; variant (signedInfo.reference.transforms.transform) "name as capitalized"; variant (signedInfo.reference.transforms.transform.algorithm) "name as capitalized"; variant (signedInfo.reference.transforms.transform.algorithm) "attribute"; variant (signedInfo.reference.transforms.transform.path) "untagged"; variant (signedInfo.reference.digestMethod) "name as capitalized"; variant (signedInfo.reference.digestMethod.algorithm) "name as capitalized"; variant (signedInfo.reference.digestMethod.algorithm) "attribute"; Loading Loading
ccsrc/security/src/certs_cache.cc +3 −3 Original line number Diff line number Diff line Loading @@ -241,9 +241,8 @@ const std::string certs_cache::cert_to_string(const std::string& p_certificate_i int certs_cache::publickey_to_string(const EVP_PKEY* p_public_kep, std::vector<unsigned char>& p_buffer) { loggers::get_instance().log(">>> certs_cache::publickey_to_string: '%p'", p_public_kep); unsigned char buffer[512]; unsigned char* ptr = &buffer[0]; int ret = ::i2d_PublicKey((EVP_PKEY*)p_public_kep, &ptr); unsigned char* buffer = nullptr; int ret = ::i2d_PublicKey((EVP_PKEY*)p_public_kep, &buffer); loggers::get_instance().log("certs_cache::publickey_to_string: ret: '%d'", ret); if (ret < 0) { loggers::get_instance().warning("certs_cache::publickey_to_string: Failed to dunp certificate"); Loading @@ -252,6 +251,7 @@ int certs_cache::publickey_to_string(const EVP_PKEY* p_public_kep, std::vector<u } p_buffer.assign((unsigned char*)buffer, (unsigned char*)(buffer + ret)); ::OPENSSL_free(buffer); loggers::get_instance().log("certs_cache::publickey_to_string: p_buffer len: '%d'", p_buffer.size()); loggers::get_instance().log("certs_cache::publickey_to_string: dump: '%s'", converter::get_instance().bytes_to_hexa(p_buffer).c_str()); Loading
ccsrc/security/src/security_externals.cc +13 −3 Original line number Diff line number Diff line Loading @@ -32,6 +32,12 @@ static int transform_signature_workaround(std::string& str) { //loggers::get_instance().log("transform_signature_workaround: New str (3): '%s'", str.c_str()); first = str.find("""); } // End of 'while'statement first = str.find(" "); while ((first != -1) && (first < str.length())) { str = str.substr(0, first) + "\r" + str.substr(first + 5, str.length() - 5); //loggers::get_instance().log("transform_signature_workaround: New str (4): '%s'", str.c_str()); first = str.find(" "); } // End of 'while'statement std::replace(str.begin(), str.end(), '\'', '\"'); Loading @@ -49,23 +55,26 @@ static int transform_xslt_workaround(std::string& str) { int first = str.find("<", start); while ((first != -1) && (first < stop)) { //loggers::get_instance().log("transform_xslt_workaround: first='%d' ", first); str = str.substr(0, first - 1) + "<" + str.substr(first + 1, str.length() - 1); str = str.substr(0, first) + "<" + str.substr(first + 1, str.length() - 1); //loggers::get_instance().log("transform_xslt_workaround: New str (1): '%s'", str.c_str()); first = str.find("<", first); stop = str.find("</Transform>"); } // End of 'while'statement first = str.find(">", start); while ((first != -1) && (first < stop)) { //loggers::get_instance().log("transform_xslt_workaround: first='%d' ", first); str = str.substr(0, first - 1) + ">" + str.substr(first + 1, str.length() - 1); str = str.substr(0, first) + ">" + str.substr(first + 1, str.length() - 1); //loggers::get_instance().log("transform_xslt_workaround: New str (1): '%s'", str.c_str()); first = str.find(">", first); stop = str.find("</Transform>"); } // End of 'while'statement first = str.find("\"", start); while ((first != -1) && (first < stop)) { //loggers::get_instance().log("transform_xslt_workaround: first='%d' ", first); str = str.substr(0, first - 1) + """ + str.substr(first + 1, str.length() - 1); str = str.substr(0, first) + """ + str.substr(first + 1, str.length() - 1); //loggers::get_instance().log("transform_xslt_workaround: New str (1): '%s'", str.c_str()); first = str.find("\"", first); stop = str.find("</Transform>"); } // End of 'while'statement loggers::get_instance().log("<<< transform_xslt_workaround: '%s'", str.c_str()); Loading Loading @@ -176,6 +185,7 @@ INTEGER LibSecurity__Signature::fx__dec__xmldsig(BITSTRING& bs, http__www__w3__o std::string str(static_cast<const char*>(oct2char(bit2oct(bs)))); loggers::get_instance().log("fx__dec__xmldsig: Before str: '%s'", str.c_str()); transform_signature_workaround(str); transform_xslt_workaround(str); loggers::get_instance().log("fx__dec__xmldsig: Afer str: '%s'", str.c_str()); Loading
ccsrc/security/src/securty_services.cc +11 −1 Original line number Diff line number Diff line Loading @@ -318,10 +318,20 @@ bool security_services::do_sign_verify(const CHARSTRING& p_message, const OCTETS } loggers::get_instance().log("security_services::do_sign_verify: public_key: '%p'", public_key); std::vector<unsigned char> buffer; _certs_db->publickey_to_string(public_key, buffer); ret = _certs_db->publickey_to_string(public_key, buffer); if (ret == 1) { loggers::get_instance().warning("security_services::do_sign_verify: Failed to convert public key into string"); return false; } // Update the DigestValue loggers::get_instance().log("security_services::do_sign_verify: canonicalized: '%s'", canonicalized.c_str()); int i = canonicalized.find("<DigestValue>"); if (i == std::string::npos) { loggers::get_instance().warning("security_services::do_sign_verify: DigestValue entry not found"); return false; } loggers::get_instance().log("security_services::do_sign_verify: i='%d'", i); canonicalized = canonicalized.substr(0, i + 13) + std::string(to64.cbegin(), to64.cend()) + canonicalized.substr(i + 13, canonicalized.length() - i - 13); OCTETSTRING to_be_signed(char2oct(CHARSTRING(canonicalized.c_str()))); loggers::get_instance().log_msg("security_services::do_sign_verify: to_be_signed: ", to_be_signed); Loading
ttcn/LibSecurity/ttcn/http_www_w3_org_2000_09_xmldsig.ttcn +37 −36 Original line number Diff line number Diff line Loading @@ -40,6 +40,16 @@ import from XSD all; //import from http_www_cise_eu_sevicemodel_v1_message all; type record Transform { XSD.String algorithm, XSD.String path } with { variant "element"; variant (algorithm) "name as capitalized"; variant (algorithm) "attribute"; variant (path) "untagged"; } type record Signature { Loading @@ -52,12 +62,7 @@ type record Signature } signatureMethod, record { XSD.String uRI, record { record { XSD.String algorithm, XSD.String path } transform } transforms, record of Transform transforms, record { XSD.String algorithm } digestMethod, Loading Loading @@ -85,10 +90,6 @@ with { variant (signedInfo.reference.uRI) "name as capitalized"; variant (signedInfo.reference.uRI) "attribute"; variant (signedInfo.reference.transforms) "name as capitalized"; variant (signedInfo.reference.transforms.transform) "name as capitalized"; variant (signedInfo.reference.transforms.transform.algorithm) "name as capitalized"; variant (signedInfo.reference.transforms.transform.algorithm) "attribute"; variant (signedInfo.reference.transforms.transform.path) "untagged"; variant (signedInfo.reference.digestMethod) "name as capitalized"; variant (signedInfo.reference.digestMethod.algorithm) "name as capitalized"; variant (signedInfo.reference.digestMethod.algorithm) "attribute"; Loading