Я предлагаю использовать xmlsec , доступный в дистрибутиве Linux, в виде пакета xmlsec1
или автономных двоичных файлов для Windows .
Вот хороший учебник , чтобы получить первые примеры. Концепция шаблонного содержимого XML с пустыми узлами позволяет создавать как enveloped , так и enveloping сигнатур.