glib2 2.2.3-x86-mingw32 → 2.2.4-x86-mingw32

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (1221) hide show
  1. checksums.yaml +4 -4
  2. data/Rakefile +44 -19
  3. data/ext/glib2/extconf.rb +1 -1
  4. data/ext/glib2/rbglib.c +2 -2
  5. data/ext/glib2/rbglib.h +1 -1
  6. data/ext/glib2/rbglib2conversions.h +2 -0
  7. data/ext/glib2/rbglib_fileutils.c +25 -0
  8. data/ext/glib2/rbglib_source.c +50 -2
  9. data/ext/glib2/rbglib_threads.c +1 -1
  10. data/ext/glib2/rbglib_utils.c +8 -3
  11. data/ext/glib2/rbgobj_convert.c +12 -9
  12. data/lib/2.0/glib2.so +0 -0
  13. data/lib/2.1/glib2.so +0 -0
  14. data/lib/2.2/glib2.so +0 -0
  15. data/lib/glib2/deprecatable.rb +25 -21
  16. data/lib/gnome2/rake/native-binary-build-task.rb +4 -2
  17. data/lib/gnome2/rake/package-task.rb +31 -30
  18. data/lib/gnome2/rake/package.rb +9 -0
  19. data/lib/gnome2/rake/{win32-binary-build-task.rb → windows-binary-build-task.rb} +26 -24
  20. data/lib/gnome2/rake/{win32-binary-download-task.rb → windows-binary-download-task.rb} +20 -14
  21. data/lib/mkmf-gnome2.rb +27 -3
  22. data/test/test_file_utils.rb +38 -0
  23. data/test/test_source.rb +37 -3
  24. data/vendor/local/bin/certtool.exe +0 -0
  25. data/vendor/local/bin/danetool.exe +0 -0
  26. data/vendor/local/bin/envsubst.exe +0 -0
  27. data/vendor/local/bin/gdbus-codegen +1 -1
  28. data/vendor/local/bin/gdbus.exe +0 -0
  29. data/vendor/local/bin/gettext.exe +0 -0
  30. data/vendor/local/bin/gio-querymodules.exe +0 -0
  31. data/vendor/local/bin/glib-compile-resources.exe +0 -0
  32. data/vendor/local/bin/glib-compile-schemas.exe +0 -0
  33. data/vendor/local/bin/glib-genmarshal.exe +0 -0
  34. data/vendor/local/bin/glib-gettextize +2 -2
  35. data/vendor/local/bin/glib-mkenums +1 -1
  36. data/vendor/local/bin/gnutls-cli-debug.exe +0 -0
  37. data/vendor/local/bin/gnutls-cli.exe +0 -0
  38. data/vendor/local/bin/gnutls-serv.exe +0 -0
  39. data/vendor/local/bin/gobject-query.exe +0 -0
  40. data/vendor/local/bin/gresource.exe +0 -0
  41. data/vendor/local/bin/gsettings.exe +0 -0
  42. data/vendor/local/bin/gspawn-win32-helper-console.exe +0 -0
  43. data/vendor/local/bin/gspawn-win32-helper.exe +0 -0
  44. data/vendor/local/bin/iconv.exe +0 -0
  45. data/vendor/local/bin/libasprintf-0.dll +0 -0
  46. data/vendor/local/bin/libcharset-1.dll +0 -0
  47. data/vendor/local/bin/libffi-6.dll +0 -0
  48. data/vendor/local/bin/libgio-2.0-0.dll +0 -0
  49. data/vendor/local/bin/libglib-2.0-0.dll +0 -0
  50. data/vendor/local/bin/libgmodule-2.0-0.dll +0 -0
  51. data/vendor/local/bin/libgmp-10.dll +0 -0
  52. data/vendor/local/bin/libgnutls-28.dll +0 -0
  53. data/vendor/local/bin/libgnutls-openssl-27.dll +0 -0
  54. data/vendor/local/bin/libgnutls-openssl-28.def +29 -31
  55. data/vendor/local/bin/libgnutls-xssl-0.dll +0 -0
  56. data/vendor/local/bin/libgobject-2.0-0.dll +0 -0
  57. data/vendor/local/bin/libgthread-2.0-0.dll +0 -0
  58. data/vendor/local/bin/libhogweed-2-5.dll +0 -0
  59. data/vendor/local/bin/libiconv-2.dll +0 -0
  60. data/vendor/local/bin/libintl-8.dll +0 -0
  61. data/vendor/local/bin/libnettle-4-7.dll +0 -0
  62. data/vendor/local/bin/nettle-hash.exe +0 -0
  63. data/vendor/local/bin/nettle-lfib-stream.exe +0 -0
  64. data/vendor/local/bin/ngettext.exe +0 -0
  65. data/vendor/local/bin/ocsptool.exe +0 -0
  66. data/vendor/local/bin/pkcs1-conv.exe +0 -0
  67. data/vendor/local/bin/psktool.exe +0 -0
  68. data/vendor/local/bin/sexp-conv.exe +0 -0
  69. data/vendor/local/bin/srptool.exe +0 -0
  70. data/vendor/local/include/glib-2.0/gio/gioenums.h +3 -3
  71. data/vendor/local/include/gnutls/gnutls.h +3 -3
  72. data/vendor/local/lib/gio/modules/libgiognutls.a +0 -0
  73. data/vendor/local/lib/gio/modules/libgiognutls.dll +0 -0
  74. data/vendor/local/lib/gio/modules/libgiognutls.dll.a +0 -0
  75. data/vendor/local/lib/gio/modules/libgiognutls.la +2 -2
  76. data/vendor/local/lib/glib-2.0/include/glibconfig.h +1 -1
  77. data/vendor/local/lib/libasprintf.a +0 -0
  78. data/vendor/local/lib/libasprintf.dll.a +0 -0
  79. data/vendor/local/lib/libasprintf.la +2 -2
  80. data/vendor/local/lib/libcharset.a +0 -0
  81. data/vendor/local/lib/libcharset.dll.a +0 -0
  82. data/vendor/local/lib/libcharset.la +2 -2
  83. data/vendor/local/lib/{libffi-3.1 → libffi-3.2.1}/include/ffi.h +16 -5
  84. data/vendor/local/lib/{libffi-3.1 → libffi-3.2.1}/include/ffitarget.h +9 -2
  85. data/vendor/local/lib/libffi.a +0 -0
  86. data/vendor/local/lib/libffi.dll.a +0 -0
  87. data/vendor/local/lib/libffi.la +5 -5
  88. data/vendor/local/lib/libgio-2.0.dll.a +0 -0
  89. data/vendor/local/lib/libgio-2.0.la +3 -3
  90. data/vendor/local/lib/libglib-2.0.dll.a +0 -0
  91. data/vendor/local/lib/libglib-2.0.la +3 -3
  92. data/vendor/local/lib/libgmodule-2.0.dll.a +0 -0
  93. data/vendor/local/lib/libgmodule-2.0.la +3 -3
  94. data/vendor/local/lib/libgmp.dll.a +0 -0
  95. data/vendor/local/lib/libgmp.la +2 -2
  96. data/vendor/local/lib/libgnutls-openssl.a +0 -0
  97. data/vendor/local/lib/libgnutls-openssl.dll.a +0 -0
  98. data/vendor/local/lib/libgnutls-openssl.la +2 -2
  99. data/vendor/local/lib/libgnutls-xssl.a +0 -0
  100. data/vendor/local/lib/libgnutls-xssl.dll.a +0 -0
  101. data/vendor/local/lib/libgnutls-xssl.la +2 -2
  102. data/vendor/local/lib/libgnutls.a +0 -0
  103. data/vendor/local/lib/libgnutls.dll.a +0 -0
  104. data/vendor/local/lib/libgnutls.la +3 -3
  105. data/vendor/local/lib/libgobject-2.0.dll.a +0 -0
  106. data/vendor/local/lib/libgobject-2.0.la +3 -3
  107. data/vendor/local/lib/libgthread-2.0.dll.a +0 -0
  108. data/vendor/local/lib/libgthread-2.0.la +3 -3
  109. data/vendor/local/lib/libhogweed.a +0 -0
  110. data/vendor/local/lib/libhogweed.dll.a +0 -0
  111. data/vendor/local/lib/libiconv.dll.a +0 -0
  112. data/vendor/local/lib/libiconv.la +2 -2
  113. data/vendor/local/lib/libintl.a +0 -0
  114. data/vendor/local/lib/libintl.dll.a +0 -0
  115. data/vendor/local/lib/libintl.la +2 -2
  116. data/vendor/local/lib/libnettle.a +0 -0
  117. data/vendor/local/lib/libnettle.dll.a +0 -0
  118. data/vendor/local/lib/pkgconfig/gio-2.0.pc +3 -3
  119. data/vendor/local/lib/pkgconfig/gio-windows-2.0.pc +2 -2
  120. data/vendor/local/lib/pkgconfig/glib-2.0.pc +3 -3
  121. data/vendor/local/lib/pkgconfig/gmodule-2.0.pc +2 -2
  122. data/vendor/local/lib/pkgconfig/gmodule-export-2.0.pc +2 -2
  123. data/vendor/local/lib/pkgconfig/gmodule-no-export-2.0.pc +2 -2
  124. data/vendor/local/lib/pkgconfig/gnutls.pc +3 -3
  125. data/vendor/local/lib/pkgconfig/gobject-2.0.pc +3 -3
  126. data/vendor/local/lib/pkgconfig/gthread-2.0.pc +2 -2
  127. data/vendor/local/lib/pkgconfig/hogweed.pc +1 -1
  128. data/vendor/local/lib/pkgconfig/libffi.pc +4 -4
  129. data/vendor/local/lib/pkgconfig/nettle.pc +1 -1
  130. data/vendor/local/lib/pkgconfig/patched +0 -0
  131. data/vendor/local/share/doc/gettext/gettext.1.html +1 -1
  132. data/vendor/local/share/doc/gettext/ngettext.1.html +1 -1
  133. data/vendor/local/share/gdb/auto-load/{libglib-2.0.so.0.4200.0-gdb.py → libglib-2.0.so.0.4200.1-gdb.py} +1 -1
  134. data/vendor/local/share/gdb/auto-load/{libgobject-2.0.so.0.4200.0-gdb.py → libgobject-2.0.so.0.4200.1-gdb.py} +1 -1
  135. data/vendor/local/share/glib-2.0/codegen/__init__.pyc +0 -0
  136. data/vendor/local/share/glib-2.0/codegen/__init__.pyo +0 -0
  137. data/vendor/local/share/glib-2.0/codegen/codegen.pyc +0 -0
  138. data/vendor/local/share/glib-2.0/codegen/codegen.pyo +0 -0
  139. data/vendor/local/share/glib-2.0/codegen/codegen_docbook.pyc +0 -0
  140. data/vendor/local/share/glib-2.0/codegen/codegen_docbook.pyo +0 -0
  141. data/vendor/local/share/glib-2.0/codegen/codegen_main.pyc +0 -0
  142. data/vendor/local/share/glib-2.0/codegen/codegen_main.pyo +0 -0
  143. data/vendor/local/share/glib-2.0/codegen/config.py +2 -2
  144. data/vendor/local/share/glib-2.0/codegen/config.pyc +0 -0
  145. data/vendor/local/share/glib-2.0/codegen/config.pyo +0 -0
  146. data/vendor/local/share/glib-2.0/codegen/dbustypes.pyc +0 -0
  147. data/vendor/local/share/glib-2.0/codegen/dbustypes.pyo +0 -0
  148. data/vendor/local/share/glib-2.0/codegen/parser.pyc +0 -0
  149. data/vendor/local/share/glib-2.0/codegen/parser.pyo +0 -0
  150. data/vendor/local/share/glib-2.0/codegen/utils.pyc +0 -0
  151. data/vendor/local/share/glib-2.0/codegen/utils.pyo +0 -0
  152. data/vendor/local/share/gtk-doc/html/gio/ExampleAnimal.html +1 -1
  153. data/vendor/local/share/gtk-doc/html/gio/ExampleCat.html +1 -1
  154. data/vendor/local/share/gtk-doc/html/gio/ExampleObject.html +1 -1
  155. data/vendor/local/share/gtk-doc/html/gio/GAction.html +1 -1
  156. data/vendor/local/share/gtk-doc/html/gio/GActionGroup.html +1 -1
  157. data/vendor/local/share/gtk-doc/html/gio/GActionMap.html +27 -27
  158. data/vendor/local/share/gtk-doc/html/gio/GAppInfo.html +13 -13
  159. data/vendor/local/share/gtk-doc/html/gio/GApplication.html +5 -5
  160. data/vendor/local/share/gtk-doc/html/gio/GApplicationCommandLine.html +71 -71
  161. data/vendor/local/share/gtk-doc/html/gio/GAsyncInitable.html +70 -70
  162. data/vendor/local/share/gtk-doc/html/gio/GAsyncResult.html +30 -30
  163. data/vendor/local/share/gtk-doc/html/gio/GCancellable.html +23 -17
  164. data/vendor/local/share/gtk-doc/html/gio/GConverter.html +1 -1
  165. data/vendor/local/share/gtk-doc/html/gio/GCredentials.html +6 -6
  166. data/vendor/local/share/gtk-doc/html/gio/GDBusAuthObserver.html +18 -18
  167. data/vendor/local/share/gtk-doc/html/gio/GDBusConnection.html +65 -65
  168. data/vendor/local/share/gtk-doc/html/gio/GDBusInterface.html +1 -1
  169. data/vendor/local/share/gtk-doc/html/gio/GDBusInterfaceSkeleton.html +1 -1
  170. data/vendor/local/share/gtk-doc/html/gio/GDBusMessage.html +24 -24
  171. data/vendor/local/share/gtk-doc/html/gio/GDBusObject.html +1 -1
  172. data/vendor/local/share/gtk-doc/html/gio/GDBusObjectManager.html +1 -1
  173. data/vendor/local/share/gtk-doc/html/gio/GDBusObjectManagerClient.html +1 -1
  174. data/vendor/local/share/gtk-doc/html/gio/GDBusProxy.html +25 -25
  175. data/vendor/local/share/gtk-doc/html/gio/GDBusServer.html +1 -1
  176. data/vendor/local/share/gtk-doc/html/gio/GDrive.html +1 -1
  177. data/vendor/local/share/gtk-doc/html/gio/GFile.html +3 -3
  178. data/vendor/local/share/gtk-doc/html/gio/GFileDescriptorBased.html +1 -1
  179. data/vendor/local/share/gtk-doc/html/gio/GFileEnumerator.html +3 -3
  180. data/vendor/local/share/gtk-doc/html/gio/GFileInfo.html +1 -1
  181. data/vendor/local/share/gtk-doc/html/gio/GIcon.html +2 -2
  182. data/vendor/local/share/gtk-doc/html/gio/GInitable.html +1 -1
  183. data/vendor/local/share/gtk-doc/html/gio/GLoadableIcon.html +1 -1
  184. data/vendor/local/share/gtk-doc/html/gio/GMemoryOutputStream.html +7 -7
  185. data/vendor/local/share/gtk-doc/html/gio/GMenu.html +26 -26
  186. data/vendor/local/share/gtk-doc/html/gio/GMenuModel.html +1 -1
  187. data/vendor/local/share/gtk-doc/html/gio/GMount.html +1 -1
  188. data/vendor/local/share/gtk-doc/html/gio/GMountOperation.html +6 -6
  189. data/vendor/local/share/gtk-doc/html/gio/GNetworkMonitor.html +1 -1
  190. data/vendor/local/share/gtk-doc/html/gio/GPollableInputStream.html +1 -1
  191. data/vendor/local/share/gtk-doc/html/gio/GPollableOutputStream.html +1 -1
  192. data/vendor/local/share/gtk-doc/html/gio/GProxy.html +1 -1
  193. data/vendor/local/share/gtk-doc/html/gio/GProxyResolver.html +1 -1
  194. data/vendor/local/share/gtk-doc/html/gio/GRemoteActionGroup.html +1 -1
  195. data/vendor/local/share/gtk-doc/html/gio/GSeekable.html +1 -1
  196. data/vendor/local/share/gtk-doc/html/gio/GSettings.html +49 -49
  197. data/vendor/local/share/gtk-doc/html/gio/GSettingsBackend.html +4 -4
  198. data/vendor/local/share/gtk-doc/html/gio/GSimpleAction.html +12 -12
  199. data/vendor/local/share/gtk-doc/html/gio/GSimpleAsyncResult.html +79 -79
  200. data/vendor/local/share/gtk-doc/html/gio/GSocketConnectable.html +47 -47
  201. data/vendor/local/share/gtk-doc/html/gio/GSrvTarget.html +1 -1
  202. data/vendor/local/share/gtk-doc/html/gio/GSubprocess.html +1 -1
  203. data/vendor/local/share/gtk-doc/html/gio/GTask.html +320 -320
  204. data/vendor/local/share/gtk-doc/html/gio/GTestDBus.html +8 -8
  205. data/vendor/local/share/gtk-doc/html/gio/GThemedIcon.html +16 -16
  206. data/vendor/local/share/gtk-doc/html/gio/GTlsBackend.html +1 -1
  207. data/vendor/local/share/gtk-doc/html/gio/GTlsClientConnection.html +1 -1
  208. data/vendor/local/share/gtk-doc/html/gio/GTlsFileDatabase.html +1 -1
  209. data/vendor/local/share/gtk-doc/html/gio/GTlsPassword.html +1 -1
  210. data/vendor/local/share/gtk-doc/html/gio/GTlsServerConnection.html +1 -1
  211. data/vendor/local/share/gtk-doc/html/gio/GVolume.html +9 -9
  212. data/vendor/local/share/gtk-doc/html/gio/ch31.html +29 -29
  213. data/vendor/local/share/gtk-doc/html/gio/ch33s02.html +18 -18
  214. data/vendor/local/share/gtk-doc/html/gio/ch33s03.html +58 -58
  215. data/vendor/local/share/gtk-doc/html/gio/ch33s04.html +14 -14
  216. data/vendor/local/share/gtk-doc/html/gio/ch33s05.html +382 -382
  217. data/vendor/local/share/gtk-doc/html/gio/gdbus-codegen.html +183 -183
  218. data/vendor/local/share/gtk-doc/html/gio/gio-D-Bus-Introspection-Data.html +1 -1
  219. data/vendor/local/share/gtk-doc/html/gio/gio-Extension-Points.html +10 -10
  220. data/vendor/local/share/gtk-doc/html/gio/gio-GDBusError.html +29 -29
  221. data/vendor/local/share/gtk-doc/html/gio/gio-GIOError.html +5 -5
  222. data/vendor/local/share/gtk-doc/html/gio/gio-GPropertyAction.html +4 -4
  223. data/vendor/local/share/gtk-doc/html/gio/gio-GResource.html +12 -12
  224. data/vendor/local/share/gtk-doc/html/gio/gio-GSettingsSchema-GSettingsSchemaSource.html +41 -41
  225. data/vendor/local/share/gtk-doc/html/gio/gio-TLS-Overview.html +1 -1
  226. data/vendor/local/share/gtk-doc/html/gio/gio-hierarchy.html +3 -3
  227. data/vendor/local/share/gtk-doc/html/gio/index.html +1 -1
  228. data/vendor/local/share/gtk-doc/html/glib/api-index-full.html +16 -16
  229. data/vendor/local/share/gtk-doc/html/glib/glib-Arrays.html +16 -16
  230. data/vendor/local/share/gtk-doc/html/glib/glib-Asynchronous-Queues.html +5 -5
  231. data/vendor/local/share/gtk-doc/html/glib/glib-Basic-Types.html +7 -7
  232. data/vendor/local/share/gtk-doc/html/glib/glib-Byte-Arrays.html +13 -13
  233. data/vendor/local/share/gtk-doc/html/glib/glib-Character-Set-Conversion.html +6 -6
  234. data/vendor/local/share/gtk-doc/html/glib/glib-Commandline-option-parser.html +67 -67
  235. data/vendor/local/share/gtk-doc/html/glib/glib-Date-and-Time-Functions.html +5 -5
  236. data/vendor/local/share/gtk-doc/html/glib/glib-Deprecated-Thread-APIs.html +54 -54
  237. data/vendor/local/share/gtk-doc/html/glib/glib-Double-ended-Queues.html +1 -1
  238. data/vendor/local/share/gtk-doc/html/glib/glib-Doubly-Linked-Lists.html +35 -35
  239. data/vendor/local/share/gtk-doc/html/glib/glib-Dynamic-Loading-of-Modules.html +36 -36
  240. data/vendor/local/share/gtk-doc/html/glib/glib-Error-Reporting.html +104 -104
  241. data/vendor/local/share/gtk-doc/html/glib/glib-File-Utilities.html +6 -6
  242. data/vendor/local/share/gtk-doc/html/glib/glib-GVariant.html +126 -126
  243. data/vendor/local/share/gtk-doc/html/glib/glib-GVariantType.html +4 -4
  244. data/vendor/local/share/gtk-doc/html/glib/glib-Hash-Tables.html +12 -12
  245. data/vendor/local/share/gtk-doc/html/glib/glib-I18N.html +29 -29
  246. data/vendor/local/share/gtk-doc/html/glib/glib-Key-value-file-parser.html +13 -13
  247. data/vendor/local/share/gtk-doc/html/glib/glib-Keyed-Data-Lists.html +3 -3
  248. data/vendor/local/share/gtk-doc/html/glib/glib-Memory-Slices.html +25 -25
  249. data/vendor/local/share/gtk-doc/html/glib/glib-Message-Logging.html +7 -7
  250. data/vendor/local/share/gtk-doc/html/glib/glib-Miscellaneous-Macros.html +28 -28
  251. data/vendor/local/share/gtk-doc/html/glib/glib-Miscellaneous-Utility-Functions.html +3 -3
  252. data/vendor/local/share/gtk-doc/html/glib/glib-Perl-compatible-regular-expressions.html +70 -70
  253. data/vendor/local/share/gtk-doc/html/glib/glib-Pointer-Arrays.html +12 -12
  254. data/vendor/local/share/gtk-doc/html/glib/glib-Simple-XML-Subset-Parser.html +67 -67
  255. data/vendor/local/share/gtk-doc/html/glib/glib-Singly-Linked-Lists.html +14 -14
  256. data/vendor/local/share/gtk-doc/html/glib/glib-Spawning-Processes.html +3 -3
  257. data/vendor/local/share/gtk-doc/html/glib/glib-Standard-Macros.html +1 -1
  258. data/vendor/local/share/gtk-doc/html/glib/glib-String-Utility-Functions.html +4 -4
  259. data/vendor/local/share/gtk-doc/html/glib/glib-Testing.html +45 -45
  260. data/vendor/local/share/gtk-doc/html/glib/glib-The-Main-Event-Loop.html +110 -110
  261. data/vendor/local/share/gtk-doc/html/glib/glib-Threads.html +159 -159
  262. data/vendor/local/share/gtk-doc/html/glib/glib-Type-Conversion-Macros.html +10 -10
  263. data/vendor/local/share/gtk-doc/html/glib/glib-UNIX-specific-utilities-and-integration.html +1 -1
  264. data/vendor/local/share/gtk-doc/html/glib/glib-URI-Functions.html +1 -1
  265. data/vendor/local/share/gtk-doc/html/glib/glib-Unicode-Manipulation.html +6 -6
  266. data/vendor/local/share/gtk-doc/html/glib/glib-Version-Information.html +3 -3
  267. data/vendor/local/share/gtk-doc/html/glib/glib-Warnings-and-Assertions.html +24 -24
  268. data/vendor/local/share/gtk-doc/html/glib/glib-Windows-Compatibility-Functions.html +1 -1
  269. data/vendor/local/share/gtk-doc/html/glib/gvariant-format-strings.html +138 -138
  270. data/vendor/local/share/gtk-doc/html/glib/gvariant-text.html +7 -7
  271. data/vendor/local/share/gtk-doc/html/glib/index.html +1 -1
  272. data/vendor/local/share/gtk-doc/html/gobject/GBinding.html +16 -16
  273. data/vendor/local/share/gtk-doc/html/gobject/GTypeModule.html +48 -48
  274. data/vendor/local/share/gtk-doc/html/gobject/GTypePlugin.html +5 -5
  275. data/vendor/local/share/gtk-doc/html/gobject/api-index-2-10.html +2 -2
  276. data/vendor/local/share/gtk-doc/html/gobject/api-index-2-26.html +2 -2
  277. data/vendor/local/share/gtk-doc/html/gobject/api-index-2-4.html +2 -2
  278. data/vendor/local/share/gtk-doc/html/gobject/api-index-full.html +22 -22
  279. data/vendor/local/share/gtk-doc/html/gobject/gobject-Boxed-Types.html +12 -12
  280. data/vendor/local/share/gtk-doc/html/gobject/gobject-Closures.html +42 -42
  281. data/vendor/local/share/gtk-doc/html/gobject/gobject-Enumeration-and-Flag-Types.html +13 -13
  282. data/vendor/local/share/gtk-doc/html/gobject/gobject-Generic-values.html +43 -43
  283. data/vendor/local/share/gtk-doc/html/gobject/gobject-Signals.html +21 -21
  284. data/vendor/local/share/gtk-doc/html/gobject/gobject-The-Base-Object-Type.html +111 -111
  285. data/vendor/local/share/gtk-doc/html/gobject/gobject-Type-Information.html +170 -170
  286. data/vendor/local/share/gtk-doc/html/gobject/gobject-Value-arrays.html +3 -3
  287. data/vendor/local/share/gtk-doc/html/gobject/gobject-properties.html +84 -84
  288. data/vendor/local/share/gtk-doc/html/gobject/howto-gobject-construction.html +24 -24
  289. data/vendor/local/share/gtk-doc/html/gobject/index.html +1 -1
  290. data/vendor/local/share/info/dir +0 -3
  291. data/vendor/local/share/info/gnutls-guile.info +16 -7
  292. data/vendor/local/share/info/gnutls.info +1 -1
  293. data/vendor/local/share/info/gnutls.info-1 +2 -2
  294. data/vendor/local/share/info/gnutls.info-2 +1 -1
  295. data/vendor/local/share/info/gnutls.info-3 +1 -1
  296. data/vendor/local/share/info/gnutls.info-4 +1 -1
  297. data/vendor/local/share/info/gnutls.info-5 +1 -1
  298. data/vendor/local/share/info/libffi.info +156 -9
  299. data/vendor/local/share/locale/bg/LC_MESSAGES/glib20.mo +0 -0
  300. data/vendor/local/share/locale/bn_IN/LC_MESSAGES/glib20.mo +0 -0
  301. data/vendor/local/share/locale/cs/LC_MESSAGES/gnutls.mo +0 -0
  302. data/vendor/local/share/locale/de/LC_MESSAGES/gnutls.mo +0 -0
  303. data/vendor/local/share/locale/en@boldquot/LC_MESSAGES/gnutls.mo +0 -0
  304. data/vendor/local/share/locale/en@quot/LC_MESSAGES/gnutls.mo +0 -0
  305. data/vendor/local/share/locale/eo/LC_MESSAGES/gnutls.mo +0 -0
  306. data/vendor/local/share/locale/fi/LC_MESSAGES/gnutls.mo +0 -0
  307. data/vendor/local/share/locale/fr/LC_MESSAGES/gnutls.mo +0 -0
  308. data/vendor/local/share/locale/gu/LC_MESSAGES/glib20.mo +0 -0
  309. data/vendor/local/share/locale/it/LC_MESSAGES/glib20.mo +0 -0
  310. data/vendor/local/share/locale/it/LC_MESSAGES/gnutls.mo +0 -0
  311. data/vendor/local/share/locale/kk/LC_MESSAGES/glib-networking.mo +0 -0
  312. data/vendor/local/share/locale/ms/LC_MESSAGES/gnutls.mo +0 -0
  313. data/vendor/local/share/locale/nb/LC_MESSAGES/glib20.mo +0 -0
  314. data/vendor/local/share/locale/nl/LC_MESSAGES/gnutls.mo +0 -0
  315. data/vendor/local/share/locale/pl/LC_MESSAGES/gnutls.mo +0 -0
  316. data/vendor/local/share/locale/sv/LC_MESSAGES/gnutls.mo +0 -0
  317. data/vendor/local/share/locale/te/LC_MESSAGES/glib20.mo +0 -0
  318. data/vendor/local/share/locale/uk/LC_MESSAGES/gnutls.mo +0 -0
  319. data/vendor/local/share/locale/vi/LC_MESSAGES/gnutls.mo +0 -0
  320. data/vendor/local/share/locale/zh_CN/LC_MESSAGES/gnutls.mo +0 -0
  321. data/vendor/local/share/man/man1/certtool.1 +107 -85
  322. data/vendor/local/share/man/man1/gettext.1 +1 -1
  323. data/vendor/local/share/man/man1/gnutls-cli-debug.1 +46 -22
  324. data/vendor/local/share/man/man1/gnutls-cli.1 +100 -73
  325. data/vendor/local/share/man/man1/gnutls-serv.1 +79 -55
  326. data/vendor/local/share/man/man1/ngettext.1 +1 -1
  327. data/vendor/local/share/man/man1/ocsptool.1 +57 -35
  328. data/vendor/local/share/man/man1/p11tool.1 +80 -57
  329. data/vendor/local/share/man/man1/psktool.1 +47 -23
  330. data/vendor/local/share/man/man1/srptool.1 +51 -27
  331. data/vendor/local/share/man/man1/tpmtool.1 +56 -34
  332. data/vendor/local/share/man/man3/gnutls_alert_get.3 +1 -1
  333. data/vendor/local/share/man/man3/gnutls_alert_get_name.3 +1 -1
  334. data/vendor/local/share/man/man3/gnutls_alert_get_strname.3 +1 -1
  335. data/vendor/local/share/man/man3/gnutls_alert_send.3 +1 -1
  336. data/vendor/local/share/man/man3/gnutls_alert_send_appropriate.3 +1 -1
  337. data/vendor/local/share/man/man3/gnutls_alpn_get_selected_protocol.3 +2 -2
  338. data/vendor/local/share/man/man3/gnutls_alpn_set_protocols.3 +2 -2
  339. data/vendor/local/share/man/man3/gnutls_anon_allocate_client_credentials.3 +1 -1
  340. data/vendor/local/share/man/man3/gnutls_anon_allocate_server_credentials.3 +1 -1
  341. data/vendor/local/share/man/man3/gnutls_anon_free_client_credentials.3 +1 -1
  342. data/vendor/local/share/man/man3/gnutls_anon_free_server_credentials.3 +1 -1
  343. data/vendor/local/share/man/man3/gnutls_anon_set_params_function.3 +1 -1
  344. data/vendor/local/share/man/man3/gnutls_anon_set_server_dh_params.3 +1 -1
  345. data/vendor/local/share/man/man3/gnutls_anon_set_server_params_function.3 +1 -1
  346. data/vendor/local/share/man/man3/gnutls_auth_client_get_type.3 +1 -1
  347. data/vendor/local/share/man/man3/gnutls_auth_get_type.3 +1 -1
  348. data/vendor/local/share/man/man3/gnutls_auth_server_get_type.3 +1 -1
  349. data/vendor/local/share/man/man3/gnutls_bye.3 +1 -1
  350. data/vendor/local/share/man/man3/gnutls_certificate_activation_time_peers.3 +1 -1
  351. data/vendor/local/share/man/man3/gnutls_certificate_allocate_credentials.3 +1 -1
  352. data/vendor/local/share/man/man3/gnutls_certificate_client_get_request_status.3 +1 -1
  353. data/vendor/local/share/man/man3/gnutls_certificate_client_set_retrieve_function.3 +1 -1
  354. data/vendor/local/share/man/man3/gnutls_certificate_expiration_time_peers.3 +1 -1
  355. data/vendor/local/share/man/man3/gnutls_certificate_free_ca_names.3 +1 -1
  356. data/vendor/local/share/man/man3/gnutls_certificate_free_cas.3 +1 -1
  357. data/vendor/local/share/man/man3/gnutls_certificate_free_credentials.3 +1 -1
  358. data/vendor/local/share/man/man3/gnutls_certificate_free_crls.3 +1 -1
  359. data/vendor/local/share/man/man3/gnutls_certificate_free_keys.3 +1 -1
  360. data/vendor/local/share/man/man3/gnutls_certificate_get_crt_raw.3 +1 -1
  361. data/vendor/local/share/man/man3/gnutls_certificate_get_issuer.3 +1 -1
  362. data/vendor/local/share/man/man3/gnutls_certificate_get_ours.3 +1 -1
  363. data/vendor/local/share/man/man3/gnutls_certificate_get_peers.3 +1 -1
  364. data/vendor/local/share/man/man3/gnutls_certificate_get_peers_subkey_id.3 +1 -1
  365. data/vendor/local/share/man/man3/gnutls_certificate_send_x509_rdn_sequence.3 +1 -1
  366. data/vendor/local/share/man/man3/gnutls_certificate_server_set_request.3 +1 -1
  367. data/vendor/local/share/man/man3/gnutls_certificate_server_set_retrieve_function.3 +1 -1
  368. data/vendor/local/share/man/man3/gnutls_certificate_set_dh_params.3 +1 -1
  369. data/vendor/local/share/man/man3/gnutls_certificate_set_key.3 +1 -1
  370. data/vendor/local/share/man/man3/gnutls_certificate_set_ocsp_status_request_file.3 +1 -1
  371. data/vendor/local/share/man/man3/gnutls_certificate_set_ocsp_status_request_function.3 +1 -1
  372. data/vendor/local/share/man/man3/gnutls_certificate_set_openpgp_key.3 +1 -1
  373. data/vendor/local/share/man/man3/gnutls_certificate_set_openpgp_key_file.3 +1 -1
  374. data/vendor/local/share/man/man3/gnutls_certificate_set_openpgp_key_file2.3 +1 -1
  375. data/vendor/local/share/man/man3/gnutls_certificate_set_openpgp_key_mem.3 +1 -1
  376. data/vendor/local/share/man/man3/gnutls_certificate_set_openpgp_key_mem2.3 +1 -1
  377. data/vendor/local/share/man/man3/gnutls_certificate_set_openpgp_keyring_file.3 +1 -1
  378. data/vendor/local/share/man/man3/gnutls_certificate_set_openpgp_keyring_mem.3 +1 -1
  379. data/vendor/local/share/man/man3/gnutls_certificate_set_params_function.3 +1 -1
  380. data/vendor/local/share/man/man3/gnutls_certificate_set_pin_function.3 +1 -1
  381. data/vendor/local/share/man/man3/gnutls_certificate_set_retrieve_function.3 +1 -1
  382. data/vendor/local/share/man/man3/gnutls_certificate_set_retrieve_function2.3 +1 -1
  383. data/vendor/local/share/man/man3/gnutls_certificate_set_rsa_export_params.3 +1 -1
  384. data/vendor/local/share/man/man3/gnutls_certificate_set_trust_list.3 +1 -1
  385. data/vendor/local/share/man/man3/gnutls_certificate_set_verify_flags.3 +1 -1
  386. data/vendor/local/share/man/man3/gnutls_certificate_set_verify_function.3 +1 -1
  387. data/vendor/local/share/man/man3/gnutls_certificate_set_verify_limits.3 +1 -1
  388. data/vendor/local/share/man/man3/gnutls_certificate_set_x509_crl.3 +1 -1
  389. data/vendor/local/share/man/man3/gnutls_certificate_set_x509_crl_file.3 +1 -1
  390. data/vendor/local/share/man/man3/gnutls_certificate_set_x509_crl_mem.3 +1 -1
  391. data/vendor/local/share/man/man3/gnutls_certificate_set_x509_key.3 +1 -1
  392. data/vendor/local/share/man/man3/gnutls_certificate_set_x509_key_file.3 +1 -1
  393. data/vendor/local/share/man/man3/gnutls_certificate_set_x509_key_file2.3 +1 -1
  394. data/vendor/local/share/man/man3/gnutls_certificate_set_x509_key_mem.3 +1 -1
  395. data/vendor/local/share/man/man3/gnutls_certificate_set_x509_key_mem2.3 +1 -1
  396. data/vendor/local/share/man/man3/gnutls_certificate_set_x509_simple_pkcs12_file.3 +1 -1
  397. data/vendor/local/share/man/man3/gnutls_certificate_set_x509_simple_pkcs12_mem.3 +1 -1
  398. data/vendor/local/share/man/man3/gnutls_certificate_set_x509_system_trust.3 +1 -1
  399. data/vendor/local/share/man/man3/gnutls_certificate_set_x509_trust.3 +1 -1
  400. data/vendor/local/share/man/man3/gnutls_certificate_set_x509_trust_file.3 +1 -1
  401. data/vendor/local/share/man/man3/gnutls_certificate_set_x509_trust_mem.3 +1 -1
  402. data/vendor/local/share/man/man3/gnutls_certificate_type_get.3 +1 -1
  403. data/vendor/local/share/man/man3/gnutls_certificate_type_get_id.3 +1 -1
  404. data/vendor/local/share/man/man3/gnutls_certificate_type_get_name.3 +1 -1
  405. data/vendor/local/share/man/man3/gnutls_certificate_type_list.3 +1 -1
  406. data/vendor/local/share/man/man3/gnutls_certificate_type_set_priority.3 +1 -1
  407. data/vendor/local/share/man/man3/gnutls_certificate_verification_status_print.3 +1 -1
  408. data/vendor/local/share/man/man3/gnutls_certificate_verify_peers2.3 +1 -1
  409. data/vendor/local/share/man/man3/gnutls_certificate_verify_peers3.3 +1 -1
  410. data/vendor/local/share/man/man3/gnutls_check_version.3 +1 -1
  411. data/vendor/local/share/man/man3/gnutls_cipher_add_auth.3 +1 -1
  412. data/vendor/local/share/man/man3/gnutls_cipher_decrypt.3 +1 -1
  413. data/vendor/local/share/man/man3/gnutls_cipher_decrypt2.3 +1 -1
  414. data/vendor/local/share/man/man3/gnutls_cipher_deinit.3 +1 -1
  415. data/vendor/local/share/man/man3/gnutls_cipher_encrypt.3 +1 -1
  416. data/vendor/local/share/man/man3/gnutls_cipher_encrypt2.3 +1 -1
  417. data/vendor/local/share/man/man3/gnutls_cipher_get.3 +1 -1
  418. data/vendor/local/share/man/man3/gnutls_cipher_get_block_size.3 +1 -1
  419. data/vendor/local/share/man/man3/gnutls_cipher_get_id.3 +1 -1
  420. data/vendor/local/share/man/man3/gnutls_cipher_get_iv_size.3 +1 -1
  421. data/vendor/local/share/man/man3/gnutls_cipher_get_key_size.3 +1 -1
  422. data/vendor/local/share/man/man3/gnutls_cipher_get_name.3 +1 -1
  423. data/vendor/local/share/man/man3/gnutls_cipher_get_tag_size.3 +1 -1
  424. data/vendor/local/share/man/man3/gnutls_cipher_init.3 +1 -1
  425. data/vendor/local/share/man/man3/gnutls_cipher_list.3 +1 -1
  426. data/vendor/local/share/man/man3/gnutls_cipher_set_iv.3 +1 -1
  427. data/vendor/local/share/man/man3/gnutls_cipher_set_priority.3 +1 -1
  428. data/vendor/local/share/man/man3/gnutls_cipher_suite_get_name.3 +1 -1
  429. data/vendor/local/share/man/man3/gnutls_cipher_suite_info.3 +1 -1
  430. data/vendor/local/share/man/man3/gnutls_cipher_tag.3 +1 -1
  431. data/vendor/local/share/man/man3/gnutls_compression_get.3 +1 -1
  432. data/vendor/local/share/man/man3/gnutls_compression_get_id.3 +1 -1
  433. data/vendor/local/share/man/man3/gnutls_compression_get_name.3 +1 -1
  434. data/vendor/local/share/man/man3/gnutls_compression_list.3 +1 -1
  435. data/vendor/local/share/man/man3/gnutls_compression_set_priority.3 +1 -1
  436. data/vendor/local/share/man/man3/gnutls_credentials_clear.3 +1 -1
  437. data/vendor/local/share/man/man3/gnutls_credentials_set.3 +1 -1
  438. data/vendor/local/share/man/man3/gnutls_db_check_entry.3 +1 -1
  439. data/vendor/local/share/man/man3/gnutls_db_check_entry_time.3 +1 -1
  440. data/vendor/local/share/man/man3/gnutls_db_get_default_cache_expiration.3 +1 -1
  441. data/vendor/local/share/man/man3/gnutls_db_get_ptr.3 +1 -1
  442. data/vendor/local/share/man/man3/gnutls_db_remove_session.3 +1 -1
  443. data/vendor/local/share/man/man3/gnutls_db_set_cache_expiration.3 +1 -1
  444. data/vendor/local/share/man/man3/gnutls_db_set_ptr.3 +1 -1
  445. data/vendor/local/share/man/man3/gnutls_db_set_remove_function.3 +1 -1
  446. data/vendor/local/share/man/man3/gnutls_db_set_retrieve_function.3 +1 -1
  447. data/vendor/local/share/man/man3/gnutls_db_set_store_function.3 +1 -1
  448. data/vendor/local/share/man/man3/gnutls_deinit.3 +1 -1
  449. data/vendor/local/share/man/man3/gnutls_dh_get_group.3 +1 -1
  450. data/vendor/local/share/man/man3/gnutls_dh_get_peers_public_bits.3 +1 -1
  451. data/vendor/local/share/man/man3/gnutls_dh_get_prime_bits.3 +1 -1
  452. data/vendor/local/share/man/man3/gnutls_dh_get_pubkey.3 +1 -1
  453. data/vendor/local/share/man/man3/gnutls_dh_get_secret_bits.3 +1 -1
  454. data/vendor/local/share/man/man3/gnutls_dh_params_cpy.3 +1 -1
  455. data/vendor/local/share/man/man3/gnutls_dh_params_deinit.3 +1 -1
  456. data/vendor/local/share/man/man3/gnutls_dh_params_export2_pkcs3.3 +1 -1
  457. data/vendor/local/share/man/man3/gnutls_dh_params_export_pkcs3.3 +1 -1
  458. data/vendor/local/share/man/man3/gnutls_dh_params_export_raw.3 +1 -1
  459. data/vendor/local/share/man/man3/gnutls_dh_params_generate2.3 +1 -1
  460. data/vendor/local/share/man/man3/gnutls_dh_params_import_pkcs3.3 +1 -1
  461. data/vendor/local/share/man/man3/gnutls_dh_params_import_raw.3 +1 -1
  462. data/vendor/local/share/man/man3/gnutls_dh_params_init.3 +1 -1
  463. data/vendor/local/share/man/man3/gnutls_dh_set_prime_bits.3 +1 -1
  464. data/vendor/local/share/man/man3/gnutls_digest_get_id.3 +1 -1
  465. data/vendor/local/share/man/man3/gnutls_digest_get_name.3 +1 -1
  466. data/vendor/local/share/man/man3/gnutls_digest_list.3 +1 -1
  467. data/vendor/local/share/man/man3/gnutls_dtls_cookie_send.3 +1 -1
  468. data/vendor/local/share/man/man3/gnutls_dtls_cookie_verify.3 +1 -1
  469. data/vendor/local/share/man/man3/gnutls_dtls_get_data_mtu.3 +1 -1
  470. data/vendor/local/share/man/man3/gnutls_dtls_get_mtu.3 +1 -1
  471. data/vendor/local/share/man/man3/gnutls_dtls_get_timeout.3 +1 -1
  472. data/vendor/local/share/man/man3/gnutls_dtls_prestate_set.3 +1 -1
  473. data/vendor/local/share/man/man3/gnutls_dtls_set_data_mtu.3 +1 -1
  474. data/vendor/local/share/man/man3/gnutls_dtls_set_mtu.3 +1 -1
  475. data/vendor/local/share/man/man3/gnutls_dtls_set_timeouts.3 +1 -1
  476. data/vendor/local/share/man/man3/gnutls_ecc_curve_get.3 +1 -1
  477. data/vendor/local/share/man/man3/gnutls_ecc_curve_get_name.3 +1 -1
  478. data/vendor/local/share/man/man3/gnutls_ecc_curve_get_size.3 +1 -1
  479. data/vendor/local/share/man/man3/gnutls_ecc_curve_list.3 +1 -1
  480. data/vendor/local/share/man/man3/gnutls_error_is_fatal.3 +1 -1
  481. data/vendor/local/share/man/man3/gnutls_error_to_alert.3 +1 -1
  482. data/vendor/local/share/man/man3/gnutls_est_record_overhead_size.3 +1 -1
  483. data/vendor/local/share/man/man3/gnutls_fingerprint.3 +1 -1
  484. data/vendor/local/share/man/man3/gnutls_global_deinit.3 +1 -1
  485. data/vendor/local/share/man/man3/gnutls_global_init.3 +1 -1
  486. data/vendor/local/share/man/man3/gnutls_global_set_audit_log_function.3 +1 -1
  487. data/vendor/local/share/man/man3/gnutls_global_set_log_function.3 +1 -1
  488. data/vendor/local/share/man/man3/gnutls_global_set_log_level.3 +1 -1
  489. data/vendor/local/share/man/man3/gnutls_global_set_mem_functions.3 +1 -1
  490. data/vendor/local/share/man/man3/gnutls_global_set_mutex.3 +1 -1
  491. data/vendor/local/share/man/man3/gnutls_global_set_time_function.3 +1 -1
  492. data/vendor/local/share/man/man3/gnutls_handshake.3 +11 -5
  493. data/vendor/local/share/man/man3/gnutls_handshake_description_get_name.3 +1 -1
  494. data/vendor/local/share/man/man3/gnutls_handshake_get_last_in.3 +1 -1
  495. data/vendor/local/share/man/man3/gnutls_handshake_get_last_out.3 +1 -1
  496. data/vendor/local/share/man/man3/gnutls_handshake_set_hook_function.3 +1 -1
  497. data/vendor/local/share/man/man3/gnutls_handshake_set_max_packet_length.3 +1 -1
  498. data/vendor/local/share/man/man3/gnutls_handshake_set_post_client_hello_function.3 +1 -1
  499. data/vendor/local/share/man/man3/gnutls_handshake_set_private_extensions.3 +1 -1
  500. data/vendor/local/share/man/man3/gnutls_handshake_set_random.3 +1 -1
  501. data/vendor/local/share/man/man3/gnutls_handshake_set_timeout.3 +1 -1
  502. data/vendor/local/share/man/man3/gnutls_hash.3 +1 -1
  503. data/vendor/local/share/man/man3/gnutls_hash_deinit.3 +1 -1
  504. data/vendor/local/share/man/man3/gnutls_hash_fast.3 +1 -1
  505. data/vendor/local/share/man/man3/gnutls_hash_get_len.3 +1 -1
  506. data/vendor/local/share/man/man3/gnutls_hash_init.3 +1 -1
  507. data/vendor/local/share/man/man3/gnutls_hash_output.3 +1 -1
  508. data/vendor/local/share/man/man3/gnutls_heartbeat_allowed.3 +1 -1
  509. data/vendor/local/share/man/man3/gnutls_heartbeat_enable.3 +1 -1
  510. data/vendor/local/share/man/man3/gnutls_heartbeat_get_timeout.3 +1 -1
  511. data/vendor/local/share/man/man3/gnutls_heartbeat_ping.3 +1 -1
  512. data/vendor/local/share/man/man3/gnutls_heartbeat_pong.3 +1 -1
  513. data/vendor/local/share/man/man3/gnutls_heartbeat_set_timeouts.3 +1 -1
  514. data/vendor/local/share/man/man3/gnutls_hex2bin.3 +1 -1
  515. data/vendor/local/share/man/man3/gnutls_hex_decode.3 +1 -1
  516. data/vendor/local/share/man/man3/gnutls_hex_encode.3 +1 -1
  517. data/vendor/local/share/man/man3/gnutls_hmac.3 +1 -1
  518. data/vendor/local/share/man/man3/gnutls_hmac_deinit.3 +1 -1
  519. data/vendor/local/share/man/man3/gnutls_hmac_fast.3 +1 -1
  520. data/vendor/local/share/man/man3/gnutls_hmac_get_len.3 +1 -1
  521. data/vendor/local/share/man/man3/gnutls_hmac_init.3 +1 -1
  522. data/vendor/local/share/man/man3/gnutls_hmac_output.3 +1 -1
  523. data/vendor/local/share/man/man3/gnutls_hmac_set_nonce.3 +1 -1
  524. data/vendor/local/share/man/man3/gnutls_init.3 +1 -1
  525. data/vendor/local/share/man/man3/gnutls_key_generate.3 +1 -1
  526. data/vendor/local/share/man/man3/gnutls_kx_get.3 +1 -1
  527. data/vendor/local/share/man/man3/gnutls_kx_get_id.3 +1 -1
  528. data/vendor/local/share/man/man3/gnutls_kx_get_name.3 +1 -1
  529. data/vendor/local/share/man/man3/gnutls_kx_list.3 +1 -1
  530. data/vendor/local/share/man/man3/gnutls_kx_set_priority.3 +1 -1
  531. data/vendor/local/share/man/man3/gnutls_load_file.3 +1 -1
  532. data/vendor/local/share/man/man3/gnutls_mac_get.3 +1 -1
  533. data/vendor/local/share/man/man3/gnutls_mac_get_id.3 +1 -1
  534. data/vendor/local/share/man/man3/gnutls_mac_get_key_size.3 +1 -1
  535. data/vendor/local/share/man/man3/gnutls_mac_get_name.3 +1 -1
  536. data/vendor/local/share/man/man3/gnutls_mac_get_nonce_size.3 +1 -1
  537. data/vendor/local/share/man/man3/gnutls_mac_list.3 +1 -1
  538. data/vendor/local/share/man/man3/gnutls_mac_set_priority.3 +1 -1
  539. data/vendor/local/share/man/man3/gnutls_ocsp_req_add_cert.3 +1 -1
  540. data/vendor/local/share/man/man3/gnutls_ocsp_req_add_cert_id.3 +1 -1
  541. data/vendor/local/share/man/man3/gnutls_ocsp_req_deinit.3 +1 -1
  542. data/vendor/local/share/man/man3/gnutls_ocsp_req_export.3 +1 -1
  543. data/vendor/local/share/man/man3/gnutls_ocsp_req_get_cert_id.3 +1 -1
  544. data/vendor/local/share/man/man3/gnutls_ocsp_req_get_extension.3 +1 -1
  545. data/vendor/local/share/man/man3/gnutls_ocsp_req_get_nonce.3 +1 -1
  546. data/vendor/local/share/man/man3/gnutls_ocsp_req_get_version.3 +1 -1
  547. data/vendor/local/share/man/man3/gnutls_ocsp_req_import.3 +1 -1
  548. data/vendor/local/share/man/man3/gnutls_ocsp_req_init.3 +1 -1
  549. data/vendor/local/share/man/man3/gnutls_ocsp_req_print.3 +1 -1
  550. data/vendor/local/share/man/man3/gnutls_ocsp_req_randomize_nonce.3 +1 -1
  551. data/vendor/local/share/man/man3/gnutls_ocsp_req_set_extension.3 +1 -1
  552. data/vendor/local/share/man/man3/gnutls_ocsp_req_set_nonce.3 +1 -1
  553. data/vendor/local/share/man/man3/gnutls_ocsp_resp_check_crt.3 +1 -1
  554. data/vendor/local/share/man/man3/gnutls_ocsp_resp_deinit.3 +1 -1
  555. data/vendor/local/share/man/man3/gnutls_ocsp_resp_export.3 +1 -1
  556. data/vendor/local/share/man/man3/gnutls_ocsp_resp_get_certs.3 +1 -1
  557. data/vendor/local/share/man/man3/gnutls_ocsp_resp_get_extension.3 +1 -1
  558. data/vendor/local/share/man/man3/gnutls_ocsp_resp_get_nonce.3 +1 -1
  559. data/vendor/local/share/man/man3/gnutls_ocsp_resp_get_produced.3 +1 -1
  560. data/vendor/local/share/man/man3/gnutls_ocsp_resp_get_responder.3 +1 -1
  561. data/vendor/local/share/man/man3/gnutls_ocsp_resp_get_response.3 +1 -1
  562. data/vendor/local/share/man/man3/gnutls_ocsp_resp_get_signature.3 +1 -1
  563. data/vendor/local/share/man/man3/gnutls_ocsp_resp_get_signature_algorithm.3 +1 -1
  564. data/vendor/local/share/man/man3/gnutls_ocsp_resp_get_single.3 +1 -1
  565. data/vendor/local/share/man/man3/gnutls_ocsp_resp_get_status.3 +1 -1
  566. data/vendor/local/share/man/man3/gnutls_ocsp_resp_get_version.3 +1 -1
  567. data/vendor/local/share/man/man3/gnutls_ocsp_resp_import.3 +1 -1
  568. data/vendor/local/share/man/man3/gnutls_ocsp_resp_init.3 +1 -1
  569. data/vendor/local/share/man/man3/gnutls_ocsp_resp_print.3 +1 -1
  570. data/vendor/local/share/man/man3/gnutls_ocsp_resp_verify.3 +1 -1
  571. data/vendor/local/share/man/man3/gnutls_ocsp_resp_verify_direct.3 +1 -1
  572. data/vendor/local/share/man/man3/gnutls_ocsp_status_request_enable_client.3 +1 -1
  573. data/vendor/local/share/man/man3/gnutls_ocsp_status_request_get.3 +1 -1
  574. data/vendor/local/share/man/man3/gnutls_ocsp_status_request_is_checked.3 +1 -1
  575. data/vendor/local/share/man/man3/gnutls_openpgp_crt_check_hostname.3 +1 -1
  576. data/vendor/local/share/man/man3/gnutls_openpgp_crt_deinit.3 +1 -1
  577. data/vendor/local/share/man/man3/gnutls_openpgp_crt_export.3 +1 -1
  578. data/vendor/local/share/man/man3/gnutls_openpgp_crt_export2.3 +1 -1
  579. data/vendor/local/share/man/man3/gnutls_openpgp_crt_get_auth_subkey.3 +1 -1
  580. data/vendor/local/share/man/man3/gnutls_openpgp_crt_get_creation_time.3 +1 -1
  581. data/vendor/local/share/man/man3/gnutls_openpgp_crt_get_expiration_time.3 +1 -1
  582. data/vendor/local/share/man/man3/gnutls_openpgp_crt_get_fingerprint.3 +1 -1
  583. data/vendor/local/share/man/man3/gnutls_openpgp_crt_get_key_id.3 +1 -1
  584. data/vendor/local/share/man/man3/gnutls_openpgp_crt_get_key_usage.3 +1 -1
  585. data/vendor/local/share/man/man3/gnutls_openpgp_crt_get_name.3 +1 -1
  586. data/vendor/local/share/man/man3/gnutls_openpgp_crt_get_pk_algorithm.3 +1 -1
  587. data/vendor/local/share/man/man3/gnutls_openpgp_crt_get_pk_dsa_raw.3 +1 -1
  588. data/vendor/local/share/man/man3/gnutls_openpgp_crt_get_pk_rsa_raw.3 +1 -1
  589. data/vendor/local/share/man/man3/gnutls_openpgp_crt_get_preferred_key_id.3 +1 -1
  590. data/vendor/local/share/man/man3/gnutls_openpgp_crt_get_revoked_status.3 +1 -1
  591. data/vendor/local/share/man/man3/gnutls_openpgp_crt_get_subkey_count.3 +1 -1
  592. data/vendor/local/share/man/man3/gnutls_openpgp_crt_get_subkey_creation_time.3 +1 -1
  593. data/vendor/local/share/man/man3/gnutls_openpgp_crt_get_subkey_expiration_time.3 +1 -1
  594. data/vendor/local/share/man/man3/gnutls_openpgp_crt_get_subkey_fingerprint.3 +1 -1
  595. data/vendor/local/share/man/man3/gnutls_openpgp_crt_get_subkey_id.3 +1 -1
  596. data/vendor/local/share/man/man3/gnutls_openpgp_crt_get_subkey_idx.3 +1 -1
  597. data/vendor/local/share/man/man3/gnutls_openpgp_crt_get_subkey_pk_algorithm.3 +1 -1
  598. data/vendor/local/share/man/man3/gnutls_openpgp_crt_get_subkey_pk_dsa_raw.3 +1 -1
  599. data/vendor/local/share/man/man3/gnutls_openpgp_crt_get_subkey_pk_rsa_raw.3 +1 -1
  600. data/vendor/local/share/man/man3/gnutls_openpgp_crt_get_subkey_revoked_status.3 +1 -1
  601. data/vendor/local/share/man/man3/gnutls_openpgp_crt_get_subkey_usage.3 +1 -1
  602. data/vendor/local/share/man/man3/gnutls_openpgp_crt_get_version.3 +1 -1
  603. data/vendor/local/share/man/man3/gnutls_openpgp_crt_import.3 +1 -1
  604. data/vendor/local/share/man/man3/gnutls_openpgp_crt_init.3 +1 -1
  605. data/vendor/local/share/man/man3/gnutls_openpgp_crt_print.3 +1 -1
  606. data/vendor/local/share/man/man3/gnutls_openpgp_crt_set_preferred_key_id.3 +1 -1
  607. data/vendor/local/share/man/man3/gnutls_openpgp_crt_verify_ring.3 +1 -1
  608. data/vendor/local/share/man/man3/gnutls_openpgp_crt_verify_self.3 +1 -1
  609. data/vendor/local/share/man/man3/gnutls_openpgp_keyring_check_id.3 +1 -1
  610. data/vendor/local/share/man/man3/gnutls_openpgp_keyring_deinit.3 +1 -1
  611. data/vendor/local/share/man/man3/gnutls_openpgp_keyring_get_crt.3 +1 -1
  612. data/vendor/local/share/man/man3/gnutls_openpgp_keyring_get_crt_count.3 +1 -1
  613. data/vendor/local/share/man/man3/gnutls_openpgp_keyring_import.3 +1 -1
  614. data/vendor/local/share/man/man3/gnutls_openpgp_keyring_init.3 +1 -1
  615. data/vendor/local/share/man/man3/gnutls_openpgp_privkey_deinit.3 +1 -1
  616. data/vendor/local/share/man/man3/gnutls_openpgp_privkey_export.3 +1 -1
  617. data/vendor/local/share/man/man3/gnutls_openpgp_privkey_export2.3 +1 -1
  618. data/vendor/local/share/man/man3/gnutls_openpgp_privkey_export_dsa_raw.3 +1 -1
  619. data/vendor/local/share/man/man3/gnutls_openpgp_privkey_export_rsa_raw.3 +1 -1
  620. data/vendor/local/share/man/man3/gnutls_openpgp_privkey_export_subkey_dsa_raw.3 +1 -1
  621. data/vendor/local/share/man/man3/gnutls_openpgp_privkey_export_subkey_rsa_raw.3 +1 -1
  622. data/vendor/local/share/man/man3/gnutls_openpgp_privkey_get_fingerprint.3 +1 -1
  623. data/vendor/local/share/man/man3/gnutls_openpgp_privkey_get_key_id.3 +1 -1
  624. data/vendor/local/share/man/man3/gnutls_openpgp_privkey_get_pk_algorithm.3 +1 -1
  625. data/vendor/local/share/man/man3/gnutls_openpgp_privkey_get_preferred_key_id.3 +1 -1
  626. data/vendor/local/share/man/man3/gnutls_openpgp_privkey_get_revoked_status.3 +1 -1
  627. data/vendor/local/share/man/man3/gnutls_openpgp_privkey_get_subkey_count.3 +1 -1
  628. data/vendor/local/share/man/man3/gnutls_openpgp_privkey_get_subkey_creation_time.3 +1 -1
  629. data/vendor/local/share/man/man3/gnutls_openpgp_privkey_get_subkey_expiration_time.3 +1 -1
  630. data/vendor/local/share/man/man3/gnutls_openpgp_privkey_get_subkey_fingerprint.3 +1 -1
  631. data/vendor/local/share/man/man3/gnutls_openpgp_privkey_get_subkey_id.3 +1 -1
  632. data/vendor/local/share/man/man3/gnutls_openpgp_privkey_get_subkey_idx.3 +1 -1
  633. data/vendor/local/share/man/man3/gnutls_openpgp_privkey_get_subkey_pk_algorithm.3 +1 -1
  634. data/vendor/local/share/man/man3/gnutls_openpgp_privkey_get_subkey_revoked_status.3 +1 -1
  635. data/vendor/local/share/man/man3/gnutls_openpgp_privkey_import.3 +1 -1
  636. data/vendor/local/share/man/man3/gnutls_openpgp_privkey_init.3 +1 -1
  637. data/vendor/local/share/man/man3/gnutls_openpgp_privkey_sec_param.3 +1 -1
  638. data/vendor/local/share/man/man3/gnutls_openpgp_privkey_set_preferred_key_id.3 +1 -1
  639. data/vendor/local/share/man/man3/gnutls_openpgp_privkey_sign_hash.3 +1 -1
  640. data/vendor/local/share/man/man3/gnutls_openpgp_send_cert.3 +1 -1
  641. data/vendor/local/share/man/man3/gnutls_openpgp_set_recv_key_function.3 +1 -1
  642. data/vendor/local/share/man/man3/gnutls_pcert_deinit.3 +1 -1
  643. data/vendor/local/share/man/man3/gnutls_pcert_import_openpgp.3 +1 -1
  644. data/vendor/local/share/man/man3/gnutls_pcert_import_openpgp_raw.3 +1 -1
  645. data/vendor/local/share/man/man3/gnutls_pcert_import_x509.3 +1 -1
  646. data/vendor/local/share/man/man3/gnutls_pcert_import_x509_raw.3 +1 -1
  647. data/vendor/local/share/man/man3/gnutls_pcert_list_import_x509_raw.3 +1 -1
  648. data/vendor/local/share/man/man3/gnutls_pem_base64_decode.3 +1 -1
  649. data/vendor/local/share/man/man3/gnutls_pem_base64_decode_alloc.3 +1 -1
  650. data/vendor/local/share/man/man3/gnutls_pem_base64_encode.3 +1 -1
  651. data/vendor/local/share/man/man3/gnutls_pem_base64_encode_alloc.3 +1 -1
  652. data/vendor/local/share/man/man3/gnutls_perror.3 +1 -1
  653. data/vendor/local/share/man/man3/gnutls_pk_algorithm_get_name.3 +1 -1
  654. data/vendor/local/share/man/man3/gnutls_pk_bits_to_sec_param.3 +1 -1
  655. data/vendor/local/share/man/man3/gnutls_pk_get_id.3 +1 -1
  656. data/vendor/local/share/man/man3/gnutls_pk_get_name.3 +1 -1
  657. data/vendor/local/share/man/man3/gnutls_pk_list.3 +1 -1
  658. data/vendor/local/share/man/man3/gnutls_pk_to_sign.3 +1 -1
  659. data/vendor/local/share/man/man3/gnutls_pkcs11_add_provider.3 +1 -1
  660. data/vendor/local/share/man/man3/gnutls_pkcs11_copy_secret_key.3 +1 -1
  661. data/vendor/local/share/man/man3/gnutls_pkcs11_copy_x509_crt.3 +1 -1
  662. data/vendor/local/share/man/man3/gnutls_pkcs11_copy_x509_privkey.3 +1 -1
  663. data/vendor/local/share/man/man3/gnutls_pkcs11_deinit.3 +1 -1
  664. data/vendor/local/share/man/man3/gnutls_pkcs11_delete_url.3 +1 -1
  665. data/vendor/local/share/man/man3/gnutls_pkcs11_get_pin_function.3 +1 -1
  666. data/vendor/local/share/man/man3/gnutls_pkcs11_get_raw_issuer.3 +1 -1
  667. data/vendor/local/share/man/man3/gnutls_pkcs11_init.3 +1 -1
  668. data/vendor/local/share/man/man3/gnutls_pkcs11_obj_deinit.3 +1 -1
  669. data/vendor/local/share/man/man3/gnutls_pkcs11_obj_export.3 +1 -1
  670. data/vendor/local/share/man/man3/gnutls_pkcs11_obj_export2.3 +1 -1
  671. data/vendor/local/share/man/man3/gnutls_pkcs11_obj_export3.3 +1 -1
  672. data/vendor/local/share/man/man3/gnutls_pkcs11_obj_export_url.3 +1 -1
  673. data/vendor/local/share/man/man3/gnutls_pkcs11_obj_get_info.3 +1 -1
  674. data/vendor/local/share/man/man3/gnutls_pkcs11_obj_get_type.3 +1 -1
  675. data/vendor/local/share/man/man3/gnutls_pkcs11_obj_import_url.3 +1 -1
  676. data/vendor/local/share/man/man3/gnutls_pkcs11_obj_init.3 +1 -1
  677. data/vendor/local/share/man/man3/gnutls_pkcs11_obj_list_import_url.3 +1 -1
  678. data/vendor/local/share/man/man3/gnutls_pkcs11_obj_list_import_url2.3 +1 -1
  679. data/vendor/local/share/man/man3/gnutls_pkcs11_obj_set_pin_function.3 +1 -1
  680. data/vendor/local/share/man/man3/gnutls_pkcs11_privkey_deinit.3 +1 -1
  681. data/vendor/local/share/man/man3/gnutls_pkcs11_privkey_export_url.3 +1 -1
  682. data/vendor/local/share/man/man3/gnutls_pkcs11_privkey_generate.3 +1 -1
  683. data/vendor/local/share/man/man3/gnutls_pkcs11_privkey_generate2.3 +1 -1
  684. data/vendor/local/share/man/man3/gnutls_pkcs11_privkey_get_info.3 +1 -1
  685. data/vendor/local/share/man/man3/gnutls_pkcs11_privkey_get_pk_algorithm.3 +1 -1
  686. data/vendor/local/share/man/man3/gnutls_pkcs11_privkey_import_url.3 +1 -1
  687. data/vendor/local/share/man/man3/gnutls_pkcs11_privkey_init.3 +1 -1
  688. data/vendor/local/share/man/man3/gnutls_pkcs11_privkey_set_pin_function.3 +1 -1
  689. data/vendor/local/share/man/man3/gnutls_pkcs11_privkey_status.3 +1 -1
  690. data/vendor/local/share/man/man3/gnutls_pkcs11_reinit.3 +1 -1
  691. data/vendor/local/share/man/man3/gnutls_pkcs11_set_pin_function.3 +1 -1
  692. data/vendor/local/share/man/man3/gnutls_pkcs11_set_token_function.3 +1 -1
  693. data/vendor/local/share/man/man3/gnutls_pkcs11_token_get_flags.3 +1 -1
  694. data/vendor/local/share/man/man3/gnutls_pkcs11_token_get_info.3 +1 -1
  695. data/vendor/local/share/man/man3/gnutls_pkcs11_token_get_mechanism.3 +1 -1
  696. data/vendor/local/share/man/man3/gnutls_pkcs11_token_get_random.3 +1 -1
  697. data/vendor/local/share/man/man3/gnutls_pkcs11_token_get_url.3 +1 -1
  698. data/vendor/local/share/man/man3/gnutls_pkcs11_token_init.3 +1 -1
  699. data/vendor/local/share/man/man3/gnutls_pkcs11_token_set_pin.3 +1 -1
  700. data/vendor/local/share/man/man3/gnutls_pkcs11_type_get_name.3 +1 -1
  701. data/vendor/local/share/man/man3/gnutls_pkcs12_bag_decrypt.3 +1 -1
  702. data/vendor/local/share/man/man3/gnutls_pkcs12_bag_deinit.3 +1 -1
  703. data/vendor/local/share/man/man3/gnutls_pkcs12_bag_encrypt.3 +1 -1
  704. data/vendor/local/share/man/man3/gnutls_pkcs12_bag_get_count.3 +1 -1
  705. data/vendor/local/share/man/man3/gnutls_pkcs12_bag_get_data.3 +1 -1
  706. data/vendor/local/share/man/man3/gnutls_pkcs12_bag_get_friendly_name.3 +1 -1
  707. data/vendor/local/share/man/man3/gnutls_pkcs12_bag_get_key_id.3 +1 -1
  708. data/vendor/local/share/man/man3/gnutls_pkcs12_bag_get_type.3 +1 -1
  709. data/vendor/local/share/man/man3/gnutls_pkcs12_bag_init.3 +1 -1
  710. data/vendor/local/share/man/man3/gnutls_pkcs12_bag_set_crl.3 +1 -1
  711. data/vendor/local/share/man/man3/gnutls_pkcs12_bag_set_crt.3 +1 -1
  712. data/vendor/local/share/man/man3/gnutls_pkcs12_bag_set_data.3 +1 -1
  713. data/vendor/local/share/man/man3/gnutls_pkcs12_bag_set_friendly_name.3 +1 -1
  714. data/vendor/local/share/man/man3/gnutls_pkcs12_bag_set_key_id.3 +1 -1
  715. data/vendor/local/share/man/man3/gnutls_pkcs12_deinit.3 +1 -1
  716. data/vendor/local/share/man/man3/gnutls_pkcs12_export.3 +1 -1
  717. data/vendor/local/share/man/man3/gnutls_pkcs12_export2.3 +1 -1
  718. data/vendor/local/share/man/man3/gnutls_pkcs12_generate_mac.3 +1 -1
  719. data/vendor/local/share/man/man3/gnutls_pkcs12_get_bag.3 +1 -1
  720. data/vendor/local/share/man/man3/gnutls_pkcs12_import.3 +1 -1
  721. data/vendor/local/share/man/man3/gnutls_pkcs12_init.3 +1 -1
  722. data/vendor/local/share/man/man3/gnutls_pkcs12_set_bag.3 +1 -1
  723. data/vendor/local/share/man/man3/gnutls_pkcs12_simple_parse.3 +1 -1
  724. data/vendor/local/share/man/man3/gnutls_pkcs12_verify_mac.3 +1 -1
  725. data/vendor/local/share/man/man3/gnutls_pkcs7_deinit.3 +1 -1
  726. data/vendor/local/share/man/man3/gnutls_pkcs7_delete_crl.3 +1 -1
  727. data/vendor/local/share/man/man3/gnutls_pkcs7_delete_crt.3 +1 -1
  728. data/vendor/local/share/man/man3/gnutls_pkcs7_export.3 +1 -1
  729. data/vendor/local/share/man/man3/gnutls_pkcs7_export2.3 +1 -1
  730. data/vendor/local/share/man/man3/gnutls_pkcs7_get_crl_count.3 +1 -1
  731. data/vendor/local/share/man/man3/gnutls_pkcs7_get_crl_raw.3 +1 -1
  732. data/vendor/local/share/man/man3/gnutls_pkcs7_get_crt_count.3 +1 -1
  733. data/vendor/local/share/man/man3/gnutls_pkcs7_get_crt_raw.3 +1 -1
  734. data/vendor/local/share/man/man3/gnutls_pkcs7_import.3 +1 -1
  735. data/vendor/local/share/man/man3/gnutls_pkcs7_init.3 +1 -1
  736. data/vendor/local/share/man/man3/gnutls_pkcs7_set_crl.3 +1 -1
  737. data/vendor/local/share/man/man3/gnutls_pkcs7_set_crl_raw.3 +1 -1
  738. data/vendor/local/share/man/man3/gnutls_pkcs7_set_crt.3 +1 -1
  739. data/vendor/local/share/man/man3/gnutls_pkcs7_set_crt_raw.3 +1 -1
  740. data/vendor/local/share/man/man3/gnutls_prf.3 +1 -1
  741. data/vendor/local/share/man/man3/gnutls_prf_raw.3 +1 -1
  742. data/vendor/local/share/man/man3/gnutls_priority_certificate_type_list.3 +1 -1
  743. data/vendor/local/share/man/man3/gnutls_priority_cipher_list.3 +1 -1
  744. data/vendor/local/share/man/man3/gnutls_priority_compression_list.3 +1 -1
  745. data/vendor/local/share/man/man3/gnutls_priority_deinit.3 +1 -1
  746. data/vendor/local/share/man/man3/gnutls_priority_ecc_curve_list.3 +1 -1
  747. data/vendor/local/share/man/man3/gnutls_priority_get_cipher_suite_index.3 +1 -1
  748. data/vendor/local/share/man/man3/gnutls_priority_init.3 +1 -1
  749. data/vendor/local/share/man/man3/gnutls_priority_kx_list.3 +1 -1
  750. data/vendor/local/share/man/man3/gnutls_priority_mac_list.3 +1 -1
  751. data/vendor/local/share/man/man3/gnutls_priority_protocol_list.3 +1 -1
  752. data/vendor/local/share/man/man3/gnutls_priority_set.3 +1 -1
  753. data/vendor/local/share/man/man3/gnutls_priority_set_direct.3 +1 -1
  754. data/vendor/local/share/man/man3/gnutls_priority_sign_list.3 +1 -1
  755. data/vendor/local/share/man/man3/gnutls_privkey_decrypt_data.3 +1 -1
  756. data/vendor/local/share/man/man3/gnutls_privkey_deinit.3 +1 -1
  757. data/vendor/local/share/man/man3/gnutls_privkey_get_pk_algorithm.3 +1 -1
  758. data/vendor/local/share/man/man3/gnutls_privkey_get_type.3 +1 -1
  759. data/vendor/local/share/man/man3/gnutls_privkey_import_ext.3 +1 -1
  760. data/vendor/local/share/man/man3/gnutls_privkey_import_ext2.3 +1 -1
  761. data/vendor/local/share/man/man3/gnutls_privkey_import_openpgp.3 +1 -1
  762. data/vendor/local/share/man/man3/gnutls_privkey_import_openpgp_raw.3 +1 -1
  763. data/vendor/local/share/man/man3/gnutls_privkey_import_pkcs11.3 +1 -1
  764. data/vendor/local/share/man/man3/gnutls_privkey_import_pkcs11_url.3 +1 -1
  765. data/vendor/local/share/man/man3/gnutls_privkey_import_tpm_raw.3 +1 -1
  766. data/vendor/local/share/man/man3/gnutls_privkey_import_tpm_url.3 +1 -1
  767. data/vendor/local/share/man/man3/gnutls_privkey_import_url.3 +1 -1
  768. data/vendor/local/share/man/man3/gnutls_privkey_import_x509.3 +1 -1
  769. data/vendor/local/share/man/man3/gnutls_privkey_import_x509_raw.3 +1 -1
  770. data/vendor/local/share/man/man3/gnutls_privkey_init.3 +1 -1
  771. data/vendor/local/share/man/man3/gnutls_privkey_set_pin_function.3 +1 -1
  772. data/vendor/local/share/man/man3/gnutls_privkey_sign_data.3 +1 -1
  773. data/vendor/local/share/man/man3/gnutls_privkey_sign_hash.3 +1 -1
  774. data/vendor/local/share/man/man3/gnutls_privkey_sign_raw_data.3 +1 -1
  775. data/vendor/local/share/man/man3/gnutls_privkey_status.3 +1 -1
  776. data/vendor/local/share/man/man3/gnutls_protocol_get_id.3 +1 -1
  777. data/vendor/local/share/man/man3/gnutls_protocol_get_name.3 +1 -1
  778. data/vendor/local/share/man/man3/gnutls_protocol_get_version.3 +1 -1
  779. data/vendor/local/share/man/man3/gnutls_protocol_list.3 +1 -1
  780. data/vendor/local/share/man/man3/gnutls_protocol_set_priority.3 +1 -1
  781. data/vendor/local/share/man/man3/gnutls_psk_allocate_client_credentials.3 +1 -1
  782. data/vendor/local/share/man/man3/gnutls_psk_allocate_server_credentials.3 +1 -1
  783. data/vendor/local/share/man/man3/gnutls_psk_client_get_hint.3 +1 -1
  784. data/vendor/local/share/man/man3/gnutls_psk_free_client_credentials.3 +1 -1
  785. data/vendor/local/share/man/man3/gnutls_psk_free_server_credentials.3 +1 -1
  786. data/vendor/local/share/man/man3/gnutls_psk_server_get_username.3 +1 -1
  787. data/vendor/local/share/man/man3/gnutls_psk_set_client_credentials.3 +1 -1
  788. data/vendor/local/share/man/man3/gnutls_psk_set_client_credentials_function.3 +1 -1
  789. data/vendor/local/share/man/man3/gnutls_psk_set_params_function.3 +1 -1
  790. data/vendor/local/share/man/man3/gnutls_psk_set_server_credentials_file.3 +1 -1
  791. data/vendor/local/share/man/man3/gnutls_psk_set_server_credentials_function.3 +1 -1
  792. data/vendor/local/share/man/man3/gnutls_psk_set_server_credentials_hint.3 +1 -1
  793. data/vendor/local/share/man/man3/gnutls_psk_set_server_dh_params.3 +1 -1
  794. data/vendor/local/share/man/man3/gnutls_psk_set_server_params_function.3 +1 -1
  795. data/vendor/local/share/man/man3/gnutls_pubkey_deinit.3 +1 -1
  796. data/vendor/local/share/man/man3/gnutls_pubkey_encrypt_data.3 +1 -1
  797. data/vendor/local/share/man/man3/gnutls_pubkey_export.3 +1 -1
  798. data/vendor/local/share/man/man3/gnutls_pubkey_export2.3 +1 -1
  799. data/vendor/local/share/man/man3/gnutls_pubkey_get_key_id.3 +1 -1
  800. data/vendor/local/share/man/man3/gnutls_pubkey_get_key_usage.3 +1 -1
  801. data/vendor/local/share/man/man3/gnutls_pubkey_get_openpgp_key_id.3 +1 -1
  802. data/vendor/local/share/man/man3/gnutls_pubkey_get_pk_algorithm.3 +1 -1
  803. data/vendor/local/share/man/man3/gnutls_pubkey_get_pk_dsa_raw.3 +1 -1
  804. data/vendor/local/share/man/man3/gnutls_pubkey_get_pk_ecc_raw.3 +1 -1
  805. data/vendor/local/share/man/man3/gnutls_pubkey_get_pk_ecc_x962.3 +1 -1
  806. data/vendor/local/share/man/man3/gnutls_pubkey_get_pk_rsa_raw.3 +1 -1
  807. data/vendor/local/share/man/man3/gnutls_pubkey_get_preferred_hash_algorithm.3 +1 -1
  808. data/vendor/local/share/man/man3/gnutls_pubkey_get_verify_algorithm.3 +1 -1
  809. data/vendor/local/share/man/man3/gnutls_pubkey_import.3 +1 -1
  810. data/vendor/local/share/man/man3/gnutls_pubkey_import_dsa_raw.3 +1 -1
  811. data/vendor/local/share/man/man3/gnutls_pubkey_import_ecc_raw.3 +1 -1
  812. data/vendor/local/share/man/man3/gnutls_pubkey_import_ecc_x962.3 +1 -1
  813. data/vendor/local/share/man/man3/gnutls_pubkey_import_openpgp.3 +1 -1
  814. data/vendor/local/share/man/man3/gnutls_pubkey_import_openpgp_raw.3 +1 -1
  815. data/vendor/local/share/man/man3/gnutls_pubkey_import_pkcs11.3 +1 -1
  816. data/vendor/local/share/man/man3/gnutls_pubkey_import_pkcs11_url.3 +1 -1
  817. data/vendor/local/share/man/man3/gnutls_pubkey_import_privkey.3 +1 -1
  818. data/vendor/local/share/man/man3/gnutls_pubkey_import_rsa_raw.3 +1 -1
  819. data/vendor/local/share/man/man3/gnutls_pubkey_import_tpm_raw.3 +1 -1
  820. data/vendor/local/share/man/man3/gnutls_pubkey_import_tpm_url.3 +1 -1
  821. data/vendor/local/share/man/man3/gnutls_pubkey_import_url.3 +1 -1
  822. data/vendor/local/share/man/man3/gnutls_pubkey_import_x509.3 +1 -1
  823. data/vendor/local/share/man/man3/gnutls_pubkey_import_x509_crq.3 +1 -1
  824. data/vendor/local/share/man/man3/gnutls_pubkey_import_x509_raw.3 +1 -1
  825. data/vendor/local/share/man/man3/gnutls_pubkey_init.3 +1 -1
  826. data/vendor/local/share/man/man3/gnutls_pubkey_print.3 +1 -1
  827. data/vendor/local/share/man/man3/gnutls_pubkey_set_key_usage.3 +1 -1
  828. data/vendor/local/share/man/man3/gnutls_pubkey_set_pin_function.3 +1 -1
  829. data/vendor/local/share/man/man3/gnutls_pubkey_verify_data.3 +1 -1
  830. data/vendor/local/share/man/man3/gnutls_pubkey_verify_data2.3 +1 -1
  831. data/vendor/local/share/man/man3/gnutls_pubkey_verify_hash.3 +1 -1
  832. data/vendor/local/share/man/man3/gnutls_pubkey_verify_hash2.3 +1 -1
  833. data/vendor/local/share/man/man3/gnutls_random_art.3 +1 -1
  834. data/vendor/local/share/man/man3/gnutls_range_split.3 +1 -1
  835. data/vendor/local/share/man/man3/gnutls_record_can_use_length_hiding.3 +1 -1
  836. data/vendor/local/share/man/man3/gnutls_record_check_corked.3 +1 -1
  837. data/vendor/local/share/man/man3/gnutls_record_check_pending.3 +1 -1
  838. data/vendor/local/share/man/man3/gnutls_record_cork.3 +1 -1
  839. data/vendor/local/share/man/man3/gnutls_record_disable_padding.3 +1 -1
  840. data/vendor/local/share/man/man3/gnutls_record_get_direction.3 +1 -1
  841. data/vendor/local/share/man/man3/gnutls_record_get_discarded.3 +1 -1
  842. data/vendor/local/share/man/man3/gnutls_record_get_max_size.3 +1 -1
  843. data/vendor/local/share/man/man3/gnutls_record_overhead_size.3 +1 -1
  844. data/vendor/local/share/man/man3/gnutls_record_recv.3 +1 -1
  845. data/vendor/local/share/man/man3/gnutls_record_recv_seq.3 +1 -1
  846. data/vendor/local/share/man/man3/gnutls_record_send.3 +1 -1
  847. data/vendor/local/share/man/man3/gnutls_record_send_range.3 +1 -1
  848. data/vendor/local/share/man/man3/gnutls_record_set_max_empty_records.3 +1 -1
  849. data/vendor/local/share/man/man3/gnutls_record_set_max_size.3 +1 -1
  850. data/vendor/local/share/man/man3/gnutls_record_set_timeout.3 +1 -1
  851. data/vendor/local/share/man/man3/gnutls_record_uncork.3 +1 -1
  852. data/vendor/local/share/man/man3/gnutls_rehandshake.3 +1 -1
  853. data/vendor/local/share/man/man3/gnutls_rnd.3 +1 -1
  854. data/vendor/local/share/man/man3/gnutls_rnd_refresh.3 +1 -1
  855. data/vendor/local/share/man/man3/gnutls_rsa_export_get_modulus_bits.3 +1 -1
  856. data/vendor/local/share/man/man3/gnutls_rsa_export_get_pubkey.3 +1 -1
  857. data/vendor/local/share/man/man3/gnutls_rsa_params_cpy.3 +1 -1
  858. data/vendor/local/share/man/man3/gnutls_rsa_params_deinit.3 +1 -1
  859. data/vendor/local/share/man/man3/gnutls_rsa_params_export_pkcs1.3 +1 -1
  860. data/vendor/local/share/man/man3/gnutls_rsa_params_export_raw.3 +1 -1
  861. data/vendor/local/share/man/man3/gnutls_rsa_params_generate2.3 +1 -1
  862. data/vendor/local/share/man/man3/gnutls_rsa_params_import_pkcs1.3 +1 -1
  863. data/vendor/local/share/man/man3/gnutls_rsa_params_import_raw.3 +1 -1
  864. data/vendor/local/share/man/man3/gnutls_rsa_params_init.3 +1 -1
  865. data/vendor/local/share/man/man3/gnutls_safe_renegotiation_status.3 +1 -1
  866. data/vendor/local/share/man/man3/gnutls_sec_param_get_name.3 +1 -1
  867. data/vendor/local/share/man/man3/gnutls_sec_param_to_pk_bits.3 +1 -1
  868. data/vendor/local/share/man/man3/gnutls_server_name_get.3 +1 -1
  869. data/vendor/local/share/man/man3/gnutls_server_name_set.3 +1 -1
  870. data/vendor/local/share/man/man3/gnutls_session_channel_binding.3 +1 -1
  871. data/vendor/local/share/man/man3/gnutls_session_enable_compatibility_mode.3 +1 -1
  872. data/vendor/local/share/man/man3/gnutls_session_force_valid.3 +1 -1
  873. data/vendor/local/share/man/man3/gnutls_session_get_data.3 +1 -1
  874. data/vendor/local/share/man/man3/gnutls_session_get_data2.3 +1 -1
  875. data/vendor/local/share/man/man3/gnutls_session_get_desc.3 +1 -1
  876. data/vendor/local/share/man/man3/gnutls_session_get_id.3 +1 -1
  877. data/vendor/local/share/man/man3/gnutls_session_get_id2.3 +1 -1
  878. data/vendor/local/share/man/man3/gnutls_session_get_ptr.3 +1 -1
  879. data/vendor/local/share/man/man3/gnutls_session_get_random.3 +1 -1
  880. data/vendor/local/share/man/man3/gnutls_session_is_resumed.3 +1 -1
  881. data/vendor/local/share/man/man3/gnutls_session_resumption_requested.3 +1 -1
  882. data/vendor/local/share/man/man3/gnutls_session_set_data.3 +1 -1
  883. data/vendor/local/share/man/man3/gnutls_session_set_id.3 +1 -1
  884. data/vendor/local/share/man/man3/gnutls_session_set_premaster.3 +1 -1
  885. data/vendor/local/share/man/man3/gnutls_session_set_ptr.3 +1 -1
  886. data/vendor/local/share/man/man3/gnutls_session_ticket_enable_client.3 +1 -1
  887. data/vendor/local/share/man/man3/gnutls_session_ticket_enable_server.3 +1 -1
  888. data/vendor/local/share/man/man3/gnutls_session_ticket_key_generate.3 +1 -1
  889. data/vendor/local/share/man/man3/gnutls_set_default_export_priority.3 +1 -1
  890. data/vendor/local/share/man/man3/gnutls_set_default_priority.3 +1 -1
  891. data/vendor/local/share/man/man3/gnutls_sign_algorithm_get.3 +1 -1
  892. data/vendor/local/share/man/man3/gnutls_sign_algorithm_get_client.3 +1 -1
  893. data/vendor/local/share/man/man3/gnutls_sign_algorithm_get_requested.3 +1 -1
  894. data/vendor/local/share/man/man3/gnutls_sign_callback_get.3 +1 -1
  895. data/vendor/local/share/man/man3/gnutls_sign_callback_set.3 +1 -1
  896. data/vendor/local/share/man/man3/gnutls_sign_get_hash_algorithm.3 +1 -1
  897. data/vendor/local/share/man/man3/gnutls_sign_get_id.3 +1 -1
  898. data/vendor/local/share/man/man3/gnutls_sign_get_name.3 +1 -1
  899. data/vendor/local/share/man/man3/gnutls_sign_get_pk_algorithm.3 +1 -1
  900. data/vendor/local/share/man/man3/gnutls_sign_is_secure.3 +1 -1
  901. data/vendor/local/share/man/man3/gnutls_sign_list.3 +1 -1
  902. data/vendor/local/share/man/man3/gnutls_srp_allocate_client_credentials.3 +1 -1
  903. data/vendor/local/share/man/man3/gnutls_srp_allocate_server_credentials.3 +1 -1
  904. data/vendor/local/share/man/man3/gnutls_srp_base64_decode.3 +1 -1
  905. data/vendor/local/share/man/man3/gnutls_srp_base64_decode_alloc.3 +1 -1
  906. data/vendor/local/share/man/man3/gnutls_srp_base64_encode.3 +1 -1
  907. data/vendor/local/share/man/man3/gnutls_srp_base64_encode_alloc.3 +1 -1
  908. data/vendor/local/share/man/man3/gnutls_srp_free_client_credentials.3 +1 -1
  909. data/vendor/local/share/man/man3/gnutls_srp_free_server_credentials.3 +1 -1
  910. data/vendor/local/share/man/man3/gnutls_srp_server_get_username.3 +1 -1
  911. data/vendor/local/share/man/man3/gnutls_srp_set_client_credentials.3 +1 -1
  912. data/vendor/local/share/man/man3/gnutls_srp_set_client_credentials_function.3 +1 -1
  913. data/vendor/local/share/man/man3/gnutls_srp_set_prime_bits.3 +1 -1
  914. data/vendor/local/share/man/man3/gnutls_srp_set_server_credentials_file.3 +1 -1
  915. data/vendor/local/share/man/man3/gnutls_srp_set_server_credentials_function.3 +1 -1
  916. data/vendor/local/share/man/man3/gnutls_srp_verifier.3 +1 -1
  917. data/vendor/local/share/man/man3/gnutls_srtp_get_keys.3 +1 -1
  918. data/vendor/local/share/man/man3/gnutls_srtp_get_mki.3 +1 -1
  919. data/vendor/local/share/man/man3/gnutls_srtp_get_profile_id.3 +1 -1
  920. data/vendor/local/share/man/man3/gnutls_srtp_get_profile_name.3 +1 -1
  921. data/vendor/local/share/man/man3/gnutls_srtp_get_selected_profile.3 +1 -1
  922. data/vendor/local/share/man/man3/gnutls_srtp_set_mki.3 +1 -1
  923. data/vendor/local/share/man/man3/gnutls_srtp_set_profile.3 +1 -1
  924. data/vendor/local/share/man/man3/gnutls_srtp_set_profile_direct.3 +1 -1
  925. data/vendor/local/share/man/man3/gnutls_store_commitment.3 +1 -1
  926. data/vendor/local/share/man/man3/gnutls_store_pubkey.3 +1 -1
  927. data/vendor/local/share/man/man3/gnutls_strerror.3 +1 -1
  928. data/vendor/local/share/man/man3/gnutls_strerror_name.3 +1 -1
  929. data/vendor/local/share/man/man3/gnutls_supplemental_get_name.3 +1 -1
  930. data/vendor/local/share/man/man3/gnutls_tdb_deinit.3 +1 -1
  931. data/vendor/local/share/man/man3/gnutls_tdb_init.3 +1 -1
  932. data/vendor/local/share/man/man3/gnutls_tdb_set_store_commitment_func.3 +1 -1
  933. data/vendor/local/share/man/man3/gnutls_tdb_set_store_func.3 +1 -1
  934. data/vendor/local/share/man/man3/gnutls_tdb_set_verify_func.3 +1 -1
  935. data/vendor/local/share/man/man3/gnutls_tpm_get_registered.3 +1 -1
  936. data/vendor/local/share/man/man3/gnutls_tpm_key_list_deinit.3 +1 -1
  937. data/vendor/local/share/man/man3/gnutls_tpm_key_list_get_url.3 +1 -1
  938. data/vendor/local/share/man/man3/gnutls_tpm_privkey_delete.3 +1 -1
  939. data/vendor/local/share/man/man3/gnutls_tpm_privkey_generate.3 +1 -1
  940. data/vendor/local/share/man/man3/gnutls_transport_get_int.3 +1 -1
  941. data/vendor/local/share/man/man3/gnutls_transport_get_int2.3 +1 -1
  942. data/vendor/local/share/man/man3/gnutls_transport_get_ptr.3 +1 -1
  943. data/vendor/local/share/man/man3/gnutls_transport_get_ptr2.3 +1 -1
  944. data/vendor/local/share/man/man3/gnutls_transport_set_errno.3 +1 -1
  945. data/vendor/local/share/man/man3/gnutls_transport_set_errno_function.3 +1 -1
  946. data/vendor/local/share/man/man3/gnutls_transport_set_int.3 +1 -1
  947. data/vendor/local/share/man/man3/gnutls_transport_set_int2.3 +1 -1
  948. data/vendor/local/share/man/man3/gnutls_transport_set_ptr.3 +1 -1
  949. data/vendor/local/share/man/man3/gnutls_transport_set_ptr2.3 +1 -1
  950. data/vendor/local/share/man/man3/gnutls_transport_set_pull_function.3 +1 -1
  951. data/vendor/local/share/man/man3/gnutls_transport_set_pull_timeout_function.3 +1 -1
  952. data/vendor/local/share/man/man3/gnutls_transport_set_push_function.3 +1 -1
  953. data/vendor/local/share/man/man3/gnutls_transport_set_vec_push_function.3 +1 -1
  954. data/vendor/local/share/man/man3/gnutls_url_is_supported.3 +1 -1
  955. data/vendor/local/share/man/man3/gnutls_verify_stored_pubkey.3 +1 -1
  956. data/vendor/local/share/man/man3/gnutls_x509_crl_check_issuer.3 +1 -1
  957. data/vendor/local/share/man/man3/gnutls_x509_crl_deinit.3 +1 -1
  958. data/vendor/local/share/man/man3/gnutls_x509_crl_export.3 +1 -1
  959. data/vendor/local/share/man/man3/gnutls_x509_crl_export2.3 +1 -1
  960. data/vendor/local/share/man/man3/gnutls_x509_crl_get_authority_key_gn_serial.3 +1 -1
  961. data/vendor/local/share/man/man3/gnutls_x509_crl_get_authority_key_id.3 +1 -1
  962. data/vendor/local/share/man/man3/gnutls_x509_crl_get_crt_count.3 +1 -1
  963. data/vendor/local/share/man/man3/gnutls_x509_crl_get_crt_serial.3 +1 -1
  964. data/vendor/local/share/man/man3/gnutls_x509_crl_get_dn_oid.3 +1 -1
  965. data/vendor/local/share/man/man3/gnutls_x509_crl_get_extension_data.3 +1 -1
  966. data/vendor/local/share/man/man3/gnutls_x509_crl_get_extension_info.3 +1 -1
  967. data/vendor/local/share/man/man3/gnutls_x509_crl_get_extension_oid.3 +1 -1
  968. data/vendor/local/share/man/man3/gnutls_x509_crl_get_issuer_dn.3 +1 -1
  969. data/vendor/local/share/man/man3/gnutls_x509_crl_get_issuer_dn2.3 +1 -1
  970. data/vendor/local/share/man/man3/gnutls_x509_crl_get_issuer_dn_by_oid.3 +1 -1
  971. data/vendor/local/share/man/man3/gnutls_x509_crl_get_next_update.3 +1 -1
  972. data/vendor/local/share/man/man3/gnutls_x509_crl_get_number.3 +1 -1
  973. data/vendor/local/share/man/man3/gnutls_x509_crl_get_raw_issuer_dn.3 +1 -1
  974. data/vendor/local/share/man/man3/gnutls_x509_crl_get_signature.3 +1 -1
  975. data/vendor/local/share/man/man3/gnutls_x509_crl_get_signature_algorithm.3 +1 -1
  976. data/vendor/local/share/man/man3/gnutls_x509_crl_get_this_update.3 +1 -1
  977. data/vendor/local/share/man/man3/gnutls_x509_crl_get_version.3 +1 -1
  978. data/vendor/local/share/man/man3/gnutls_x509_crl_import.3 +1 -1
  979. data/vendor/local/share/man/man3/gnutls_x509_crl_init.3 +1 -1
  980. data/vendor/local/share/man/man3/gnutls_x509_crl_list_import.3 +1 -1
  981. data/vendor/local/share/man/man3/gnutls_x509_crl_list_import2.3 +1 -1
  982. data/vendor/local/share/man/man3/gnutls_x509_crl_print.3 +1 -1
  983. data/vendor/local/share/man/man3/gnutls_x509_crl_privkey_sign.3 +1 -1
  984. data/vendor/local/share/man/man3/gnutls_x509_crl_set_authority_key_id.3 +1 -1
  985. data/vendor/local/share/man/man3/gnutls_x509_crl_set_crt.3 +1 -1
  986. data/vendor/local/share/man/man3/gnutls_x509_crl_set_crt_serial.3 +1 -1
  987. data/vendor/local/share/man/man3/gnutls_x509_crl_set_next_update.3 +1 -1
  988. data/vendor/local/share/man/man3/gnutls_x509_crl_set_number.3 +1 -1
  989. data/vendor/local/share/man/man3/gnutls_x509_crl_set_this_update.3 +1 -1
  990. data/vendor/local/share/man/man3/gnutls_x509_crl_set_version.3 +1 -1
  991. data/vendor/local/share/man/man3/gnutls_x509_crl_sign.3 +1 -1
  992. data/vendor/local/share/man/man3/gnutls_x509_crl_sign2.3 +1 -1
  993. data/vendor/local/share/man/man3/gnutls_x509_crl_verify.3 +1 -1
  994. data/vendor/local/share/man/man3/gnutls_x509_crq_deinit.3 +1 -1
  995. data/vendor/local/share/man/man3/gnutls_x509_crq_export.3 +1 -1
  996. data/vendor/local/share/man/man3/gnutls_x509_crq_export2.3 +1 -1
  997. data/vendor/local/share/man/man3/gnutls_x509_crq_get_attribute_by_oid.3 +1 -1
  998. data/vendor/local/share/man/man3/gnutls_x509_crq_get_attribute_data.3 +1 -1
  999. data/vendor/local/share/man/man3/gnutls_x509_crq_get_attribute_info.3 +1 -1
  1000. data/vendor/local/share/man/man3/gnutls_x509_crq_get_basic_constraints.3 +1 -1
  1001. data/vendor/local/share/man/man3/gnutls_x509_crq_get_challenge_password.3 +1 -1
  1002. data/vendor/local/share/man/man3/gnutls_x509_crq_get_dn.3 +1 -1
  1003. data/vendor/local/share/man/man3/gnutls_x509_crq_get_dn2.3 +1 -1
  1004. data/vendor/local/share/man/man3/gnutls_x509_crq_get_dn_by_oid.3 +1 -1
  1005. data/vendor/local/share/man/man3/gnutls_x509_crq_get_dn_oid.3 +1 -1
  1006. data/vendor/local/share/man/man3/gnutls_x509_crq_get_extension_by_oid.3 +1 -1
  1007. data/vendor/local/share/man/man3/gnutls_x509_crq_get_extension_data.3 +1 -1
  1008. data/vendor/local/share/man/man3/gnutls_x509_crq_get_extension_info.3 +1 -1
  1009. data/vendor/local/share/man/man3/gnutls_x509_crq_get_key_id.3 +1 -1
  1010. data/vendor/local/share/man/man3/gnutls_x509_crq_get_key_purpose_oid.3 +1 -1
  1011. data/vendor/local/share/man/man3/gnutls_x509_crq_get_key_rsa_raw.3 +1 -1
  1012. data/vendor/local/share/man/man3/gnutls_x509_crq_get_key_usage.3 +1 -1
  1013. data/vendor/local/share/man/man3/gnutls_x509_crq_get_pk_algorithm.3 +1 -1
  1014. data/vendor/local/share/man/man3/gnutls_x509_crq_get_private_key_usage_period.3 +1 -1
  1015. data/vendor/local/share/man/man3/gnutls_x509_crq_get_subject_alt_name.3 +1 -1
  1016. data/vendor/local/share/man/man3/gnutls_x509_crq_get_subject_alt_othername_oid.3 +1 -1
  1017. data/vendor/local/share/man/man3/gnutls_x509_crq_get_version.3 +1 -1
  1018. data/vendor/local/share/man/man3/gnutls_x509_crq_import.3 +1 -1
  1019. data/vendor/local/share/man/man3/gnutls_x509_crq_init.3 +1 -1
  1020. data/vendor/local/share/man/man3/gnutls_x509_crq_print.3 +1 -1
  1021. data/vendor/local/share/man/man3/gnutls_x509_crq_privkey_sign.3 +1 -1
  1022. data/vendor/local/share/man/man3/gnutls_x509_crq_set_attribute_by_oid.3 +1 -1
  1023. data/vendor/local/share/man/man3/gnutls_x509_crq_set_basic_constraints.3 +1 -1
  1024. data/vendor/local/share/man/man3/gnutls_x509_crq_set_challenge_password.3 +1 -1
  1025. data/vendor/local/share/man/man3/gnutls_x509_crq_set_dn.3 +1 -1
  1026. data/vendor/local/share/man/man3/gnutls_x509_crq_set_dn_by_oid.3 +1 -1
  1027. data/vendor/local/share/man/man3/gnutls_x509_crq_set_key.3 +1 -1
  1028. data/vendor/local/share/man/man3/gnutls_x509_crq_set_key_purpose_oid.3 +1 -1
  1029. data/vendor/local/share/man/man3/gnutls_x509_crq_set_key_rsa_raw.3 +1 -1
  1030. data/vendor/local/share/man/man3/gnutls_x509_crq_set_key_usage.3 +1 -1
  1031. data/vendor/local/share/man/man3/gnutls_x509_crq_set_private_key_usage_period.3 +1 -1
  1032. data/vendor/local/share/man/man3/gnutls_x509_crq_set_pubkey.3 +1 -1
  1033. data/vendor/local/share/man/man3/gnutls_x509_crq_set_subject_alt_name.3 +1 -1
  1034. data/vendor/local/share/man/man3/gnutls_x509_crq_set_version.3 +1 -1
  1035. data/vendor/local/share/man/man3/gnutls_x509_crq_sign.3 +1 -1
  1036. data/vendor/local/share/man/man3/gnutls_x509_crq_sign2.3 +1 -1
  1037. data/vendor/local/share/man/man3/gnutls_x509_crq_verify.3 +1 -1
  1038. data/vendor/local/share/man/man3/gnutls_x509_crt_check_hostname.3 +1 -1
  1039. data/vendor/local/share/man/man3/gnutls_x509_crt_check_issuer.3 +1 -1
  1040. data/vendor/local/share/man/man3/gnutls_x509_crt_check_revocation.3 +1 -1
  1041. data/vendor/local/share/man/man3/gnutls_x509_crt_cpy_crl_dist_points.3 +1 -1
  1042. data/vendor/local/share/man/man3/gnutls_x509_crt_deinit.3 +1 -1
  1043. data/vendor/local/share/man/man3/gnutls_x509_crt_export.3 +1 -1
  1044. data/vendor/local/share/man/man3/gnutls_x509_crt_export2.3 +1 -1
  1045. data/vendor/local/share/man/man3/gnutls_x509_crt_get_activation_time.3 +1 -1
  1046. data/vendor/local/share/man/man3/gnutls_x509_crt_get_authority_info_access.3 +1 -1
  1047. data/vendor/local/share/man/man3/gnutls_x509_crt_get_authority_key_gn_serial.3 +1 -1
  1048. data/vendor/local/share/man/man3/gnutls_x509_crt_get_authority_key_id.3 +1 -1
  1049. data/vendor/local/share/man/man3/gnutls_x509_crt_get_basic_constraints.3 +1 -1
  1050. data/vendor/local/share/man/man3/gnutls_x509_crt_get_ca_status.3 +1 -1
  1051. data/vendor/local/share/man/man3/gnutls_x509_crt_get_crl_dist_points.3 +1 -1
  1052. data/vendor/local/share/man/man3/gnutls_x509_crt_get_dn.3 +1 -1
  1053. data/vendor/local/share/man/man3/gnutls_x509_crt_get_dn2.3 +1 -1
  1054. data/vendor/local/share/man/man3/gnutls_x509_crt_get_dn_by_oid.3 +1 -1
  1055. data/vendor/local/share/man/man3/gnutls_x509_crt_get_dn_oid.3 +1 -1
  1056. data/vendor/local/share/man/man3/gnutls_x509_crt_get_expiration_time.3 +1 -1
  1057. data/vendor/local/share/man/man3/gnutls_x509_crt_get_extension_by_oid.3 +1 -1
  1058. data/vendor/local/share/man/man3/gnutls_x509_crt_get_extension_data.3 +1 -1
  1059. data/vendor/local/share/man/man3/gnutls_x509_crt_get_extension_info.3 +1 -1
  1060. data/vendor/local/share/man/man3/gnutls_x509_crt_get_extension_oid.3 +1 -1
  1061. data/vendor/local/share/man/man3/gnutls_x509_crt_get_fingerprint.3 +1 -1
  1062. data/vendor/local/share/man/man3/gnutls_x509_crt_get_issuer.3 +1 -1
  1063. data/vendor/local/share/man/man3/gnutls_x509_crt_get_issuer_alt_name.3 +1 -1
  1064. data/vendor/local/share/man/man3/gnutls_x509_crt_get_issuer_alt_name2.3 +1 -1
  1065. data/vendor/local/share/man/man3/gnutls_x509_crt_get_issuer_alt_othername_oid.3 +1 -1
  1066. data/vendor/local/share/man/man3/gnutls_x509_crt_get_issuer_dn.3 +1 -1
  1067. data/vendor/local/share/man/man3/gnutls_x509_crt_get_issuer_dn2.3 +1 -1
  1068. data/vendor/local/share/man/man3/gnutls_x509_crt_get_issuer_dn_by_oid.3 +1 -1
  1069. data/vendor/local/share/man/man3/gnutls_x509_crt_get_issuer_dn_oid.3 +1 -1
  1070. data/vendor/local/share/man/man3/gnutls_x509_crt_get_issuer_unique_id.3 +1 -1
  1071. data/vendor/local/share/man/man3/gnutls_x509_crt_get_key_id.3 +1 -1
  1072. data/vendor/local/share/man/man3/gnutls_x509_crt_get_key_purpose_oid.3 +1 -1
  1073. data/vendor/local/share/man/man3/gnutls_x509_crt_get_key_usage.3 +1 -1
  1074. data/vendor/local/share/man/man3/gnutls_x509_crt_get_pk_algorithm.3 +1 -1
  1075. data/vendor/local/share/man/man3/gnutls_x509_crt_get_pk_dsa_raw.3 +1 -1
  1076. data/vendor/local/share/man/man3/gnutls_x509_crt_get_pk_rsa_raw.3 +1 -1
  1077. data/vendor/local/share/man/man3/gnutls_x509_crt_get_policy.3 +1 -1
  1078. data/vendor/local/share/man/man3/gnutls_x509_crt_get_preferred_hash_algorithm.3 +1 -1
  1079. data/vendor/local/share/man/man3/gnutls_x509_crt_get_private_key_usage_period.3 +1 -1
  1080. data/vendor/local/share/man/man3/gnutls_x509_crt_get_proxy.3 +1 -1
  1081. data/vendor/local/share/man/man3/gnutls_x509_crt_get_raw_dn.3 +1 -1
  1082. data/vendor/local/share/man/man3/gnutls_x509_crt_get_raw_issuer_dn.3 +1 -1
  1083. data/vendor/local/share/man/man3/gnutls_x509_crt_get_serial.3 +1 -1
  1084. data/vendor/local/share/man/man3/gnutls_x509_crt_get_signature.3 +1 -1
  1085. data/vendor/local/share/man/man3/gnutls_x509_crt_get_signature_algorithm.3 +1 -1
  1086. data/vendor/local/share/man/man3/gnutls_x509_crt_get_subject.3 +1 -1
  1087. data/vendor/local/share/man/man3/gnutls_x509_crt_get_subject_alt_name.3 +1 -1
  1088. data/vendor/local/share/man/man3/gnutls_x509_crt_get_subject_alt_name2.3 +1 -1
  1089. data/vendor/local/share/man/man3/gnutls_x509_crt_get_subject_alt_othername_oid.3 +1 -1
  1090. data/vendor/local/share/man/man3/gnutls_x509_crt_get_subject_key_id.3 +1 -1
  1091. data/vendor/local/share/man/man3/gnutls_x509_crt_get_subject_unique_id.3 +1 -1
  1092. data/vendor/local/share/man/man3/gnutls_x509_crt_get_verify_algorithm.3 +1 -1
  1093. data/vendor/local/share/man/man3/gnutls_x509_crt_get_version.3 +1 -1
  1094. data/vendor/local/share/man/man3/gnutls_x509_crt_import.3 +1 -1
  1095. data/vendor/local/share/man/man3/gnutls_x509_crt_import_pkcs11.3 +1 -1
  1096. data/vendor/local/share/man/man3/gnutls_x509_crt_import_pkcs11_url.3 +1 -1
  1097. data/vendor/local/share/man/man3/gnutls_x509_crt_init.3 +1 -1
  1098. data/vendor/local/share/man/man3/gnutls_x509_crt_list_import.3 +1 -1
  1099. data/vendor/local/share/man/man3/gnutls_x509_crt_list_import2.3 +1 -1
  1100. data/vendor/local/share/man/man3/gnutls_x509_crt_list_import_pkcs11.3 +1 -1
  1101. data/vendor/local/share/man/man3/gnutls_x509_crt_list_verify.3 +1 -1
  1102. data/vendor/local/share/man/man3/gnutls_x509_crt_print.3 +1 -1
  1103. data/vendor/local/share/man/man3/gnutls_x509_crt_privkey_sign.3 +1 -1
  1104. data/vendor/local/share/man/man3/gnutls_x509_crt_set_activation_time.3 +1 -1
  1105. data/vendor/local/share/man/man3/gnutls_x509_crt_set_authority_info_access.3 +1 -1
  1106. data/vendor/local/share/man/man3/gnutls_x509_crt_set_authority_key_id.3 +1 -1
  1107. data/vendor/local/share/man/man3/gnutls_x509_crt_set_basic_constraints.3 +1 -1
  1108. data/vendor/local/share/man/man3/gnutls_x509_crt_set_ca_status.3 +1 -1
  1109. data/vendor/local/share/man/man3/gnutls_x509_crt_set_crl_dist_points.3 +1 -1
  1110. data/vendor/local/share/man/man3/gnutls_x509_crt_set_crl_dist_points2.3 +1 -1
  1111. data/vendor/local/share/man/man3/gnutls_x509_crt_set_crq.3 +1 -1
  1112. data/vendor/local/share/man/man3/gnutls_x509_crt_set_crq_extensions.3 +1 -1
  1113. data/vendor/local/share/man/man3/gnutls_x509_crt_set_dn.3 +1 -1
  1114. data/vendor/local/share/man/man3/gnutls_x509_crt_set_dn_by_oid.3 +1 -1
  1115. data/vendor/local/share/man/man3/gnutls_x509_crt_set_expiration_time.3 +1 -1
  1116. data/vendor/local/share/man/man3/gnutls_x509_crt_set_extension_by_oid.3 +1 -1
  1117. data/vendor/local/share/man/man3/gnutls_x509_crt_set_issuer_dn.3 +1 -1
  1118. data/vendor/local/share/man/man3/gnutls_x509_crt_set_issuer_dn_by_oid.3 +1 -1
  1119. data/vendor/local/share/man/man3/gnutls_x509_crt_set_key.3 +1 -1
  1120. data/vendor/local/share/man/man3/gnutls_x509_crt_set_key_purpose_oid.3 +1 -1
  1121. data/vendor/local/share/man/man3/gnutls_x509_crt_set_key_usage.3 +1 -1
  1122. data/vendor/local/share/man/man3/gnutls_x509_crt_set_pin_function.3 +1 -1
  1123. data/vendor/local/share/man/man3/gnutls_x509_crt_set_policy.3 +1 -1
  1124. data/vendor/local/share/man/man3/gnutls_x509_crt_set_private_key_usage_period.3 +1 -1
  1125. data/vendor/local/share/man/man3/gnutls_x509_crt_set_proxy.3 +1 -1
  1126. data/vendor/local/share/man/man3/gnutls_x509_crt_set_proxy_dn.3 +1 -1
  1127. data/vendor/local/share/man/man3/gnutls_x509_crt_set_pubkey.3 +1 -1
  1128. data/vendor/local/share/man/man3/gnutls_x509_crt_set_serial.3 +1 -1
  1129. data/vendor/local/share/man/man3/gnutls_x509_crt_set_subject_alt_name.3 +1 -1
  1130. data/vendor/local/share/man/man3/gnutls_x509_crt_set_subject_alternative_name.3 +1 -1
  1131. data/vendor/local/share/man/man3/gnutls_x509_crt_set_subject_key_id.3 +1 -1
  1132. data/vendor/local/share/man/man3/gnutls_x509_crt_set_version.3 +1 -1
  1133. data/vendor/local/share/man/man3/gnutls_x509_crt_sign.3 +1 -1
  1134. data/vendor/local/share/man/man3/gnutls_x509_crt_sign2.3 +1 -1
  1135. data/vendor/local/share/man/man3/gnutls_x509_crt_verify.3 +1 -1
  1136. data/vendor/local/share/man/man3/gnutls_x509_crt_verify_data.3 +1 -1
  1137. data/vendor/local/share/man/man3/gnutls_x509_crt_verify_hash.3 +1 -1
  1138. data/vendor/local/share/man/man3/gnutls_x509_dn_deinit.3 +1 -1
  1139. data/vendor/local/share/man/man3/gnutls_x509_dn_export.3 +1 -1
  1140. data/vendor/local/share/man/man3/gnutls_x509_dn_export2.3 +1 -1
  1141. data/vendor/local/share/man/man3/gnutls_x509_dn_get_rdn_ava.3 +1 -1
  1142. data/vendor/local/share/man/man3/gnutls_x509_dn_import.3 +1 -1
  1143. data/vendor/local/share/man/man3/gnutls_x509_dn_init.3 +1 -1
  1144. data/vendor/local/share/man/man3/gnutls_x509_dn_oid_known.3 +1 -1
  1145. data/vendor/local/share/man/man3/gnutls_x509_dn_oid_name.3 +1 -1
  1146. data/vendor/local/share/man/man3/gnutls_x509_policy_release.3 +1 -1
  1147. data/vendor/local/share/man/man3/gnutls_x509_privkey_cpy.3 +1 -1
  1148. data/vendor/local/share/man/man3/gnutls_x509_privkey_deinit.3 +1 -1
  1149. data/vendor/local/share/man/man3/gnutls_x509_privkey_export.3 +1 -1
  1150. data/vendor/local/share/man/man3/gnutls_x509_privkey_export2.3 +1 -1
  1151. data/vendor/local/share/man/man3/gnutls_x509_privkey_export2_pkcs8.3 +1 -1
  1152. data/vendor/local/share/man/man3/gnutls_x509_privkey_export_dsa_raw.3 +1 -1
  1153. data/vendor/local/share/man/man3/gnutls_x509_privkey_export_ecc_raw.3 +1 -1
  1154. data/vendor/local/share/man/man3/gnutls_x509_privkey_export_pkcs8.3 +1 -1
  1155. data/vendor/local/share/man/man3/gnutls_x509_privkey_export_rsa_raw.3 +1 -1
  1156. data/vendor/local/share/man/man3/gnutls_x509_privkey_export_rsa_raw2.3 +1 -1
  1157. data/vendor/local/share/man/man3/gnutls_x509_privkey_fix.3 +1 -1
  1158. data/vendor/local/share/man/man3/gnutls_x509_privkey_generate.3 +1 -1
  1159. data/vendor/local/share/man/man3/gnutls_x509_privkey_get_key_id.3 +1 -1
  1160. data/vendor/local/share/man/man3/gnutls_x509_privkey_get_pk_algorithm.3 +1 -1
  1161. data/vendor/local/share/man/man3/gnutls_x509_privkey_get_pk_algorithm2.3 +1 -1
  1162. data/vendor/local/share/man/man3/gnutls_x509_privkey_import.3 +1 -1
  1163. data/vendor/local/share/man/man3/gnutls_x509_privkey_import2.3 +1 -1
  1164. data/vendor/local/share/man/man3/gnutls_x509_privkey_import_dsa_raw.3 +1 -1
  1165. data/vendor/local/share/man/man3/gnutls_x509_privkey_import_ecc_raw.3 +1 -1
  1166. data/vendor/local/share/man/man3/gnutls_x509_privkey_import_openssl.3 +1 -1
  1167. data/vendor/local/share/man/man3/gnutls_x509_privkey_import_pkcs8.3 +1 -1
  1168. data/vendor/local/share/man/man3/gnutls_x509_privkey_import_rsa_raw.3 +1 -1
  1169. data/vendor/local/share/man/man3/gnutls_x509_privkey_import_rsa_raw2.3 +1 -1
  1170. data/vendor/local/share/man/man3/gnutls_x509_privkey_init.3 +1 -1
  1171. data/vendor/local/share/man/man3/gnutls_x509_privkey_sec_param.3 +1 -1
  1172. data/vendor/local/share/man/man3/gnutls_x509_privkey_sign_data.3 +1 -1
  1173. data/vendor/local/share/man/man3/gnutls_x509_privkey_sign_hash.3 +1 -1
  1174. data/vendor/local/share/man/man3/gnutls_x509_privkey_verify_params.3 +1 -1
  1175. data/vendor/local/share/man/man3/gnutls_x509_rdn_get.3 +1 -1
  1176. data/vendor/local/share/man/man3/gnutls_x509_rdn_get_by_oid.3 +1 -1
  1177. data/vendor/local/share/man/man3/gnutls_x509_rdn_get_oid.3 +1 -1
  1178. data/vendor/local/share/man/man3/gnutls_x509_trust_list_add_cas.3 +1 -1
  1179. data/vendor/local/share/man/man3/gnutls_x509_trust_list_add_crls.3 +1 -1
  1180. data/vendor/local/share/man/man3/gnutls_x509_trust_list_add_named_crt.3 +1 -1
  1181. data/vendor/local/share/man/man3/gnutls_x509_trust_list_add_system_trust.3 +1 -1
  1182. data/vendor/local/share/man/man3/gnutls_x509_trust_list_add_trust_file.3 +1 -1
  1183. data/vendor/local/share/man/man3/gnutls_x509_trust_list_add_trust_mem.3 +1 -1
  1184. data/vendor/local/share/man/man3/gnutls_x509_trust_list_deinit.3 +1 -1
  1185. data/vendor/local/share/man/man3/gnutls_x509_trust_list_get_issuer.3 +1 -1
  1186. data/vendor/local/share/man/man3/gnutls_x509_trust_list_init.3 +1 -1
  1187. data/vendor/local/share/man/man3/gnutls_x509_trust_list_remove_cas.3 +1 -1
  1188. data/vendor/local/share/man/man3/gnutls_x509_trust_list_remove_trust_file.3 +1 -1
  1189. data/vendor/local/share/man/man3/gnutls_x509_trust_list_remove_trust_mem.3 +1 -1
  1190. data/vendor/local/share/man/man3/gnutls_x509_trust_list_verify_crt.3 +1 -1
  1191. data/vendor/local/share/man/man3/gnutls_x509_trust_list_verify_named_crt.3 +1 -1
  1192. data/vendor/local/share/man/man3/xssl_client_init.3 +1 -1
  1193. data/vendor/local/share/man/man3/xssl_cred_deinit.3 +1 -1
  1194. data/vendor/local/share/man/man3/xssl_cred_init.3 +1 -1
  1195. data/vendor/local/share/man/man3/xssl_deinit.3 +1 -1
  1196. data/vendor/local/share/man/man3/xssl_flush.3 +1 -1
  1197. data/vendor/local/share/man/man3/xssl_get_session.3 +1 -1
  1198. data/vendor/local/share/man/man3/xssl_getdelim.3 +1 -1
  1199. data/vendor/local/share/man/man3/xssl_printf.3 +1 -1
  1200. data/vendor/local/share/man/man3/xssl_read.3 +1 -1
  1201. data/vendor/local/share/man/man3/xssl_server_init.3 +1 -1
  1202. data/vendor/local/share/man/man3/xssl_sinit.3 +1 -1
  1203. data/vendor/local/share/man/man3/xssl_write.3 +1 -1
  1204. metadata +11 -25
  1205. data/vendor/local/include/glib-2.0/libintl.h +0 -464
  1206. data/vendor/local/lib/GNU.Gettext.dll +0 -0
  1207. data/vendor/local/share/info/nettle.info +0 -4077
  1208. data/vendor/local/share/man/man1/gapplication.1 +0 -293
  1209. data/vendor/local/share/man/man1/gdbus-codegen.1 +0 -760
  1210. data/vendor/local/share/man/man1/gdbus.1 +0 -324
  1211. data/vendor/local/share/man/man1/gio-querymodules.1 +0 -44
  1212. data/vendor/local/share/man/man1/glib-compile-resources.1 +0 -167
  1213. data/vendor/local/share/man/man1/glib-compile-schemas.1 +0 -91
  1214. data/vendor/local/share/man/man1/glib-genmarshal.1 +0 -345
  1215. data/vendor/local/share/man/man1/glib-gettextize.1 +0 -79
  1216. data/vendor/local/share/man/man1/glib-mkenums.1 +0 -268
  1217. data/vendor/local/share/man/man1/gobject-query.1 +0 -90
  1218. data/vendor/local/share/man/man1/gresource.1 +0 -95
  1219. data/vendor/local/share/man/man1/gsettings.1 +0 -167
  1220. data/vendor/local/share/man/man1/gtester-report.1 +0 -57
  1221. data/vendor/local/share/man/man1/gtester.1 +0 -141
Binary file
@@ -1,4077 +0,0 @@
1
- This is nettle.info, produced by makeinfo version 4.13 from
2
- nettle.texinfo.
3
-
4
- This manual is for the Nettle library (version 2.7), a low-level
5
- cryptographic library.
6
-
7
- Originally written 2001 by Niels Möller, updated 2013.
8
-
9
- This manual is placed in the public domain. You may freely copy
10
- it, in whole or in part, with or without modification. Attribution
11
- is appreciated, but not required.
12
-
13
- INFO-DIR-SECTION Encryption
14
- START-INFO-DIR-ENTRY
15
- * Nettle: (nettle). A low-level cryptographic library.
16
- END-INFO-DIR-ENTRY
17
-
18
- 
19
- File: nettle.info, Node: Top, Next: Introduction, Prev: (dir), Up: (dir)
20
-
21
- Nettle
22
- ******
23
-
24
- This document describes the Nettle low-level cryptographic library. You
25
- can use the library directly from your C programs, or write or use an
26
- object-oriented wrapper for your favorite language or application.
27
-
28
- This manual is for the Nettle library (version 2.7), a low-level
29
- cryptographic library.
30
-
31
- Originally written 2001 by Niels Möller, updated 2013.
32
-
33
- This manual is placed in the public domain. You may freely copy
34
- it, in whole or in part, with or without modification. Attribution
35
- is appreciated, but not required.
36
-
37
- * Menu:
38
-
39
- * Introduction:: What is Nettle?
40
- * Copyright:: Your rights.
41
- * Conventions:: General interface conventions.
42
- * Example:: An example program.
43
- * Linking:: Linking with libnettle and libhogweed.
44
- * Reference:: All Nettle functions and features.
45
- * Nettle soup:: For the serious nettle hacker.
46
- * Installation:: How to install Nettle.
47
- * Index:: Function and concept index.
48
-
49
- --- The Detailed Node Listing ---
50
-
51
- Reference
52
-
53
- * Hash functions::
54
- * Cipher functions::
55
- * Cipher modes::
56
- * Keyed hash functions::
57
- * Key derivation functions::
58
- * Public-key algorithms::
59
- * Randomness::
60
- * ASCII encoding::
61
- * Miscellaneous functions::
62
- * Compatibility functions::
63
-
64
- Cipher modes
65
-
66
- * CBC::
67
- * CTR::
68
- * GCM::
69
-
70
- Public-key algorithms
71
-
72
- * RSA:: The RSA public key algorithm.
73
- * DSA:: The DSA digital signature algorithm.
74
- * Elliptic curves:: Elliptic curves and ECDSA
75
-
76
- 
77
- File: nettle.info, Node: Introduction, Next: Copyright, Prev: Top, Up: Top
78
-
79
- 1 Introduction
80
- **************
81
-
82
- Nettle is a cryptographic library that is designed to fit easily in more
83
- or less any context: In crypto toolkits for object-oriented languages
84
- (C++, Python, Pike, ...), in applications like LSH or GNUPG, or even in
85
- kernel space. In most contexts, you need more than the basic
86
- cryptographic algorithms, you also need some way to keep track of
87
- available algorithms, their properties and variants. You often have
88
- some algorithm selection process, often dictated by a protocol you want
89
- to implement.
90
-
91
- And as the requirements of applications differ in subtle and not so
92
- subtle ways, an API that fits one application well can be a pain to use
93
- in a different context. And that is why there are so many different
94
- cryptographic libraries around.
95
-
96
- Nettle tries to avoid this problem by doing one thing, the low-level
97
- crypto stuff, and providing a _simple_ but general interface to it. In
98
- particular, Nettle doesn't do algorithm selection. It doesn't do memory
99
- allocation. It doesn't do any I/O.
100
-
101
- The idea is that one can build several application and context
102
- specific interfaces on top of Nettle, and share the code, test cases,
103
- benchmarks, documentation, etc. Examples are the Nettle module for the
104
- Pike language, and LSH, which both use an object-oriented abstraction
105
- on top of the library.
106
-
107
- This manual explains how to use the Nettle library. It also tries to
108
- provide some background on the cryptography, and advice on how to best
109
- put it to use.
110
-
111
- 
112
- File: nettle.info, Node: Copyright, Next: Conventions, Prev: Introduction, Up: Top
113
-
114
- 2 Copyright
115
- ***********
116
-
117
- Nettle is distributed under the GNU Lesser General Public License
118
- (LGPL), see the file COPYING.LIB for details. A few of the individual
119
- files are in the public domain. To find the current status of particular
120
- files, you have to read the copyright notices at the top of the files.
121
-
122
- This manual is in the public domain. You may freely copy it in whole
123
- or in part, e.g., into documentation of programs that build on Nettle.
124
- Attribution, as well as contribution of improvements to the text, is of
125
- course appreciated, but it is not required.
126
-
127
- A list of the supported algorithms, their origins and licenses:
128
-
129
- _AES_
130
- The implementation of the AES cipher (also known as rijndael) is
131
- written by Rafael Sevilla. Assembler for x86 by Rafael Sevilla and
132
- Niels Möller, Sparc assembler by Niels Möller. Released under the
133
- LGPL.
134
-
135
- _ARCFOUR_
136
- The implementation of the ARCFOUR (also known as RC4) cipher is
137
- written by Niels Möller. Released under the LGPL.
138
-
139
- _ARCTWO_
140
- The implementation of the ARCTWO (also known as RC2) cipher is
141
- written by Nikos Mavroyanopoulos and modified by Werner Koch and
142
- Simon Josefsson. Released under the LGPL.
143
-
144
- _BLOWFISH_
145
- The implementation of the BLOWFISH cipher is written by Werner
146
- Koch, copyright owned by the Free Software Foundation. Also hacked
147
- by Simon Josefsson and Niels Möller. Released under the LGPL.
148
-
149
- _CAMELLIA_
150
- The C implementation is by Nippon Telegraph and Telephone
151
- Corporation (NTT), heavily modified by Niels Möller. Assembler for
152
- x86 and x86_64 by Niels Möller. Released under the LGPL.
153
-
154
- _CAST128_
155
- The implementation of the CAST128 cipher is written by Steve Reid.
156
- Released into the public domain.
157
-
158
- _DES_
159
- The implementation of the DES cipher is written by Dana L. How, and
160
- released under the LGPL.
161
-
162
- _GOSTHASH94_
163
- The C implementation of the GOST94 message digest is written by
164
- Aleksey Kravchenko and was ported from the rhash library by Nikos
165
- Mavrogiannopoulos. It is released under the MIT license.
166
-
167
- _MD2_
168
- The implementation of MD2 is written by Andrew Kuchling, and hacked
169
- some by Andreas Sigfridsson and Niels Möller. Python Cryptography
170
- Toolkit license (essentially public domain).
171
-
172
- _MD4_
173
- This is almost the same code as for MD5 below, with modifications
174
- by Marcus Comstedt. Released into the public domain.
175
-
176
- _MD5_
177
- The implementation of the MD5 message digest is written by Colin
178
- Plumb. It has been hacked some more by Andrew Kuchling and Niels
179
- Möller. Released into the public domain.
180
-
181
- _PBKDF2_
182
- The C implementation of PBKDF2 is based on earlier work for Shishi
183
- and GnuTLS by Simon Josefsson. Released under the LGPL.
184
-
185
- _RIPEMD160_
186
- The implementation of RIPEMD160 message digest is based on the
187
- code in libgcrypt, copyright owned by the Free Software
188
- Foundation. Ported to Nettle by Andres Mejia. Released under the
189
- LGPL.
190
-
191
- _SALSA20_
192
- The C implementation of SALSA20 is based on D. J. Bernstein's
193
- reference implementation (in the public domain), adapted to Nettle
194
- by Simon Josefsson, and heavily modified by Niels Möller. Assembly
195
- for x86_64 and ARM by Niels Möller. Released under the LGPL.
196
-
197
- _SERPENT_
198
- The implementation of the SERPENT cipher is based on the code in
199
- libgcrypt, copyright owned by the Free Software Foundation.
200
- Adapted to Nettle by Simon Josefsson and heavily modified by Niels
201
- Möller. Assembly for x86_64 by Niels Möller. Released under the
202
- LGPL.
203
-
204
- _SHA1_
205
- The C implementation of the SHA1 message digest is written by Peter
206
- Gutmann, and hacked some more by Andrew Kuchling and Niels Möller.
207
- Released into the public domain. Assembler for x86, x86_64 and ARM
208
- by Niels Möller, released under the LGPL.
209
-
210
- _SHA2_
211
- Written by Niels Möller, using Peter Gutmann's SHA1 code as a
212
- model. Released under the LGPL.
213
-
214
- _SHA3_
215
- Written by Niels Möller. Released under the LGPL.
216
-
217
- _TWOFISH_
218
- The implementation of the TWOFISH cipher is written by Ruud de
219
- Rooij. Released under the LGPL.
220
-
221
- _UMAC_
222
- Written by Niels Möller. Released under the LGPL.
223
-
224
- _RSA_
225
- Written by Niels Möller, released under the LGPL. Uses the GMP
226
- library for bignum operations.
227
-
228
- _DSA_
229
- Written by Niels Möller, released under the LGPL. Uses the GMP
230
- library for bignum operations.
231
-
232
- _ECDSA_
233
- Written by Niels Möller, released under the LGPL. Uses the GMP
234
- library for bignum operations. Development of Nettle's ECC support
235
- was funded by the .SE Internet Fund.
236
-
237
- 
238
- File: nettle.info, Node: Conventions, Next: Example, Prev: Copyright, Up: Top
239
-
240
- 3 Conventions
241
- *************
242
-
243
- For each supported algorithm, there is an include file that defines a
244
- _context struct_, a few constants, and declares functions for operating
245
- on the context. The context struct encapsulates all information needed
246
- by the algorithm, and it can be copied or moved in memory with no
247
- unexpected effects.
248
-
249
- For consistency, functions for different algorithms are very similar,
250
- but there are some differences, for instance reflecting if the key setup
251
- or encryption function differ for encryption and decryption, and whether
252
- or not key setup can fail. There are also differences between algorithms
253
- that don't show in function prototypes, but which the application must
254
- nevertheless be aware of. There is no big difference between the
255
- functions for stream ciphers and for block ciphers, although they should
256
- be used quite differently by the application.
257
-
258
- If your application uses more than one algorithm of the same type,
259
- you should probably create an interface that is tailor-made for your
260
- needs, and then write a few lines of glue code on top of Nettle.
261
-
262
- By convention, for an algorithm named `foo', the struct tag for the
263
- context struct is `foo_ctx', constants and functions uses prefixes like
264
- `FOO_BLOCK_SIZE' (a constant) and `foo_set_key' (a function).
265
-
266
- In all functions, strings are represented with an explicit length, of
267
- type `unsigned', and a pointer of type `uint8_t *' or `const uint8_t
268
- *'. For functions that transform one string to another, the argument
269
- order is length, destination pointer and source pointer. Source and
270
- destination areas are of the same length. Source and destination may be
271
- the same, so that you can process strings in place, but they _must not_
272
- overlap in any other way.
273
-
274
- Many of the functions lack return value and can never fail. Those
275
- functions which can fail, return one on success and zero on failure.
276
-
277
- 
278
- File: nettle.info, Node: Example, Next: Linking, Prev: Conventions, Up: Top
279
-
280
- 4 Example
281
- *********
282
-
283
- A simple example program that reads a file from standard input and
284
- writes its SHA1 check-sum on standard output should give the flavor of
285
- Nettle.
286
-
287
- #include <stdio.h>
288
- #include <stdlib.h>
289
-
290
- #include <nettle/sha1.h>
291
-
292
- #define BUF_SIZE 1000
293
-
294
- static void
295
- display_hex(unsigned length, uint8_t *data)
296
- {
297
- unsigned i;
298
-
299
- for (i = 0; i<length; i++)
300
- printf("%02x ", data[i]);
301
-
302
- printf("\n");
303
- }
304
-
305
- int
306
- main(int argc, char **argv)
307
- {
308
- struct sha1_ctx ctx;
309
- uint8_t buffer[BUF_SIZE];
310
- uint8_t digest[SHA1_DIGEST_SIZE];
311
-
312
- sha1_init(&ctx);
313
- for (;;)
314
- {
315
- int done = fread(buffer, 1, sizeof(buffer), stdin);
316
- sha1_update(&ctx, done, buffer);
317
- if (done < sizeof(buffer))
318
- break;
319
- }
320
- if (ferror(stdin))
321
- return EXIT_FAILURE;
322
-
323
- sha1_digest(&ctx, SHA1_DIGEST_SIZE, digest);
324
-
325
- display_hex(SHA1_DIGEST_SIZE, digest);
326
- return EXIT_SUCCESS;
327
- }
328
-
329
- On a typical Unix system, this program can be compiled and linked
330
- with the command line
331
- gcc sha-example.c -o sha-example -lnettle
332
-
333
- 
334
- File: nettle.info, Node: Linking, Next: Reference, Prev: Example, Up: Top
335
-
336
- 5 Linking
337
- *********
338
-
339
- Nettle actually consists of two libraries, `libnettle' and
340
- `libhogweed'. The `libhogweed' library contains those functions of
341
- Nettle that uses bignum operations, and depends on the GMP library.
342
- With this division, linking works the same for both static and dynamic
343
- libraries.
344
-
345
- If an application uses only the symmetric crypto algorithms of Nettle
346
- (i.e., block ciphers, hash functions, and the like), it's sufficient to
347
- link with `-lnettle'. If an application also uses public-key
348
- algorithms, the recommended linker flags are `-lhogweed -lnettle
349
- -lgmp'. If the involved libraries are installed as dynamic libraries, it
350
- may be sufficient to link with just `-lhogweed', and the loader will
351
- resolve the dependencies automatically.
352
-
353
- 
354
- File: nettle.info, Node: Reference, Next: Nettle soup, Prev: Linking, Up: Top
355
-
356
- 6 Reference
357
- ***********
358
-
359
- This chapter describes all the Nettle functions, grouped by family.
360
-
361
- * Menu:
362
-
363
- * Hash functions::
364
- * Cipher functions::
365
- * Cipher modes::
366
- * Keyed hash functions::
367
- * Key derivation functions::
368
- * Public-key algorithms::
369
- * Randomness::
370
- * ASCII encoding::
371
- * Miscellaneous functions::
372
- * Compatibility functions::
373
-
374
- 
375
- File: nettle.info, Node: Hash functions, Next: Cipher functions, Prev: Reference, Up: Reference
376
-
377
- 6.1 Hash functions
378
- ==================
379
-
380
- A cryptographic "hash function" is a function that takes variable size
381
- strings, and maps them to strings of fixed, short, length. There are
382
- naturally lots of collisions, as there are more possible 1MB files than
383
- 20 byte strings. But the function is constructed such that is hard to
384
- find the collisions. More precisely, a cryptographic hash function `H'
385
- should have the following properties:
386
-
387
- _One-way_
388
- Given a hash value `H(x)' it is hard to find a string `x' that
389
- hashes to that value.
390
-
391
- _Collision-resistant_
392
- It is hard to find two different strings, `x' and `y', such that
393
- `H(x)' = `H(y)'.
394
-
395
-
396
- Hash functions are useful as building blocks for digital signatures,
397
- message authentication codes, pseudo random generators, association of
398
- unique ids to documents, and many other things.
399
-
400
- The most commonly used hash functions are MD5 and SHA1.
401
- Unfortunately, both these fail the collision-resistance requirement;
402
- cryptologists have found ways to construct colliding inputs. The
403
- recommended hash functions for new applications are SHA2 (with main
404
- variants SHA256 and SHA512). At the time of this writing (December
405
- 2012), the winner of the NIST SHA3 competition has recently been
406
- announced, and the new SHA3 (earlier known as Keccak) and other top
407
- SHA3 candidates may also be reasonable alternatives.
408
-
409
- * Menu:
410
-
411
- * Recommended hash functions::
412
- * Legacy hash functions::
413
- * nettle_hash abstraction::
414
-
415
- 
416
- File: nettle.info, Node: Recommended hash functions, Next: Legacy hash functions, Up: Hash functions
417
-
418
- 6.1.1 Recommended hash functions
419
- --------------------------------
420
-
421
- The following hash functions have no known weaknesses, and are suitable
422
- for new applications. The SHA2 family of hash functions were specified
423
- by "NIST", intended as a replacement for SHA1.
424
-
425
- 6.1.1.1 SHA256
426
- ..............
427
-
428
- SHA256 is a member of the SHA2 family. It outputs hash values of 256
429
- bits, or 32 octets. Nettle defines SHA256 in `<nettle/sha2.h>'.
430
-
431
- -- Context struct: struct sha256_ctx
432
-
433
- -- Constant: SHA256_DIGEST_SIZE
434
- The size of a SHA256 digest, i.e. 32.
435
-
436
- -- Constant: SHA256_DATA_SIZE
437
- The internal block size of SHA256. Useful for some special
438
- constructions, in particular HMAC-SHA256.
439
-
440
- -- Function: void sha256_init (struct sha256_ctx *CTX)
441
- Initialize the SHA256 state.
442
-
443
- -- Function: void sha256_update (struct sha256_ctx *CTX, unsigned
444
- LENGTH, const uint8_t *DATA)
445
- Hash some more data.
446
-
447
- -- Function: void sha256_digest (struct sha256_ctx *CTX, unsigned
448
- LENGTH, uint8_t *DIGEST)
449
- Performs final processing and extracts the message digest, writing
450
- it to DIGEST. LENGTH may be smaller than `SHA256_DIGEST_SIZE', in
451
- which case only the first LENGTH octets of the digest are written.
452
-
453
- This function also resets the context in the same way as
454
- `sha256_init'.
455
-
456
- Earlier versions of nettle defined SHA256 in the header file
457
- `<nettle/sha.h>', which is now deprecated, but kept for compatibility.
458
-
459
- 6.1.1.2 SHA224
460
- ..............
461
-
462
- SHA224 is a variant of SHA256, with a different initial state, and with
463
- the output truncated to 224 bits, or 28 octets. Nettle defines SHA224 in
464
- `<nettle/sha2.h>' (and in `<nettle/sha.h>', for backwards
465
- compatibility).
466
-
467
- -- Context struct: struct sha224_ctx
468
-
469
- -- Constant: SHA224_DIGEST_SIZE
470
- The size of a SHA224 digest, i.e. 28.
471
-
472
- -- Constant: SHA224_DATA_SIZE
473
- The internal block size of SHA224. Useful for some special
474
- constructions, in particular HMAC-SHA224.
475
-
476
- -- Function: void sha224_init (struct sha224_ctx *CTX)
477
- Initialize the SHA224 state.
478
-
479
- -- Function: void sha224_update (struct sha224_ctx *CTX, unsigned
480
- LENGTH, const uint8_t *DATA)
481
- Hash some more data.
482
-
483
- -- Function: void sha224_digest (struct sha224_ctx *CTX, unsigned
484
- LENGTH, uint8_t *DIGEST)
485
- Performs final processing and extracts the message digest, writing
486
- it to DIGEST. LENGTH may be smaller than `SHA224_DIGEST_SIZE', in
487
- which case only the first LENGTH octets of the digest are written.
488
-
489
- This function also resets the context in the same way as
490
- `sha224_init'.
491
-
492
- 6.1.1.3 SHA512
493
- ..............
494
-
495
- SHA512 is a larger sibling to SHA256, with a very similar structure but
496
- with both the output and the internal variables of twice the size. The
497
- internal variables are 64 bits rather than 32, making it significantly
498
- slower on 32-bit computers. It outputs hash values of 512 bits, or 64
499
- octets. Nettle defines SHA512 in `<nettle/sha2.h>' (and in
500
- `<nettle/sha.h>', for backwards compatibility).
501
-
502
- -- Context struct: struct sha512_ctx
503
-
504
- -- Constant: SHA512_DIGEST_SIZE
505
- The size of a SHA512 digest, i.e. 64.
506
-
507
- -- Constant: SHA512_DATA_SIZE
508
- The internal block size of SHA512. Useful for some special
509
- constructions, in particular HMAC-SHA512.
510
-
511
- -- Function: void sha512_init (struct sha512_ctx *CTX)
512
- Initialize the SHA512 state.
513
-
514
- -- Function: void sha512_update (struct sha512_ctx *CTX, unsigned
515
- LENGTH, const uint8_t *DATA)
516
- Hash some more data.
517
-
518
- -- Function: void sha512_digest (struct sha512_ctx *CTX, unsigned
519
- LENGTH, uint8_t *DIGEST)
520
- Performs final processing and extracts the message digest, writing
521
- it to DIGEST. LENGTH may be smaller than `SHA512_DIGEST_SIZE', in
522
- which case only the first LENGTH octets of the digest are written.
523
-
524
- This function also resets the context in the same way as
525
- `sha512_init'.
526
-
527
- 6.1.1.4 SHA384
528
- ..............
529
-
530
- SHA384 is a variant of SHA512, with a different initial state, and with
531
- the output truncated to 384 bits, or 48 octets. Nettle defines SHA384 in
532
- `<nettle/sha2.h>' (and in `<nettle/sha.h>', for backwards
533
- compatibility).
534
-
535
- -- Context struct: struct sha384_ctx
536
-
537
- -- Constant: SHA384_DIGEST_SIZE
538
- The size of a SHA384 digest, i.e. 48.
539
-
540
- -- Constant: SHA384_DATA_SIZE
541
- The internal block size of SHA384. Useful for some special
542
- constructions, in particular HMAC-SHA384.
543
-
544
- -- Function: void sha384_init (struct sha384_ctx *CTX)
545
- Initialize the SHA384 state.
546
-
547
- -- Function: void sha384_update (struct sha384_ctx *CTX, unsigned
548
- LENGTH, const uint8_t *DATA)
549
- Hash some more data.
550
-
551
- -- Function: void sha384_digest (struct sha384_ctx *CTX, unsigned
552
- LENGTH, uint8_t *DIGEST)
553
- Performs final processing and extracts the message digest, writing
554
- it to DIGEST. LENGTH may be smaller than `SHA384_DIGEST_SIZE', in
555
- which case only the first LENGTH octets of the digest are written.
556
-
557
- This function also resets the context in the same way as
558
- `sha384_init'.
559
-
560
- 6.1.1.5 SHA3-224
561
- ................
562
-
563
- The SHA3 hash functions were specified by NIST in response to weaknesses
564
- in SHA1, and doubts about SHA2 hash functions which structurally are
565
- very similar to SHA1. The standard is a result of a competition, where
566
- the winner, also known as Keccak, was designed by Guido Bertoni, Joan
567
- Daemen, Michaël Peeters and Gilles Van Assche. It is structurally very
568
- different from all widely used earlier hash functions. Like SHA2, there
569
- are several variants, with output sizes of 224, 256, 384 and 512 bits
570
- (28, 32, 48 and 64 octets, respectively).
571
-
572
- Nettle defines SHA3-224 in `<nettle/sha3.h>'.
573
-
574
- -- Context struct: struct sha3_224_ctx
575
-
576
- -- Constant: SHA3_224_DIGEST_SIZE
577
- The size of a SHA3_224 digest, i.e., 28.
578
-
579
- -- Constant: SHA3_224_DATA_SIZE
580
- The internal block size of SHA3_224.
581
-
582
- -- Function: void sha3_224_init (struct sha3_224_ctx *CTX)
583
- Initialize the SHA3-224 state.
584
-
585
- -- Function: void sha3_224_update (struct sha3_224_ctx *CTX, unsigned
586
- LENGTH, const uint8_t *DATA)
587
- Hash some more data.
588
-
589
- -- Function: void sha3_224_digest (struct sha3_224_ctx *CTX, unsigned
590
- LENGTH, uint8_t *DIGEST)
591
- Performs final processing and extracts the message digest, writing
592
- it to DIGEST. LENGTH may be smaller than `SHA3_224_DIGEST_SIZE',
593
- in which case only the first LENGTH octets of the digest are
594
- written.
595
-
596
- This function also resets the context.
597
-
598
- 6.1.1.6 SHA3-256
599
- ................
600
-
601
- This is SHA3 with 256-bit output size, and possibly the most useful of
602
- the SHA3 hash functions.
603
-
604
- Nettle defines SHA3-256 in `<nettle/sha3.h>'.
605
-
606
- -- Context struct: struct sha3_256_ctx
607
-
608
- -- Constant: SHA3_256_DIGEST_SIZE
609
- The size of a SHA3_256 digest, i.e., 32.
610
-
611
- -- Constant: SHA3_256_DATA_SIZE
612
- The internal block size of SHA3_256.
613
-
614
- -- Function: void sha3_256_init (struct sha3_256_ctx *CTX)
615
- Initialize the SHA3-256 state.
616
-
617
- -- Function: void sha3_256_update (struct sha3_256_ctx *CTX, unsigned
618
- LENGTH, const uint8_t *DATA)
619
- Hash some more data.
620
-
621
- -- Function: void sha3_256_digest (struct sha3_256_ctx *CTX, unsigned
622
- LENGTH, uint8_t *DIGEST)
623
- Performs final processing and extracts the message digest, writing
624
- it to DIGEST. LENGTH may be smaller than `SHA3_256_DIGEST_SIZE',
625
- in which case only the first LENGTH octets of the digest are
626
- written.
627
-
628
- This function also resets the context.
629
-
630
- 6.1.1.7 SHA3-384
631
- ................
632
-
633
- This is SHA3 with 384-bit output size.
634
-
635
- Nettle defines SHA3-384 in `<nettle/sha3.h>'.
636
-
637
- -- Context struct: struct sha3_384_ctx
638
-
639
- -- Constant: SHA3_384_DIGEST_SIZE
640
- The size of a SHA3_384 digest, i.e., 48.
641
-
642
- -- Constant: SHA3_384_DATA_SIZE
643
- The internal block size of SHA3_384.
644
-
645
- -- Function: void sha3_384_init (struct sha3_384_ctx *CTX)
646
- Initialize the SHA3-384 state.
647
-
648
- -- Function: void sha3_384_update (struct sha3_384_ctx *CTX, unsigned
649
- LENGTH, const uint8_t *DATA)
650
- Hash some more data.
651
-
652
- -- Function: void sha3_384_digest (struct sha3_384_ctx *CTX, unsigned
653
- LENGTH, uint8_t *DIGEST)
654
- Performs final processing and extracts the message digest, writing
655
- it to DIGEST. LENGTH may be smaller than `SHA3_384_DIGEST_SIZE',
656
- in which case only the first LENGTH octets of the digest are
657
- written.
658
-
659
- This function also resets the context.
660
-
661
- 6.1.1.8 SHA3-512
662
- ................
663
-
664
- This is SHA3 with 512-bit output size.
665
-
666
- Nettle defines SHA3-512 in `<nettle/sha3.h>'.
667
-
668
- -- Context struct: struct sha3_512_ctx
669
-
670
- -- Constant: SHA3_512_DIGEST_SIZE
671
- The size of a SHA3_512 digest, i.e. 64.
672
-
673
- -- Constant: SHA3_512_DATA_SIZE
674
- The internal block size of SHA3_512.
675
-
676
- -- Function: void sha3_512_init (struct sha3_512_ctx *CTX)
677
- Initialize the SHA3-512 state.
678
-
679
- -- Function: void sha3_512_update (struct sha3_512_ctx *CTX, unsigned
680
- LENGTH, const uint8_t *DATA)
681
- Hash some more data.
682
-
683
- -- Function: void sha3_512_digest (struct sha3_512_ctx *CTX, unsigned
684
- LENGTH, uint8_t *DIGEST)
685
- Performs final processing and extracts the message digest, writing
686
- it to DIGEST. LENGTH may be smaller than `SHA3_512_DIGEST_SIZE',
687
- in which case only the first LENGTH octets of the digest are
688
- written.
689
-
690
- This function also resets the context.
691
-
692
- 
693
- File: nettle.info, Node: Legacy hash functions, Next: nettle_hash abstraction, Prev: Recommended hash functions, Up: Hash functions
694
-
695
- 6.1.2 Legacy hash functions
696
- ---------------------------
697
-
698
- The hash functions in this section all have some known weaknesses, and
699
- should be avoided for new applications. These hash functions are mainly
700
- useful for compatibility with old applications and protocols. Some are
701
- still considered safe as building blocks for particular constructions,
702
- e.g., there seems to be no known attacks against HMAC-SHA1 or even
703
- HMAC-MD5. In some important cases, use of a "legacy" hash function does
704
- not in itself make the application insecure; if a known weakness is
705
- relevant depends on how the hash function is used, and on the threat
706
- model.
707
-
708
- 6.1.2.1 MD5
709
- ...........
710
-
711
- MD5 is a message digest function constructed by Ronald Rivest, and
712
- described in `RFC 1321'. It outputs message digests of 128 bits, or 16
713
- octets. Nettle defines MD5 in `<nettle/md5.h>'.
714
-
715
- -- Context struct: struct md5_ctx
716
-
717
- -- Constant: MD5_DIGEST_SIZE
718
- The size of an MD5 digest, i.e. 16.
719
-
720
- -- Constant: MD5_DATA_SIZE
721
- The internal block size of MD5. Useful for some special
722
- constructions, in particular HMAC-MD5.
723
-
724
- -- Function: void md5_init (struct md5_ctx *CTX)
725
- Initialize the MD5 state.
726
-
727
- -- Function: void md5_update (struct md5_ctx *CTX, unsigned LENGTH,
728
- const uint8_t *DATA)
729
- Hash some more data.
730
-
731
- -- Function: void md5_digest (struct md5_ctx *CTX, unsigned LENGTH,
732
- uint8_t *DIGEST)
733
- Performs final processing and extracts the message digest, writing
734
- it to DIGEST. LENGTH may be smaller than `MD5_DIGEST_SIZE', in
735
- which case only the first LENGTH octets of the digest are written.
736
-
737
- This function also resets the context in the same way as
738
- `md5_init'.
739
-
740
- The normal way to use MD5 is to call the functions in order: First
741
- `md5_init', then `md5_update' zero or more times, and finally
742
- `md5_digest'. After `md5_digest', the context is reset to its initial
743
- state, so you can start over calling `md5_update' to hash new data.
744
-
745
- To start over, you can call `md5_init' at any time.
746
-
747
- 6.1.2.2 MD2
748
- ...........
749
-
750
- MD2 is another hash function of Ronald Rivest's, described in `RFC
751
- 1319'. It outputs message digests of 128 bits, or 16 octets. Nettle
752
- defines MD2 in `<nettle/md2.h>'.
753
-
754
- -- Context struct: struct md2_ctx
755
-
756
- -- Constant: MD2_DIGEST_SIZE
757
- The size of an MD2 digest, i.e. 16.
758
-
759
- -- Constant: MD2_DATA_SIZE
760
- The internal block size of MD2.
761
-
762
- -- Function: void md2_init (struct md2_ctx *CTX)
763
- Initialize the MD2 state.
764
-
765
- -- Function: void md2_update (struct md2_ctx *CTX, unsigned LENGTH,
766
- const uint8_t *DATA)
767
- Hash some more data.
768
-
769
- -- Function: void md2_digest (struct md2_ctx *CTX, unsigned LENGTH,
770
- uint8_t *DIGEST)
771
- Performs final processing and extracts the message digest, writing
772
- it to DIGEST. LENGTH may be smaller than `MD2_DIGEST_SIZE', in
773
- which case only the first LENGTH octets of the digest are written.
774
-
775
- This function also resets the context in the same way as
776
- `md2_init'.
777
-
778
- 6.1.2.3 MD4
779
- ...........
780
-
781
- MD4 is a predecessor of MD5, described in `RFC 1320'. Like MD5, it is
782
- constructed by Ronald Rivest. It outputs message digests of 128 bits,
783
- or 16 octets. Nettle defines MD4 in `<nettle/md4.h>'. Use of MD4 is not
784
- recommended, but it is sometimes needed for compatibility with existing
785
- applications and protocols.
786
-
787
- -- Context struct: struct md4_ctx
788
-
789
- -- Constant: MD4_DIGEST_SIZE
790
- The size of an MD4 digest, i.e. 16.
791
-
792
- -- Constant: MD4_DATA_SIZE
793
- The internal block size of MD4.
794
-
795
- -- Function: void md4_init (struct md4_ctx *CTX)
796
- Initialize the MD4 state.
797
-
798
- -- Function: void md4_update (struct md4_ctx *CTX, unsigned LENGTH,
799
- const uint8_t *DATA)
800
- Hash some more data.
801
-
802
- -- Function: void md4_digest (struct md4_ctx *CTX, unsigned LENGTH,
803
- uint8_t *DIGEST)
804
- Performs final processing and extracts the message digest, writing
805
- it to DIGEST. LENGTH may be smaller than `MD4_DIGEST_SIZE', in
806
- which case only the first LENGTH octets of the digest are written.
807
-
808
- This function also resets the context in the same way as
809
- `md4_init'.
810
-
811
- 6.1.2.4 RIPEMD160
812
- .................
813
-
814
- RIPEMD160 is a hash function designed by Hans Dobbertin, Antoon
815
- Bosselaers, and Bart Preneel, as a strengthened version of RIPEMD
816
- (which, like MD4 and MD5, fails the collision-resistance requirement).
817
- It produces message digests of 160 bits, or 20 octets. Nettle defined
818
- RIPEMD160 in `nettle/ripemd160.h'.
819
-
820
- -- Context struct: struct ripemd160_ctx
821
-
822
- -- Constant: RIPEMD160_DIGEST_SIZE
823
- The size of a RIPEMD160 digest, i.e. 20.
824
-
825
- -- Constant: RIPEMD160_DATA_SIZE
826
- The internal block size of RIPEMD160.
827
-
828
- -- Function: void ripemd160_init (struct ripemd160_ctx *CTX)
829
- Initialize the RIPEMD160 state.
830
-
831
- -- Function: void ripemd160_update (struct ripemd160_ctx *CTX,
832
- unsigned LENGTH, const uint8_t *DATA)
833
- Hash some more data.
834
-
835
- -- Function: void ripemd160_digest (struct ripemd160_ctx *CTX,
836
- unsigned LENGTH, uint8_t *DIGEST)
837
- Performs final processing and extracts the message digest, writing
838
- it to DIGEST. LENGTH may be smaller than `RIPEMD160_DIGEST_SIZE',
839
- in which case only the first LENGTH octets of the digest are
840
- written.
841
-
842
- This function also resets the context in the same way as
843
- `ripemd160_init'.
844
-
845
- 6.1.2.5 SHA1
846
- ............
847
-
848
- SHA1 is a hash function specified by "NIST" (The U.S. National
849
- Institute for Standards and Technology). It outputs hash values of 160
850
- bits, or 20 octets. Nettle defines SHA1 in `<nettle/sha1.h>' (and in
851
- `<nettle/sha.h>', for backwards compatibility).
852
-
853
- -- Context struct: struct sha1_ctx
854
-
855
- -- Constant: SHA1_DIGEST_SIZE
856
- The size of a SHA1 digest, i.e. 20.
857
-
858
- -- Constant: SHA1_DATA_SIZE
859
- The internal block size of SHA1. Useful for some special
860
- constructions, in particular HMAC-SHA1.
861
-
862
- -- Function: void sha1_init (struct sha1_ctx *CTX)
863
- Initialize the SHA1 state.
864
-
865
- -- Function: void sha1_update (struct sha1_ctx *CTX, unsigned LENGTH,
866
- const uint8_t *DATA)
867
- Hash some more data.
868
-
869
- -- Function: void sha1_digest (struct sha1_ctx *CTX, unsigned LENGTH,
870
- uint8_t *DIGEST)
871
- Performs final processing and extracts the message digest, writing
872
- it to DIGEST. LENGTH may be smaller than `SHA1_DIGEST_SIZE', in
873
- which case only the first LENGTH octets of the digest are written.
874
-
875
- This function also resets the context in the same way as
876
- `sha1_init'.
877
-
878
- 6.1.2.6 GOSTHASH94
879
- ..................
880
-
881
- The GOST94 or GOST R 34.11-94 hash algorithm is a Soviet-era algorithm
882
- used in Russian government standards (see `RFC 4357'). It outputs
883
- message digests of 256 bits, or 32 octets. Nettle defines GOSTHASH94
884
- in `<nettle/gosthash94.h>'.
885
-
886
- -- Context struct: struct gosthash94_ctx
887
-
888
- -- Constant: GOSTHASH94_DIGEST_SIZE
889
- The size of a GOSTHASH94 digest, i.e. 32.
890
-
891
- -- Constant: GOSTHASH94_DATA_SIZE
892
- The internal block size of GOSTHASH94, i.e., 32.
893
-
894
- -- Function: void gosthash94_init (struct gosthash94_ctx *CTX)
895
- Initialize the GOSTHASH94 state.
896
-
897
- -- Function: void gosthash94_update (struct gosthash94_ctx *CTX,
898
- unsigned LENGTH, const uint8_t *DATA)
899
- Hash some more data.
900
-
901
- -- Function: void gosthash94_digest (struct gosthash94_ctx *CTX,
902
- unsigned LENGTH, uint8_t *DIGEST)
903
- Performs final processing and extracts the message digest, writing
904
- it to DIGEST. LENGTH may be smaller than `GOSTHASH94_DIGEST_SIZE',
905
- in which case only the first LENGTH octets of the digest are
906
- written.
907
-
908
- This function also resets the context in the same way as
909
- `gosthash94_init'.
910
-
911
- 
912
- File: nettle.info, Node: nettle_hash abstraction, Prev: Legacy hash functions, Up: Hash functions
913
-
914
- 6.1.3 The nettle_hash abstraction
915
- ---------------------------------
916
-
917
- Nettle includes a struct including information about the supported hash
918
- functions. It is defined in `<nettle/nettle-meta.h>', and is used by
919
- Nettle's implementation of HMAC (*note Keyed hash functions::).
920
-
921
- -- Meta struct: `struct nettle_hash' name context_size digest_size
922
- block_size init update digest
923
- The last three attributes are function pointers, of types
924
- `nettle_hash_init_func', `nettle_hash_update_func', and
925
- `nettle_hash_digest_func'. The first argument to these functions is
926
- `void *' pointer to a context struct, which is of size
927
- `context_size'.
928
-
929
- -- Constant Struct: struct nettle_hash nettle_md2
930
- -- Constant Struct: struct nettle_hash nettle_md4
931
- -- Constant Struct: struct nettle_hash nettle_md5
932
- -- Constant Struct: struct nettle_hash nettle_ripemd160
933
- -- Constant Struct: struct nettle_hash nettle_sha1
934
- -- Constant Struct: struct nettle_hash nettle_sha224
935
- -- Constant Struct: struct nettle_hash nettle_sha256
936
- -- Constant Struct: struct nettle_hash nettle_sha384
937
- -- Constant Struct: struct nettle_hash nettle_sha512
938
- -- Constant Struct: struct nettle_hash nettle_sha3_256
939
- -- Constant Struct: struct nettle_hash nettle_gosthash94
940
- These are all the hash functions that Nettle implements.
941
-
942
- Nettle also exports a list of all these hashes.
943
-
944
- -- Constant Array: struct nettle_hash ** nettle_hashes
945
- This list can be used to dynamically enumerate or search the
946
- supported algorithms. NULL-terminated.
947
-
948
- 
949
- File: nettle.info, Node: Cipher functions, Next: Cipher modes, Prev: Hash functions, Up: Reference
950
-
951
- 6.2 Cipher functions
952
- ====================
953
-
954
- A "cipher" is a function that takes a message or "plaintext" and a
955
- secret "key" and transforms it to a "ciphertext". Given only the
956
- ciphertext, but not the key, it should be hard to find the plaintext.
957
- Given matching pairs of plaintext and ciphertext, it should be hard to
958
- find the key.
959
-
960
- There are two main classes of ciphers: Block ciphers and stream
961
- ciphers.
962
-
963
- A block cipher can process data only in fixed size chunks, called
964
- "blocks". Typical block sizes are 8 or 16 octets. To encrypt arbitrary
965
- messages, you usually have to pad it to an integral number of blocks,
966
- split it into blocks, and then process each block. The simplest way is
967
- to process one block at a time, independent of each other. That mode of
968
- operation is called "ECB", Electronic Code Book mode. However, using
969
- ECB is usually a bad idea. For a start, plaintext blocks that are equal
970
- are transformed to ciphertext blocks that are equal; that leaks
971
- information about the plaintext. Usually you should apply the cipher is
972
- some "feedback mode", "CBC" (Cipher Block Chaining) and "CTR" (Counter
973
- mode) being two of of the most popular. See *Note Cipher modes::, for
974
- information on how to apply CBC and CTR with Nettle.
975
-
976
- A stream cipher can be used for messages of arbitrary length. A
977
- typical stream cipher is a keyed pseudo-random generator. To encrypt a
978
- plaintext message of N octets, you key the generator, generate N octets
979
- of pseudo-random data, and XOR it with the plaintext. To decrypt,
980
- regenerate the same stream using the key, XOR it to the ciphertext, and
981
- the plaintext is recovered.
982
-
983
- *Caution:* The first rule for this kind of cipher is the same as for
984
- a One Time Pad: _never_ ever use the same key twice.
985
-
986
- A common misconception is that encryption, by itself, implies
987
- authentication. Say that you and a friend share a secret key, and you
988
- receive an encrypted message. You apply the key, and get a plaintext
989
- message that makes sense to you. Can you then be sure that it really was
990
- your friend that wrote the message you're reading? The answer is no. For
991
- example, if you were using a block cipher in ECB mode, an attacker may
992
- pick up the message on its way, and reorder, delete or repeat some of
993
- the blocks. Even if the attacker can't decrypt the message, he can
994
- change it so that you are not reading the same message as your friend
995
- wrote. If you are using a block cipher in CBC mode rather than ECB, or
996
- are using a stream cipher, the possibilities for this sort of attack
997
- are different, but the attacker can still make predictable changes to
998
- the message.
999
-
1000
- It is recommended to _always_ use an authentication mechanism in
1001
- addition to encrypting the messages. Popular choices are Message
1002
- Authentication Codes like HMAC-SHA1 (*note Keyed hash functions::), or
1003
- digital signatures like RSA.
1004
-
1005
- Some ciphers have so called "weak keys", keys that results in
1006
- undesirable structure after the key setup processing, and should be
1007
- avoided. In Nettle, most key setup functions have no return value, but
1008
- for ciphers with weak keys, the return value indicates whether or not
1009
- the given key is weak. For good keys, key setup returns 1, and for weak
1010
- keys, it returns 0. When possible, avoid algorithms that have weak
1011
- keys. There are several good ciphers that don't have any weak keys.
1012
-
1013
- To encrypt a message, you first initialize a cipher context for
1014
- encryption or decryption with a particular key. You then use the context
1015
- to process plaintext or ciphertext messages. The initialization is known
1016
- as "key setup". With Nettle, it is recommended to use each context
1017
- struct for only one direction, even if some of the ciphers use a single
1018
- key setup function that can be used for both encryption and decryption.
1019
-
1020
- 6.2.1 AES
1021
- ---------
1022
-
1023
- AES is a block cipher, specified by NIST as a replacement for the older
1024
- DES standard. The standard is the result of a competition between
1025
- cipher designers. The winning design, also known as RIJNDAEL, was
1026
- constructed by Joan Daemen and Vincent Rijnmen.
1027
-
1028
- Like all the AES candidates, the winning design uses a block size of
1029
- 128 bits, or 16 octets, and variable key-size, 128, 192 and 256 bits
1030
- (16, 24 and 32 octets) being the allowed key sizes. It does not have
1031
- any weak keys. Nettle defines AES in `<nettle/aes.h>'.
1032
-
1033
- -- Context struct: struct aes_ctx
1034
-
1035
- -- Constant: AES_BLOCK_SIZE
1036
- The AES block-size, 16.
1037
-
1038
- -- Constant: AES_MIN_KEY_SIZE
1039
-
1040
- -- Constant: AES_MAX_KEY_SIZE
1041
-
1042
- -- Constant: AES_KEY_SIZE
1043
- Default AES key size, 32.
1044
-
1045
- -- Function: void aes_set_encrypt_key (struct aes_ctx *CTX, unsigned
1046
- LENGTH, const uint8_t *KEY)
1047
- -- Function: void aes_set_decrypt_key (struct aes_ctx *CTX, unsigned
1048
- LENGTH, const uint8_t *KEY)
1049
- Initialize the cipher, for encryption or decryption, respectively.
1050
-
1051
- -- Function: void aes_invert_key (struct aes_ctx *DST, const struct
1052
- aes_ctx *SRC)
1053
- Given a context SRC initialized for encryption, initializes the
1054
- context struct DST for decryption, using the same key. If the same
1055
- context struct is passed for both `src' and `dst', it is converted
1056
- in place. Calling `aes_set_encrypt_key' and `aes_invert_key' is
1057
- more efficient than calling `aes_set_encrypt_key' and
1058
- `aes_set_decrypt_key'. This function is mainly useful for
1059
- applications which needs to both encrypt and decrypt using the
1060
- _same_ key.
1061
-
1062
- -- Function: void aes_encrypt (struct aes_ctx *CTX, unsigned LENGTH,
1063
- uint8_t *DST, const uint8_t *SRC)
1064
- Encryption function. LENGTH must be an integral multiple of the
1065
- block size. If it is more than one block, the data is processed in
1066
- ECB mode. `src' and `dst' may be equal, but they must not overlap
1067
- in any other way.
1068
-
1069
- -- Function: void aes_decrypt (struct aes_ctx *CTX, unsigned LENGTH,
1070
- uint8_t *DST, const uint8_t *SRC)
1071
- Analogous to `aes_encrypt'
1072
-
1073
- 6.2.2 ARCFOUR
1074
- -------------
1075
-
1076
- ARCFOUR is a stream cipher, also known under the trade marked name RC4,
1077
- and it is one of the fastest ciphers around. A problem is that the key
1078
- setup of ARCFOUR is quite weak, you should never use keys with
1079
- structure, keys that are ordinary passwords, or sequences of keys like
1080
- "secret:1", "secret:2", .... If you have keys that don't look like
1081
- random bit strings, and you want to use ARCFOUR, always hash the key
1082
- before feeding it to ARCFOUR. Furthermore, the initial bytes of the
1083
- generated key stream leak information about the key; for this reason, it
1084
- is recommended to discard the first 512 bytes of the key stream.
1085
-
1086
- /* A more robust key setup function for ARCFOUR */
1087
- void
1088
- arcfour_set_key_hashed(struct arcfour_ctx *ctx,
1089
- unsigned length, const uint8_t *key)
1090
- {
1091
- struct sha256_ctx hash;
1092
- uint8_t digest[SHA256_DIGEST_SIZE];
1093
- uint8_t buffer[0x200];
1094
-
1095
- sha256_init(&hash);
1096
- sha256_update(&hash, length, key);
1097
- sha256_digest(&hash, SHA256_DIGEST_SIZE, digest);
1098
-
1099
- arcfour_set_key(ctx, SHA256_DIGEST_SIZE, digest);
1100
- arcfour_crypt(ctx, sizeof(buffer), buffer, buffer);
1101
- }
1102
-
1103
- Nettle defines ARCFOUR in `<nettle/arcfour.h>'.
1104
-
1105
- -- Context struct: struct arcfour_ctx
1106
-
1107
- -- Constant: ARCFOUR_MIN_KEY_SIZE
1108
- Minimum key size, 1.
1109
-
1110
- -- Constant: ARCFOUR_MAX_KEY_SIZE
1111
- Maximum key size, 256.
1112
-
1113
- -- Constant: ARCFOUR_KEY_SIZE
1114
- Default ARCFOUR key size, 16.
1115
-
1116
- -- Function: void arcfour_set_key (struct arcfour_ctx *CTX, unsigned
1117
- LENGTH, const uint8_t *KEY)
1118
- Initialize the cipher. The same function is used for both
1119
- encryption and decryption.
1120
-
1121
- -- Function: void arcfour_crypt (struct arcfour_ctx *CTX, unsigned
1122
- LENGTH, uint8_t *DST, const uint8_t *SRC)
1123
- Encrypt some data. The same function is used for both encryption
1124
- and decryption. Unlike the block ciphers, this function modifies
1125
- the context, so you can split the data into arbitrary chunks and
1126
- encrypt them one after another. The result is the same as if you
1127
- had called `arcfour_crypt' only once with all the data.
1128
-
1129
- 6.2.3 ARCTWO
1130
- ------------
1131
-
1132
- ARCTWO (also known as the trade marked name RC2) is a block cipher
1133
- specified in RFC 2268. Nettle also include a variation of the ARCTWO
1134
- set key operation that lack one step, to be compatible with the reverse
1135
- engineered RC2 cipher description, as described in a Usenet post to
1136
- `sci.crypt' by Peter Gutmann.
1137
-
1138
- ARCTWO uses a block size of 64 bits, and variable key-size ranging
1139
- from 1 to 128 octets. Besides the key, ARCTWO also has a second
1140
- parameter to key setup, the number of effective key bits, `ekb'. This
1141
- parameter can be used to artificially reduce the key size. In practice,
1142
- `ekb' is usually set equal to the input key size. Nettle defines
1143
- ARCTWO in `<nettle/arctwo.h>'.
1144
-
1145
- We do not recommend the use of ARCTWO; the Nettle implementation is
1146
- provided primarily for interoperability with existing applications and
1147
- standards.
1148
-
1149
- -- Context struct: struct arctwo_ctx
1150
-
1151
- -- Constant: ARCTWO_BLOCK_SIZE
1152
- The ARCTWO block-size, 8.
1153
-
1154
- -- Constant: ARCTWO_MIN_KEY_SIZE
1155
-
1156
- -- Constant: ARCTWO_MAX_KEY_SIZE
1157
-
1158
- -- Constant: ARCTWO_KEY_SIZE
1159
- Default ARCTWO key size, 8.
1160
-
1161
- -- Function: void arctwo_set_key_ekb (struct arctwo_ctx *CTX, unsigned
1162
- LENGTH, const uint8_t *KEY, unsigned EKB)
1163
- -- Function: void arctwo_set_key (struct arctwo_ctx *CTX, unsigned
1164
- LENGTH, const uint8_t *KEY)
1165
- -- Function: void arctwo_set_key_gutmann (struct arctwo_ctx *CTX,
1166
- unsigned LENGTH, const uint8_t *KEY)
1167
- Initialize the cipher. The same function is used for both
1168
- encryption and decryption. The first function is the most general
1169
- one, which lets you provide both the variable size key, and the
1170
- desired effective key size (in bits). The maximum value for EKB is
1171
- 1024, and for convenience, `ekb = 0' has the same effect as `ekb =
1172
- 1024'.
1173
-
1174
- `arctwo_set_key(ctx, length, key)' is equivalent to
1175
- `arctwo_set_key_ekb(ctx, length, key, 8*length)', and
1176
- `arctwo_set_key_gutmann(ctx, length, key)' is equivalent to
1177
- `arctwo_set_key_ekb(ctx, length, key, 1024)'
1178
-
1179
- -- Function: void arctwo_encrypt (struct arctwo_ctx *CTX, unsigned
1180
- LENGTH, uint8_t *DST, const uint8_t *SRC)
1181
- Encryption function. LENGTH must be an integral multiple of the
1182
- block size. If it is more than one block, the data is processed in
1183
- ECB mode. `src' and `dst' may be equal, but they must not overlap
1184
- in any other way.
1185
-
1186
- -- Function: void arctwo_decrypt (struct arctwo_ctx *CTX, unsigned
1187
- LENGTH, uint8_t *DST, const uint8_t *SRC)
1188
- Analogous to `arctwo_encrypt'
1189
-
1190
- 6.2.4 BLOWFISH
1191
- --------------
1192
-
1193
- BLOWFISH is a block cipher designed by Bruce Schneier. It uses a block
1194
- size of 64 bits (8 octets), and a variable key size, up to 448 bits. It
1195
- has some weak keys. Nettle defines BLOWFISH in `<nettle/blowfish.h>'.
1196
-
1197
- -- Context struct: struct blowfish_ctx
1198
-
1199
- -- Constant: BLOWFISH_BLOCK_SIZE
1200
- The BLOWFISH block-size, 8.
1201
-
1202
- -- Constant: BLOWFISH_MIN_KEY_SIZE
1203
- Minimum BLOWFISH key size, 8.
1204
-
1205
- -- Constant: BLOWFISH_MAX_KEY_SIZE
1206
- Maximum BLOWFISH key size, 56.
1207
-
1208
- -- Constant: BLOWFISH_KEY_SIZE
1209
- Default BLOWFISH key size, 16.
1210
-
1211
- -- Function: int blowfish_set_key (struct blowfish_ctx *CTX, unsigned
1212
- LENGTH, const uint8_t *KEY)
1213
- Initialize the cipher. The same function is used for both
1214
- encryption and decryption. Checks for weak keys, returning 1 for
1215
- good keys and 0 for weak keys. Applications that don't care about
1216
- weak keys can ignore the return value.
1217
-
1218
- `blowfish_encrypt' or `blowfish_decrypt' with a weak key will
1219
- crash with an assert violation.
1220
-
1221
- -- Function: void blowfish_encrypt (struct blowfish_ctx *CTX, unsigned
1222
- LENGTH, uint8_t *DST, const uint8_t *SRC)
1223
- Encryption function. LENGTH must be an integral multiple of the
1224
- block size. If it is more than one block, the data is processed in
1225
- ECB mode. `src' and `dst' may be equal, but they must not overlap
1226
- in any other way.
1227
-
1228
- -- Function: void blowfish_decrypt (struct blowfish_ctx *CTX, unsigned
1229
- LENGTH, uint8_t *DST, const uint8_t *SRC)
1230
- Analogous to `blowfish_encrypt'
1231
-
1232
- 6.2.5 Camellia
1233
- --------------
1234
-
1235
- Camellia is a block cipher developed by Mitsubishi and Nippon Telegraph
1236
- and Telephone Corporation, described in `RFC3713', and recommended by
1237
- some Japanese and European authorities as an alternative to AES. The
1238
- algorithm is patented. The implementation in Nettle is derived from the
1239
- implementation released by NTT under the GNU LGPL (v2.1 or later), and
1240
- relies on the implicit patent license of the LGPL. There is also a
1241
- statement of royalty-free licensing for Camellia at
1242
- `http://www.ntt.co.jp/news/news01e/0104/010417.html', but this
1243
- statement has some limitations which seem problematic for free software.
1244
-
1245
- Camellia uses a the same block size and key sizes as AES: The block
1246
- size is 128 bits (16 octets), and the supported key sizes are 128, 192,
1247
- and 256 bits. Nettle defines Camellia in `<nettle/camellia.h>'.
1248
-
1249
- -- Context struct: struct camellia_ctx
1250
-
1251
- -- Constant: CAMELLIA_BLOCK_SIZE
1252
- The CAMELLIA block-size, 16.
1253
-
1254
- -- Constant: CAMELLIA_MIN_KEY_SIZE
1255
-
1256
- -- Constant: CAMELLIA_MAX_KEY_SIZE
1257
-
1258
- -- Constant: CAMELLIA_KEY_SIZE
1259
- Default CAMELLIA key size, 32.
1260
-
1261
- -- Function: void camellia_set_encrypt_key (struct camellia_ctx *CTX,
1262
- unsigned LENGTH, const uint8_t *KEY)
1263
- -- Function: void camellia_set_decrypt_key (struct camellia_ctx *CTX,
1264
- unsigned LENGTH, const uint8_t *KEY)
1265
- Initialize the cipher, for encryption or decryption, respectively.
1266
-
1267
- -- Function: void camellia_invert_key (struct camellia_ctx *DST, const
1268
- struct camellia_ctx *SRC)
1269
- Given a context SRC initialized for encryption, initializes the
1270
- context struct DST for decryption, using the same key. If the same
1271
- context struct is passed for both `src' and `dst', it is converted
1272
- in place. Calling `camellia_set_encrypt_key' and
1273
- `camellia_invert_key' is more efficient than calling
1274
- `camellia_set_encrypt_key' and `camellia_set_decrypt_key'. This
1275
- function is mainly useful for applications which needs to both
1276
- encrypt and decrypt using the _same_ key.
1277
-
1278
- -- Function: void camellia_crypt (struct camellia_ctx *CTX, unsigned
1279
- LENGTH, uint8_t *DST, const uint8_t *SRC)
1280
- The same function is used for both encryption and decryption.
1281
- LENGTH must be an integral multiple of the block size. If it is
1282
- more than one block, the data is processed in ECB mode. `src' and
1283
- `dst' may be equal, but they must not overlap in any other way.
1284
-
1285
- 6.2.6 CAST128
1286
- -------------
1287
-
1288
- CAST-128 is a block cipher, specified in `RFC 2144'. It uses a 64 bit
1289
- (8 octets) block size, and a variable key size of up to 128 bits.
1290
- Nettle defines cast128 in `<nettle/cast128.h>'.
1291
-
1292
- -- Context struct: struct cast128_ctx
1293
-
1294
- -- Constant: CAST128_BLOCK_SIZE
1295
- The CAST128 block-size, 8.
1296
-
1297
- -- Constant: CAST128_MIN_KEY_SIZE
1298
- Minimum CAST128 key size, 5.
1299
-
1300
- -- Constant: CAST128_MAX_KEY_SIZE
1301
- Maximum CAST128 key size, 16.
1302
-
1303
- -- Constant: CAST128_KEY_SIZE
1304
- Default CAST128 key size, 16.
1305
-
1306
- -- Function: void cast128_set_key (struct cast128_ctx *CTX, unsigned
1307
- LENGTH, const uint8_t *KEY)
1308
- Initialize the cipher. The same function is used for both
1309
- encryption and decryption.
1310
-
1311
- -- Function: void cast128_encrypt (struct cast128_ctx *CTX, unsigned
1312
- LENGTH, uint8_t *DST, const uint8_t *SRC)
1313
- Encryption function. LENGTH must be an integral multiple of the
1314
- block size. If it is more than one block, the data is processed in
1315
- ECB mode. `src' and `dst' may be equal, but they must not overlap
1316
- in any other way.
1317
-
1318
- -- Function: void cast128_decrypt (struct cast128_ctx *CTX, unsigned
1319
- LENGTH, uint8_t *DST, const uint8_t *SRC)
1320
- Analogous to `cast128_encrypt'
1321
-
1322
- 6.2.7 DES
1323
- ---------
1324
-
1325
- DES is the old Data Encryption Standard, specified by NIST. It uses a
1326
- block size of 64 bits (8 octets), and a key size of 56 bits. However,
1327
- the key bits are distributed over 8 octets, where the least significant
1328
- bit of each octet may be used for parity. A common way to use DES is to
1329
- generate 8 random octets in some way, then set the least significant bit
1330
- of each octet to get odd parity, and initialize DES with the resulting
1331
- key.
1332
-
1333
- The key size of DES is so small that keys can be found by brute
1334
- force, using specialized hardware or lots of ordinary work stations in
1335
- parallel. One shouldn't be using plain DES at all today, if one uses
1336
- DES at all one should be using "triple DES", see DES3 below.
1337
-
1338
- DES also has some weak keys. Nettle defines DES in `<nettle/des.h>'.
1339
-
1340
- -- Context struct: struct des_ctx
1341
-
1342
- -- Constant: DES_BLOCK_SIZE
1343
- The DES block-size, 8.
1344
-
1345
- -- Constant: DES_KEY_SIZE
1346
- DES key size, 8.
1347
-
1348
- -- Function: int des_set_key (struct des_ctx *CTX, const uint8_t *KEY)
1349
- Initialize the cipher. The same function is used for both
1350
- encryption and decryption. Parity bits are ignored. Checks for
1351
- weak keys, returning 1 for good keys and 0 for weak keys.
1352
- Applications that don't care about weak keys can ignore the return
1353
- value.
1354
-
1355
- -- Function: void des_encrypt (struct des_ctx *CTX, unsigned LENGTH,
1356
- uint8_t *DST, const uint8_t *SRC)
1357
- Encryption function. LENGTH must be an integral multiple of the
1358
- block size. If it is more than one block, the data is processed in
1359
- ECB mode. `src' and `dst' may be equal, but they must not overlap
1360
- in any other way.
1361
-
1362
- -- Function: void des_decrypt (struct des_ctx *CTX, unsigned LENGTH,
1363
- uint8_t *DST, const uint8_t *SRC)
1364
- Analogous to `des_encrypt'
1365
-
1366
- -- Function: int des_check_parity (unsigned LENGTH, const uint8_t
1367
- *KEY);
1368
- Checks that the given key has correct, odd, parity. Returns 1 for
1369
- correct parity, and 0 for bad parity.
1370
-
1371
- -- Function: void des_fix_parity (unsigned LENGTH, uint8_t *DST, const
1372
- uint8_t *SRC)
1373
- Adjusts the parity bits to match DES's requirements. You need this
1374
- function if you have created a random-looking string by a key
1375
- agreement protocol, and want to use it as a DES key. DST and SRC
1376
- may be equal.
1377
-
1378
- 6.2.8 DES3
1379
- ----------
1380
-
1381
- The inadequate key size of DES has already been mentioned. One way to
1382
- increase the key size is to pipe together several DES boxes with
1383
- independent keys. It turns out that using two DES ciphers is not as
1384
- secure as one might think, even if the key size of the combination is a
1385
- respectable 112 bits.
1386
-
1387
- The standard way to increase DES's key size is to use three DES
1388
- boxes. The mode of operation is a little peculiar: the middle DES box
1389
- is wired in the reverse direction. To encrypt a block with DES3, you
1390
- encrypt it using the first 56 bits of the key, then _decrypt_ it using
1391
- the middle 56 bits of the key, and finally encrypt it again using the
1392
- last 56 bits of the key. This is known as "ede" triple-DES, for
1393
- "encrypt-decrypt-encrypt".
1394
-
1395
- The "ede" construction provides some backward compatibility, as you
1396
- get plain single DES simply by feeding the same key to all three boxes.
1397
- That should help keeping down the gate count, and the price, of hardware
1398
- circuits implementing both plain DES and DES3.
1399
-
1400
- DES3 has a key size of 168 bits, but just like plain DES, useless
1401
- parity bits are inserted, so that keys are represented as 24 octets
1402
- (192 bits). As a 112 bit key is large enough to make brute force
1403
- attacks impractical, some applications uses a "two-key" variant of
1404
- triple-DES. In this mode, the same key bits are used for the first and
1405
- the last DES box in the pipe, while the middle box is keyed
1406
- independently. The two-key variant is believed to be secure, i.e. there
1407
- are no known attacks significantly better than brute force.
1408
-
1409
- Naturally, it's simple to implement triple-DES on top of Nettle's DES
1410
- functions. Nettle includes an implementation of three-key "ede"
1411
- triple-DES, it is defined in the same place as plain DES,
1412
- `<nettle/des.h>'.
1413
-
1414
- -- Context struct: struct des3_ctx
1415
-
1416
- -- Constant: DES3_BLOCK_SIZE
1417
- The DES3 block-size is the same as DES_BLOCK_SIZE, 8.
1418
-
1419
- -- Constant: DES3_KEY_SIZE
1420
- DES key size, 24.
1421
-
1422
- -- Function: int des3_set_key (struct des3_ctx *CTX, const uint8_t
1423
- *KEY)
1424
- Initialize the cipher. The same function is used for both
1425
- encryption and decryption. Parity bits are ignored. Checks for
1426
- weak keys, returning 1 if all three keys are good keys, and 0 if
1427
- one or more key is weak. Applications that don't care about weak
1428
- keys can ignore the return value.
1429
-
1430
- For random-looking strings, you can use `des_fix_parity' to adjust
1431
- the parity bits before calling `des3_set_key'.
1432
-
1433
- -- Function: void des3_encrypt (struct des3_ctx *CTX, unsigned LENGTH,
1434
- uint8_t *DST, const uint8_t *SRC)
1435
- Encryption function. LENGTH must be an integral multiple of the
1436
- block size. If it is more than one block, the data is processed in
1437
- ECB mode. `src' and `dst' may be equal, but they must not overlap
1438
- in any other way.
1439
-
1440
- -- Function: void des3_decrypt (struct des3_ctx *CTX, unsigned LENGTH,
1441
- uint8_t *DST, const uint8_t *SRC)
1442
- Analogous to `des_encrypt'
1443
-
1444
- 6.2.9 Salsa20
1445
- -------------
1446
-
1447
- Salsa20 is a fairly recent stream cipher designed by D. J. Bernstein. It
1448
- is built on the observation that a cryptographic hash function can be
1449
- used for encryption: Form the hash input from the secret key and a
1450
- counter, xor the hash output and the first block of the plaintext, then
1451
- increment the counter to process the next block (similar to CTR mode,
1452
- see *note CTR::). Bernstein defined an encryption algorithm, Snuffle,
1453
- in this way to ridicule United States export restrictions which treated
1454
- hash functions as nice and harmless, but ciphers as dangerous munitions.
1455
-
1456
- Salsa20 uses the same idea, but with a new specialized hash function
1457
- to mix key, block counter, and a couple of constants. It's also designed
1458
- for speed; on x86_64, it is currently the fastest cipher offered by
1459
- nettle. It uses a block size of 512 bits (64 octets) and there are two
1460
- specified key sizes, 128 and 256 bits (16 and 32 octets).
1461
-
1462
- *Caution:* The hash function used in Salsa20 is _not_ directly
1463
- applicable for use as a general hash function. It's _not_ collision
1464
- resistant if arbitrary inputs are allowed, and furthermore, the input
1465
- and output is of fixed size.
1466
-
1467
- When using Salsa20 to process a message, one specifies both a key
1468
- and a "nonce", the latter playing a similar rôle to the initialization
1469
- vector (IV) used with CBC or CTR mode. For this reason, Nettle uses the
1470
- term IV to refer to the Salsa20 nonce. One can use the same key for
1471
- several messages, provided one uses a unique random iv for each
1472
- message. The iv is 64 bits (8 octets). The block counter is initialized
1473
- to zero for each message, and is also 64 bits (8 octets). Nettle
1474
- defines Salsa20 in `<nettle/salsa20.h>'.
1475
-
1476
- -- Context struct: struct salsa20_ctx
1477
-
1478
- -- Constant: SALSA20_MIN_KEY_SIZE
1479
- -- Constant: SALSA20_MAX_KEY_SIZE
1480
- The two supported key sizes, 16 and 32 octets.
1481
-
1482
- -- Constant: SALSA20_KEY_SIZE
1483
- Recommended key size, 32.
1484
-
1485
- -- Constant: SALSA20_BLOCK_SIZE
1486
- Salsa20 block size, 64.
1487
-
1488
- -- Constant: SALSA20_IV_SIZE
1489
- Size of the IV, 8.
1490
-
1491
- -- Function: void salsa20_set_key (struct salsa20_ctx *CTX, unsigned
1492
- LENGTH, const uint8_t *KEY)
1493
- Initialize the cipher. The same function is used for both
1494
- encryption and decryption. Before using the cipher, you _must_
1495
- also call `salsa20_set_iv', see below.
1496
-
1497
- -- Function: void salsa20_set_iv (struct salsa20_ctx *CTX, const
1498
- uint8_t *IV)
1499
- Sets the IV. It is always of size `SALSA20_IV_SIZE', 8 octets.
1500
- This function also initializes the block counter, setting it to
1501
- zero.
1502
-
1503
- -- Function: void salsa20_crypt (struct salsa20_ctx *CTX, unsigned
1504
- LENGTH, uint8_t *DST, const uint8_t *SRC)
1505
- Encrypts or decrypts the data of a message, using salsa20. When a
1506
- message is encrypted using a sequence of calls to `salsa20_crypt',
1507
- all but the last call _must_ use a length that is a multiple of
1508
- `SALSA20_BLOCK_SIZE'.
1509
-
1510
- The full salsa20 cipher uses 20 rounds of mixing. Variants of Salsa20
1511
- with fewer rounds are possible, and the 12-round variant is specified by
1512
- eSTREAM, see `http://www.ecrypt.eu.org/stream/finallist.html'. Nettle
1513
- calls this variant `salsa20r12'. It uses the same context struct and
1514
- key setup as the full salsa20 cipher, but a separate function for
1515
- encryption and decryption.
1516
-
1517
- -- Function: void salsa20r12_crypt (struct salsa20_ctx *CTX, unsigned
1518
- LENGTH, uint8_t *DST, const uint8_t *SRC)
1519
- Encrypts or decrypts the data of a message, using salsa20 reduced
1520
- to 12 rounds.
1521
-
1522
- 6.2.10 SERPENT
1523
- --------------
1524
-
1525
- SERPENT is one of the AES finalists, designed by Ross Anderson, Eli
1526
- Biham and Lars Knudsen. Thus, the interface and properties are similar
1527
- to AES'. One peculiarity is that it is quite pointless to use it with
1528
- anything but the maximum key size, smaller keys are just padded to
1529
- larger ones. Nettle defines SERPENT in `<nettle/serpent.h>'.
1530
-
1531
- -- Context struct: struct serpent_ctx
1532
-
1533
- -- Constant: SERPENT_BLOCK_SIZE
1534
- The SERPENT block-size, 16.
1535
-
1536
- -- Constant: SERPENT_MIN_KEY_SIZE
1537
- Minimum SERPENT key size, 16.
1538
-
1539
- -- Constant: SERPENT_MAX_KEY_SIZE
1540
- Maximum SERPENT key size, 32.
1541
-
1542
- -- Constant: SERPENT_KEY_SIZE
1543
- Default SERPENT key size, 32.
1544
-
1545
- -- Function: void serpent_set_key (struct serpent_ctx *CTX, unsigned
1546
- LENGTH, const uint8_t *KEY)
1547
- Initialize the cipher. The same function is used for both
1548
- encryption and decryption.
1549
-
1550
- -- Function: void serpent_encrypt (struct serpent_ctx *CTX, unsigned
1551
- LENGTH, uint8_t *DST, const uint8_t *SRC)
1552
- Encryption function. LENGTH must be an integral multiple of the
1553
- block size. If it is more than one block, the data is processed in
1554
- ECB mode. `src' and `dst' may be equal, but they must not overlap
1555
- in any other way.
1556
-
1557
- -- Function: void serpent_decrypt (struct serpent_ctx *CTX, unsigned
1558
- LENGTH, uint8_t *DST, const uint8_t *SRC)
1559
- Analogous to `serpent_encrypt'
1560
-
1561
- 6.2.11 TWOFISH
1562
- --------------
1563
-
1564
- Another AES finalist, this one designed by Bruce Schneier and others.
1565
- Nettle defines it in `<nettle/twofish.h>'.
1566
-
1567
- -- Context struct: struct twofish_ctx
1568
-
1569
- -- Constant: TWOFISH_BLOCK_SIZE
1570
- The TWOFISH block-size, 16.
1571
-
1572
- -- Constant: TWOFISH_MIN_KEY_SIZE
1573
- Minimum TWOFISH key size, 16.
1574
-
1575
- -- Constant: TWOFISH_MAX_KEY_SIZE
1576
- Maximum TWOFISH key size, 32.
1577
-
1578
- -- Constant: TWOFISH_KEY_SIZE
1579
- Default TWOFISH key size, 32.
1580
-
1581
- -- Function: void twofish_set_key (struct twofish_ctx *CTX, unsigned
1582
- LENGTH, const uint8_t *KEY)
1583
- Initialize the cipher. The same function is used for both
1584
- encryption and decryption.
1585
-
1586
- -- Function: void twofish_encrypt (struct twofish_ctx *CTX, unsigned
1587
- LENGTH, uint8_t *DST, const uint8_t *SRC)
1588
- Encryption function. LENGTH must be an integral multiple of the
1589
- block size. If it is more than one block, the data is processed in
1590
- ECB mode. `src' and `dst' may be equal, but they must not overlap
1591
- in any other way.
1592
-
1593
- -- Function: void twofish_decrypt (struct twofish_ctx *CTX, unsigned
1594
- LENGTH, uint8_t *DST, const uint8_t *SRC)
1595
- Analogous to `twofish_encrypt'
1596
-
1597
- 6.2.12 `struct nettle_cipher'
1598
- -----------------------------
1599
-
1600
- Nettle includes a struct including information about some of the more
1601
- regular cipher functions. It should be considered a little experimental,
1602
- but can be useful for applications that need a simple way to handle
1603
- various algorithms. Nettle defines these structs in
1604
- `<nettle/nettle-meta.h>'.
1605
-
1606
- -- Meta struct: `struct nettle_cipher' name context_size block_size
1607
- key_size set_encrypt_key set_decrypt_key encrypt decrypt
1608
- The last four attributes are function pointers, of types
1609
- `nettle_set_key_func' and `nettle_crypt_func'. The first argument
1610
- to these functions is a `void *' pointer to a context struct,
1611
- which is of size `context_size'.
1612
-
1613
- -- Constant Struct: struct nettle_cipher nettle_aes128
1614
- -- Constant Struct: struct nettle_cipher nettle_aes192
1615
- -- Constant Struct: struct nettle_cipher nettle_aes256
1616
- -- Constant Struct: struct nettle_cipher nettle_arctwo40
1617
- -- Constant Struct: struct nettle_cipher nettle_arctwo64
1618
- -- Constant Struct: struct nettle_cipher nettle_arctwo128
1619
- -- Constant Struct: struct nettle_cipher nettle_arctwo_gutmann128
1620
- -- Constant Struct: struct nettle_cipher nettle_arcfour128
1621
- -- Constant Struct: struct nettle_cipher nettle_camellia128
1622
- -- Constant Struct: struct nettle_cipher nettle_camellia192
1623
- -- Constant Struct: struct nettle_cipher nettle_camellia256
1624
- -- Constant Struct: struct nettle_cipher nettle_cast128
1625
- -- Constant Struct: struct nettle_cipher nettle_serpent128
1626
- -- Constant Struct: struct nettle_cipher nettle_serpent192
1627
- -- Constant Struct: struct nettle_cipher nettle_serpent256
1628
- -- Constant Struct: struct nettle_cipher nettle_twofish128
1629
- -- Constant Struct: struct nettle_cipher nettle_twofish192
1630
- -- Constant Struct: struct nettle_cipher nettle_twofish256
1631
- Nettle includes such structs for all the _regular_ ciphers, i.e.
1632
- ones without weak keys or other oddities.
1633
-
1634
- Nettle also exports a list of all these ciphers without weak keys or
1635
- other oddities.
1636
-
1637
- -- Constant Array: struct nettle_cipher ** nettle_ciphers
1638
- This list can be used to dynamically enumerate or search the
1639
- supported algorithms. NULL-terminated.
1640
-
1641
- 
1642
- File: nettle.info, Node: Cipher modes, Next: Keyed hash functions, Prev: Cipher functions, Up: Reference
1643
-
1644
- 6.3 Cipher modes
1645
- ================
1646
-
1647
- Cipher modes of operation specifies the procedure to use when encrypting
1648
- a message that is larger than the cipher's block size. As explained in
1649
- *Note Cipher functions::, splitting the message into blocks and
1650
- processing them independently with the block cipher (Electronic Code
1651
- Book mode, ECB) leaks information. Besides ECB, Nettle provides three
1652
- other modes of operation: Cipher Block Chaining (CBC), Counter mode
1653
- (CTR), and Galois/Counter mode (GCM). CBC is widely used, but there are
1654
- a few subtle issues of information leakage, see, e.g., SSH CBC
1655
- vulnerability (http://www.kb.cert.org/vuls/id/958563). CTR and GCM were
1656
- standardized more recently, and are believed to be more secure. GCM
1657
- includes message authentication; for the other modes, one should always
1658
- use a MAC (*note Keyed hash functions::) or signature to authenticate
1659
- the message.
1660
-
1661
- * Menu:
1662
-
1663
- * CBC::
1664
- * CTR::
1665
- * GCM::
1666
-
1667
- 
1668
- File: nettle.info, Node: CBC, Next: CTR, Prev: Cipher modes, Up: Cipher modes
1669
-
1670
- 6.3.1 Cipher Block Chaining
1671
- ---------------------------
1672
-
1673
- When using CBC mode, plaintext blocks are not encrypted independently
1674
- of each other, like in Electronic Cook Book mode. Instead, when
1675
- encrypting a block in CBC mode, the previous ciphertext block is XORed
1676
- with the plaintext before it is fed to the block cipher. When
1677
- encrypting the first block, a random block called an "IV", or
1678
- Initialization Vector, is used as the "previous ciphertext block". The
1679
- IV should be chosen randomly, but it need not be kept secret, and can
1680
- even be transmitted in the clear together with the encrypted data.
1681
-
1682
- In symbols, if `E_k' is the encryption function of a block cipher,
1683
- and `IV' is the initialization vector, then `n' plaintext blocks
1684
- `M_1',... `M_n' are transformed into `n' ciphertext blocks `C_1',...
1685
- `C_n' as follows:
1686
-
1687
- C_1 = E_k(IV XOR M_1)
1688
- C_2 = E_k(C_1 XOR M_2)
1689
-
1690
- ...
1691
-
1692
- C_n = E_k(C_(n-1) XOR M_n)
1693
-
1694
- Nettle's includes two functions for applying a block cipher in Cipher
1695
- Block Chaining (CBC) mode, one for encryption and one for decryption.
1696
- These functions uses `void *' to pass cipher contexts around.
1697
-
1698
- -- Function: void cbc_encrypt (void *CTX, nettle_crypt_func F,
1699
- unsigned BLOCK_SIZE, uint8_t *IV, unsigned LENGTH, uint8_t
1700
- *DST, const uint8_t *SRC)
1701
- -- Function: void cbc_decrypt (void *CTX, void (*F)(), unsigned
1702
- BLOCK_SIZE, uint8_t *IV, unsigned LENGTH, uint8_t *DST, const
1703
- uint8_t *SRC)
1704
- Applies the encryption or decryption function F in CBC mode. The
1705
- final ciphertext block processed is copied into IV before
1706
- returning, so that large message be processed be a sequence of
1707
- calls to `cbc_encrypt'. The function F is of type
1708
-
1709
- `void f (void *CTX, unsigned LENGTH, uint8_t DST, const uint8_t
1710
- *SRC)',
1711
-
1712
- and the `cbc_encrypt' and `cbc_decrypt' functions pass their
1713
- argument CTX on to F.
1714
-
1715
- There are also some macros to help use these functions correctly.
1716
-
1717
- -- Macro: CBC_CTX (CONTEXT_TYPE, BLOCK_SIZE)
1718
- Expands to
1719
- {
1720
- context_type ctx;
1721
- uint8_t iv[block_size];
1722
- }
1723
-
1724
- It can be used to define a CBC context struct, either directly,
1725
-
1726
- struct CBC_CTX(struct aes_ctx, AES_BLOCK_SIZE) ctx;
1727
-
1728
- or to give it a struct tag,
1729
-
1730
- struct aes_cbc_ctx CBC_CTX (struct aes_ctx, AES_BLOCK_SIZE);
1731
-
1732
- -- Macro: CBC_SET_IV (CTX, IV)
1733
- First argument is a pointer to a context struct as defined by
1734
- `CBC_CTX', and the second is a pointer to an Initialization Vector
1735
- (IV) that is copied into that context.
1736
-
1737
- -- Macro: CBC_ENCRYPT (CTX, F, LENGTH, DST, SRC)
1738
- -- Macro: CBC_DECRYPT (CTX, F, LENGTH, DST, SRC)
1739
- A simpler way to invoke `cbc_encrypt' and `cbc_decrypt'. The first
1740
- argument is a pointer to a context struct as defined by `CBC_CTX',
1741
- and the second argument is an encryption or decryption function
1742
- following Nettle's conventions. The last three arguments define
1743
- the source and destination area for the operation.
1744
-
1745
- These macros use some tricks to make the compiler display a warning
1746
- if the types of F and CTX don't match, e.g. if you try to use an
1747
- `struct aes_ctx' context with the `des_encrypt' function.
1748
-
1749
- 
1750
- File: nettle.info, Node: CTR, Next: GCM, Prev: CBC, Up: Cipher modes
1751
-
1752
- 6.3.2 Counter mode
1753
- ------------------
1754
-
1755
- Counter mode (CTR) uses the block cipher as a keyed pseudo-random
1756
- generator. The output of the generator is XORed with the data to be
1757
- encrypted. It can be understood as a way to transform a block cipher to
1758
- a stream cipher.
1759
-
1760
- The message is divided into `n' blocks `M_1',... `M_n', where `M_n'
1761
- is of size `m' which may be smaller than the block size. Except for the
1762
- last block, all the message blocks must be of size equal to the
1763
- cipher's block size.
1764
-
1765
- If `E_k' is the encryption function of a block cipher, `IC' is the
1766
- initial counter, then the `n' plaintext blocks are transformed into `n'
1767
- ciphertext blocks `C_1',... `C_n' as follows:
1768
-
1769
- C_1 = E_k(IC) XOR M_1
1770
- C_2 = E_k(IC + 1) XOR M_2
1771
-
1772
- ...
1773
-
1774
- C_(n-1) = E_k(IC + n - 2) XOR M_(n-1)
1775
- C_n = E_k(IC + n - 1) [1..m] XOR M_n
1776
-
1777
- The IC is the initial value for the counter, it plays a similar rôle
1778
- as the IV for CBC. When adding, `IC + x', IC is interpreted as an
1779
- integer, in network byte order. For the last block, `E_k(IC + n - 1)
1780
- [1..m]' means that the cipher output is truncated to `m' bytes.
1781
-
1782
- -- Function: void ctr_crypt (void *CTX, nettle_crypt_func F, unsigned
1783
- BLOCK_SIZE, uint8_t *CTR, unsigned LENGTH, uint8_t *DST,
1784
- const uint8_t *SRC)
1785
- Applies the encryption function F in CTR mode. Note that for CTR
1786
- mode, encryption and decryption is the same operation, and hence F
1787
- should always be the encryption function for the underlying block
1788
- cipher.
1789
-
1790
- When a message is encrypted using a sequence of calls to
1791
- `ctr_crypt', all but the last call _must_ use a length that is a
1792
- multiple of the block size.
1793
-
1794
- Like for CBC, there are also a couple of helper macros.
1795
-
1796
- -- Macro: CTR_CTX (CONTEXT_TYPE, BLOCK_SIZE)
1797
- Expands to
1798
- {
1799
- context_type ctx;
1800
- uint8_t ctr[block_size];
1801
- }
1802
-
1803
- -- Macro: CTR_SET_COUNTER (CTX, IV)
1804
- First argument is a pointer to a context struct as defined by
1805
- `CTR_CTX', and the second is a pointer to an initial counter that
1806
- is copied into that context.
1807
-
1808
- -- Macro: CTR_CRYPT (CTX, F, LENGTH, DST, SRC)
1809
- A simpler way to invoke `ctr_crypt'. The first argument is a
1810
- pointer to a context struct as defined by `CTR_CTX', and the second
1811
- argument is an encryption function following Nettle's conventions.
1812
- The last three arguments define the source and destination area
1813
- for the operation.
1814
-
1815
- 
1816
- File: nettle.info, Node: GCM, Prev: CTR, Up: Cipher modes
1817
-
1818
- 6.3.3 Galois counter mode
1819
- -------------------------
1820
-
1821
- Galois counter mode is the combination of counter mode with message
1822
- authentication based on universal hashing. The main objective of the
1823
- design is to provide high performance for hardware implementations,
1824
- where other popular MAC algorithms (*note Keyed hash functions::
1825
- becomes a bottleneck for high-speed hardware implementations. It was
1826
- proposed by David A. McGrew and John Viega in 2005, and recommended by
1827
- NIST in 2007, NIST Special Publication 800-38D
1828
- (http://csrc.nist.gov/publications/nistpubs/800-38D/SP-800-38D.pdf). It
1829
- is constructed on top of a block cipher which must have a block size of
1830
- 128 bits.
1831
-
1832
- GCM is applied to messages of arbitrary length. The inputs are:
1833
-
1834
- * A key, which can be used for many messages.
1835
-
1836
- * An initialization vector (IV) which _must_ be unique for each
1837
- message.
1838
-
1839
- * Additional authenticated data, which is to be included in the
1840
- message authentication, but not encrypted. May be empty.
1841
-
1842
- * The plaintext. Maybe empty.
1843
-
1844
- The outputs are a ciphertext, of the same length as the plaintext,
1845
- and a message digest of length 128 bits. Nettle's support for GCM
1846
- consists of a low-level general interface, some convenience macros, and
1847
- specific functions for GCM using AES as the underlying cipher. These
1848
- interfaces are defined in `<nettle/gcm.h>'
1849
-
1850
- 6.3.3.1 General GCM interface
1851
- .............................
1852
-
1853
- -- Context struct: struct gcm_key
1854
- Message independent hash sub-key, and related tables.
1855
-
1856
- -- Context struct: struct gcm_ctx
1857
- Holds state corresponding to a particular message.
1858
-
1859
- -- Constant: GCM_BLOCK_SIZE
1860
- GCM's block size, 16.
1861
-
1862
- -- Constant: GCM_IV_SIZE
1863
- Recommended size of the IV, 12. Other sizes are allowed.
1864
-
1865
- -- Function: void gcm_set_key (struct gcm_key *KEY, void *CIPHER,
1866
- nettle_crypt_func *F)
1867
- Initializes KEY. CIPHER gives a context struct for the underlying
1868
- cipher, which must have been previously initialized for
1869
- encryption, and F is the encryption function.
1870
-
1871
- -- Function: void gcm_set_iv (struct gcm_ctx *CTX, const struct
1872
- gcm_key *KEY, unsigned LENGTH, const uint8_t *IV)
1873
- Initializes CTX using the given IV. The KEY argument is actually
1874
- needed only if LENGTH differs from `GCM_IV_SIZE'.
1875
-
1876
- -- Function: void gcm_update (struct gcm_ctx *CTX, const struct
1877
- gcm_key *KEY, unsigned LENGTH, const uint8_t *DATA)
1878
- Provides associated data to be authenticated. If used, must be
1879
- called before `gcm_encrypt' or `gcm_decrypt'. All but the last call
1880
- for each message _must_ use a length that is a multiple of the
1881
- block size.
1882
-
1883
- -- Function: void gcm_encrypt (struct gcm_ctx *CTX, const struct
1884
- gcm_key *KEY void *CIPHER, nettle_crypt_func *F, unsigned
1885
- LENGTH, uint8_t *DST, const uint8_t *SRC)
1886
- -- Function: void gcm_decrypt (struct gcm_ctx *CTX, const struct
1887
- gcm_key *KEY, void *CIPHER, nettle_crypt_func *F, unsigned
1888
- LENGTH, uint8_t *DST, const uint8_t *SRC)
1889
- Encrypts or decrypts the data of a message. CIPHER is the context
1890
- struct for the underlying cipher and F is the encryption function.
1891
- All but the last call for each message _must_ use a length that is
1892
- a multiple of the block size.
1893
-
1894
- -- Function: void gcm_digest (struct gcm_ctx *CTX, const struct
1895
- gcm_key *KEY, void *CIPHER, nettle_crypt_func *F, unsigned
1896
- LENGTH, uint8_t *DIGEST)
1897
- Extracts the message digest (also known "authentication tag").
1898
- This is the final operation when processing a message. LENGTH is
1899
- usually equal to `GCM_BLOCK_SIZE', but if you provide a smaller
1900
- value, only the first LENGTH octets of the digest are written.
1901
-
1902
- To encrypt a message using GCM, first initialize a context for the
1903
- underlying block cipher with a key to use for encryption. Then call the
1904
- above functions in the following order: `gcm_set_key', `gcm_set_iv',
1905
- `gcm_update', `gcm_encrypt', `gcm_digest'. The decryption procedure is
1906
- analogous, just calling `gcm_decrypt' instead of `gcm_encrypt' (note
1907
- that GCM decryption still uses the encryption function of the
1908
- underlying block cipher). To process a new message, using the same key,
1909
- call `gcm_set_iv' with a new iv.
1910
-
1911
- 6.3.3.2 GCM helper macros
1912
- .........................
1913
-
1914
- The following macros are defined.
1915
-
1916
- -- Macro: GCM_CTX (CONTEXT_TYPE)
1917
- This defines an all-in-one context struct, including the context
1918
- of the underlying cipher, the hash sub-key, and the per-message
1919
- state. It expands to
1920
- {
1921
- context_type cipher;
1922
- struct gcm_key key;
1923
- struct gcm_ctx gcm;
1924
- }
1925
-
1926
- Example use:
1927
- struct gcm_aes_ctx GCM_CTX(struct aes_ctx);
1928
-
1929
- The following macros operate on context structs of this form.
1930
-
1931
- -- Macro: GCM_SET_KEY (CTX, SET_KEY, ENCRYPT, LENGTH, DATA)
1932
- First argument, CTX, is a context struct as defined by `GCM_CTX'.
1933
- SET_KEY and ENCRYPT are functions for setting the encryption key
1934
- and for encrypting data using the underlying cipher. LENGTH and
1935
- DATA give the key.
1936
-
1937
- -- Macro: GCM_SET_IV (CTX, LENGTH, DATA)
1938
- First argument is a context struct as defined by `GCM_CTX'. LENGTH
1939
- and DATA give the initialization vector (IV).
1940
-
1941
- -- Macro: GCM_UPDATE (CTX, LENGTH, DATA)
1942
- Simpler way to call `gcm_update'. First argument is a context
1943
- struct as defined by `GCM_CTX'
1944
-
1945
- -- Macro: GCM_ENCRYPT (CTX, ENCRYPT, LENGTH, DST, SRC)
1946
- -- Macro: GCM_DECRYPT (CTX, ENCRYPT, LENGTH, DST, SRC)
1947
- -- Macro: GCM_DIGEST (CTX, ENCRYPT, LENGTH, DIGEST)
1948
- Simpler way to call `gcm_encrypt', `gcm_decrypt' or `gcm_digest'.
1949
- First argument is a context struct as defined by `GCM_CTX'. Second
1950
- argument, ENCRYPT, is a pointer to the encryption function of the
1951
- underlying cipher.
1952
-
1953
- 6.3.3.3 GCM-AES interface
1954
- .........................
1955
-
1956
- The following functions implement the common case of GCM using AES as
1957
- the underlying cipher.
1958
-
1959
- -- Context struct: struct gcm_aes_ctx
1960
- The context struct, defined using `GCM_CTX'.
1961
-
1962
- -- Function: void gcm_aes_set_key (struct gcm_aes_ctx *CTX, unsigned
1963
- LENGTH, const uint8_t *KEY)
1964
- Initializes CTX using the given key. All valid AES key sizes can
1965
- be used.
1966
-
1967
- -- Function: void gcm_aes_set_iv (struct gcm_aes_ctx *CTX, unsigned
1968
- LENGTH, const uint8_t *IV)
1969
- Initializes the per-message state, using the given IV.
1970
-
1971
- -- Function: void gcm_aes_update (struct gcm_aes_ctx *CTX, unsigned
1972
- LENGTH, const uint8_t *DATA)
1973
- Provides associated data to be authenticated. If used, must be
1974
- called before `gcm_aes_encrypt' or `gcm_aes_decrypt'. All but the
1975
- last call for each message _must_ use a length that is a multiple
1976
- of the block size.
1977
-
1978
- -- Function: void gcm_aes_encrypt (struct gcm_aes_ctx *CTX, unsigned
1979
- LENGTH, uint8_t *DST, const uint8_t *SRC)
1980
- -- Function: void gcm_aes_decrypt (struct gcm_aes_ctx *CTX, unsigned
1981
- LENGTH, uint8_t *DST, const uint8_t *SRC)
1982
- Encrypts or decrypts the data of a message. All but the last call
1983
- for each message _must_ use a length that is a multiple of the
1984
- block size.
1985
-
1986
-
1987
- -- Function: void gcm_aes_digest (struct gcm_aes_ctx *CTX, unsigned
1988
- LENGTH, uint8_t *DIGEST)
1989
- Extracts the message digest (also known "authentication tag").
1990
- This is the final operation when processing a message. LENGTH is
1991
- usually equal to `GCM_BLOCK_SIZE', but if you provide a smaller
1992
- value, only the first LENGTH octets of the digest are written.
1993
-
1994
- 
1995
- File: nettle.info, Node: Keyed hash functions, Next: Key derivation functions, Prev: Cipher modes, Up: Reference
1996
-
1997
- 6.4 Keyed Hash Functions
1998
- ========================
1999
-
2000
- A "keyed hash function", or "Message Authentication Code" (MAC) is a
2001
- function that takes a key and a message, and produces fixed size MAC.
2002
- It should be hard to compute a message and a matching MAC without
2003
- knowledge of the key. It should also be hard to compute the key given
2004
- only messages and corresponding MACs.
2005
-
2006
- Keyed hash functions are useful primarily for message authentication,
2007
- when Alice and Bob shares a secret: The sender, Alice, computes the MAC
2008
- and attaches it to the message. The receiver, Bob, also computes the
2009
- MAC of the message, using the same key, and compares that to Alice's
2010
- value. If they match, Bob can be assured that the message has not been
2011
- modified on its way from Alice.
2012
-
2013
- However, unlike digital signatures, this assurance is not
2014
- transferable. Bob can't show the message and the MAC to a third party
2015
- and prove that Alice sent that message. Not even if he gives away the
2016
- key to the third party. The reason is that the _same_ key is used on
2017
- both sides, and anyone knowing the key can create a correct MAC for any
2018
- message. If Bob believes that only he and Alice knows the key, and he
2019
- knows that he didn't attach a MAC to a particular message, he knows it
2020
- must be Alice who did it. However, the third party can't distinguish
2021
- between a MAC created by Alice and one created by Bob.
2022
-
2023
- Keyed hash functions are typically a lot faster than digital
2024
- signatures as well.
2025
-
2026
- 6.4.1 HMAC
2027
- ----------
2028
-
2029
- One can build keyed hash functions from ordinary hash functions. Older
2030
- constructions simply concatenate secret key and message and hashes
2031
- that, but such constructions have weaknesses. A better construction is
2032
- HMAC, described in `RFC 2104'.
2033
-
2034
- For an underlying hash function `H', with digest size `l' and
2035
- internal block size `b', HMAC-H is constructed as follows: From a given
2036
- key `k', two distinct subkeys `k_i' and `k_o' are constructed, both of
2037
- length `b'. The HMAC-H of a message `m' is then computed as `H(k_o |
2038
- H(k_i | m))', where `|' denotes string concatenation.
2039
-
2040
- HMAC keys can be of any length, but it is recommended to use keys of
2041
- length `l', the digest size of the underlying hash function `H'. Keys
2042
- that are longer than `b' are shortened to length `l' by hashing with
2043
- `H', so arbitrarily long keys aren't very useful.
2044
-
2045
- Nettle's HMAC functions are defined in `<nettle/hmac.h>'. There are
2046
- abstract functions that use a pointer to a `struct nettle_hash' to
2047
- represent the underlying hash function and `void *' pointers that point
2048
- to three different context structs for that hash function. There are
2049
- also concrete functions for HMAC-MD5, HMAC-RIPEMD160 HMAC-SHA1,
2050
- HMAC-SHA256, and HMAC-SHA512. First, the abstract functions:
2051
-
2052
- -- Function: void hmac_set_key (void *OUTER, void *INNER, void *STATE,
2053
- const struct nettle_hash *H, unsigned LENGTH, const uint8_t
2054
- *KEY)
2055
- Initializes the three context structs from the key. The OUTER and
2056
- INNER contexts corresponds to the subkeys `k_o' and `k_i'. STATE
2057
- is used for hashing the message, and is initialized as a copy of
2058
- the INNER context.
2059
-
2060
- -- Function: void hmac_update (void *STATE, const struct nettle_hash
2061
- *H, unsigned LENGTH, const uint8_t *DATA)
2062
- This function is called zero or more times to process the message.
2063
- Actually, `hmac_update(state, H, length, data)' is equivalent to
2064
- `H->update(state, length, data)', so if you wish you can use the
2065
- ordinary update function of the underlying hash function instead.
2066
-
2067
- -- Function: void hmac_digest (const void *OUTER, const void *INNER,
2068
- void *STATE, const struct nettle_hash *H, unsigned LENGTH,
2069
- uint8_t *DIGEST)
2070
- Extracts the MAC of the message, writing it to DIGEST. OUTER and
2071
- INNER are not modified. LENGTH is usually equal to
2072
- `H->digest_size', but if you provide a smaller value, only the
2073
- first LENGTH octets of the MAC are written.
2074
-
2075
- This function also resets the STATE context so that you can start
2076
- over processing a new message (with the same key).
2077
-
2078
- Like for CBC, there are some macros to help use these functions
2079
- correctly.
2080
-
2081
- -- Macro: HMAC_CTX (TYPE)
2082
- Expands to
2083
- {
2084
- type outer;
2085
- type inner;
2086
- type state;
2087
- }
2088
-
2089
- It can be used to define a HMAC context struct, either directly,
2090
-
2091
- struct HMAC_CTX(struct md5_ctx) ctx;
2092
-
2093
- or to give it a struct tag,
2094
-
2095
- struct hmac_md5_ctx HMAC_CTX (struct md5_ctx);
2096
-
2097
- -- Macro: HMAC_SET_KEY (CTX, H, LENGTH, KEY)
2098
- CTX is a pointer to a context struct as defined by `HMAC_CTX', H
2099
- is a pointer to a `const struct nettle_hash' describing the
2100
- underlying hash function (so it must match the type of the
2101
- components of CTX). The last two arguments specify the secret key.
2102
-
2103
- -- Macro: HMAC_DIGEST (CTX, H, LENGTH, DIGEST)
2104
- CTX is a pointer to a context struct as defined by `HMAC_CTX', H
2105
- is a pointer to a `const struct nettle_hash' describing the
2106
- underlying hash function. The last two arguments specify where the
2107
- digest is written.
2108
-
2109
- Note that there is no `HMAC_UPDATE' macro; simply call `hmac_update'
2110
- function directly, or the update function of the underlying hash
2111
- function.
2112
-
2113
- 6.4.2 Concrete HMAC functions
2114
- -----------------------------
2115
-
2116
- Now we come to the specialized HMAC functions, which are easier to use
2117
- than the general HMAC functions.
2118
-
2119
- 6.4.2.1 HMAC-MD5
2120
- ................
2121
-
2122
- -- Context struct: struct hmac_md5_ctx
2123
-
2124
- -- Function: void hmac_md5_set_key (struct hmac_md5_ctx *CTX, unsigned
2125
- KEY_LENGTH, const uint8_t *KEY)
2126
- Initializes the context with the key.
2127
-
2128
- -- Function: void hmac_md5_update (struct hmac_md5_ctx *CTX, unsigned
2129
- LENGTH, const uint8_t *DATA)
2130
- Process some more data.
2131
-
2132
- -- Function: void hmac_md5_digest (struct hmac_md5_ctx *CTX, unsigned
2133
- LENGTH, uint8_t *DIGEST)
2134
- Extracts the MAC, writing it to DIGEST. LENGTH may be smaller than
2135
- `MD5_DIGEST_SIZE', in which case only the first LENGTH octets of
2136
- the MAC are written.
2137
-
2138
- This function also resets the context for processing new messages,
2139
- with the same key.
2140
-
2141
- 6.4.2.2 HMAC-RIPEMD160
2142
- ......................
2143
-
2144
- -- Context struct: struct hmac_ripemd160_ctx
2145
-
2146
- -- Function: void hmac_ripemd160_set_key (struct hmac_ripemd160_ctx
2147
- *CTX, unsigned KEY_LENGTH, const uint8_t *KEY)
2148
- Initializes the context with the key.
2149
-
2150
- -- Function: void hmac_ripemd160_update (struct hmac_ripemd160_ctx
2151
- *CTX, unsigned LENGTH, const uint8_t *DATA)
2152
- Process some more data.
2153
-
2154
- -- Function: void hmac_ripemd160_digest (struct hmac_ripemd160_ctx
2155
- *CTX, unsigned LENGTH, uint8_t *DIGEST)
2156
- Extracts the MAC, writing it to DIGEST. LENGTH may be smaller than
2157
- `RIPEMD160_DIGEST_SIZE', in which case only the first LENGTH
2158
- octets of the MAC are written.
2159
-
2160
- This function also resets the context for processing new messages,
2161
- with the same key.
2162
-
2163
- 6.4.2.3 HMAC-SHA1
2164
- .................
2165
-
2166
- -- Context struct: struct hmac_sha1_ctx
2167
-
2168
- -- Function: void hmac_sha1_set_key (struct hmac_sha1_ctx *CTX,
2169
- unsigned KEY_LENGTH, const uint8_t *KEY)
2170
- Initializes the context with the key.
2171
-
2172
- -- Function: void hmac_sha1_update (struct hmac_sha1_ctx *CTX,
2173
- unsigned LENGTH, const uint8_t *DATA)
2174
- Process some more data.
2175
-
2176
- -- Function: void hmac_sha1_digest (struct hmac_sha1_ctx *CTX,
2177
- unsigned LENGTH, uint8_t *DIGEST)
2178
- Extracts the MAC, writing it to DIGEST. LENGTH may be smaller than
2179
- `SHA1_DIGEST_SIZE', in which case only the first LENGTH octets of
2180
- the MAC are written.
2181
-
2182
- This function also resets the context for processing new messages,
2183
- with the same key.
2184
-
2185
- 6.4.2.4 HMAC-SHA256
2186
- ...................
2187
-
2188
- -- Context struct: struct hmac_sha256_ctx
2189
-
2190
- -- Function: void hmac_sha256_set_key (struct hmac_sha256_ctx *CTX,
2191
- unsigned KEY_LENGTH, const uint8_t *KEY)
2192
- Initializes the context with the key.
2193
-
2194
- -- Function: void hmac_sha256_update (struct hmac_sha256_ctx *CTX,
2195
- unsigned LENGTH, const uint8_t *DATA)
2196
- Process some more data.
2197
-
2198
- -- Function: void hmac_sha256_digest (struct hmac_sha256_ctx *CTX,
2199
- unsigned LENGTH, uint8_t *DIGEST)
2200
- Extracts the MAC, writing it to DIGEST. LENGTH may be smaller than
2201
- `SHA256_DIGEST_SIZE', in which case only the first LENGTH octets
2202
- of the MAC are written.
2203
-
2204
- This function also resets the context for processing new messages,
2205
- with the same key.
2206
-
2207
- 6.4.2.5 HMAC-SHA512
2208
- ...................
2209
-
2210
- -- Context struct: struct hmac_sha512_ctx
2211
-
2212
- -- Function: void hmac_sha512_set_key (struct hmac_sha512_ctx *CTX,
2213
- unsigned KEY_LENGTH, const uint8_t *KEY)
2214
- Initializes the context with the key.
2215
-
2216
- -- Function: void hmac_sha512_update (struct hmac_sha512_ctx *CTX,
2217
- unsigned LENGTH, const uint8_t *DATA)
2218
- Process some more data.
2219
-
2220
- -- Function: void hmac_sha512_digest (struct hmac_sha512_ctx *CTX,
2221
- unsigned LENGTH, uint8_t *DIGEST)
2222
- Extracts the MAC, writing it to DIGEST. LENGTH may be smaller than
2223
- `SHA512_DIGEST_SIZE', in which case only the first LENGTH octets
2224
- of the MAC are written.
2225
-
2226
- This function also resets the context for processing new messages,
2227
- with the same key.
2228
-
2229
- 6.4.3 UMAC
2230
- ----------
2231
-
2232
- UMAC is a message authentication code based on universal hashing, and
2233
- designed for high performance on modern processors (in contrast to GCM,
2234
- *Note GCM::, which is designed primarily for hardware performance). On
2235
- processors with good integer multiplication performance, it can be 10
2236
- times faster than SHA256 and SHA512. UMAC is specified in `RFC 4418'.
2237
-
2238
- The secret key is always 128 bits (16 octets). The key is used as an
2239
- encryption key for the AES block cipher. This cipher is used in counter
2240
- mode to generate various internal subkeys needed in UMAC. Messages are
2241
- of arbitrary size, and for each message, UMAC also needs a unique
2242
- nonce. Nonce values must not be reused for two messages with the same
2243
- key, but they need not be kept secret.
2244
-
2245
- The nonce must be at least one octet, and at most 16; nonces shorter
2246
- than 16 octets are zero-padded. Nettle's implementation of UMAC
2247
- increments the nonce for automatically each message, so explicitly
2248
- setting the nonce for each message is optional. This auto-increment
2249
- uses network byte order and it takes the length of the nonce into
2250
- acount. E.g., if the initial nonce is "abc" (3 octets), this value is
2251
- zero-padded to 16 octets for the first message. For the next message,
2252
- the nonce is incremented to "abd", and this incremented value is
2253
- zero-padded to 16 octets.
2254
-
2255
- UMAC is defined in four variants, for different output sizes: 32
2256
- bits (4 octest), 64 bits (8 octets), 96 bits (12 octets) and 128 bits
2257
- (16 octets), corresponding to different tradeoffs between speed and
2258
- security. Using a shorter output size sometimes (but not always!) gives
2259
- the same result as using a longer output size and truncating the result.
2260
- So it is important to use the right variant. For consistency with other
2261
- hash and MAC functions, Nettle's `_digest' functions for UMAC accept a
2262
- length parameter so that the output can be truncated to any desired
2263
- size, but it is recommended to stick to the specified output size and
2264
- select the umac variant corresponding to the desired size.
2265
-
2266
- The internal block size of UMAC is 1024 octets, and it also
2267
- generates more than 1024 bytes of subkeys. This makes the size of the
2268
- context struct a bit larger than other hash functions and MAC
2269
- algorithms in Nettle.
2270
-
2271
- Nettle defines UMAC in `<nettle/umac.h>'.
2272
-
2273
- -- Context struct: struct umac32_ctx
2274
- -- Context struct: struct umac64_ctx
2275
- -- Context struct: struct umac96_ctx
2276
- -- Context struct: struct umac128_ctx
2277
- Each UMAC variant uses its own context struct.
2278
-
2279
- -- Constant: UMAC_KEY_SIZE
2280
- The UMAC key size, 16.
2281
-
2282
- -- Constant: UMAC32_DIGEST_SIZE
2283
- The size of an UMAC32 digest, 4.
2284
-
2285
- -- Constant: UMAC64_DIGEST_SIZE
2286
- The size of an UMAC64 digest, 8.
2287
-
2288
- -- Constant: UMAC96_DIGEST_SIZE
2289
- The size of an UMAC96 digest, 12.
2290
-
2291
- -- Constant: UMAC128_DIGEST_SIZE
2292
- The size of an UMAC128 digest, 16.
2293
-
2294
- -- Constant: UMAC128_DATA_SIZE
2295
- The internal block size of UMAC.
2296
-
2297
- -- Function: void umac32_set_key (struct umac32_ctx *CTX, const
2298
- uint8_t *KEY)
2299
- -- Function: void umac64_set_key (struct umac64_ctx *CTX, const
2300
- uint8_t *KEY)
2301
- -- Function: void umac96_set_key (struct umac96_ctx *CTX, const
2302
- uint8_t *KEY)
2303
- -- Function: void umac128_set_key (struct umac128_ctx *CTX, const
2304
- uint8_t *KEY)
2305
- These functions initialize the UMAC context struct. They also
2306
- initialize the nonce to zero (with length 16, for auto-increment).
2307
-
2308
- -- Function: void umac32_set_nonce (struct umac32_ctx *CTX, unsigned
2309
- LENGTH, const uint8_t *NONCE)
2310
- -- Function: void umac64_set_nonce (struct umac64_ctx *CTX, unsigned
2311
- LENGTH, const uint8_t *NONCE)
2312
- -- Function: void umac96_set_nonce (struct umac96_ctx *CTX, unsigned
2313
- LENGTH, const uint8_t *NONCE)
2314
- -- Function: void umac128_set_nonce (struct umac128_ctx *CTX, unsigned
2315
- LENGTH, const uint8_t *NONCE)
2316
- Sets the nonce to be used for the next message. In general, nonces
2317
- should be set before processing of the message. This is not
2318
- strictly required for UMAC (the nonce only affects the final
2319
- processing generating the digest), but it is nevertheless
2320
- recommended that this function is called _before_ the first
2321
- `_update' call for the message.
2322
-
2323
- -- Function: void umac32_update (struct umac32_ctx *CTX, unsigned
2324
- LENGTH, const uint8_t *DATA)
2325
- -- Function: void umac64_update (struct umac64_ctx *CTX, unsigned
2326
- LENGTH, const uint8_t *DATA)
2327
- -- Function: void umac96_update (struct umac96_ctx *CTX, unsigned
2328
- LENGTH, const uint8_t *DATA)
2329
- -- Function: void umac128_update (struct umac128_ctx *CTX, unsigned
2330
- LENGTH, const uint8_t *DATA)
2331
- These functions are called zero or more times to process the
2332
- message.
2333
-
2334
- -- Function: void umac32_digest (struct umac32_ctx *CTX, unsigned
2335
- LENGTH, uint8_t *DIGEST)
2336
- -- Function: void umac64_digest (struct umac64_ctx *CTX, unsigned
2337
- LENGTH, uint8_t *DIGEST)
2338
- -- Function: void umac96_digest (struct umac96_ctx *CTX, unsigned
2339
- LENGTH, uint8_t *DIGEST)
2340
- -- Function: void umac128_digest (struct umac128_ctx *CTX, unsigned
2341
- LENGTH, uint8_t *DIGEST)
2342
- Extracts the MAC of the message, writing it to DIGEST. LENGTH is
2343
- usually equal to the specified output size, but if you provide a
2344
- smaller value, only the first LENGTH octets of the MAC are
2345
- written. These functions reset the context for processing of a new
2346
- message with the same key. The nonce is incremented as described
2347
- above, the new value is used unless you call the `_set_nonce'
2348
- function explicitly for each message.
2349
-
2350
- 
2351
- File: nettle.info, Node: Key derivation functions, Next: Public-key algorithms, Prev: Keyed hash functions, Up: Reference
2352
-
2353
- 6.5 Key derivation Functions
2354
- ============================
2355
-
2356
- A "key derivation function" (KDF) is a function that from a given
2357
- symmetric key derives other symmetric keys. A sub-class of KDFs is the
2358
- "password-based key derivation functions" (PBKDFs), which take as input
2359
- a password or passphrase, and its purpose is typically to strengthen it
2360
- and protect against certain pre-computation attacks by using salting
2361
- and expensive computation.
2362
-
2363
- 6.5.1 PBKDF2
2364
- ------------
2365
-
2366
- The most well known PBKDF is the `PKCS #5 PBKDF2' described in `RFC
2367
- 2898' which uses a pseudo-random function such as HMAC-SHA1.
2368
-
2369
- Nettle's PBKDF2 functions are defined in `<nettle/pbkdf2.h>'. There
2370
- is an abstract function that operate on any PRF implemented via the
2371
- `nettle_hash_update_func', `nettle_hash_digest_func' interfaces. There
2372
- is also helper macros and concrete functions PBKDF2-HMAC-SHA1 and
2373
- PBKDF2-HMAC-SHA256. First, the abstract function:
2374
-
2375
- -- Function: void pbkdf2 (void *mac_ctx, nettle_hash_update_func
2376
- *update, nettle_hash_digest_func *digest, unsigned
2377
- digest_size, unsigned iterations, unsigned salt_length, const
2378
- uint8_t *salt, unsigned length, uint8_t *dst)
2379
- Derive symmetric key from a password according to PKCS #5 PBKDF2.
2380
- The PRF is assumed to have been initialized and this function will
2381
- call the UPDATE and DIGEST functions passing the MAC_CTX context
2382
- parameter as an argument in order to compute digest of size
2383
- DIGEST_SIZE. Inputs are the salt SALT of length SALT_LENGTH, the
2384
- iteration counter ITERATIONS (> 0), and the desired derived output
2385
- length LENGTH. The output buffer is DST which must have room for
2386
- at least LENGTH octets.
2387
-
2388
- Like for CBC and HMAC, there is a macro to help use the function
2389
- correctly.
2390
-
2391
- -- Macro: PBKDF2 (CTX, UPDATE, DIGEST, DIGEST_SIZE, ITERATIONS,
2392
- SALT_LENGTH, SALT, LENGTH, DST)
2393
- CTX is a pointer to a context struct passed to the UPDATE and
2394
- DIGEST functions (of the types `nettle_hash_update_func' and
2395
- `nettle_hash_digest_func' respectively) to implement the
2396
- underlying PRF with digest size of DIGEST_SIZE. Inputs are the
2397
- salt SALT of length SALT_LENGTH, the iteration counter ITERATIONS
2398
- (> 0), and the desired derived output length LENGTH. The output
2399
- buffer is DST which must have room for at least LENGTH octets.
2400
-
2401
- 6.5.2 Concrete PBKDF2 functions
2402
- -------------------------------
2403
-
2404
- Now we come to the specialized PBKDF2 functions, which are easier to
2405
- use than the general PBKDF2 function.
2406
-
2407
- 6.5.2.1 PBKDF2-HMAC-SHA1
2408
- ........................
2409
-
2410
- -- Function: void pbkdf2_hmac_sha1 (unsigned KEY_LENGTH, const uint8_t
2411
- *KEY, unsigned ITERATIONS, unsigned SALT_LENGTH, const
2412
- uint8_t *SALT, unsigned LENGTH, uint8_t *DST)
2413
- PBKDF2 with HMAC-SHA1. Derive LENGTH bytes of key into buffer DST
2414
- using the password KEY of length KEY_LENGTH and salt SALT of
2415
- length SALT_LENGTH, with iteration counter ITERATIONS (> 0). The
2416
- output buffer is DST which must have room for at least LENGTH
2417
- octets.
2418
-
2419
- 6.5.2.2 PBKDF2-HMAC-SHA256
2420
- ..........................
2421
-
2422
- -- Function: void pbkdf2_hmac_sha256 (unsigned KEY_LENGTH, const
2423
- uint8_t *KEY, unsigned ITERATIONS, unsigned SALT_LENGTH,
2424
- const uint8_t *SALT, unsigned LENGTH, uint8_t *DST)
2425
- PBKDF2 with HMAC-SHA256. Derive LENGTH bytes of key into buffer
2426
- DST using the password KEY of length KEY_LENGTH and salt SALT of
2427
- length SALT_LENGTH, with iteration counter ITERATIONS (> 0). The
2428
- output buffer is DST which must have room for at least LENGTH
2429
- octets.
2430
-
2431
- 
2432
- File: nettle.info, Node: Public-key algorithms, Next: Randomness, Prev: Key derivation functions, Up: Reference
2433
-
2434
- 6.6 Public-key algorithms
2435
- =========================
2436
-
2437
- Nettle uses GMP, the GNU bignum library, for all calculations with
2438
- large numbers. In order to use the public-key features of Nettle, you
2439
- must install GMP, at least version 3.0, before compiling Nettle, and
2440
- you need to link your programs with `-lhogweed -lnettle -lgmp'.
2441
-
2442
- The concept of "Public-key" encryption and digital signatures was
2443
- discovered by Whitfield Diffie and Martin E. Hellman and described in a
2444
- paper 1976. In traditional, "symmetric", cryptography, sender and
2445
- receiver share the same keys, and these keys must be distributed in a
2446
- secure way. And if there are many users or entities that need to
2447
- communicate, each _pair_ needs a shared secret key known by nobody else.
2448
-
2449
- Public-key cryptography uses trapdoor one-way functions. A "one-way
2450
- function" is a function `F' such that it is easy to compute the value
2451
- `F(x)' for any `x', but given a value `y', it is hard to compute a
2452
- corresponding `x' such that `y = F(x)'. Two examples are cryptographic
2453
- hash functions, and exponentiation in certain groups.
2454
-
2455
- A "trapdoor one-way function" is a function `F' that is one-way,
2456
- unless one knows some secret information about `F'. If one knows the
2457
- secret, it is easy to compute both `F' and it's inverse. If this
2458
- sounds strange, look at the RSA example below.
2459
-
2460
- Two important uses for one-way functions with trapdoors are
2461
- public-key encryption, and digital signatures. The public-key
2462
- encryption functions in Nettle are not yet documented; the rest of this
2463
- chapter is about digital signatures.
2464
-
2465
- To use a digital signature algorithm, one must first create a
2466
- "key-pair": A public key and a corresponding private key. The private
2467
- key is used to sign messages, while the public key is used for verifying
2468
- that that signatures and messages match. Some care must be taken when
2469
- distributing the public key; it need not be kept secret, but if a bad
2470
- guy is able to replace it (in transit, or in some user's list of known
2471
- public keys), bad things may happen.
2472
-
2473
- There are two operations one can do with the keys. The signature
2474
- operation takes a message and a private key, and creates a signature for
2475
- the message. A signature is some string of bits, usually at most a few
2476
- thousand bits or a few hundred octets. Unlike paper-and-ink signatures,
2477
- the digital signature depends on the message, so one can't cut it out of
2478
- context and glue it to a different message.
2479
-
2480
- The verification operation takes a public key, a message, and a
2481
- string that is claimed to be a signature on the message, and returns
2482
- true or false. If it returns true, that means that the three input
2483
- values matched, and the verifier can be sure that someone went through
2484
- with the signature operation on that very message, and that the
2485
- "someone" also knows the private key corresponding to the public key.
2486
-
2487
- The desired properties of a digital signature algorithm are as
2488
- follows: Given the public key and pairs of messages and valid
2489
- signatures on them, it should be hard to compute the private key, and
2490
- it should also be hard to create a new message and signature that is
2491
- accepted by the verification operation.
2492
-
2493
- Besides signing meaningful messages, digital signatures can be used
2494
- for authorization. A server can be configured with a public key, such
2495
- that any client that connects to the service is given a random nonce
2496
- message. If the server gets a reply with a correct signature matching
2497
- the nonce message and the configured public key, the client is granted
2498
- access. So the configuration of the server can be understood as "grant
2499
- access to whoever knows the private key corresponding to this
2500
- particular public key, and to no others".
2501
-
2502
- * Menu:
2503
-
2504
- * RSA:: The RSA public key algorithm.
2505
- * DSA:: The DSA digital signature algorithm.
2506
- * Elliptic curves:: Elliptic curves and ECDSA
2507
-
2508
- 
2509
- File: nettle.info, Node: RSA, Next: DSA, Prev: Public-key algorithms, Up: Public-key algorithms
2510
-
2511
- 6.6.1 RSA
2512
- ---------
2513
-
2514
- The RSA algorithm was the first practical digital signature algorithm
2515
- that was constructed. It was described 1978 in a paper by Ronald
2516
- Rivest, Adi Shamir and L.M. Adleman, and the technique was also
2517
- patented in the USA in 1983. The patent expired on September 20, 2000,
2518
- and since that day, RSA can be used freely, even in the USA.
2519
-
2520
- It's remarkably simple to describe the trapdoor function behind RSA.
2521
- The "one-way"-function used is
2522
-
2523
- F(x) = x^e mod n
2524
-
2525
- I.e. raise x to the `e''th power, while discarding all multiples of
2526
- `n'. The pair of numbers `n' and `e' is the public key. `e' can be
2527
- quite small, even `e = 3' has been used, although slightly larger
2528
- numbers are recommended. `n' should be about 1000 bits or larger.
2529
-
2530
- If `n' is large enough, and properly chosen, the inverse of F, the
2531
- computation of `e''th roots modulo `n', is very difficult. But,
2532
- where's the trapdoor?
2533
-
2534
- Let's first look at how RSA key-pairs are generated. First `n' is
2535
- chosen as the product of two large prime numbers `p' and `q' of roughly
2536
- the same size (so if `n' is 1000 bits, `p' and `q' are about 500 bits
2537
- each). One also computes the number `phi = (p-1)(q-1)', in mathematical
2538
- speak, `phi' is the order of the multiplicative group of integers
2539
- modulo n.
2540
-
2541
- Next, `e' is chosen. It must have no factors in common with `phi' (in
2542
- particular, it must be odd), but can otherwise be chosen more or less
2543
- randomly. `e = 65537' is a popular choice, because it makes raising to
2544
- the `e''th power particularly efficient, and being prime, it usually
2545
- has no factors common with `phi'.
2546
-
2547
- Finally, a number `d', `d < n' is computed such that `e d mod phi =
2548
- 1'. It can be shown that such a number exists (this is why `e' and
2549
- `phi' must have no common factors), and that for all x,
2550
-
2551
- (x^e)^d mod n = x^(ed) mod n = (x^d)^e mod n = x
2552
-
2553
- Using Euclid's algorithm, `d' can be computed quite easily from
2554
- `phi' and `e'. But it is still hard to get `d' without knowing `phi',
2555
- which depends on the factorization of `n'.
2556
-
2557
- So `d' is the trapdoor, if we know `d' and `y = F(x)', we can
2558
- recover x as `y^d mod n'. `d' is also the private half of the RSA
2559
- key-pair.
2560
-
2561
- The most common signature operation for RSA is defined in `PKCS#1',
2562
- a specification by RSA Laboratories. The message to be signed is first
2563
- hashed using a cryptographic hash function, e.g. MD5 or SHA1. Next,
2564
- some padding, the ASN.1 "Algorithm Identifier" for the hash function,
2565
- and the message digest itself, are concatenated and converted to a
2566
- number `x'. The signature is computed from `x' and the private key as
2567
- `s = x^d mod n'(1) (*note RSA-Footnote-1::). The signature, `s' is a
2568
- number of about the same size of `n', and it usually encoded as a
2569
- sequence of octets, most significant octet first.
2570
-
2571
- The verification operation is straight-forward, `x' is computed from
2572
- the message in the same way as above. Then `s^e mod n' is computed, the
2573
- operation returns true if and only if the result equals `x'.
2574
-
2575
- 6.6.2 Nettle's RSA support
2576
- --------------------------
2577
-
2578
- Nettle represents RSA keys using two structures that contain large
2579
- numbers (of type `mpz_t').
2580
-
2581
- -- Context struct: rsa_public_key size n e
2582
- `size' is the size, in octets, of the modulo, and is used
2583
- internally. `n' and `e' is the public key.
2584
-
2585
- -- Context struct: rsa_private_key size d p q a b c
2586
- `size' is the size, in octets, of the modulo, and is used
2587
- internally. `d' is the secret exponent, but it is not actually
2588
- used when signing. Instead, the factors `p' and `q', and the
2589
- parameters `a', `b' and `c' are used. They are computed from `p',
2590
- `q' and `e' such that `a e mod (p - 1) = 1, b e mod (q - 1) = 1, c
2591
- q mod p = 1'.
2592
-
2593
- Before use, these structs must be initialized by calling one of
2594
-
2595
- -- Function: void rsa_public_key_init (struct rsa_public_key *PUB)
2596
- -- Function: void rsa_private_key_init (struct rsa_private_key *KEY)
2597
- Calls `mpz_init' on all numbers in the key struct.
2598
-
2599
- and when finished with them, the space for the numbers must be
2600
- deallocated by calling one of
2601
-
2602
- -- Function: void rsa_public_key_clear (struct rsa_public_key *PUB)
2603
- -- Function: void rsa_private_key_clear (struct rsa_private_key *KEY)
2604
- Calls `mpz_clear' on all numbers in the key struct.
2605
-
2606
- In general, Nettle's RSA functions deviates from Nettle's "no memory
2607
- allocation"-policy. Space for all the numbers, both in the key structs
2608
- above, and temporaries, are allocated dynamically. For information on
2609
- how to customize allocation, see *Note GMP Allocation: (gmp)Custom
2610
- Allocation.
2611
-
2612
- When you have assigned values to the attributes of a key, you must
2613
- call
2614
-
2615
- -- Function: int rsa_public_key_prepare (struct rsa_public_key *PUB)
2616
- -- Function: int rsa_private_key_prepare (struct rsa_private_key *KEY)
2617
- Computes the octet size of the key (stored in the `size' attribute,
2618
- and may also do other basic sanity checks. Returns one if
2619
- successful, or zero if the key can't be used, for instance if the
2620
- modulo is smaller than the minimum size needed for RSA operations
2621
- specified by PKCS#1.
2622
-
2623
- Before signing or verifying a message, you first hash it with the
2624
- appropriate hash function. You pass the hash function's context struct
2625
- to the RSA signature function, and it will extract the message digest
2626
- and do the rest of the work. There are also alternative functions that
2627
- take the hash digest as argument.
2628
-
2629
- There is currently no support for using SHA224 or SHA384 with RSA
2630
- signatures, since there's no gain in either computation time nor
2631
- message size compared to using SHA256 and SHA512, respectively.
2632
-
2633
- Creation and verification of signatures is done with the following
2634
- functions:
2635
-
2636
- -- Function: int rsa_md5_sign (const struct rsa_private_key *KEY,
2637
- struct md5_ctx *HASH, mpz_t SIGNATURE)
2638
- -- Function: int rsa_sha1_sign (const struct rsa_private_key *KEY,
2639
- struct sha1_ctx *HASH, mpz_t SIGNATURE)
2640
- -- Function: int rsa_sha256_sign (const struct rsa_private_key *KEY,
2641
- struct sha256_ctx *HASH, mpz_t SIGNATURE)
2642
- -- Function: int rsa_sha512_sign (const struct rsa_private_key *KEY,
2643
- struct sha512_ctx *HASH, mpz_t SIGNATURE)
2644
- The signature is stored in SIGNATURE (which must have been
2645
- `mpz_init''ed earlier). The hash context is reset so that it can be
2646
- used for new messages. Returns one on success, or zero on failure.
2647
- Signing fails if the key is too small for the given hash size,
2648
- e.g., it's not possible to create a signature using SHA512 and a
2649
- 512-bit RSA key.
2650
-
2651
- -- Function: int rsa_md5_sign_digest (const struct rsa_private_key
2652
- *KEY, const uint8_t *DIGEST, mpz_t SIGNATURE)
2653
- -- Function: int rsa_sha1_sign_digest (const struct rsa_private_key
2654
- *KEY, const uint8_t *DIGEST, mpz_t SIGNATURE);
2655
- -- Function: int rsa_sha256_sign_digest (const struct rsa_private_key
2656
- *KEY, const uint8_t *DIGEST, mpz_t SIGNATURE);
2657
- -- Function: int rsa_sha512_sign_digest (const struct rsa_private_key
2658
- *KEY, const uint8_t *DIGEST, mpz_t SIGNATURE);
2659
- Creates a signature from the given hash digest. DIGEST should
2660
- point to a digest of size `MD5_DIGEST_SIZE', `SHA1_DIGEST_SIZE',
2661
- or `SHA256_DIGEST_SIZE', respectively. The signature is stored in
2662
- SIGNATURE (which must have been `mpz_init':ed earlier). Returns
2663
- one on success, or zero on failure.
2664
-
2665
- -- Function: int rsa_md5_verify (const struct rsa_public_key *KEY,
2666
- struct md5_ctx *HASH, const mpz_t SIGNATURE)
2667
- -- Function: int rsa_sha1_verify (const struct rsa_public_key *KEY,
2668
- struct sha1_ctx *HASH, const mpz_t SIGNATURE)
2669
- -- Function: int rsa_sha256_verify (const struct rsa_public_key *KEY,
2670
- struct sha256_ctx *HASH, const mpz_t SIGNATURE)
2671
- -- Function: int rsa_sha512_verify (const struct rsa_public_key *KEY,
2672
- struct sha512_ctx *HASH, const mpz_t SIGNATURE)
2673
- Returns 1 if the signature is valid, or 0 if it isn't. In either
2674
- case, the hash context is reset so that it can be used for new
2675
- messages.
2676
-
2677
- -- Function: int rsa_md5_verify_digest (const struct rsa_public_key
2678
- *KEY, const uint8_t *DIGEST, const mpz_t SIGNATURE)
2679
- -- Function: int rsa_sha1_verify_digest (const struct rsa_public_key
2680
- *KEY, const uint8_t *DIGEST, const mpz_t SIGNATURE)
2681
- -- Function: int rsa_sha256_verify_digest (const struct rsa_public_key
2682
- *KEY, const uint8_t *DIGEST, const mpz_t SIGNATURE)
2683
- -- Function: int rsa_sha512_verify_digest (const struct rsa_public_key
2684
- *KEY, const uint8_t *DIGEST, const mpz_t SIGNATURE)
2685
- Returns 1 if the signature is valid, or 0 if it isn't. DIGEST
2686
- should point to a digest of size `MD5_DIGEST_SIZE',
2687
- `SHA1_DIGEST_SIZE', or `SHA256_DIGEST_SIZE', respectively.
2688
-
2689
- If you need to use the RSA trapdoor, the private key, in a way that
2690
- isn't supported by the above functions Nettle also includes a function
2691
- that computes `x^d mod n' and nothing more, using the CRT optimization.
2692
-
2693
- -- Function: void rsa_compute_root (struct rsa_private_key *KEY, mpz_t
2694
- X, const mpz_t M)
2695
- Computes `x = m^d', efficiently.
2696
-
2697
- At last, how do you create new keys?
2698
-
2699
- -- Function: int rsa_generate_keypair (struct rsa_public_key *PUB,
2700
- struct rsa_private_key *KEY, void *RANDOM_CTX,
2701
- nettle_random_func RANDOM, void *PROGRESS_CTX,
2702
- nettle_progress_func PROGRESS, unsigned N_SIZE, unsigned
2703
- E_SIZE);
2704
- There are lots of parameters. PUB and KEY is where the resulting
2705
- key pair is stored. The structs should be initialized, but you
2706
- don't need to call `rsa_public_key_prepare' or
2707
- `rsa_private_key_prepare' after key generation.
2708
-
2709
- RANDOM_CTX and RANDOM is a randomness generator.
2710
- `random(random_ctx, length, dst)' should generate `length' random
2711
- octets and store them at `dst'. For advice, see *Note Randomness::.
2712
-
2713
- PROGRESS and PROGRESS_CTX can be used to get callbacks during the
2714
- key generation process, in order to uphold an illusion of
2715
- progress. PROGRESS can be NULL, in that case there are no
2716
- callbacks.
2717
-
2718
- SIZE_N is the desired size of the modulo, in bits. If SIZE_E is
2719
- non-zero, it is the desired size of the public exponent and a
2720
- random exponent of that size is selected. But if E_SIZE is zero,
2721
- it is assumed that the caller has already chosen a value for `e',
2722
- and stored it in PUB. Returns one on success, and zero on
2723
- failure. The function can fail for example if if N_SIZE is too
2724
- small, or if E_SIZE is zero and `pub->e' is an even number.
2725
-
2726
- 
2727
- File: nettle.info, Node: RSA-Footnotes, Up: RSA
2728
-
2729
- (1) Actually, the computation is not done like this, it is done more
2730
- efficiently using `p', `q' and the Chinese remainder theorem (CRT). But
2731
- the result is the same.
2732
-
2733
- 
2734
- File: nettle.info, Node: DSA, Next: Elliptic curves, Prev: RSA, Up: Public-key algorithms
2735
-
2736
- 6.6.3 DSA
2737
- ---------
2738
-
2739
- The DSA digital signature algorithm is more complex than RSA. It was
2740
- specified during the early 1990s, and in 1994 NIST published FIPS 186
2741
- which is the authoritative specification. Sometimes DSA is referred to
2742
- using the acronym DSS, for Digital Signature Standard. The most recent
2743
- revision of the specification, FIPS186-3, was issued in 2009, and it
2744
- adds support for larger hash functions than sha1.
2745
-
2746
- For DSA, the underlying mathematical problem is the computation of
2747
- discrete logarithms. The public key consists of a large prime `p', a
2748
- small prime `q' which is a factor of `p-1', a number `g' which
2749
- generates a subgroup of order `q' modulo `p', and an element `y' in
2750
- that subgroup.
2751
-
2752
- In the original DSA, the size of `q' is fixed to 160 bits, to match
2753
- with the SHA1 hash algorithm. The size of `p' is in principle
2754
- unlimited, but the standard specifies only nine specific sizes: `512 +
2755
- l*64', where `l' is between 0 and 8. Thus, the maximum size of `p' is
2756
- 1024 bits, and sizes less than 1024 bits are considered obsolete and not
2757
- secure.
2758
-
2759
- The subgroup requirement means that if you compute
2760
-
2761
- g^t mod p
2762
-
2763
- for all possible integers `t', you will get precisely `q' distinct
2764
- values.
2765
-
2766
- The private key is a secret exponent `x', such that
2767
-
2768
- g^x = y mod p
2769
-
2770
- In mathematical speak, `x' is the "discrete logarithm" of `y' mod
2771
- `p', with respect to the generator `g'. The size of `x' will also be
2772
- about the same size as `q'. The security of the DSA algorithm relies on
2773
- the difficulty of the discrete logarithm problem. Current algorithms to
2774
- compute discrete logarithms in this setting, and hence crack DSA, are
2775
- of two types. The first type works directly in the (multiplicative)
2776
- group of integers mod `p'. The best known algorithm of this type is the
2777
- Number Field Sieve, and it's complexity is similar to the complexity of
2778
- factoring numbers of the same size as `p'. The other type works in the
2779
- smaller `q'-sized subgroup generated by `g', which has a more difficult
2780
- group structure. One good algorithm is Pollard-rho, which has
2781
- complexity `sqrt(q)'.
2782
-
2783
- The important point is that security depends on the size of _both_
2784
- `p' and `q', and they should be chosen so that the difficulty of both
2785
- discrete logarithm methods are comparable. Today, the security margin
2786
- of the original DSA may be uncomfortably small. Using a `p' of 1024
2787
- bits implies that cracking using the number field sieve is expected to
2788
- take about the same time as factoring a 1024-bit RSA modulo, and using
2789
- a `q' of size 160 bits implies that cracking using Pollard-rho will
2790
- take roughly `2^80' group operations. With the size of `q' fixed, tied
2791
- to the SHA1 digest size, it may be tempting to increase the size of `p'
2792
- to, say, 4096 bits. This will provide excellent resistance against
2793
- attacks like the number field sieve which works in the large group. But
2794
- it will do very little to defend against Pollard-rho attacking the small
2795
- subgroup; the attacker is slowed down at most by a single factor of 10
2796
- due to the more expensive group operation. And the attacker will surely
2797
- choose the latter attack.
2798
-
2799
- The signature generation algorithm is randomized; in order to create
2800
- a DSA signature, you need a good source for random numbers (*note
2801
- Randomness::). Let us describe the common case of a 160-bit `q'.
2802
-
2803
- To create a signature, one starts with the hash digest of the
2804
- message, `h', which is a 160 bit number, and a random number `k,
2805
- 0<k<q', also 160 bits. Next, one computes
2806
-
2807
- r = (g^k mod p) mod q
2808
- s = k^-1 (h + x r) mod q
2809
-
2810
- The signature is the pair `(r, s)', two 160 bit numbers. Note the
2811
- two different mod operations when computing `r', and the use of the
2812
- secret exponent `x'.
2813
-
2814
- To verify a signature, one first checks that `0 < r,s < q', and then
2815
- one computes backwards,
2816
-
2817
- w = s^-1 mod q
2818
- v = (g^(w h) y^(w r) mod p) mod q
2819
-
2820
- The signature is valid if `v = r'. This works out because `w = s^-1
2821
- mod q = k (h + x r)^-1 mod q', so that
2822
-
2823
- g^(w h) y^(w r) = g^(w h) (g^x)^(w r) = g^(w (h + x r)) = g^k
2824
-
2825
- When reducing mod `q' this yields `r'. Note that when verifying a
2826
- signature, we don't know either `k' or `x': those numbers are secret.
2827
-
2828
- If you can choose between RSA and DSA, which one is best? Both are
2829
- believed to be secure. DSA gained popularity in the late 1990s, as a
2830
- patent free alternative to RSA. Now that the RSA patents have expired,
2831
- there's no compelling reason to want to use DSA. Today, the original
2832
- DSA key size does not provide a large security margin, and it should
2833
- probably be phased out together with RSA keys of 1024 bits. Using the
2834
- revised DSA algorithm with a larger hash function, in particular,
2835
- SHA256, a 256-bit `q', and `p' of size 2048 bits or more, should
2836
- provide for a more comfortable security margin, but these variants are
2837
- not yet in wide use.
2838
-
2839
- DSA signatures are smaller than RSA signatures, which is important
2840
- for some specialized applications.
2841
-
2842
- From a practical point of view, DSA's need for a good randomness
2843
- source is a serious disadvantage. If you ever use the same `k' (and
2844
- `r') for two different message, you leak your private key.
2845
-
2846
- 6.6.4 Nettle's DSA support
2847
- --------------------------
2848
-
2849
- Like for RSA, Nettle represents DSA keys using two structures,
2850
- containing values of type `mpz_t'. For information on how to customize
2851
- allocation, see *Note GMP Allocation: (gmp)Custom Allocation.
2852
-
2853
- Most of the DSA functions are very similar to the corresponding RSA
2854
- functions, but there are a few differences pointed out below. For a
2855
- start, there are no functions corresponding to `rsa_public_key_prepare'
2856
- and `rsa_private_key_prepare'.
2857
-
2858
- -- Context struct: dsa_public_key p q g y
2859
- The public parameters described above.
2860
-
2861
- -- Context struct: dsa_private_key x
2862
- The private key `x'.
2863
-
2864
- Before use, these structs must be initialized by calling one of
2865
-
2866
- -- Function: void dsa_public_key_init (struct dsa_public_key *PUB)
2867
- -- Function: void dsa_private_key_init (struct dsa_private_key *KEY)
2868
- Calls `mpz_init' on all numbers in the key struct.
2869
-
2870
- When finished with them, the space for the numbers must be
2871
- deallocated by calling one of
2872
-
2873
- -- Function: void dsa_public_key_clear (struct dsa_public_key *PUB)
2874
- -- Function: void dsa_private_key_clear (struct dsa_private_key *KEY)
2875
- Calls `mpz_clear' on all numbers in the key struct.
2876
-
2877
- Signatures are represented using the structure below, and need to be
2878
- initialized and cleared in the same way as the key structs.
2879
-
2880
- -- Context struct: dsa_signature r s
2881
-
2882
- -- Function: void dsa_signature_init (struct dsa_signature *SIGNATURE)
2883
- -- Function: void dsa_signature_clear (struct dsa_signature *SIGNATURE)
2884
- You must call `dsa_signature_init' before creating or using a
2885
- signature, and call `dsa_signature_clear' when you are finished
2886
- with it.
2887
-
2888
- For signing, you need to provide both the public and the private key
2889
- (unlike RSA, where the private key struct includes all information
2890
- needed for signing), and a source for random numbers. Signatures can
2891
- use the SHA1 or the SHA256 hash function, although the implementation
2892
- of DSA with SHA256 should be considered somewhat experimental due to
2893
- lack of official test vectors and interoperability testing.
2894
-
2895
- -- Function: int dsa_sha1_sign (const struct dsa_public_key *PUB,
2896
- const struct dsa_private_key *KEY, void *RANDOM_CTX,
2897
- nettle_random_func RANDOM, struct sha1_ctx *HASH, struct
2898
- dsa_signature *SIGNATURE)
2899
- -- Function: int dsa_sha1_sign_digest (const struct dsa_public_key
2900
- *PUB, const struct dsa_private_key *KEY, void *RANDOM_CTX,
2901
- nettle_random_func RANDOM, const uint8_t *DIGEST, struct
2902
- dsa_signature *SIGNATURE)
2903
- -- Function: int dsa_sha256_sign (const struct dsa_public_key *PUB,
2904
- const struct dsa_private_key *KEY, void *RANDOM_CTX,
2905
- nettle_random_func RANDOM, struct sha256_ctx *HASH, struct
2906
- dsa_signature *SIGNATURE)
2907
- -- Function: int dsa_sha256_sign_digest (const struct dsa_public_key
2908
- *PUB, const struct dsa_private_key *KEY, void *RANDOM_CTX,
2909
- nettle_random_func RANDOM, const uint8_t *DIGEST, struct
2910
- dsa_signature *SIGNATURE)
2911
- Creates a signature from the given hash context or digest.
2912
- RANDOM_CTX and RANDOM is a randomness generator.
2913
- `random(random_ctx, length, dst)' should generate `length' random
2914
- octets and store them at `dst'. For advice, see *Note
2915
- Randomness::. Returns one on success, or zero on failure. Signing
2916
- fails if the key size and the hash size don't match.
2917
-
2918
- Verifying signatures is a little easier, since no randomness
2919
- generator is needed. The functions are
2920
-
2921
- -- Function: int dsa_sha1_verify (const struct dsa_public_key *KEY,
2922
- struct sha1_ctx *HASH, const struct dsa_signature *SIGNATURE)
2923
- -- Function: int dsa_sha1_verify_digest (const struct dsa_public_key
2924
- *KEY, const uint8_t *DIGEST, const struct dsa_signature
2925
- *SIGNATURE)
2926
- -- Function: int dsa_sha256_verify (const struct dsa_public_key *KEY,
2927
- struct sha256_ctx *HASH, const struct dsa_signature
2928
- *SIGNATURE)
2929
- -- Function: int dsa_sha256_verify_digest (const struct dsa_public_key
2930
- *KEY, const uint8_t *DIGEST, const struct dsa_signature
2931
- *SIGNATURE)
2932
- Verifies a signature. Returns 1 if the signature is valid,
2933
- otherwise 0.
2934
-
2935
- Key generation uses mostly the same parameters as the corresponding
2936
- RSA function.
2937
-
2938
- -- Function: int dsa_generate_keypair (struct dsa_public_key *PUB,
2939
- struct dsa_private_key *KEY, void *RANDOM_CTX,
2940
- nettle_random_func RANDOM, void *PROGRESS_CTX,
2941
- nettle_progress_func PROGRESS, unsigned P_BITS, unsigned
2942
- Q_BITS)
2943
- PUB and KEY is where the resulting key pair is stored. The structs
2944
- should be initialized before you call this function.
2945
-
2946
- RANDOM_CTX and RANDOM is a randomness generator.
2947
- `random(random_ctx, length, dst)' should generate `length' random
2948
- octets and store them at `dst'. For advice, see *Note Randomness::.
2949
-
2950
- PROGRESS and PROGRESS_CTX can be used to get callbacks during the
2951
- key generation process, in order to uphold an illusion of
2952
- progress. PROGRESS can be NULL, in that case there are no
2953
- callbacks.
2954
-
2955
- P_BITS and Q_BITS are the desired sizes of `p' and `q'. To
2956
- generate keys that conform to the original DSA standard, you must
2957
- use `q_bits = 160' and select P_BITS of the form `p_bits = 512 +
2958
- l*64', for `0 <= l <= 8', where the smaller sizes are no longer
2959
- recommended, so you should most likely stick to `p_bits = 1024'.
2960
- Non-standard sizes are possible, in particular `p_bits' larger
2961
- than 1024, although DSA implementations can not in general be
2962
- expected to support such keys. Also note that using very large
2963
- P_BITS, with Q_BITS fixed at 160, doesn't make much sense, because
2964
- the security is also limited by the size of the smaller prime.
2965
- Using a larger `q_bits' requires switching to a larger hash
2966
- function. To generate DSA keys for use with SHA256, use `q_bits =
2967
- 256' and, e.g., `p_bits = 2048'.
2968
-
2969
- Returns one on success, and zero on failure. The function will
2970
- fail if Q_BITS is neither 160 nor 256, or if P_BITS is unreasonably
2971
- small.
2972
-
2973
- 
2974
- File: nettle.info, Node: Elliptic curves, Prev: DSA, Up: Public-key algorithms
2975
-
2976
- 6.6.5 Elliptic curves
2977
- ---------------------
2978
-
2979
- For cryptographic purposes, an elliptic curve is a mathematical group of
2980
- points, and computing logarithms in this group is computationally
2981
- difficult problem. Nettle uses additive notation for elliptic curve
2982
- groups. If P and Q are two points, and k is an integer, the point sum,
2983
- P + Q, and the multiple k P can be computed efficiently, but given only
2984
- two points P and Q, finding an integer k such that Q = k P is the
2985
- elliptic curve discrete logarithm problem.
2986
-
2987
- Nettle supports standard curves which are all of the form y^2 = x^3
2988
- - 3 x + b (mod p), i.e., the points have coordinates (x,y), both
2989
- considered as integers modulo a specified prime p. Curves are
2990
- represented as a `struct ecc_curve'. Supported curves are declared in
2991
- `<nettle/ecc-curve.h>', e.g., `nettle_secp_256r1' for a standardized
2992
- curve using the 256-bit prime p = 2^256 - 2^224 + 2^192 + 2^96 - 1. The
2993
- contents of these structs is not visible to nettle users. The "bitsize
2994
- of the curve" is used as a shorthand for the bitsize of the curve's
2995
- prime p, e.g., 256 bits for `nettle_secp_256r1'.
2996
-
2997
- 6.6.5.1 Side-channel silence
2998
- ............................
2999
-
3000
- Nettle's implementation of the elliptic curve operations is intended to
3001
- be side-channel silent. The side-channel attacks considered are:
3002
-
3003
- * Timing attacks If the timing of operations depends on secret
3004
- values, an attacker interacting with your system can measure the
3005
- response time, and infer information about your secrets, e.g., a
3006
- private signature key.
3007
-
3008
- * Attacks using memory caches Assume you have some secret data on a
3009
- multi-user system, and that this data is properly protected so
3010
- that other users get no direct access to it. If you have a process
3011
- operating on the secret data, and this process does memory
3012
- accesses depending on the data, e.g, an internal lookup table in
3013
- some cryptographic algorithm, an attacker running a separate
3014
- process on the same system may use behavior of internal CPU caches
3015
- to get information about your secrets.
3016
-
3017
- Nettle's ECC implementation is designed to be "side-channel silent",
3018
- and not leak any information to these attacks. Timing and memory
3019
- accesses depend only on the size of the input data and its location in
3020
- memory, not on the actual data bits. This implies a performance penalty
3021
- in several of the building blocks.
3022
-
3023
- 6.6.6 ECDSA
3024
- -----------
3025
-
3026
- ECDSA is a variant of the DSA digital signature scheme (*note DSA::),
3027
- which works over an elliptic curve group rather than over a (subgroup
3028
- of) integers modulo p. Like DSA, creating a signature requires a unique
3029
- random nonce (repeating the nonce with two different messages reveals
3030
- the private key, and any leak or bias in the generation of the nonce
3031
- also leaks information about the key).
3032
-
3033
- Unlike DSA, signatures are in general not tied to any particular hash
3034
- function or even hash size. Any hash function can be used, and the hash
3035
- value is truncated or padded as needed to get a size matching the curve
3036
- being used. It is recommended to use a strong cryptographic hash
3037
- function with digest size close to the bit size of the curve, e.g.,
3038
- SHA256 is a reasonable choice when using ECDSA signature over the curve
3039
- secp256r1. A protocol or application using ECDSA has to specify which
3040
- curve and which hash function to use, or provide some mechanism for
3041
- negotiating.
3042
-
3043
- Nettle defines ECDSA in `<nettle/ecdsa.h>'. We first need to define
3044
- the data types used to represent public and private keys.
3045
-
3046
- -- struct: struct ecc_point
3047
- Represents a point on an elliptic curve. In particular, it is used
3048
- to represent an ECDSA public key.
3049
-
3050
- -- Function: void ecc_point_init (struct ecc_point *P, const
3051
- structecc_curve *ECC)
3052
- Initializes P to represent points on the given curve ECC.
3053
- Allocates storage for the coordinates, using the same allocation
3054
- functions as GMP.
3055
-
3056
- -- Function: void ecc_point_clear (struct ecc_point *P)
3057
- Deallocate storage.
3058
-
3059
- -- Function: int ecc_point_set (struct ecc_point *P, const mpz_t X,
3060
- const mpz_t Y)
3061
- Check that the given coordinates represent a point on the curve.
3062
- If so, the coordinates are copied and converted to internal
3063
- representation, and the function returns 1. Otherwise, it returns
3064
- 0. Currently, the infinity point (or zero point, with additive
3065
- notation) i snot allowed.
3066
-
3067
- -- Function: void ecc_point_get (const struct ecc_point *P, mpz_t X,
3068
- mpz_t Y)
3069
- Extracts the coordinate of the point P. The output parameters X or
3070
- Y may be NULL if the caller doesn't want that coordinate.
3071
-
3072
- -- struct: struct ecc_scalar
3073
- Represents an integer in the range 0 < x < group order, where the
3074
- "group order" refers to the order of an ECC group. In particular,
3075
- it is used to represent an ECDSA private key.
3076
-
3077
- -- Function: void ecc_scalar_init (struct ecc_scalar *S, const struct
3078
- ecc_curve *ECC)
3079
- Initializes S to represent a scalar suitable for the given curve
3080
- ECC. Allocates storage using the same allocation functions as GMP.
3081
-
3082
- -- Function: void ecc_scalar_clear (struct ecc_scalar *S)
3083
- Deallocate storage.
3084
-
3085
- -- Function: int ecc_scalar_set (struct ecc_scalar *S, const mpz_t Z)
3086
- Check that Z is in the correct range. If so, copies the value to S
3087
- and returns 1, otherwise returns 0.
3088
-
3089
- -- Function: void ecc_scalar_get (const struct ecc_scalar *S, mpz_t Z)
3090
- Extracts the scalar, in GMP `mpz_t' representation.
3091
-
3092
- To create and verify ECDSA signatures, the following functions are
3093
- used.
3094
-
3095
- -- Function: void ecdsa_sign (const struct ecc_scalar *KEY, void
3096
- *RANDOM_CTX, nettle_random_func *RANDOM, unsigned
3097
- DIGEST_LENGTH, const uint8_t *DIGEST, struct dsa_signature
3098
- *SIGNATURE)
3099
- Uses the private key KEY to create a signature on DIGEST.
3100
- RANDOM_CTX and RANDOM is a randomness generator.
3101
- `random(random_ctx, length, dst)' should generate `length' random
3102
- octets and store them at `dst'. The signature is stored in
3103
- SIGNATURE, in the same was as for plain DSA.
3104
-
3105
- -- Function: int ecdsa_verify (const struct ecc_point *PUB, unsigned
3106
- LENGTH, const uint8_t *DIGEST, const struct dsa_signature
3107
- *SIGNATURE)
3108
- Uses the public key PUB to verify that SIGNATURE is a valid
3109
- signature for the message digest DIGEST (of LENGTH octets).
3110
- Returns 1 if the signature is valid, otherwise 0.
3111
-
3112
- Finally, to generation of new an ECDSA key pairs
3113
-
3114
- -- Function: void ecdsa_generate_keypair (struct ecc_point *PUB,
3115
- struct ecc_scalar *KEY, void *RANDOM_CTX, nettle_random_func
3116
- *RANDOM);
3117
- PUB and KEY is where the resulting key pair is stored. The structs
3118
- should be initialized, for the desired ECC curve, before you call
3119
- this function.
3120
-
3121
- RANDOM_CTX and RANDOM is a randomness generator.
3122
- `random(random_ctx, length, dst)' should generate `length' random
3123
- octets and store them at `dst'. For advice, see *Note Randomness::.
3124
-
3125
- 
3126
- File: nettle.info, Node: Randomness, Next: ASCII encoding, Prev: Public-key algorithms, Up: Reference
3127
-
3128
- 6.7 Randomness
3129
- ==============
3130
-
3131
- A crucial ingredient in many cryptographic contexts is randomness: Let
3132
- `p' be a random prime, choose a random initialization vector `iv', a
3133
- random key `k' and a random exponent `e', etc. In the theories, it is
3134
- assumed that you have plenty of randomness around. If this assumption
3135
- is not true in practice, systems that are otherwise perfectly secure,
3136
- can be broken. Randomness has often turned out to be the weakest link
3137
- in the chain.
3138
-
3139
- In non-cryptographic applications, such as games as well as
3140
- scientific simulation, a good randomness generator usually means a
3141
- generator that has good statistical properties, and is seeded by some
3142
- simple function of things like the current time, process id, and host
3143
- name.
3144
-
3145
- However, such a generator is inadequate for cryptography, for at
3146
- least two reasons:
3147
-
3148
- * It's too easy for an attacker to guess the initial seed. Even if
3149
- it will take some 2^32 tries before he guesses right, that's far
3150
- too easy. For example, if the process id is 16 bits, the
3151
- resolution of "current time" is one second, and the attacker knows
3152
- what day the generator was seeded, there are only about 2^32
3153
- possibilities to try if all possible values for the process id and
3154
- time-of-day are tried.
3155
-
3156
- * The generator output reveals too much. By observing only a small
3157
- segment of the generator's output, its internal state can be
3158
- recovered, and from there, all previous output and all future
3159
- output can be computed by the attacker.
3160
-
3161
- A randomness generator that is used for cryptographic purposes must
3162
- have better properties. Let's first look at the seeding, as the issues
3163
- here are mostly independent of the rest of the generator. The initial
3164
- state of the generator (its seed) must be unguessable by the attacker.
3165
- So what's unguessable? It depends on what the attacker already knows.
3166
- The concept used in information theory to reason about such things is
3167
- called "entropy", or "conditional entropy" (not to be confused with the
3168
- thermodynamic concept with the same name). A reasonable requirement is
3169
- that the seed contains a conditional entropy of at least some 80-100
3170
- bits. This property can be explained as follows: Allow the attacker to
3171
- ask `n' yes-no-questions, of his own choice, about the seed. If the
3172
- attacker, using this question-and-answer session, as well as any other
3173
- information he knows about the seeding process, still can't guess the
3174
- seed correctly, then the conditional entropy is more than `n' bits.
3175
-
3176
- Let's look at an example. Say information about timing of received
3177
- network packets is used in the seeding process. If there is some random
3178
- network traffic going on, this will contribute some bits of entropy or
3179
- "unguessability" to the seed. However, if the attacker can listen in to
3180
- the local network, or if all but a small number of the packets were
3181
- transmitted by machines that the attacker can monitor, this additional
3182
- information makes the seed easier for the attacker to figure out. Even
3183
- if the information is exactly the same, the conditional entropy, or
3184
- unguessability, is smaller for an attacker that knows some of it already
3185
- before the hypothetical question-and-answer session.
3186
-
3187
- Seeding of good generators is usually based on several sources. The
3188
- key point here is that the amount of unguessability that each source
3189
- contributes, depends on who the attacker is. Some sources that have been
3190
- used are:
3191
-
3192
- High resolution timing of i/o activities
3193
- Such as completed blocks from spinning hard disks, network
3194
- packets, etc. Getting access to such information is quite system
3195
- dependent, and not all systems include suitable hardware. If
3196
- available, it's one of the better randomness source one can find
3197
- in a digital, mostly predictable, computer.
3198
-
3199
- User activity
3200
- Timing and contents of user interaction events is another popular
3201
- source that is available for interactive programs (even if I
3202
- suspect that it is sometimes used in order to make the user feel
3203
- good, not because the quality of the input is needed or used
3204
- properly). Obviously, not available when a machine is unattended.
3205
- Also beware of networks: User interaction that happens across a
3206
- long serial cable, TELNET session, or even SSH session may be
3207
- visible to an attacker, in full or partially.
3208
-
3209
- Audio input
3210
- Any room, or even a microphone input that's left unconnected, is a
3211
- source of some random background noise, which can be fed into the
3212
- seeding process.
3213
-
3214
- Specialized hardware
3215
- Hardware devices with the sole purpose of generating random data
3216
- have been designed. They range from radioactive samples with an
3217
- attached Geiger counter, to amplification of the inherent noise in
3218
- electronic components such as diodes and resistors, to
3219
- low-frequency sampling of chaotic systems. Hashing successive
3220
- images of a Lava lamp is a spectacular example of the latter type.
3221
-
3222
- Secret information
3223
- Secret information, such as user passwords or keys, or private
3224
- files stored on disk, can provide some unguessability. A problem
3225
- is that if the information is revealed at a later time, the
3226
- unguessability vanishes. Another problem is that this kind of
3227
- information tends to be fairly constant, so if you rely on it and
3228
- seed your generator regularly, you risk constructing almost
3229
- similar seeds or even constructing the same seed more than once.
3230
-
3231
- For all practical sources, it's difficult but important to provide a
3232
- reliable lower bound on the amount of unguessability that it provides.
3233
- Two important points are to make sure that the attacker can't observe
3234
- your sources (so if you like the Lava lamp idea, remember that you have
3235
- to get your own lamp, and not put it by a window or anywhere else where
3236
- strangers can see it), and that hardware failures are detected. What if
3237
- the bulb in the Lava lamp, which you keep locked into a cupboard
3238
- following the above advice, breaks after a few months?
3239
-
3240
- So let's assume that we have been able to find an unguessable seed,
3241
- which contains at least 80 bits of conditional entropy, relative to all
3242
- attackers that we care about (typically, we must at the very least
3243
- assume that no attacker has root privileges on our machine).
3244
-
3245
- How do we generate output from this seed, and how much can we get?
3246
- Some generators (notably the Linux `/dev/random' generator) tries to
3247
- estimate available entropy and restrict the amount of output. The goal
3248
- is that if you read 128 bits from `/dev/random', you should get 128
3249
- "truly random" bits. This is a property that is useful in some
3250
- specialized circumstances, for instance when generating key material for
3251
- a one time pad, or when working with unconditional blinding, but in most
3252
- cases, it doesn't matter much. For most application, there's no limit on
3253
- the amount of useful "random" data that we can generate from a small
3254
- seed; what matters is that the seed is unguessable and that the
3255
- generator has good cryptographic properties.
3256
-
3257
- At the heart of all generators lies its internal state. Future output
3258
- is determined by the internal state alone. Let's call it the generator's
3259
- key. The key is initialized from the unguessable seed. Important
3260
- properties of a generator are:
3261
-
3262
- "Key-hiding"
3263
- An attacker observing the output should not be able to recover the
3264
- generator's key.
3265
-
3266
- "Independence of outputs"
3267
- Observing some of the output should not help the attacker to guess
3268
- previous or future output.
3269
-
3270
- "Forward secrecy"
3271
- Even if an attacker compromises the generator's key, he should not
3272
- be able to guess the generator output _before_ the key compromise.
3273
-
3274
- "Recovery from key compromise"
3275
- If an attacker compromises the generator's key, he can compute
3276
- _all_ future output. This is inevitable if the generator is seeded
3277
- only once, at startup. However, the generator can provide a
3278
- reseeding mechanism, to achieve recovery from key compromise. More
3279
- precisely: If the attacker compromises the key at a particular
3280
- time `t_1', there is another later time `t_2', such that if the
3281
- attacker observes all output generated between `t_1' and `t_2', he
3282
- still can't guess what output is generated after `t_2'.
3283
-
3284
-
3285
- Nettle includes one randomness generator that is believed to have all
3286
- the above properties, and two simpler ones.
3287
-
3288
- ARCFOUR, like any stream cipher, can be used as a randomness
3289
- generator. Its output should be of reasonable quality, if the seed is
3290
- hashed properly before it is used with `arcfour_set_key'. There's no
3291
- single natural way to reseed it, but if you need reseeding, you should
3292
- be using Yarrow instead.
3293
-
3294
- The "lagged Fibonacci" generator in `<nettle/knuth-lfib.h>' is a
3295
- fast generator with good statistical properties, but is *not* for
3296
- cryptographic use, and therefore not documented here. It is included
3297
- mostly because the Nettle test suite needs to generate some test data
3298
- from a small seed.
3299
-
3300
- The recommended generator to use is Yarrow, described below.
3301
-
3302
- 6.7.1 Yarrow
3303
- ------------
3304
-
3305
- Yarrow is a family of pseudo-randomness generators, designed for
3306
- cryptographic use, by John Kelsey, Bruce Schneier and Niels Ferguson.
3307
- Yarrow-160 is described in a paper at
3308
- `http://www.counterpane.com/yarrow.html', and it uses SHA1 and
3309
- triple-DES, and has a 160-bit internal state. Nettle implements
3310
- Yarrow-256, which is similar, but uses SHA256 and AES to get an
3311
- internal state of 256 bits.
3312
-
3313
- Yarrow was an almost finished project, the paper mentioned above is
3314
- the closest thing to a specification for it, but some smaller details
3315
- are left out. There is no official reference implementation or test
3316
- cases. This section includes an overview of Yarrow, but for the
3317
- details of Yarrow-256, as implemented by Nettle, you have to consult
3318
- the source code. Maybe a complete specification can be written later.
3319
-
3320
- Yarrow can use many sources (at least two are needed for proper
3321
- reseeding), and two randomness "pools", referred to as the "slow pool"
3322
- and the "fast pool". Input from the sources is fed alternatingly into
3323
- the two pools. When one of the sources has contributed 100 bits of
3324
- entropy to the fast pool, a "fast reseed" happens and the fast pool is
3325
- mixed into the internal state. When at least two of the sources have
3326
- contributed at least 160 bits each to the slow pool, a "slow reseed"
3327
- takes place. The contents of both pools are mixed into the internal
3328
- state. These procedures should ensure that the generator will eventually
3329
- recover after a key compromise.
3330
-
3331
- The output is generated by using AES to encrypt a counter, using the
3332
- generator's current key. After each request for output, another 256
3333
- bits are generated which replace the key. This ensures forward secrecy.
3334
-
3335
- Yarrow can also use a "seed file" to save state across restarts.
3336
- Yarrow is seeded by either feeding it the contents of the previous seed
3337
- file, or feeding it input from its sources until a slow reseed happens.
3338
-
3339
- Nettle defines Yarrow-256 in `<nettle/yarrow.h>'.
3340
-
3341
- -- Context struct: struct yarrow256_ctx
3342
-
3343
- -- Context struct: struct yarrow_source
3344
- Information about a single source.
3345
-
3346
- -- Constant: YARROW256_SEED_FILE_SIZE
3347
- Recommended size of the Yarrow-256 seed file.
3348
-
3349
- -- Function: void yarrow256_init (struct yarrow256_ctx *CTX, unsigned
3350
- NSOURCES, struct yarrow_source *SOURCES)
3351
- Initializes the yarrow context, and its NSOURCES sources. It's
3352
- possible to call it with NSOURCES=0 and SOURCES=NULL, if you don't
3353
- need the update features.
3354
-
3355
- -- Function: void yarrow256_seed (struct yarrow256_ctx *CTX, unsigned
3356
- LENGTH, uint8_t *SEED_FILE)
3357
- Seeds Yarrow-256 from a previous seed file. LENGTH should be at
3358
- least `YARROW256_SEED_FILE_SIZE', but it can be larger.
3359
-
3360
- The generator will trust you that the SEED_FILE data really is
3361
- unguessable. After calling this function, you _must_ overwrite the
3362
- old seed file with newly generated data from `yarrow256_random'.
3363
- If it's possible for several processes to read the seed file at
3364
- about the same time, access must be coordinated using some locking
3365
- mechanism.
3366
-
3367
- -- Function: int yarrow256_update (struct yarrow256_ctx *CTX, unsigned
3368
- SOURCE, unsigned ENTROPY, unsigned LENGTH, const uint8_t
3369
- *DATA)
3370
- Updates the generator with data from source SOURCE (an index that
3371
- must be smaller than the number of sources). ENTROPY is your
3372
- estimated lower bound for the entropy in the data, measured in
3373
- bits. Calling update with zero ENTROPY is always safe, no matter
3374
- if the data is random or not.
3375
-
3376
- Returns 1 if a reseed happened, in which case an application using
3377
- a seed file may want to generate new seed data with
3378
- `yarrow256_random' and overwrite the seed file. Otherwise, the
3379
- function returns 0.
3380
-
3381
- -- Function: void yarrow256_random (struct yarrow256_ctx *CTX,
3382
- unsigned LENGTH, uint8_t *DST)
3383
- Generates LENGTH octets of output. The generator must be seeded
3384
- before you call this function.
3385
-
3386
- If you don't need forward secrecy, e.g. if you need non-secret
3387
- randomness for initialization vectors or padding, you can gain some
3388
- efficiency by buffering, calling this function for reasonably large
3389
- blocks of data, say 100-1000 octets at a time.
3390
-
3391
- -- Function: int yarrow256_is_seeded (struct yarrow256_ctx *CTX)
3392
- Returns 1 if the generator is seeded and ready to generate output,
3393
- otherwise 0.
3394
-
3395
- -- Function: unsigned yarrow256_needed_sources (struct yarrow256_ctx
3396
- *CTX)
3397
- Returns the number of sources that must reach the threshold before
3398
- a slow reseed will happen. Useful primarily when the generator is
3399
- unseeded.
3400
-
3401
- -- Function: void yarrow256_fast_reseed (struct yarrow256_ctx *CTX)
3402
- -- Function: void yarrow256_slow_reseed (struct yarrow256_ctx *CTX)
3403
- Causes a fast or slow reseed to take place immediately, regardless
3404
- of the current entropy estimates of the two pools. Use with care.
3405
-
3406
- Nettle includes an entropy estimator for one kind of input source:
3407
- User keyboard input.
3408
-
3409
- -- Context struct: struct yarrow_key_event_ctx
3410
- Information about recent key events.
3411
-
3412
- -- Function: void yarrow_key_event_init (struct yarrow_key_event_ctx
3413
- *CTX)
3414
- Initializes the context.
3415
-
3416
- -- Function: unsigned yarrow_key_event_estimate (struct
3417
- yarrow_key_event_ctx *CTX, unsigned KEY, unsigned TIME)
3418
- KEY is the id of the key (ASCII value, hardware key code, X
3419
- keysym, ..., it doesn't matter), and TIME is the timestamp of the
3420
- event. The time must be given in units matching the resolution by
3421
- which you read the clock. If you read the clock with microsecond
3422
- precision, TIME should be provided in units of microseconds. But
3423
- if you use `gettimeofday' on a typical Unix system where the clock
3424
- ticks 10 or so microseconds at a time, TIME should be given in
3425
- units of 10 microseconds.
3426
-
3427
- Returns an entropy estimate, in bits, suitable for calling
3428
- `yarrow256_update'. Usually, 0, 1 or 2 bits.
3429
-
3430
- 
3431
- File: nettle.info, Node: ASCII encoding, Next: Miscellaneous functions, Prev: Randomness, Up: Reference
3432
-
3433
- 6.8 ASCII encoding
3434
- ==================
3435
-
3436
- Encryption will transform your data from text into binary format, and
3437
- that may be a problem if you want, for example, to send the data as if
3438
- it was plain text in an email (or store it along with descriptive text
3439
- in a file). You may then use an encoding from binary to text: each
3440
- binary byte is translated into a number of bytes of plain text.
3441
-
3442
- A base-N encoding of data is one representation of data that only
3443
- uses N different symbols (instead of the 256 possible values of a byte).
3444
-
3445
- The base64 encoding will always use alphanumeric (upper and lower
3446
- case) characters and the '+', '/' and '=' symbols to represent the
3447
- data. Four output characters are generated for each three bytes of
3448
- input. In case the length of the input is not a multiple of three,
3449
- padding characters are added at the end.
3450
-
3451
- The base16 encoding, also known as "hexadecimal", uses the decimal
3452
- digits and the letters from A to F. Two hexadecimal digits are generated
3453
- for each input byte. Base16 may be useful if you want to use the data
3454
- for filenames or URLs, for example.
3455
-
3456
- Nettle supports both base64 and base16 encoding and decoding.
3457
-
3458
- Encoding and decoding uses a context struct to maintain its state
3459
- (with the exception of base16 encoding, which doesn't need any). To
3460
- encode or decode the your data, first initialize the context, then call
3461
- the update function as many times as necessary, and complete the
3462
- operation by calling the final function.
3463
-
3464
- The following functions can be used to perform base64 encoding and
3465
- decoding. They are defined in `<nettle/base64.h>'.
3466
-
3467
- -- Context struct: struct base64_encode_ctx
3468
-
3469
- -- Function: void base64_encode_init (struct base64_encode_ctx *CTX)
3470
- Initializes a base64 context. This is necessary before starting an
3471
- encoding session.
3472
-
3473
- -- Function: unsigned base64_encode_single (struct base64_encode_ctx
3474
- *CTX, uint8_t *DST, uint8_t SRC)
3475
- Encodes a single byte. Returns amount of output (always 1 or 2).
3476
-
3477
- -- Macro: BASE64_ENCODE_LENGTH (LENGTH)
3478
- The maximum number of output bytes when passing LENGTH input bytes
3479
- to `base64_encode_update'.
3480
-
3481
- -- Function: unsigned base64_encode_update (struct base64_encode_ctx
3482
- *CTX, uint8_t *DST, unsigned LENGTH, const uint8_t *SRC)
3483
- After CTX is initialized, this function may be called to encode
3484
- LENGTH bytes from SRC. The result will be placed in DST, and the
3485
- return value will be the number of bytes generated. Note that DST
3486
- must be at least of size BASE64_ENCODE_LENGTH(LENGTH).
3487
-
3488
- -- Constant: BASE64_ENCODE_FINAL_LENGTH
3489
- The maximum amount of output from `base64_encode_final'.
3490
-
3491
- -- Function: unsigned base64_encode_final (struct base64_encode_ctx
3492
- *CTX, uint8_t *DST)
3493
- After calling base64_encode_update one or more times, this function
3494
- should be called to generate the final output bytes, including any
3495
- needed paddding. The return value is the number of output bytes
3496
- generated.
3497
-
3498
- -- Context struct: struct base64_decode_ctx
3499
-
3500
- -- Function: void base64_decode_init (struct base64_decode_ctx *CTX)
3501
- Initializes a base64 decoding context. This is necessary before
3502
- starting a decoding session.
3503
-
3504
- -- Function: int base64_decode_single (struct base64_decode_ctx *CTX,
3505
- uint8_t *DST, uint8_t SRC)
3506
- Decodes a single byte (SRC) and stores the result in DST. Returns
3507
- amount of output (0 or 1), or -1 on errors.
3508
-
3509
- -- Macro: BASE64_DECODE_LENGTH (LENGTH)
3510
- The maximum number of output bytes when passing LENGTH input bytes
3511
- to `base64_decode_update'.
3512
-
3513
- -- Function: void base64_decode_update (struct base64_decode_ctx *CTX,
3514
- unsigned *DST_LENGTH, uint8_t *DST, unsigned SRC_LENGTH,
3515
- const uint8_t *SRC)
3516
- After CTX is initialized, this function may be called to decode
3517
- SRC_LENGTH bytes from SRC. DST should point to an area of size at
3518
- least BASE64_DECODE_LENGTH(LENGTH), and for sanity checking,
3519
- DST_LENGTH should be initialized to the size of that area before
3520
- the call. DST_LENGTH is updated to the amount of decoded output.
3521
- The function will return 1 on success and 0 on error.
3522
-
3523
- -- Function: int base64_decode_final (struct base64_decode_ctx *CTX)
3524
- Check that final padding is correct. Returns 1 on success, and 0 on
3525
- error.
3526
-
3527
- Similarly to the base64 functions, the following functions perform
3528
- base16 encoding, and are defined in `<nettle/base16.h>'. Note that
3529
- there is no encoding context necessary for doing base16 encoding.
3530
-
3531
- -- Function: void base16_encode_single (uint8_t *DST, uint8_t SRC)
3532
- Encodes a single byte. Always stores two digits in DST[0] and
3533
- DST[1].
3534
-
3535
- -- Macro: BASE16_ENCODE_LENGTH (LENGTH)
3536
- The number of output bytes when passing LENGTH input bytes to
3537
- `base16_encode_update'.
3538
-
3539
- -- Function: void base16_encode_update (uint8_t *DST, unsigned LENGTH,
3540
- const uint8_t *SRC)
3541
- Always stores BASE16_ENCODE_LENGTH(LENGTH) digits in DST.
3542
-
3543
- -- Context struct: struct base16_decode_ctx
3544
-
3545
- -- Function: void base16_decode_init (struct base16_decode_ctx *CTX)
3546
- Initializes a base16 decoding context. This is necessary before
3547
- starting a decoding session.
3548
-
3549
- -- Function: int base16_decode_single (struct base16_decode_ctx *CTX,
3550
- uint8_t *DST, uint8_t SRC)
3551
- Decodes a single byte from SRC into DST. Returns amount of output
3552
- (0 or 1), or -1 on errors.
3553
-
3554
- -- Macro: BASE16_DECODE_LENGTH (LENGTH)
3555
- The maximum number of output bytes when passing LENGTH input bytes
3556
- to `base16_decode_update'.
3557
-
3558
- -- Function: int base16_decode_update (struct base16_decode_ctx *CTX,
3559
- unsigned *DST_LENGTH, uint8_t *DST, unsigned SRC_LENGTH,
3560
- const uint8_t *SRC)
3561
- After CTX is initialized, this function may be called to decode
3562
- SRC_LENGTH bytes from SRC. DST should point to an area of size at
3563
- least BASE16_DECODE_LENGTH(LENGTH), and for sanity checking,
3564
- DST_LENGTH should be initialized to the size of that area before
3565
- the call. DST_LENGTH is updated to the amount of decoded output.
3566
- The function will return 1 on success and 0 on error.
3567
-
3568
- -- Function: int base16_decode_final (struct base16_decode_ctx *CTX)
3569
- Checks that the end of data is correct (i.e., an even number of
3570
- hexadecimal digits have been seen). Returns 1 on success, and 0 on
3571
- error.
3572
-
3573
- 
3574
- File: nettle.info, Node: Miscellaneous functions, Next: Compatibility functions, Prev: ASCII encoding, Up: Reference
3575
-
3576
- 6.9 Miscellaneous functions
3577
- ===========================
3578
-
3579
- -- Function: uint8_t * memxor (uint8_t *DST, const uint8_t *SRC,
3580
- size_t N)
3581
- XORs the source area on top of the destination area. The interface
3582
- doesn't follow the Nettle conventions, because it is intended to be
3583
- similar to the ANSI-C `memcpy' function.
3584
-
3585
- `memxor' is declared in `<nettle/memxor.h>'.
3586
-
3587
- 
3588
- File: nettle.info, Node: Compatibility functions, Prev: Miscellaneous functions, Up: Reference
3589
-
3590
- 6.10 Compatibility functions
3591
- ============================
3592
-
3593
- For convenience, Nettle includes alternative interfaces to some
3594
- algorithms, for compatibility with some other popular crypto toolkits.
3595
- These are not fully documented here; refer to the source or to the
3596
- documentation for the original implementation.
3597
-
3598
- MD5 is defined in [RFC 1321], which includes a reference
3599
- implementation. Nettle defines a compatible interface to MD5 in
3600
- `<nettle/md5-compat.h>'. This file defines the typedef `MD5_CTX', and
3601
- declares the functions `MD5Init', `MD5Update' and `MD5Final'.
3602
-
3603
- Eric Young's "libdes" (also part of OpenSSL) is a quite popular DES
3604
- implementation. Nettle includes a subset if its interface in
3605
- `<nettle/des-compat.h>'. This file defines the typedefs
3606
- `des_key_schedule' and `des_cblock', two constants `DES_ENCRYPT' and
3607
- `DES_DECRYPT', and declares one global variable `des_check_key', and
3608
- the functions `des_cbc_cksum' `des_cbc_encrypt', `des_ecb2_encrypt',
3609
- `des_ecb3_encrypt', `des_ecb_encrypt', `des_ede2_cbc_encrypt',
3610
- `des_ede3_cbc_encrypt', `des_is_weak_key', `des_key_sched',
3611
- `des_ncbc_encrypt' `des_set_key', and `des_set_odd_parity'.
3612
-
3613
- 
3614
- File: nettle.info, Node: Nettle soup, Next: Installation, Prev: Reference, Up: Top
3615
-
3616
- 7 Traditional Nettle Soup
3617
- *************************
3618
-
3619
- For the serious nettle hacker, here is a recipe for nettle soup. 4
3620
- servings.
3621
-
3622
- 1 liter fresh nettles (urtica dioica)
3623
-
3624
- 2 tablespoons butter
3625
-
3626
- 3 tablespoons flour
3627
-
3628
- 1 liter stock (meat or vegetable)
3629
-
3630
- 1/2 teaspoon salt
3631
-
3632
- a tad white pepper
3633
-
3634
- some cream or milk
3635
-
3636
- Gather 1 liter fresh nettles. Use gloves! Small, tender shoots are
3637
- preferable but the tops of larger nettles can also be used.
3638
-
3639
- Rinse the nettles very well. Boil them for 10 minutes in lightly
3640
- salted water. Strain the nettles and save the water. Hack the nettles.
3641
- Melt the butter and mix in the flour. Dilute with stock and the
3642
- nettle-water you saved earlier. Add the hacked nettles. If you wish you
3643
- can add some milk or cream at this stage. Bring to a boil and let boil
3644
- for a few minutes. Season with salt and pepper.
3645
-
3646
- Serve with boiled egg-halves.
3647
-
3648
- 
3649
- File: nettle.info, Node: Installation, Next: Index, Prev: Nettle soup, Up: Top
3650
-
3651
- 8 Installation
3652
- **************
3653
-
3654
- Nettle uses `autoconf'. To build it, unpack the source and run
3655
-
3656
- ./configure
3657
- make
3658
- make check
3659
- make install
3660
-
3661
- to install in under the default prefix, `/usr/local'.
3662
-
3663
- To get a list of configure options, use `./configure --help'.
3664
-
3665
- By default, both static and shared libraries are built and
3666
- installed. To omit building the shared libraries, use the `
3667
- --disable-shared' option to `./configure'.
3668
-
3669
- Using GNU make is recommended. For other make programs, in particular
3670
- BSD make, you may have to use the `--disable-dependency-tracking'
3671
- option to `./configure'.
3672
-
3673
- 
3674
- File: nettle.info, Node: Index, Prev: Installation, Up: Top
3675
-
3676
- Function and Concept Index
3677
- **************************
3678
-
3679
- [index]
3680
- * Menu:
3681
-
3682
- * aes_decrypt: Cipher functions. (line 123)
3683
- * aes_encrypt: Cipher functions. (line 116)
3684
- * aes_invert_key: Cipher functions. (line 105)
3685
- * aes_set_decrypt_key: Cipher functions. (line 101)
3686
- * aes_set_encrypt_key: Cipher functions. (line 99)
3687
- * arcfour_crypt: Cipher functions. (line 175)
3688
- * arcfour_set_key: Cipher functions. (line 170)
3689
- * arctwo_decrypt: Cipher functions. (line 240)
3690
- * arctwo_encrypt: Cipher functions. (line 233)
3691
- * arctwo_set_key: Cipher functions. (line 217)
3692
- * arctwo_set_key_ekb: Cipher functions. (line 215)
3693
- * arctwo_set_key_gutmann: Cipher functions. (line 219)
3694
- * base16_decode_final: ASCII encoding. (line 139)
3695
- * base16_decode_init: ASCII encoding. (line 116)
3696
- * BASE16_DECODE_LENGTH: ASCII encoding. (line 125)
3697
- * base16_decode_single: ASCII encoding. (line 121)
3698
- * base16_decode_update: ASCII encoding. (line 131)
3699
- * BASE16_ENCODE_LENGTH: ASCII encoding. (line 106)
3700
- * base16_encode_single: ASCII encoding. (line 102)
3701
- * base16_encode_update: ASCII encoding. (line 111)
3702
- * base64_decode_final: ASCII encoding. (line 94)
3703
- * base64_decode_init: ASCII encoding. (line 71)
3704
- * BASE64_DECODE_LENGTH: ASCII encoding. (line 80)
3705
- * base64_decode_single: ASCII encoding. (line 76)
3706
- * base64_decode_update: ASCII encoding. (line 86)
3707
- * base64_encode_final: ASCII encoding. (line 63)
3708
- * base64_encode_init: ASCII encoding. (line 40)
3709
- * BASE64_ENCODE_LENGTH: ASCII encoding. (line 48)
3710
- * base64_encode_single: ASCII encoding. (line 45)
3711
- * base64_encode_update: ASCII encoding. (line 53)
3712
- * Block Cipher: Cipher functions. (line 12)
3713
- * blowfish_decrypt: Cipher functions. (line 282)
3714
- * blowfish_encrypt: Cipher functions. (line 275)
3715
- * blowfish_set_key: Cipher functions. (line 265)
3716
- * camellia_crypt: Cipher functions. (line 332)
3717
- * camellia_invert_key: Cipher functions. (line 321)
3718
- * camellia_set_decrypt_key: Cipher functions. (line 317)
3719
- * camellia_set_encrypt_key: Cipher functions. (line 315)
3720
- * cast128_decrypt: Cipher functions. (line 372)
3721
- * cast128_encrypt: Cipher functions. (line 365)
3722
- * cast128_set_key: Cipher functions. (line 360)
3723
- * CBC Mode: CBC. (line 6)
3724
- * CBC_CTX: CBC. (line 51)
3725
- * CBC_DECRYPT: CBC. (line 72)
3726
- * cbc_decrypt: CBC. (line 37)
3727
- * CBC_ENCRYPT: CBC. (line 71)
3728
- * cbc_encrypt: CBC. (line 34)
3729
- * CBC_SET_IV: CBC. (line 66)
3730
- * Cipher: Cipher functions. (line 6)
3731
- * Cipher Block Chaining: CBC. (line 6)
3732
- * Collision-resistant: Hash functions. (line 18)
3733
- * Conditional entropy: Randomness. (line 51)
3734
- * Counter Mode: CTR. (line 6)
3735
- * CTR Mode: CTR. (line 6)
3736
- * CTR_CRYPT: CTR. (line 60)
3737
- * ctr_crypt: CTR. (line 36)
3738
- * CTR_CTX: CTR. (line 48)
3739
- * CTR_SET_COUNTER: CTR. (line 55)
3740
- * des3_decrypt: Cipher functions. (line 494)
3741
- * des3_encrypt: Cipher functions. (line 487)
3742
- * des3_set_key: Cipher functions. (line 476)
3743
- * des_check_parity: Cipher functions. (line 420)
3744
- * des_decrypt: Cipher functions. (line 416)
3745
- * des_encrypt: Cipher functions. (line 409)
3746
- * des_fix_parity: Cipher functions. (line 425)
3747
- * des_set_key: Cipher functions. (line 401)
3748
- * dsa_generate_keypair: DSA. (line 210)
3749
- * dsa_private_key_clear: DSA. (line 142)
3750
- * dsa_private_key_init: DSA. (line 135)
3751
- * dsa_public_key_clear: DSA. (line 141)
3752
- * dsa_public_key_init: DSA. (line 134)
3753
- * dsa_sha1_sign: DSA. (line 166)
3754
- * dsa_sha1_sign_digest: DSA. (line 170)
3755
- * dsa_sha1_verify: DSA. (line 190)
3756
- * dsa_sha1_verify_digest: DSA. (line 193)
3757
- * dsa_sha256_sign: DSA. (line 174)
3758
- * dsa_sha256_sign_digest: DSA. (line 178)
3759
- * dsa_sha256_verify: DSA. (line 196)
3760
- * dsa_sha256_verify_digest: DSA. (line 199)
3761
- * dsa_signature_clear: DSA. (line 151)
3762
- * dsa_signature_init: DSA. (line 150)
3763
- * ecc_point_clear: Elliptic curves. (line 84)
3764
- * ecc_point_get: Elliptic curves. (line 96)
3765
- * ecc_point_init: Elliptic curves. (line 79)
3766
- * ecc_point_set: Elliptic curves. (line 88)
3767
- * ecc_scalar_clear: Elliptic curves. (line 110)
3768
- * ecc_scalar_get: Elliptic curves. (line 117)
3769
- * ecc_scalar_init: Elliptic curves. (line 106)
3770
- * ecc_scalar_set: Elliptic curves. (line 113)
3771
- * ecdsa_generate_keypair: Elliptic curves. (line 144)
3772
- * ecdsa_sign: Elliptic curves. (line 126)
3773
- * ecdsa_verify: Elliptic curves. (line 135)
3774
- * Entropy: Randomness. (line 51)
3775
- * Galois Counter Mode: GCM. (line 6)
3776
- * GCM: GCM. (line 6)
3777
- * gcm_aes_decrypt: GCM. (line 167)
3778
- * gcm_aes_digest: GCM. (line 174)
3779
- * gcm_aes_encrypt: GCM. (line 165)
3780
- * gcm_aes_set_iv: GCM. (line 154)
3781
- * gcm_aes_set_key: GCM. (line 149)
3782
- * gcm_aes_update: GCM. (line 158)
3783
- * GCM_CTX: GCM. (line 102)
3784
- * GCM_DECRYPT: GCM. (line 132)
3785
- * gcm_decrypt: GCM. (line 74)
3786
- * GCM_DIGEST: GCM. (line 133)
3787
- * gcm_digest: GCM. (line 82)
3788
- * GCM_ENCRYPT: GCM. (line 131)
3789
- * gcm_encrypt: GCM. (line 71)
3790
- * GCM_SET_IV: GCM. (line 123)
3791
- * gcm_set_iv: GCM. (line 58)
3792
- * GCM_SET_KEY: GCM. (line 117)
3793
- * gcm_set_key: GCM. (line 52)
3794
- * GCM_UPDATE: GCM. (line 127)
3795
- * gcm_update: GCM. (line 63)
3796
- * gosthash94_digest: Legacy hash functions.
3797
- (line 211)
3798
- * gosthash94_init: Legacy hash functions.
3799
- (line 203)
3800
- * gosthash94_update: Legacy hash functions.
3801
- (line 207)
3802
- * Hash function: Hash functions. (line 6)
3803
- * HMAC: Keyed hash functions.
3804
- (line 35)
3805
- * HMAC_CTX: Keyed hash functions.
3806
- (line 88)
3807
- * HMAC_DIGEST: Keyed hash functions.
3808
- (line 110)
3809
- * hmac_digest: Keyed hash functions.
3810
- (line 76)
3811
- * hmac_md5_digest: Keyed hash functions.
3812
- (line 140)
3813
- * hmac_md5_set_key: Keyed hash functions.
3814
- (line 132)
3815
- * hmac_md5_update: Keyed hash functions.
3816
- (line 136)
3817
- * hmac_ripemd160_digest: Keyed hash functions.
3818
- (line 162)
3819
- * hmac_ripemd160_set_key: Keyed hash functions.
3820
- (line 154)
3821
- * hmac_ripemd160_update: Keyed hash functions.
3822
- (line 158)
3823
- * HMAC_SET_KEY: Keyed hash functions.
3824
- (line 104)
3825
- * hmac_set_key: Keyed hash functions.
3826
- (line 61)
3827
- * hmac_sha1_digest: Keyed hash functions.
3828
- (line 184)
3829
- * hmac_sha1_set_key: Keyed hash functions.
3830
- (line 176)
3831
- * hmac_sha1_update: Keyed hash functions.
3832
- (line 180)
3833
- * hmac_sha256_digest: Keyed hash functions.
3834
- (line 206)
3835
- * hmac_sha256_set_key: Keyed hash functions.
3836
- (line 198)
3837
- * hmac_sha256_update: Keyed hash functions.
3838
- (line 202)
3839
- * hmac_sha512_digest: Keyed hash functions.
3840
- (line 228)
3841
- * hmac_sha512_set_key: Keyed hash functions.
3842
- (line 220)
3843
- * hmac_sha512_update: Keyed hash functions.
3844
- (line 224)
3845
- * hmac_update: Keyed hash functions.
3846
- (line 68)
3847
- * KDF: Key derivation functions.
3848
- (line 6)
3849
- * Key Derivation Function: Key derivation functions.
3850
- (line 6)
3851
- * Keyed Hash Function: Keyed hash functions.
3852
- (line 6)
3853
- * MAC: Keyed hash functions.
3854
- (line 6)
3855
- * md2_digest: Legacy hash functions.
3856
- (line 79)
3857
- * md2_init: Legacy hash functions.
3858
- (line 71)
3859
- * md2_update: Legacy hash functions.
3860
- (line 75)
3861
- * md4_digest: Legacy hash functions.
3862
- (line 112)
3863
- * md4_init: Legacy hash functions.
3864
- (line 104)
3865
- * md4_update: Legacy hash functions.
3866
- (line 108)
3867
- * md5_digest: Legacy hash functions.
3868
- (line 41)
3869
- * md5_init: Legacy hash functions.
3870
- (line 33)
3871
- * md5_update: Legacy hash functions.
3872
- (line 37)
3873
- * memxor: Miscellaneous functions.
3874
- (line 8)
3875
- * Message Authentication Code: Keyed hash functions.
3876
- (line 6)
3877
- * One-way: Hash functions. (line 14)
3878
- * One-way function: Public-key algorithms.
3879
- (line 18)
3880
- * Password Based Key Derivation Function: Key derivation functions.
3881
- (line 6)
3882
- * PBKDF: Key derivation functions.
3883
- (line 6)
3884
- * PBKDF2: Key derivation functions.
3885
- (line 43)
3886
- * pbkdf2: Key derivation functions.
3887
- (line 29)
3888
- * pbkdf2_hmac_sha1: Key derivation functions.
3889
- (line 63)
3890
- * pbkdf2_hmac_sha256: Key derivation functions.
3891
- (line 75)
3892
- * PKCS #5: Key derivation functions.
3893
- (line 6)
3894
- * Public Key Cryptography: Public-key algorithms.
3895
- (line 18)
3896
- * Randomness: Randomness. (line 6)
3897
- * ripemd160_digest: Legacy hash functions.
3898
- (line 145)
3899
- * ripemd160_init: Legacy hash functions.
3900
- (line 137)
3901
- * ripemd160_update: Legacy hash functions.
3902
- (line 141)
3903
- * rsa_compute_root: RSA. (line 187)
3904
- * rsa_generate_keypair: RSA. (line 196)
3905
- * rsa_md5_sign: RSA. (line 130)
3906
- * rsa_md5_sign_digest: RSA. (line 145)
3907
- * rsa_md5_verify: RSA. (line 159)
3908
- * rsa_md5_verify_digest: RSA. (line 171)
3909
- * rsa_private_key_clear: RSA. (line 96)
3910
- * rsa_private_key_init: RSA. (line 89)
3911
- * rsa_private_key_prepare: RSA. (line 109)
3912
- * rsa_public_key_clear: RSA. (line 95)
3913
- * rsa_public_key_init: RSA. (line 88)
3914
- * rsa_public_key_prepare: RSA. (line 108)
3915
- * rsa_sha1_sign: RSA. (line 132)
3916
- * rsa_sha1_sign_digest: RSA. (line 147)
3917
- * rsa_sha1_verify: RSA. (line 161)
3918
- * rsa_sha1_verify_digest: RSA. (line 173)
3919
- * rsa_sha256_sign: RSA. (line 134)
3920
- * rsa_sha256_sign_digest: RSA. (line 149)
3921
- * rsa_sha256_verify: RSA. (line 163)
3922
- * rsa_sha256_verify_digest: RSA. (line 175)
3923
- * rsa_sha512_sign: RSA. (line 136)
3924
- * rsa_sha512_sign_digest: RSA. (line 151)
3925
- * rsa_sha512_verify: RSA. (line 165)
3926
- * rsa_sha512_verify_digest: RSA. (line 177)
3927
- * salsa20_crypt: Cipher functions. (line 557)
3928
- * salsa20_set_iv: Cipher functions. (line 551)
3929
- * salsa20_set_key: Cipher functions. (line 545)
3930
- * salsa20r12_crypt: Cipher functions. (line 571)
3931
- * serpent_decrypt: Cipher functions. (line 611)
3932
- * serpent_encrypt: Cipher functions. (line 604)
3933
- * serpent_set_key: Cipher functions. (line 599)
3934
- * sha1_digest: Legacy hash functions.
3935
- (line 179)
3936
- * sha1_init: Legacy hash functions.
3937
- (line 171)
3938
- * sha1_update: Legacy hash functions.
3939
- (line 175)
3940
- * sha224_digest: Recommended hash functions.
3941
- (line 70)
3942
- * sha224_init: Recommended hash functions.
3943
- (line 62)
3944
- * sha224_update: Recommended hash functions.
3945
- (line 66)
3946
- * sha256_digest: Recommended hash functions.
3947
- (line 34)
3948
- * sha256_init: Recommended hash functions.
3949
- (line 26)
3950
- * sha256_update: Recommended hash functions.
3951
- (line 30)
3952
- * sha384_digest: Recommended hash functions.
3953
- (line 138)
3954
- * sha384_init: Recommended hash functions.
3955
- (line 130)
3956
- * sha384_update: Recommended hash functions.
3957
- (line 134)
3958
- * sha3_224_digest: Recommended hash functions.
3959
- (line 176)
3960
- * sha3_224_init: Recommended hash functions.
3961
- (line 168)
3962
- * sha3_224_update: Recommended hash functions.
3963
- (line 172)
3964
- * sha3_256_digest: Recommended hash functions.
3965
- (line 208)
3966
- * sha3_256_init: Recommended hash functions.
3967
- (line 200)
3968
- * sha3_256_update: Recommended hash functions.
3969
- (line 204)
3970
- * sha3_384_digest: Recommended hash functions.
3971
- (line 239)
3972
- * sha3_384_init: Recommended hash functions.
3973
- (line 231)
3974
- * sha3_384_update: Recommended hash functions.
3975
- (line 235)
3976
- * sha3_512_digest: Recommended hash functions.
3977
- (line 270)
3978
- * sha3_512_init: Recommended hash functions.
3979
- (line 262)
3980
- * sha3_512_update: Recommended hash functions.
3981
- (line 266)
3982
- * sha512_digest: Recommended hash functions.
3983
- (line 105)
3984
- * sha512_init: Recommended hash functions.
3985
- (line 97)
3986
- * sha512_update: Recommended hash functions.
3987
- (line 101)
3988
- * Stream Cipher: Cipher functions. (line 12)
3989
- * twofish_decrypt: Cipher functions. (line 647)
3990
- * twofish_encrypt: Cipher functions. (line 640)
3991
- * twofish_set_key: Cipher functions. (line 635)
3992
- * UMAC: Keyed hash functions.
3993
- (line 238)
3994
- * umac128_digest: Keyed hash functions.
3995
- (line 348)
3996
- * umac128_set_key: Keyed hash functions.
3997
- (line 311)
3998
- * umac128_set_nonce: Keyed hash functions.
3999
- (line 322)
4000
- * umac128_update: Keyed hash functions.
4001
- (line 337)
4002
- * umac32_digest: Keyed hash functions.
4003
- (line 342)
4004
- * umac32_set_key: Keyed hash functions.
4005
- (line 305)
4006
- * umac32_set_nonce: Keyed hash functions.
4007
- (line 316)
4008
- * umac32_update: Keyed hash functions.
4009
- (line 331)
4010
- * umac64_digest: Keyed hash functions.
4011
- (line 344)
4012
- * umac64_set_key: Keyed hash functions.
4013
- (line 307)
4014
- * umac64_set_nonce: Keyed hash functions.
4015
- (line 318)
4016
- * umac64_update: Keyed hash functions.
4017
- (line 333)
4018
- * umac96_digest: Keyed hash functions.
4019
- (line 346)
4020
- * umac96_set_key: Keyed hash functions.
4021
- (line 309)
4022
- * umac96_set_nonce: Keyed hash functions.
4023
- (line 320)
4024
- * umac96_update: Keyed hash functions.
4025
- (line 335)
4026
- * yarrow256_fast_reseed: Randomness. (line 277)
4027
- * yarrow256_init: Randomness. (line 226)
4028
- * yarrow256_is_seeded: Randomness. (line 267)
4029
- * yarrow256_needed_sources: Randomness. (line 272)
4030
- * yarrow256_random: Randomness. (line 258)
4031
- * yarrow256_seed: Randomness. (line 232)
4032
- * yarrow256_slow_reseed: Randomness. (line 278)
4033
- * yarrow256_update: Randomness. (line 245)
4034
- * yarrow_key_event_estimate: Randomness. (line 293)
4035
- * yarrow_key_event_init: Randomness. (line 289)
4036
-
4037
-
4038
- 
4039
- Tag Table:
4040
- Node: Top543
4041
- Node: Introduction2242
4042
- Node: Copyright3808
4043
- Node: Conventions8514
4044
- Node: Example10476
4045
- Node: Linking11726
4046
- Node: Reference12559
4047
- Node: Hash functions12975
4048
- Node: Recommended hash functions14533
4049
- Node: Legacy hash functions23944
4050
- Node: nettle_hash abstraction31662
4051
- Node: Cipher functions33302
4052
- Node: Cipher modes62750
4053
- Node: CBC63778
4054
- Node: CTR67052
4055
- Node: GCM69579
4056
- Node: Keyed hash functions77142
4057
- Node: Key derivation functions92106
4058
- Node: Public-key algorithms95847
4059
- Node: RSA99829
4060
- Node: RSA-Footnotes110443
4061
- Ref: RSA-Footnote-1110496
4062
- Node: DSA110665
4063
- Node: Elliptic curves121996
4064
- Node: Randomness129060
4065
- Node: ASCII encoding144164
4066
- Node: Miscellaneous functions150614
4067
- Node: Compatibility functions151122
4068
- Node: Nettle soup152369
4069
- Node: Installation153362
4070
- Node: Index154057
4071
- 
4072
- End Tag Table
4073
-
4074
- 
4075
- Local Variables:
4076
- coding: utf-8
4077
- End: