Как использовать склеп SHA-256 с муслом? - PullRequest
4 голосов
/ 24 января 2020

Я использую musl: https://www.musl-libc.org

Если я просматриваю репозиторий, я вижу, что есть куча исходных файлов, связанных с crypt (включая crypt_sha256. c).

image

Проблема в том, что для них нет заголовочных файлов. Как я должен их использовать?

Это символы из библиотеки на моей системе:

sha256_sum

Я также не смог найти ни одного примера кода из Google, как использовать функции SHA-256 мусл.

Спасибо!

Ответы [ 3 ]

4 голосов
/ 24 января 2020

Это не обобщенный c алгоритм дайджеста сообщений SHA-256, а конкретный c алгоритм, используемый crypt (3) функцией хеширования пароля. См. Документацию для этой функции о том, как она используется.

3 голосов
/ 24 января 2020

Как писал и прокомментировал Ctx, не зная причины, эти функции не экспортируются. Я могу указать эту причину.

Как правило, musl не в одностороннем порядке изобретает новые интерфейсы, которые почти наверняка будут тонко отличаться от аналогичных интерфейсов, которые в конечном итоге придумывают другие поставщики lib c. Мы находимся в процессе запуска кросс-библиотечной группы c, менее формальной, чем процесс стандартизации POSIX, которая может сделать разумным предложение некоторых таких интерфейсов в будущем, и это может в конечном итоге привести к некоторому консенсусу, возникающему в восходящем потоке. в POSIX.

Кроме того, любой, кто хочет использовать эти реализации, может скопировать код и использовать его в соответствии с условиями лицензии. Они небольшие, автономные и разрешительно лицензированы, и, используя их таким образом, вы не блокируете подпись для какой-либо границы внешнего интерфейса. Тем не менее, как обычно с криптографическим кодом c, вы должны быть осторожны с любым риском утечки секретных данных из побочных каналов. Как и в случае с musl, я не думаю, что это проблема, но я не анализировал другие возможные варианты использования, и было бы безопаснее выбрать реализацию, предназначенную для использования в произвольных настройках криптографии c.

3 голосов
/ 24 января 2020

Вы правы, что три функции

  • sha256_init ()
  • sha256_update ()
  • sha256_sum ()

действительно обобщенные функции c SHA256 ha sh.

К сожалению, эти символы не экспортируются публично, а используются только для генерации соленого пароля ha sh вида $5$0rXgD0/KkyyT0$5PPj3bke0vPxsMDlSXzBz2D3TFNahLrXSs7.elU3u2/

По этой причине не предоставляются общедоступные заголовочные файлы c для использования этих функций. Только функция более высокого уровня crypt_sha256() экспортируется.

Почему они решили не экспортировать универсальный интерфейс c, можно только догадываться, по крайней мере, я не смог найти объяснения этому.

...