[tools] fix xml decryption

This commit rewrite the extraction of the EncryptedKey when it is
embedded inside the EncryptedData element, which seem to be the frequent
case.
This commit is contained in:
Benjamin Dauvergne 2010-12-14 01:58:38 +01:00
parent 185ce3c139
commit 447c610c9c
1 changed files with 6 additions and 9 deletions

View File

@ -1591,16 +1591,13 @@ lasso_node_decrypt_xmlnode(xmlNode* encrypted_element,
}
} else {
/* Look an EncryptedKey inside the EncryptedData */
encrypted_key_node = encrypted_data_node;
while (encrypted_key_node &&
strcmp((char*)encrypted_key_node->name, "EncryptedKey") != 0 ) {
if (strcmp((char*)encrypted_key_node->name, "EncryptedData") == 0 ||
strcmp((char*)encrypted_key_node->name, "KeyInfo") == 0) {
encrypted_key_node = xmlCopyNode(encrypted_key_node->children, 1);
xmlNodePtr key_info;
do {
key_info = xmlSecFindChild(encrypted_data_node, xmlSecNodeKeyInfo, xmlSecDSigNs);
if (! key_info)
break;
}
encrypted_key_node = encrypted_key_node->next;
}
encrypted_key_node = xmlSecFindChild(key_info, xmlSecNodeEncryptedKey, xmlSecEncNs);
} while (0);
}
if (encrypted_key_node == NULL) {