Пытаясь подписать XML с помощью XmlSec в командной строке, продолжаете получать «ошибки с отсутствующими файлами»?

#xml #file #command-line #digital-signature #xmlsec

Вопрос:

Независимо от того, какой порядок команд я использую, я продолжаю получать аналогичные сообщения об ошибках:

С

 xmlsec --sign --output signedfile.xml --pkcs FISKAL.p12 --pwd Password --trusted-pem root_ca.pem --id-attr:Id file.xml
 

Я получаю

 Error: ⟨file⟩ parameter is required for this command
 

Если я попытаюсь

 xmlsec --sign --id-attr:Id --pkcs FISKAL.p12 --pwd Password --trusted-pem root_ca.pem --output signedfile.xml file.xml
 

Я получаю

 Error: filename is expected instead of parameter "--pwd".
Error: invalid parameters
 

И в случае с

 xmlsec --sign --output signedfile.xml --id-attr:Id --trusted-pem root_ca.pem --pkcs FISKAL.p12 --pwd Password file.xml
 

это похоже:

 Error: filename is expected instead of parameter "--pkcs12".
Error: invalid parameters
 

Под каждым сообщением об ошибке находится строка: Usage: xmlsec ⟨command⟩ [⟨options⟩] [⟨files⟩]

Почему xmlsec продолжает думать, что мне не хватает файла? Что я делаю не так?

Ответ №1:

Ваш --id-attr:Id параметр неполон. Либо удалите его, либо вам нужно указать его следующим образом:

    --id-attr[:<attr-name>] [<node-namespace-uri>:]<node-name>

          adds attributes <attr-name> (default value "id") from all  nodes
          with<node-name>  and  namespace <node-namespace-uri> to the list
          of known ID attributes; this is a hack and if you can use DTD or
          schema  to  declare  ID  attributes  instead  (see  "--dtd-file"
          option), I don't know what else might be broken in your applica‐
          tion when you use this hack
 

Там node-name вам нужно указать, потому что это необязательно. Вы указываете attr-name , но это необязательно. Возможно, это не то, чего ты хотел.