Из http://www-archive.mozilla.org/projects/security/pki/nss/tech-notes/tn7.html, он утверждает, чтоPK11_Sign с прокладкой
Для подписи низкого уровня, используйте PK11_Sign(). Обе эти функции делают обертку данных PKCS # 1. PK11_Sign не делает кодирование хэш BER (как это делается в функции SGN_)
Из кода API
/*
* sign a hash. The algorithm is determined by the key.
*/
SECStatus
PK11_Sign(SECKEYPrivateKey *key, SECItem *sig, const SECItem *hash)
Q1) Мои PK11_Sign функции приводит к недопустимой подписи. Входом хэш-данных является a7cd893b31b0ea44ed1aa7cafcda658744cc5a02ef26feccceaae9a8becb83a0 хэш SHA-256, из «Hello SHA-256». Data-> len - 64. Затем код выполняет шестнадцатеричный код в двоичном формате. Затем я передаю эту информацию в PK11_Sign. Я пропустил какие-то шаги?
Q2) Что означает BER кодирование хэша? Если у нас есть строка хэша в hexdecimel, то мы преобразуем ее в двоичный код хэша, то есть BER? Или предложение означает, что оно поддерживает только DER?
Q3) Любой образец PK11_Sign аналогичен операции, как указано выше?
Благодарим за информацию. Наконец, я получил действительную подпись, основываясь на вашем ответе на Q1. –
Рад, что это помогло, не забудьте нажать «принять», если найдете ответы на этот номер (V mark слева). Я замечаю, что до сих пор у вас нет никаких утверждений, что указывает на то, что вы либо не знаете, либо еще не получили полезных/полных ответов. –