glib2 1.1.8-x86-mingw32 → 1.1.9-x86-mingw32
Sign up to get free protection for your applications and to get access to all the features.
- data/Rakefile +51 -9
- data/ext/glib2/extconf.rb +2 -2
- data/ext/glib2/rbglib.h +3 -2
- data/ext/glib2/rbglib_win32.c +0 -17
- data/ext/glib2/rbgobj_type.c +10 -5
- data/ext/glib2/rbgobject.h +3 -1
- data/lib/1.8/glib2.so +0 -0
- data/lib/1.9/glib2.so +0 -0
- data/lib/gnome2-win32-binary-build-task.rb +42 -15
- data/vendor/local/bin/certtool.exe +0 -0
- data/vendor/local/bin/danetool.exe +0 -0
- data/vendor/local/bin/gdbus-codegen +41 -0
- data/vendor/local/bin/gdbus.exe +0 -0
- data/vendor/local/bin/gio-querymodules.exe +0 -0
- data/vendor/local/bin/glib-compile-resources.exe +0 -0
- data/vendor/local/bin/glib-compile-schemas.exe +0 -0
- data/vendor/local/bin/glib-genmarshal.exe +0 -0
- data/vendor/local/bin/glib-gettextize +3 -3
- data/vendor/local/bin/glib-mkenums +41 -14
- data/vendor/local/bin/gnutls-cli-debug.exe +0 -0
- data/vendor/local/bin/gnutls-cli.exe +0 -0
- data/vendor/local/bin/gnutls-serv.exe +0 -0
- data/vendor/local/bin/gobject-query.exe +0 -0
- data/vendor/local/bin/gresource.exe +0 -0
- data/vendor/local/bin/gsettings.exe +0 -0
- data/vendor/local/bin/gspawn-win32-helper-console.exe +0 -0
- data/vendor/local/bin/gspawn-win32-helper.exe +0 -0
- data/vendor/local/bin/libffi-5.dll +0 -0
- data/vendor/local/bin/libgio-2.0-0.dll +0 -0
- data/vendor/local/bin/libglib-2.0-0.dll +0 -0
- data/vendor/local/bin/libgmodule-2.0-0.dll +0 -0
- data/vendor/local/bin/libgmp-10.dll +0 -0
- data/vendor/local/bin/libgnutls-28.def +807 -0
- data/vendor/local/bin/libgnutls-28.dll +0 -0
- data/vendor/local/bin/libgnutls-openssl-27.dll +0 -0
- data/vendor/local/bin/libgnutls-openssl-28.def +304 -0
- data/vendor/local/bin/libgnutlsxx-28.dll +0 -0
- data/vendor/local/bin/libgobject-2.0-0.dll +0 -0
- data/vendor/local/bin/libgthread-2.0-0.dll +0 -0
- data/vendor/local/bin/libhogweed-2-2.dll +0 -0
- data/vendor/local/bin/libnettle-4-4.dll +0 -0
- data/vendor/local/bin/nettle-hash.exe +0 -0
- data/vendor/local/bin/nettle-lfib-stream.exe +0 -0
- data/vendor/local/bin/ocsptool.exe +0 -0
- data/vendor/local/bin/pkcs1-conv.exe +0 -0
- data/vendor/local/bin/psktool.exe +0 -0
- data/vendor/local/bin/sexp-conv.exe +0 -0
- data/vendor/local/bin/srptool.exe +0 -0
- data/vendor/local/bin/zlib1.dll +0 -0
- data/vendor/local/include/glib-2.0/gio/gaction.h +5 -18
- data/vendor/local/include/glib-2.0/gio/gactiongroup.h +19 -21
- data/vendor/local/include/glib-2.0/gio/gactiongroupexporter.h +47 -0
- data/vendor/local/include/glib-2.0/gio/gactionmap.h +97 -0
- data/vendor/local/include/glib-2.0/gio/gappinfo.h +48 -30
- data/vendor/local/include/glib-2.0/gio/gapplication.h +24 -31
- data/vendor/local/include/glib-2.0/gio/gapplicationcommandline.h +4 -16
- data/vendor/local/include/glib-2.0/gio/gasyncresult.h +11 -0
- data/vendor/local/include/glib-2.0/gio/gcontenttype.h +5 -0
- data/vendor/local/include/glib-2.0/gio/gdatainputstream.h +10 -0
- data/vendor/local/include/glib-2.0/gio/gdbusactiongroup.h +55 -0
- data/vendor/local/include/glib-2.0/gio/gdbusauthobserver.h +4 -0
- data/vendor/local/include/glib-2.0/gio/gdbusconnection.h +37 -0
- data/vendor/local/include/glib-2.0/gio/gdbusinterface.h +79 -0
- data/vendor/local/include/glib-2.0/gio/gdbusinterfaceskeleton.h +115 -0
- data/vendor/local/include/glib-2.0/gio/gdbusintrospection.h +25 -15
- data/vendor/local/include/glib-2.0/gio/gdbusmenumodel.h +45 -0
- data/vendor/local/include/glib-2.0/gio/gdbusmethodinvocation.h +5 -0
- data/vendor/local/include/glib-2.0/gio/gdbusnamewatching.h +6 -1
- data/vendor/local/include/glib-2.0/gio/gdbusobject.h +76 -0
- data/vendor/local/include/glib-2.0/gio/gdbusobjectmanager.h +91 -0
- data/vendor/local/include/glib-2.0/gio/gdbusobjectmanagerclient.h +137 -0
- data/vendor/local/include/glib-2.0/gio/gdbusobjectmanagerserver.h +87 -0
- data/vendor/local/include/glib-2.0/gio/gdbusobjectproxy.h +78 -0
- data/vendor/local/include/glib-2.0/gio/gdbusobjectskeleton.h +91 -0
- data/vendor/local/include/glib-2.0/gio/gdbusproxy.h +23 -0
- data/vendor/local/include/glib-2.0/gio/gdbusutils.h +5 -0
- data/vendor/local/include/glib-2.0/gio/gdrive.h +17 -6
- data/vendor/local/include/glib-2.0/gio/gfile.h +48 -20
- data/vendor/local/include/glib-2.0/gio/gfileattribute.h +3 -1
- data/vendor/local/include/glib-2.0/gio/gfileenumerator.h +3 -0
- data/vendor/local/include/glib-2.0/gio/gfileinfo.h +36 -3
- data/vendor/local/include/glib-2.0/gio/ginetaddress.h +3 -0
- data/vendor/local/include/glib-2.0/gio/ginetaddressmask.h +87 -0
- data/vendor/local/include/glib-2.0/gio/ginetsocketaddress.h +9 -5
- data/vendor/local/include/glib-2.0/gio/ginputstream.h +16 -0
- data/vendor/local/include/glib-2.0/gio/gio.h +30 -3
- data/vendor/local/include/glib-2.0/gio/gioenums.h +286 -14
- data/vendor/local/include/glib-2.0/gio/gioenumtypes.h +26 -0
- data/vendor/local/include/glib-2.0/gio/giomodule.h +18 -1
- data/vendor/local/include/glib-2.0/gio/gioscheduler.h +4 -0
- data/vendor/local/include/glib-2.0/gio/giotypes.h +60 -10
- data/vendor/local/include/glib-2.0/gio/gmemoryinputstream.h +6 -0
- data/vendor/local/include/glib-2.0/gio/gmemoryoutputstream.h +5 -0
- data/vendor/local/include/glib-2.0/gio/gmenu.h +177 -0
- data/vendor/local/include/glib-2.0/gio/gmenuexporter.h +42 -0
- data/vendor/local/include/glib-2.0/gio/gmenumodel.h +214 -0
- data/vendor/local/include/glib-2.0/gio/gmount.h +16 -4
- data/vendor/local/include/glib-2.0/gio/gmountoperation.h +5 -1
- data/vendor/local/include/glib-2.0/gio/gnetworking.h +83 -0
- data/vendor/local/include/glib-2.0/gio/gnetworkmonitor.h +91 -0
- data/vendor/local/include/glib-2.0/gio/goutputstream.h +16 -0
- data/vendor/local/include/glib-2.0/gio/gpollableinputstream.h +6 -5
- data/vendor/local/include/glib-2.0/gio/gpollableoutputstream.h +6 -2
- data/vendor/local/include/glib-2.0/gio/gpollableutils.h +65 -0
- data/vendor/local/include/glib-2.0/gio/gproxy.h +2 -1
- data/vendor/local/include/glib-2.0/gio/gproxyaddress.h +5 -0
- data/vendor/local/include/glib-2.0/gio/gproxyresolver.h +0 -5
- data/vendor/local/include/glib-2.0/gio/gremoteactiongroup.h +77 -0
- data/vendor/local/include/glib-2.0/gio/gresolver.h +35 -3
- data/vendor/local/include/glib-2.0/gio/gresource.h +131 -0
- data/vendor/local/include/glib-2.0/gio/gseekable.h +1 -1
- data/vendor/local/include/glib-2.0/gio/gsettings.h +26 -9
- data/vendor/local/include/glib-2.0/gio/gsettingsschema.h +65 -0
- data/vendor/local/include/glib-2.0/gio/gsimpleaction.h +4 -42
- data/vendor/local/include/glib-2.0/gio/gsimpleactiongroup.h +7 -0
- data/vendor/local/include/glib-2.0/gio/gsimpleasyncresult.h +3 -0
- data/vendor/local/include/glib-2.0/gio/gsocket.h +57 -0
- data/vendor/local/include/glib-2.0/gio/gsocketclient.h +5 -1
- data/vendor/local/include/glib-2.0/gio/gsocketconnection.h +19 -0
- data/vendor/local/include/glib-2.0/gio/gtask.h +160 -0
- data/vendor/local/include/glib-2.0/gio/gtestdbus.h +74 -0
- data/vendor/local/include/glib-2.0/gio/gtlsbackend.h +18 -20
- data/vendor/local/include/glib-2.0/gio/gtlscertificate.h +4 -0
- data/vendor/local/include/glib-2.0/gio/gtlsclientconnection.h +0 -8
- data/vendor/local/include/glib-2.0/gio/gtlsconnection.h +12 -10
- data/vendor/local/include/glib-2.0/gio/gtlsdatabase.h +235 -0
- data/vendor/local/include/glib-2.0/gio/gtlsfiledatabase.h +56 -0
- data/vendor/local/include/glib-2.0/gio/gtlsinteraction.h +102 -0
- data/vendor/local/include/glib-2.0/gio/gtlspassword.h +101 -0
- data/vendor/local/include/glib-2.0/gio/gvolume.h +36 -8
- data/vendor/local/include/glib-2.0/gio/gvolumemonitor.h +1 -2
- data/vendor/local/include/glib-2.0/glib-object.h +14 -14
- data/vendor/local/include/glib-2.0/glib-unix.h +90 -0
- data/vendor/local/include/glib-2.0/glib.h +16 -3
- data/vendor/local/include/glib-2.0/glib/deprecated/gallocator.h +90 -0
- data/vendor/local/include/glib-2.0/glib/deprecated/gcache.h +73 -0
- data/vendor/local/include/glib-2.0/glib/deprecated/gcompletion.h +85 -0
- data/vendor/local/include/glib-2.0/glib/deprecated/gmain.h +138 -0
- data/vendor/local/include/glib-2.0/glib/deprecated/grel.h +107 -0
- data/vendor/local/include/glib-2.0/glib/deprecated/gthread.h +286 -0
- data/vendor/local/include/glib-2.0/glib/galloca.h +1 -1
- data/vendor/local/include/glib-2.0/glib/garray.h +9 -1
- data/vendor/local/include/glib-2.0/glib/gasyncqueue.h +30 -59
- data/vendor/local/include/glib-2.0/glib/gatomic.h +197 -82
- data/vendor/local/include/glib-2.0/glib/gbacktrace.h +8 -12
- data/vendor/local/include/glib-2.0/glib/gbase64.h +1 -1
- data/vendor/local/include/glib-2.0/glib/gbitlock.h +30 -1
- data/vendor/local/include/glib-2.0/glib/gbookmarkfile.h +1 -1
- data/vendor/local/include/glib-2.0/glib/gbytes.h +78 -0
- data/vendor/local/include/glib-2.0/glib/gcharset.h +40 -0
- data/vendor/local/include/glib-2.0/glib/gchecksum.h +10 -3
- data/vendor/local/include/glib-2.0/glib/gconvert.h +26 -11
- data/vendor/local/include/glib-2.0/glib/gdataset.h +19 -4
- data/vendor/local/include/glib-2.0/glib/gdate.h +2 -1
- data/vendor/local/include/glib-2.0/glib/gdatetime.h +1 -1
- data/vendor/local/include/glib-2.0/glib/gdir.h +12 -10
- data/vendor/local/include/glib-2.0/glib/genviron.h +69 -0
- data/vendor/local/include/glib-2.0/glib/gerror.h +10 -1
- data/vendor/local/include/glib-2.0/glib/gfileutils.h +94 -40
- data/vendor/local/include/glib-2.0/glib/ggettext.h +59 -0
- data/vendor/local/include/glib-2.0/glib/ghash.h +63 -82
- data/vendor/local/include/glib-2.0/glib/ghmac.h +80 -0
- data/vendor/local/include/glib-2.0/glib/ghook.h +1 -1
- data/vendor/local/include/glib-2.0/glib/giochannel.h +38 -20
- data/vendor/local/include/glib-2.0/glib/gkeyfile.h +3 -1
- data/vendor/local/include/glib-2.0/glib/glist.h +8 -6
- data/vendor/local/include/glib-2.0/glib/gmacros.h +66 -7
- data/vendor/local/include/glib-2.0/glib/gmain.h +53 -112
- data/vendor/local/include/glib-2.0/glib/gmappedfile.h +8 -3
- data/vendor/local/include/glib-2.0/glib/gmarkup.h +3 -3
- data/vendor/local/include/glib-2.0/glib/gmem.h +25 -49
- data/vendor/local/include/glib-2.0/glib/gmessages.h +76 -15
- data/vendor/local/include/glib-2.0/glib/gnode.h +14 -6
- data/vendor/local/include/glib-2.0/glib/goption.h +3 -3
- data/vendor/local/include/glib-2.0/glib/gpattern.h +1 -1
- data/vendor/local/include/glib-2.0/glib/gpoll.h +3 -0
- data/vendor/local/include/glib-2.0/glib/gprimes.h +1 -1
- data/vendor/local/include/glib-2.0/glib/gqsort.h +1 -1
- data/vendor/local/include/glib-2.0/glib/gquark.h +16 -4
- data/vendor/local/include/glib-2.0/glib/gqueue.h +62 -37
- data/vendor/local/include/glib-2.0/glib/grand.h +1 -1
- data/vendor/local/include/glib-2.0/glib/gregex.h +116 -26
- data/vendor/local/include/glib-2.0/glib/gscanner.h +9 -3
- data/vendor/local/include/glib-2.0/glib/gsequence.h +1 -1
- data/vendor/local/include/glib-2.0/glib/gshell.h +1 -1
- data/vendor/local/include/glib-2.0/glib/gslice.h +9 -1
- data/vendor/local/include/glib-2.0/glib/gslist.h +7 -6
- data/vendor/local/include/glib-2.0/glib/gspawn.h +164 -13
- data/vendor/local/include/glib-2.0/glib/gstdio.h +3 -1
- data/vendor/local/include/glib-2.0/glib/gstrfuncs.h +15 -37
- data/vendor/local/include/glib-2.0/glib/gstring.h +84 -104
- data/vendor/local/include/glib-2.0/glib/gstringchunk.h +53 -0
- data/vendor/local/include/glib-2.0/glib/gtestutils.h +23 -1
- data/vendor/local/include/glib-2.0/glib/gthread.h +172 -325
- data/vendor/local/include/glib-2.0/glib/gthreadpool.h +26 -60
- data/vendor/local/include/glib-2.0/glib/gtimer.h +1 -1
- data/vendor/local/include/glib-2.0/glib/gtimezone.h +3 -3
- data/vendor/local/include/glib-2.0/glib/gtrashstack.h +103 -0
- data/vendor/local/include/glib-2.0/glib/gtree.h +2 -3
- data/vendor/local/include/glib-2.0/glib/gtypes.h +50 -18
- data/vendor/local/include/glib-2.0/glib/gunicode.h +420 -95
- data/vendor/local/include/glib-2.0/glib/gurifuncs.h +2 -2
- data/vendor/local/include/glib-2.0/glib/gutils.h +68 -192
- data/vendor/local/include/glib-2.0/glib/gvariant.h +25 -3
- data/vendor/local/include/glib-2.0/glib/gvarianttype.h +20 -2
- data/vendor/local/include/glib-2.0/glib/gversion.h +56 -0
- data/vendor/local/include/glib-2.0/glib/gversionmacros.h +274 -0
- data/vendor/local/include/glib-2.0/glib/gwin32.h +15 -4
- data/vendor/local/include/glib-2.0/gmodule.h +14 -8
- data/vendor/local/include/glib-2.0/gobject/gbinding.h +2 -2
- data/vendor/local/include/glib-2.0/gobject/gboxed.h +41 -175
- data/vendor/local/include/glib-2.0/gobject/gclosure.h +40 -10
- data/vendor/local/include/glib-2.0/gobject/glib-types.h +310 -0
- data/vendor/local/include/glib-2.0/gobject/gmarshal.h +338 -183
- data/vendor/local/include/glib-2.0/gobject/gobject.h +56 -28
- data/vendor/local/include/glib-2.0/gobject/gobjectnotifyqueue.c +6 -0
- data/vendor/local/include/glib-2.0/gobject/gparam.h +11 -12
- data/vendor/local/include/glib-2.0/gobject/gparamspecs.h +6 -0
- data/vendor/local/include/glib-2.0/gobject/gsignal.h +42 -9
- data/vendor/local/include/glib-2.0/gobject/gsourceclosure.h +1 -16
- data/vendor/local/include/glib-2.0/gobject/gtype.h +28 -31
- data/vendor/local/include/glib-2.0/gobject/gtypemodule.h +1 -1
- data/vendor/local/include/glib-2.0/gobject/gvalue.h +21 -5
- data/vendor/local/include/glib-2.0/gobject/gvaluearray.h +31 -2
- data/vendor/local/include/glib-2.0/gobject/gvaluecollector.h +32 -3
- data/vendor/local/include/glib-2.0/gobject/gvaluetypes.h +12 -8
- data/vendor/local/include/gmp.h +2229 -0
- data/vendor/local/include/gnutls/abstract.h +401 -0
- data/vendor/local/include/gnutls/compat.h +290 -56
- data/vendor/local/include/gnutls/crypto.h +80 -47
- data/vendor/local/include/gnutls/dtls.h +88 -0
- data/vendor/local/include/gnutls/gnutls.h +1357 -550
- data/vendor/local/include/gnutls/gnutlsxx.h +400 -362
- data/vendor/local/include/gnutls/ocsp.h +259 -0
- data/vendor/local/include/gnutls/openpgp.h +235 -147
- data/vendor/local/include/gnutls/openssl.h +22 -24
- data/vendor/local/include/gnutls/pkcs11.h +322 -0
- data/vendor/local/include/gnutls/pkcs12.h +66 -38
- data/vendor/local/include/gnutls/tpm.h +74 -0
- data/vendor/local/include/gnutls/x509.h +771 -348
- data/vendor/local/include/nettle/aes.h +85 -0
- data/vendor/local/include/nettle/arcfour.h +66 -0
- data/vendor/local/include/nettle/arctwo.h +82 -0
- data/vendor/local/include/nettle/asn1.h +144 -0
- data/vendor/local/include/nettle/base16.h +106 -0
- data/vendor/local/include/nettle/base64.h +153 -0
- data/vendor/local/include/nettle/bignum.h +121 -0
- data/vendor/local/include/nettle/blowfish.h +76 -0
- data/vendor/local/include/nettle/buffer.h +98 -0
- data/vendor/local/include/nettle/camellia.h +82 -0
- data/vendor/local/include/nettle/cast128.h +77 -0
- data/vendor/local/include/nettle/cbc.h +76 -0
- data/vendor/local/include/nettle/ctr.h +62 -0
- data/vendor/local/include/nettle/des-compat.h +154 -0
- data/vendor/local/include/nettle/des.h +111 -0
- data/vendor/local/include/nettle/dsa.h +292 -0
- data/vendor/local/include/nettle/gcm.h +186 -0
- data/vendor/local/include/nettle/hmac.h +201 -0
- data/vendor/local/include/nettle/knuth-lfib.h +75 -0
- data/vendor/local/include/nettle/macros.h +216 -0
- data/vendor/local/include/nettle/md2.h +69 -0
- data/vendor/local/include/nettle/md4.h +73 -0
- data/vendor/local/include/nettle/md5-compat.h +50 -0
- data/vendor/local/include/nettle/md5.h +76 -0
- data/vendor/local/include/nettle/memxor.h +22 -0
- data/vendor/local/include/nettle/nettle-meta.h +227 -0
- data/vendor/local/include/nettle/nettle-stdint.h +286 -0
- data/vendor/local/include/nettle/nettle-types.h +92 -0
- data/vendor/local/include/nettle/pgp.h +240 -0
- data/vendor/local/include/nettle/pkcs1.h +106 -0
- data/vendor/local/include/nettle/realloc.h +41 -0
- data/vendor/local/include/nettle/ripemd160.h +78 -0
- data/vendor/local/include/nettle/rsa-compat.h +131 -0
- data/vendor/local/include/nettle/rsa.h +418 -0
- data/vendor/local/include/nettle/salsa20.h +82 -0
- data/vendor/local/include/nettle/serpent.h +81 -0
- data/vendor/local/include/nettle/sexp.h +212 -0
- data/vendor/local/include/nettle/sha.h +193 -0
- data/vendor/local/include/nettle/twofish.h +78 -0
- data/vendor/local/include/nettle/yarrow.h +137 -0
- data/vendor/local/include/zconf.h +461 -0
- data/vendor/local/include/zlib.h +1589 -0
- data/vendor/local/lib/charset.alias +4 -0
- data/vendor/local/lib/gio-2.0.def +505 -147
- data/vendor/local/lib/gio/modules/libgiognutls.a +0 -0
- data/vendor/local/lib/gio/modules/libgiognutls.dll +0 -0
- data/vendor/local/lib/gio/modules/libgiognutls.dll.a +0 -0
- data/vendor/local/lib/gio/modules/libgiognutls.la +2 -2
- data/vendor/local/lib/glib-2.0.def +298 -167
- data/vendor/local/lib/glib-2.0/include/glibconfig.h +32 -115
- data/vendor/local/lib/gmodule-2.0.def +0 -0
- data/vendor/local/lib/gobject-2.0.def +71 -23
- data/vendor/local/lib/gthread-2.0.def +0 -0
- data/vendor/local/lib/libffi-3.0.6/include/ffi.h +393 -0
- data/vendor/local/lib/libffi-3.0.6/include/ffitarget.h +90 -0
- data/vendor/local/lib/libffi.dll.a +0 -0
- data/vendor/local/lib/libgio-2.0.dll.a +0 -0
- data/vendor/local/lib/libgio-2.0.la +41 -0
- data/vendor/local/lib/libglib-2.0.dll.a +0 -0
- data/vendor/local/lib/libglib-2.0.la +41 -0
- data/vendor/local/lib/libgmodule-2.0.dll.a +0 -0
- data/vendor/local/lib/libgmodule-2.0.la +41 -0
- data/vendor/local/lib/libgmp.dll.a +0 -0
- data/vendor/local/lib/libgmp.la +41 -0
- data/vendor/local/lib/libgnutls-openssl.a +0 -0
- data/vendor/local/lib/libgnutls-openssl.dll.a +0 -0
- data/vendor/local/lib/libgnutls-openssl.la +41 -0
- data/vendor/local/lib/libgnutls.a +0 -0
- data/vendor/local/lib/libgnutls.dll.a +0 -0
- data/vendor/local/lib/libgnutls.la +41 -0
- data/vendor/local/lib/libgnutlsxx.a +0 -0
- data/vendor/local/lib/libgnutlsxx.dll.a +0 -0
- data/vendor/local/lib/libgnutlsxx.la +41 -0
- data/vendor/local/lib/libgobject-2.0.dll.a +0 -0
- data/vendor/local/lib/libgobject-2.0.la +41 -0
- data/vendor/local/lib/libgthread-2.0.dll.a +0 -0
- data/vendor/local/lib/libgthread-2.0.la +41 -0
- data/vendor/local/lib/libhogweed.a +0 -0
- data/vendor/local/lib/libhogweed.dll.a +0 -0
- data/vendor/local/lib/libnettle.a +0 -0
- data/vendor/local/lib/libnettle.dll.a +0 -0
- data/vendor/local/lib/libz.dll.a +0 -0
- data/vendor/local/lib/pkgconfig/gio-2.0.pc +7 -4
- data/vendor/local/lib/pkgconfig/gio-windows-2.0.pc +1 -1
- data/vendor/local/lib/pkgconfig/glib-2.0.pc +3 -2
- data/vendor/local/lib/pkgconfig/gmodule-2.0.pc +1 -1
- data/vendor/local/lib/pkgconfig/gmodule-export-2.0.pc +14 -0
- data/vendor/local/lib/pkgconfig/gmodule-no-export-2.0.pc +1 -1
- data/vendor/local/lib/pkgconfig/gnutls-dane.pc +24 -0
- data/vendor/local/lib/pkgconfig/gnutls.pc +13 -12
- data/vendor/local/lib/pkgconfig/gobject-2.0.pc +3 -2
- data/vendor/local/lib/pkgconfig/gthread-2.0.pc +1 -1
- data/vendor/local/lib/pkgconfig/hogweed.pc +18 -0
- data/vendor/local/lib/pkgconfig/nettle.pc +11 -0
- data/vendor/local/lib/zdll.lib +0 -0
- data/vendor/local/lib/zlib.def +67 -0
- data/vendor/local/manifest/libffi-dev_3.0.6-1_win32.mft +9 -0
- data/vendor/local/manifest/libffi_3.0.6-1_win32.mft +2 -0
- data/vendor/local/manifest/zlib-dev_1.2.5-2_win32.mft +8 -0
- data/vendor/local/manifest/zlib_1.2.5-2_win32.mft +2 -0
- data/vendor/local/share/aclocal/glib-2.0.m4 +3 -0
- data/vendor/local/share/aclocal/glib-gettext.m4 +4 -0
- data/vendor/local/share/aclocal/gsettings.m4 +1 -1
- data/vendor/local/share/bash-completion/completions/gdbus +33 -0
- data/vendor/local/share/bash-completion/completions/gresource +58 -0
- data/vendor/local/share/bash-completion/completions/gsettings +84 -0
- data/vendor/local/share/gdb/auto-load/libglib-2.0.so.0.3503.0-gdb.py +10 -0
- data/vendor/local/share/gdb/auto-load/libgobject-2.0.so.0.3503.0-gdb.py +10 -0
- data/vendor/local/share/glib-2.0/codegen/__init__.py +29 -0
- data/vendor/local/share/glib-2.0/codegen/__init__.pyc +0 -0
- data/vendor/local/share/glib-2.0/codegen/__init__.pyo +0 -0
- data/vendor/local/share/glib-2.0/codegen/codegen.py +3375 -0
- data/vendor/local/share/glib-2.0/codegen/codegen.pyc +0 -0
- data/vendor/local/share/glib-2.0/codegen/codegen.pyo +0 -0
- data/vendor/local/share/glib-2.0/codegen/codegen_docbook.py +323 -0
- data/vendor/local/share/glib-2.0/codegen/codegen_docbook.pyc +0 -0
- data/vendor/local/share/glib-2.0/codegen/codegen_docbook.pyo +0 -0
- data/vendor/local/share/glib-2.0/codegen/codegen_main.py +203 -0
- data/vendor/local/share/glib-2.0/codegen/codegen_main.pyc +0 -0
- data/vendor/local/share/glib-2.0/codegen/codegen_main.pyo +0 -0
- data/vendor/local/share/glib-2.0/codegen/config.py +27 -0
- data/vendor/local/share/glib-2.0/codegen/config.pyc +0 -0
- data/vendor/local/share/glib-2.0/codegen/config.pyo +0 -0
- data/vendor/local/share/glib-2.0/codegen/dbustypes.py +426 -0
- data/vendor/local/share/glib-2.0/codegen/dbustypes.pyc +0 -0
- data/vendor/local/share/glib-2.0/codegen/dbustypes.pyo +0 -0
- data/vendor/local/share/glib-2.0/codegen/parser.py +290 -0
- data/vendor/local/share/glib-2.0/codegen/parser.pyc +0 -0
- data/vendor/local/share/glib-2.0/codegen/parser.pyo +0 -0
- data/vendor/local/share/glib-2.0/codegen/utils.py +104 -0
- data/vendor/local/share/glib-2.0/codegen/utils.pyc +0 -0
- data/vendor/local/share/glib-2.0/codegen/utils.pyo +0 -0
- data/vendor/local/share/glib-2.0/gdb/glib.py +15 -11
- data/vendor/local/share/glib-2.0/gdb/gobject.py +0 -0
- data/vendor/local/share/glib-2.0/gettext/po/Makefile.in.in +9 -20
- data/vendor/local/share/gtk-doc/html/gio/ExampleAnimal.html +1301 -0
- data/vendor/local/share/gtk-doc/html/gio/ExampleCat.html +594 -0
- data/vendor/local/share/gtk-doc/html/gio/ExampleObject.html +461 -0
- data/vendor/local/share/gtk-doc/html/gio/ExampleObjectManagerClient.html +486 -0
- data/vendor/local/share/gtk-doc/html/gio/GAction.html +174 -73
- data/vendor/local/share/gtk-doc/html/gio/GActionGroup.html +465 -130
- data/vendor/local/share/gtk-doc/html/gio/GActionMap.html +440 -0
- data/vendor/local/share/gtk-doc/html/gio/GAppInfo.html +470 -183
- data/vendor/local/share/gtk-doc/html/gio/GApplication.html +862 -225
- data/vendor/local/share/gtk-doc/html/gio/GApplicationCommandLine.html +139 -76
- data/vendor/local/share/gtk-doc/html/gio/GAsyncInitable.html +141 -135
- data/vendor/local/share/gtk-doc/html/gio/GAsyncResult.html +148 -37
- data/vendor/local/share/gtk-doc/html/gio/GBufferedInputStream.html +110 -67
- data/vendor/local/share/gtk-doc/html/gio/GBufferedOutputStream.html +55 -29
- data/vendor/local/share/gtk-doc/html/gio/GCancellable.html +135 -79
- data/vendor/local/share/gtk-doc/html/gio/GCharsetConverter.html +42 -30
- data/vendor/local/share/gtk-doc/html/gio/GConverter.html +49 -42
- data/vendor/local/share/gtk-doc/html/gio/GCredentials.html +78 -43
- data/vendor/local/share/gtk-doc/html/gio/GDBusActionGroup.html +138 -0
- data/vendor/local/share/gtk-doc/html/gio/GDBusAuthObserver.html +107 -24
- data/vendor/local/share/gtk-doc/html/gio/GDBusConnection.html +1369 -836
- data/vendor/local/share/gtk-doc/html/gio/GDBusError.html +92 -92
- data/vendor/local/share/gtk-doc/html/gio/GDBusInterface.html +268 -0
- data/vendor/local/share/gtk-doc/html/gio/GDBusInterfaceSkeleton.html +691 -0
- data/vendor/local/share/gtk-doc/html/gio/GDBusMenuModel.html +126 -0
- data/vendor/local/share/gtk-doc/html/gio/GDBusMessage.html +381 -215
- data/vendor/local/share/gtk-doc/html/gio/GDBusMethodInvocation.html +212 -81
- data/vendor/local/share/gtk-doc/html/gio/GDBusObject.html +312 -0
- data/vendor/local/share/gtk-doc/html/gio/GDBusObjectManager.html +462 -0
- data/vendor/local/share/gtk-doc/html/gio/GDBusObjectManagerClient.html +1095 -0
- data/vendor/local/share/gtk-doc/html/gio/GDBusObjectManagerServer.html +397 -0
- data/vendor/local/share/gtk-doc/html/gio/GDBusObjectProxy.html +206 -0
- data/vendor/local/share/gtk-doc/html/gio/GDBusObjectSkeleton.html +385 -0
- data/vendor/local/share/gtk-doc/html/gio/GDBusProxy.html +679 -330
- data/vendor/local/share/gtk-doc/html/gio/GDBusServer.html +161 -129
- data/vendor/local/share/gtk-doc/html/gio/GDataInputStream.html +396 -210
- data/vendor/local/share/gtk-doc/html/gio/GDataOutputStream.html +143 -102
- data/vendor/local/share/gtk-doc/html/gio/GDrive.html +323 -162
- data/vendor/local/share/gtk-doc/html/gio/GEmblem.html +35 -24
- data/vendor/local/share/gtk-doc/html/gio/GEmblemedIcon.html +30 -15
- data/vendor/local/share/gtk-doc/html/gio/GFile.html +2551 -1662
- data/vendor/local/share/gtk-doc/html/gio/GFileDescriptorBased.html +16 -5
- data/vendor/local/share/gtk-doc/html/gio/GFileEnumerator.html +151 -64
- data/vendor/local/share/gtk-doc/html/gio/GFileIOStream.html +34 -22
- data/vendor/local/share/gtk-doc/html/gio/GFileIcon.html +15 -8
- data/vendor/local/share/gtk-doc/html/gio/GFileInfo.html +731 -342
- data/vendor/local/share/gtk-doc/html/gio/GFileInputStream.html +31 -22
- data/vendor/local/share/gtk-doc/html/gio/GFileMonitor.html +53 -38
- data/vendor/local/share/gtk-doc/html/gio/GFileOutputStream.html +34 -22
- data/vendor/local/share/gtk-doc/html/gio/GFilenameCompleter.html +37 -22
- data/vendor/local/share/gtk-doc/html/gio/GFilterInputStream.html +24 -15
- data/vendor/local/share/gtk-doc/html/gio/GFilterOutputStream.html +24 -15
- data/vendor/local/share/gtk-doc/html/gio/GIOModule.html +259 -22
- data/vendor/local/share/gtk-doc/html/gio/GIOStream.html +91 -55
- data/vendor/local/share/gtk-doc/html/gio/GIcon.html +51 -34
- data/vendor/local/share/gtk-doc/html/gio/GInetAddress.html +189 -101
- data/vendor/local/share/gtk-doc/html/gio/GInetSocketAddress.html +99 -15
- data/vendor/local/share/gtk-doc/html/gio/GInitable.html +116 -80
- data/vendor/local/share/gtk-doc/html/gio/GInputStream.html +339 -110
- data/vendor/local/share/gtk-doc/html/gio/GLoadableIcon.html +33 -21
- data/vendor/local/share/gtk-doc/html/gio/GMemoryInputStream.html +33 -20
- data/vendor/local/share/gtk-doc/html/gio/GMemoryOutputStream.html +84 -49
- data/vendor/local/share/gtk-doc/html/gio/GMenu.html +1562 -0
- data/vendor/local/share/gtk-doc/html/gio/GMenuModel.html +1064 -0
- data/vendor/local/share/gtk-doc/html/gio/GMount.html +325 -174
- data/vendor/local/share/gtk-doc/html/gio/GMountOperation.html +217 -94
- data/vendor/local/share/gtk-doc/html/gio/GNetworkAddress.html +72 -49
- data/vendor/local/share/gtk-doc/html/gio/GNetworkMonitor.html +435 -0
- data/vendor/local/share/gtk-doc/html/gio/GNetworkService.html +53 -35
- data/vendor/local/share/gtk-doc/html/gio/GOutputStream.html +392 -138
- data/vendor/local/share/gtk-doc/html/gio/GPermission.html +104 -74
- data/vendor/local/share/gtk-doc/html/gio/GPollableInputStream.html +58 -104
- data/vendor/local/share/gtk-doc/html/gio/GPollableOutputStream.html +60 -45
- data/vendor/local/share/gtk-doc/html/gio/GProxy.html +48 -30
- data/vendor/local/share/gtk-doc/html/gio/GProxyAddress.html +157 -51
- data/vendor/local/share/gtk-doc/html/gio/GProxyResolver.html +50 -37
- data/vendor/local/share/gtk-doc/html/gio/GRemoteActionGroup.html +262 -0
- data/vendor/local/share/gtk-doc/html/gio/GResolver.html +348 -128
- data/vendor/local/share/gtk-doc/html/gio/GSeekable.html +66 -48
- data/vendor/local/share/gtk-doc/html/gio/GSettings.html +790 -390
- data/vendor/local/share/gtk-doc/html/gio/GSettingsBackend.html +106 -75
- data/vendor/local/share/gtk-doc/html/gio/GSimpleAction.html +188 -76
- data/vendor/local/share/gtk-doc/html/gio/GSimpleActionGroup.html +79 -22
- data/vendor/local/share/gtk-doc/html/gio/GSimpleAsyncResult.html +334 -180
- data/vendor/local/share/gtk-doc/html/gio/GSimplePermission.html +12 -9
- data/vendor/local/share/gtk-doc/html/gio/GSocket.html +1183 -407
- data/vendor/local/share/gtk-doc/html/gio/GSocketAddress.html +51 -42
- data/vendor/local/share/gtk-doc/html/gio/GSocketClient.html +556 -217
- data/vendor/local/share/gtk-doc/html/gio/GSocketConnectable.html +55 -37
- data/vendor/local/share/gtk-doc/html/gio/GSocketConnection.html +243 -49
- data/vendor/local/share/gtk-doc/html/gio/GSocketControlMessage.html +35 -20
- data/vendor/local/share/gtk-doc/html/gio/GSocketListener.html +159 -122
- data/vendor/local/share/gtk-doc/html/gio/GSocketService.html +57 -34
- data/vendor/local/share/gtk-doc/html/gio/GSrvTarget.html +56 -32
- data/vendor/local/share/gtk-doc/html/gio/GTask.html +2296 -0
- data/vendor/local/share/gtk-doc/html/gio/GTcpConnection.html +22 -16
- data/vendor/local/share/gtk-doc/html/gio/GTcpWrapperConnection.html +13 -9
- data/vendor/local/share/gtk-doc/html/gio/GTestDBus.html +331 -0
- data/vendor/local/share/gtk-doc/html/gio/GThemedIcon.html +43 -25
- data/vendor/local/share/gtk-doc/html/gio/GThreadedSocketService.html +30 -24
- data/vendor/local/share/gtk-doc/html/gio/GTlsBackend.html +123 -36
- data/vendor/local/share/gtk-doc/html/gio/GTlsCertificate.html +145 -76
- data/vendor/local/share/gtk-doc/html/gio/GTlsClientConnection.html +67 -42
- data/vendor/local/share/gtk-doc/html/gio/GTlsConnection.html +297 -90
- data/vendor/local/share/gtk-doc/html/gio/GTlsDatabase.html +993 -0
- data/vendor/local/share/gtk-doc/html/gio/GTlsFileDatabase.html +172 -0
- data/vendor/local/share/gtk-doc/html/gio/GTlsInteraction.html +385 -0
- data/vendor/local/share/gtk-doc/html/gio/GTlsPassword.html +511 -0
- data/vendor/local/share/gtk-doc/html/gio/GTlsServerConnection.html +19 -16
- data/vendor/local/share/gtk-doc/html/gio/GUnixConnection.html +244 -41
- data/vendor/local/share/gtk-doc/html/gio/GUnixCredentialsMessage.html +25 -13
- data/vendor/local/share/gtk-doc/html/gio/GUnixFDList.html +70 -51
- data/vendor/local/share/gtk-doc/html/gio/GUnixFDMessage.html +47 -34
- data/vendor/local/share/gtk-doc/html/gio/GUnixInputStream.html +44 -30
- data/vendor/local/share/gtk-doc/html/gio/GUnixOutputStream.html +46 -32
- data/vendor/local/share/gtk-doc/html/gio/GUnixSocketAddress.html +76 -53
- data/vendor/local/share/gtk-doc/html/gio/GVfs.html +55 -33
- data/vendor/local/share/gtk-doc/html/gio/GVolume.html +260 -110
- data/vendor/local/share/gtk-doc/html/gio/GVolumeMonitor.html +127 -70
- data/vendor/local/share/gtk-doc/html/gio/GZlibCompressor.html +32 -24
- data/vendor/local/share/gtk-doc/html/gio/GZlibDecompressor.html +19 -13
- data/vendor/local/share/gtk-doc/html/gio/annotation-glossary.html +10 -10
- data/vendor/local/share/gtk-doc/html/gio/api-index-2-18.html +6 -6
- data/vendor/local/share/gtk-doc/html/gio/api-index-2-20.html +5 -5
- data/vendor/local/share/gtk-doc/html/gio/api-index-2-22.html +14 -10
- data/vendor/local/share/gtk-doc/html/gio/api-index-2-24.html +8 -16
- data/vendor/local/share/gtk-doc/html/gio/api-index-2-26.html +74 -31
- data/vendor/local/share/gtk-doc/html/gio/api-index-2-28.html +21 -41
- data/vendor/local/share/gtk-doc/html/gio/api-index-2-30.html +691 -0
- data/vendor/local/share/gtk-doc/html/gio/api-index-2-32.html +698 -0
- data/vendor/local/share/gtk-doc/html/gio/api-index-2-34.html +231 -0
- data/vendor/local/share/gtk-doc/html/gio/api-index-deprecated.html +55 -7
- data/vendor/local/share/gtk-doc/html/gio/api-index-full.html +2101 -230
- data/vendor/local/share/gtk-doc/html/gio/application.html +33 -9
- data/vendor/local/share/gtk-doc/html/gio/async.html +6 -3
- data/vendor/local/share/gtk-doc/html/gio/ch01.html +43 -18
- data/vendor/local/share/gtk-doc/html/gio/ch02.html +86 -22
- data/vendor/local/share/gtk-doc/html/gio/ch03.html +23 -152
- data/vendor/local/share/gtk-doc/html/gio/ch27.html +5 -5
- data/vendor/local/share/gtk-doc/html/gio/ch28s03.html +2 -2
- data/vendor/local/share/gtk-doc/html/gio/ch28s06.html +2 -2
- data/vendor/local/share/gtk-doc/html/gio/ch29.html +54 -49
- data/vendor/local/share/gtk-doc/html/gio/ch29s02.html +1 -1
- data/vendor/local/share/gtk-doc/html/gio/ch29s03.html +19 -19
- data/vendor/local/share/gtk-doc/html/gio/ch29s04.html +3 -3
- data/vendor/local/share/gtk-doc/html/gio/ch29s05.html +81 -81
- data/vendor/local/share/gtk-doc/html/gio/ch29s06.html +67 -67
- data/vendor/local/share/gtk-doc/html/gio/ch30.html +217 -0
- data/vendor/local/share/gtk-doc/html/gio/ch30s02.html +41 -0
- data/vendor/local/share/gtk-doc/html/gio/ch30s03.html +39 -0
- data/vendor/local/share/gtk-doc/html/gio/ch31.html +57 -0
- data/vendor/local/share/gtk-doc/html/gio/ch31s02.html +59 -0
- data/vendor/local/share/gtk-doc/html/gio/ch31s03.html +159 -0
- data/vendor/local/share/gtk-doc/html/gio/ch31s04.html +46 -0
- data/vendor/local/share/gtk-doc/html/gio/ch31s05.html +48 -0
- data/vendor/local/share/gtk-doc/html/gio/ch31s06.html +278 -0
- data/vendor/local/share/gtk-doc/html/gio/ch31s07.html +160 -0
- data/vendor/local/share/gtk-doc/html/gio/ch32.html +113 -0
- data/vendor/local/share/gtk-doc/html/gio/ch32s02.html +142 -0
- data/vendor/local/share/gtk-doc/html/gio/ch32s03.html +202 -0
- data/vendor/local/share/gtk-doc/html/gio/ch32s04.html +97 -0
- data/vendor/local/share/gtk-doc/html/gio/ch32s05.html +931 -0
- data/vendor/local/share/gtk-doc/html/gio/conversion.html +3 -3
- data/vendor/local/share/gtk-doc/html/gio/extending-gio.html +14 -5
- data/vendor/local/share/gtk-doc/html/gio/extending.html +5 -5
- data/vendor/local/share/gtk-doc/html/gio/failable_initialization.html +3 -3
- data/vendor/local/share/gtk-doc/html/gio/file_mon.html +3 -3
- data/vendor/local/share/gtk-doc/html/gio/file_ops.html +3 -3
- data/vendor/local/share/gtk-doc/html/gio/gdbus-codegen.html +1080 -0
- data/vendor/local/share/gtk-doc/html/gio/gdbus-convenience.html +28 -4
- data/vendor/local/share/gtk-doc/html/gio/gdbus-lowlevel.html +4 -4
- data/vendor/local/share/gtk-doc/html/gio/gdbus-org.gtk.GDBus.Example.ObjectManager.Animal.html +167 -0
- data/vendor/local/share/gtk-doc/html/gio/gdbus-org.gtk.GDBus.Example.ObjectManager.Cat.html +54 -0
- data/vendor/local/share/gtk-doc/html/gio/gdbus.html +87 -30
- data/vendor/local/share/gtk-doc/html/gio/gio-D-Bus-Addresses.html +70 -49
- data/vendor/local/share/gtk-doc/html/gio/gio-D-Bus-Introspection-Data.html +420 -187
- data/vendor/local/share/gtk-doc/html/gio/gio-D-Bus-Utilities.html +200 -27
- data/vendor/local/share/gtk-doc/html/gio/gio-Desktop-file-based-GAppInfo.html +497 -23
- data/vendor/local/share/gtk-doc/html/gio/gio-Extension-Points.html +88 -48
- data/vendor/local/share/gtk-doc/html/gio/gio-GActionGroup-exporter.html +176 -0
- data/vendor/local/share/gtk-doc/html/gio/gio-GContentType.html +162 -68
- data/vendor/local/share/gtk-doc/html/gio/gio-GConverterInputstream.html +26 -8
- data/vendor/local/share/gtk-doc/html/gio/gio-GConverterOutputstream.html +24 -6
- data/vendor/local/share/gtk-doc/html/gio/gio-GDBusError.html +919 -0
- data/vendor/local/share/gtk-doc/html/gio/gio-GFileAttribute.html +113 -97
- data/vendor/local/share/gtk-doc/html/gio/gio-GIOError.html +38 -32
- data/vendor/local/share/gtk-doc/html/gio/gio-GIOScheduler.html +85 -62
- data/vendor/local/share/gtk-doc/html/gio/gio-GInetAddressMask.html +330 -0
- data/vendor/local/share/gtk-doc/html/gio/gio-GMenuModel-exporter.html +164 -0
- data/vendor/local/share/gtk-doc/html/gio/gio-GResource.html +917 -0
- data/vendor/local/share/gtk-doc/html/gio/gio-GSettingsSchema-GSettingsSchemaSource.html +614 -0
- data/vendor/local/share/gtk-doc/html/gio/gio-GWin32InputStream.html +213 -0
- data/vendor/local/share/gtk-doc/html/gio/gio-GWin32OutputStream.html +210 -0
- data/vendor/local/share/gtk-doc/html/gio/gio-Owning-Bus-Names.html +154 -134
- data/vendor/local/share/gtk-doc/html/gio/gio-TLS-Overview.html +22 -17
- data/vendor/local/share/gtk-doc/html/gio/gio-Unix-Mounts.html +272 -92
- data/vendor/local/share/gtk-doc/html/gio/gio-Watching-Bus-Names.html +136 -105
- data/vendor/local/share/gtk-doc/html/gio/gio-gnetworking.h.html +91 -0
- data/vendor/local/share/gtk-doc/html/gio/gio-gpollableutils.html +396 -0
- data/vendor/local/share/gtk-doc/html/gio/gio-hierarchy.html +53 -52
- data/vendor/local/share/gtk-doc/html/gio/gio-querymodules.html +5 -5
- data/vendor/local/share/gtk-doc/html/gio/gio.devhelp2 +790 -157
- data/vendor/local/share/gtk-doc/html/gio/glib-compile-resources.html +209 -0
- data/vendor/local/share/gtk-doc/html/gio/glib-compile-schemas.html +25 -18
- data/vendor/local/share/gtk-doc/html/gio/gresource-tool.html +111 -0
- data/vendor/local/share/gtk-doc/html/gio/gsettings-tool.html +27 -15
- data/vendor/local/share/gtk-doc/html/gio/highlevel-socket.html +10 -7
- data/vendor/local/share/gtk-doc/html/gio/icons.html +3 -3
- data/vendor/local/share/gtk-doc/html/gio/index.html +160 -34
- data/vendor/local/share/gtk-doc/html/gio/index.sgml +1009 -179
- data/vendor/local/share/gtk-doc/html/gio/menu-example.png +0 -0
- data/vendor/local/share/gtk-doc/html/gio/menu-model.png +0 -0
- data/vendor/local/share/gtk-doc/html/gio/migrating.html +45 -25
- data/vendor/local/share/gtk-doc/html/gio/networking.html +11 -5
- data/vendor/local/share/gtk-doc/html/gio/permissions.html +5 -5
- data/vendor/local/share/gtk-doc/html/gio/pt01.html +7 -6
- data/vendor/local/share/gtk-doc/html/gio/pt02.html +115 -13
- data/vendor/local/share/gtk-doc/html/gio/resolver.html +5 -5
- data/vendor/local/share/gtk-doc/html/gio/resources.html +33 -0
- data/vendor/local/share/gtk-doc/html/gio/running-gio-apps.html +176 -0
- data/vendor/local/share/gtk-doc/html/gio/settings.html +9 -5
- data/vendor/local/share/gtk-doc/html/gio/streaming.html +12 -3
- data/vendor/local/share/gtk-doc/html/gio/testing.html +33 -0
- data/vendor/local/share/gtk-doc/html/gio/tls.html +17 -5
- data/vendor/local/share/gtk-doc/html/gio/tools.html +13 -4
- data/vendor/local/share/gtk-doc/html/gio/types.html +5 -5
- data/vendor/local/share/gtk-doc/html/gio/utils.html +3 -3
- data/vendor/local/share/gtk-doc/html/gio/volume_mon.html +3 -3
- data/vendor/local/share/gtk-doc/html/glib/annotation-glossary.html +28 -7
- data/vendor/local/share/gtk-doc/html/glib/api-index-2-10.html +6 -14
- data/vendor/local/share/gtk-doc/html/glib/api-index-2-12.html +5 -5
- data/vendor/local/share/gtk-doc/html/glib/api-index-2-14.html +19 -11
- data/vendor/local/share/gtk-doc/html/glib/api-index-2-16.html +5 -5
- data/vendor/local/share/gtk-doc/html/glib/api-index-2-18.html +17 -6
- data/vendor/local/share/gtk-doc/html/glib/api-index-2-2.html +5 -5
- data/vendor/local/share/gtk-doc/html/glib/api-index-2-20.html +15 -7
- data/vendor/local/share/gtk-doc/html/glib/api-index-2-22.html +8 -8
- data/vendor/local/share/gtk-doc/html/glib/api-index-2-24.html +13 -5
- data/vendor/local/share/gtk-doc/html/glib/api-index-2-26.html +20 -5
- data/vendor/local/share/gtk-doc/html/glib/api-index-2-28.html +22 -7
- data/vendor/local/share/gtk-doc/html/glib/api-index-2-30.html +257 -0
- data/vendor/local/share/gtk-doc/html/glib/api-index-2-32.html +348 -0
- data/vendor/local/share/gtk-doc/html/glib/api-index-2-34.html +121 -0
- data/vendor/local/share/gtk-doc/html/glib/api-index-2-4.html +26 -18
- data/vendor/local/share/gtk-doc/html/glib/api-index-2-6.html +20 -16
- data/vendor/local/share/gtk-doc/html/glib/api-index-2-8.html +11 -7
- data/vendor/local/share/gtk-doc/html/glib/api-index-deprecated.html +152 -78
- data/vendor/local/share/gtk-doc/html/glib/api-index-full.html +729 -249
- data/vendor/local/share/gtk-doc/html/glib/deprecated.html +47 -0
- data/vendor/local/share/gtk-doc/html/glib/glib-Arrays.html +135 -28
- data/vendor/local/share/gtk-doc/html/glib/glib-Asynchronous-Queues.html +383 -170
- data/vendor/local/share/gtk-doc/html/glib/glib-Atomic-Operations.html +525 -142
- data/vendor/local/share/gtk-doc/html/glib/glib-Automatic-String-Completion.html +71 -32
- data/vendor/local/share/gtk-doc/html/glib/glib-Balanced-Binary-Trees.html +97 -38
- data/vendor/local/share/gtk-doc/html/glib/glib-Base64-Encoding.html +68 -30
- data/vendor/local/share/gtk-doc/html/glib/glib-Basic-Types.html +724 -106
- data/vendor/local/share/gtk-doc/html/glib/glib-Bookmark-file-parser.html +187 -67
- data/vendor/local/share/gtk-doc/html/glib/glib-Byte-Arrays.html +715 -29
- data/vendor/local/share/gtk-doc/html/glib/glib-Byte-Order-Macros.html +368 -194
- data/vendor/local/share/gtk-doc/html/glib/glib-Caches.html +105 -50
- data/vendor/local/share/gtk-doc/html/glib/glib-Character-Set-Conversion.html +126 -59
- data/vendor/local/share/gtk-doc/html/glib/glib-Commandline-option-parser.html +163 -62
- data/vendor/local/share/gtk-doc/html/glib/glib-Data-Checksums.html +106 -25
- data/vendor/local/share/gtk-doc/html/glib/glib-Data-HMACs.html +452 -0
- data/vendor/local/share/gtk-doc/html/glib/glib-Datasets.html +61 -19
- data/vendor/local/share/gtk-doc/html/glib/glib-Date-and-Time-Functions.html +394 -162
- data/vendor/local/share/gtk-doc/html/glib/glib-Deprecated-Thread-APIs.html +1772 -0
- data/vendor/local/share/gtk-doc/html/glib/glib-Double-ended-Queues.html +241 -63
- data/vendor/local/share/gtk-doc/html/glib/glib-Doubly-Linked-Lists.html +236 -95
- data/vendor/local/share/gtk-doc/html/glib/glib-Dynamic-Loading-of-Modules.html +174 -100
- data/vendor/local/share/gtk-doc/html/glib/glib-Error-Reporting.html +259 -168
- data/vendor/local/share/gtk-doc/html/glib/glib-File-Utilities.html +710 -221
- data/vendor/local/share/gtk-doc/html/glib/glib-GDateTime.html +409 -167
- data/vendor/local/share/gtk-doc/html/glib/glib-GTimeZone.html +86 -53
- data/vendor/local/share/gtk-doc/html/glib/glib-GVariant.html +1077 -281
- data/vendor/local/share/gtk-doc/html/glib/glib-GVariantType.html +234 -187
- data/vendor/local/share/gtk-doc/html/glib/glib-Glob-style-pattern-matching.html +28 -10
- data/vendor/local/share/gtk-doc/html/glib/glib-Hash-Tables.html +545 -211
- data/vendor/local/share/gtk-doc/html/glib/glib-Hook-Functions.html +234 -108
- data/vendor/local/share/gtk-doc/html/glib/glib-Hostname-Utilities.html +23 -8
- data/vendor/local/share/gtk-doc/html/glib/glib-I18N.html +138 -77
- data/vendor/local/share/gtk-doc/html/glib/glib-IO-Channels.html +259 -105
- data/vendor/local/share/gtk-doc/html/glib/glib-Key-value-file-parser.html +436 -206
- data/vendor/local/share/gtk-doc/html/glib/glib-Keyed-Data-Lists.html +263 -38
- data/vendor/local/share/gtk-doc/html/glib/glib-Lexical-Scanner.html +540 -362
- data/vendor/local/share/gtk-doc/html/glib/glib-Memory-Allocation.html +165 -37
- data/vendor/local/share/gtk-doc/html/glib/glib-Memory-Slices.html +146 -79
- data/vendor/local/share/gtk-doc/html/glib/glib-Message-Logging.html +214 -104
- data/vendor/local/share/gtk-doc/html/glib/glib-Miscellaneous-Macros.html +489 -438
- data/vendor/local/share/gtk-doc/html/glib/glib-Miscellaneous-Utility-Functions.html +690 -202
- data/vendor/local/share/gtk-doc/html/glib/glib-N-ary-Trees.html +230 -118
- data/vendor/local/share/gtk-doc/html/glib/glib-Numerical-Definitions.html +23 -4
- data/vendor/local/share/gtk-doc/html/glib/glib-Perl-compatible-regular-expressions.html +538 -102
- data/vendor/local/share/gtk-doc/html/glib/glib-Pointer-Arrays.html +135 -33
- data/vendor/local/share/gtk-doc/html/glib/glib-Quarks.html +79 -23
- data/vendor/local/share/gtk-doc/html/glib/glib-Random-Numbers.html +75 -21
- data/vendor/local/share/gtk-doc/html/glib/glib-Relations-and-Tuples.html +57 -21
- data/vendor/local/share/gtk-doc/html/glib/glib-Sequences.html +308 -111
- data/vendor/local/share/gtk-doc/html/glib/glib-Shell-related-Utilities.html +20 -9
- data/vendor/local/share/gtk-doc/html/glib/glib-Simple-XML-Subset-Parser.html +88 -37
- data/vendor/local/share/gtk-doc/html/glib/glib-Singly-Linked-Lists.html +228 -86
- data/vendor/local/share/gtk-doc/html/glib/glib-Spawning-Processes.html +271 -109
- data/vendor/local/share/gtk-doc/html/glib/glib-Standard-Macros.html +108 -63
- data/vendor/local/share/gtk-doc/html/glib/glib-String-Chunks.html +42 -24
- data/vendor/local/share/gtk-doc/html/glib/glib-String-Utility-Functions.html +578 -315
- data/vendor/local/share/gtk-doc/html/glib/glib-Strings.html +241 -94
- data/vendor/local/share/gtk-doc/html/glib/glib-Testing.html +647 -189
- data/vendor/local/share/gtk-doc/html/glib/glib-The-Main-Event-Loop.html +592 -210
- data/vendor/local/share/gtk-doc/html/glib/glib-Thread-Pools.html +162 -100
- data/vendor/local/share/gtk-doc/html/glib/glib-Threads.html +1345 -1882
- data/vendor/local/share/gtk-doc/html/glib/glib-Timers.html +33 -23
- data/vendor/local/share/gtk-doc/html/glib/glib-Trash-Stacks.html +40 -18
- data/vendor/local/share/gtk-doc/html/glib/glib-Type-Conversion-Macros.html +42 -25
- data/vendor/local/share/gtk-doc/html/glib/glib-UNIX-specific-utilities-and-integration.html +334 -0
- data/vendor/local/share/gtk-doc/html/glib/glib-URI-Functions.html +55 -25
- data/vendor/local/share/gtk-doc/html/glib/glib-Unicode-Manipulation.html +852 -253
- data/vendor/local/share/gtk-doc/html/glib/glib-Version-Information.html +204 -41
- data/vendor/local/share/gtk-doc/html/glib/glib-Warnings-and-Assertions.html +146 -85
- data/vendor/local/share/gtk-doc/html/glib/glib-Windows-Compatibility-Functions.html +106 -44
- data/vendor/local/share/gtk-doc/html/glib/glib-building.html +298 -333
- data/vendor/local/share/gtk-doc/html/glib/glib-changes.html +11 -11
- data/vendor/local/share/gtk-doc/html/glib/glib-compiling.html +69 -39
- data/vendor/local/share/gtk-doc/html/glib/glib-core.html +13 -8
- data/vendor/local/share/gtk-doc/html/glib/glib-cross-compiling.html +10 -5
- data/vendor/local/share/gtk-doc/html/glib/glib-data-types.html +15 -38
- data/vendor/local/share/gtk-doc/html/glib/glib-fundamentals.html +9 -11
- data/vendor/local/share/gtk-doc/html/glib/glib-gettextize.html +13 -10
- data/vendor/local/share/gtk-doc/html/glib/glib-programming.html +76 -0
- data/vendor/local/share/gtk-doc/html/glib/glib-regex-syntax.html +58 -58
- data/vendor/local/share/gtk-doc/html/glib/glib-resources.html +12 -9
- data/vendor/local/share/gtk-doc/html/glib/glib-running.html +133 -112
- data/vendor/local/share/gtk-doc/html/glib/glib-utilities.html +24 -16
- data/vendor/local/share/gtk-doc/html/glib/glib.devhelp2 +434 -267
- data/vendor/local/share/gtk-doc/html/glib/glib.html +16 -24
- data/vendor/local/share/gtk-doc/html/glib/gtester-report.html +12 -9
- data/vendor/local/share/gtk-doc/html/glib/gtester.html +68 -12
- data/vendor/local/share/gtk-doc/html/glib/gvariant-format-strings.html +67 -25
- data/vendor/local/share/gtk-doc/html/glib/gvariant-text.html +15 -8
- data/vendor/local/share/gtk-doc/html/glib/index.html +66 -59
- data/vendor/local/share/gtk-doc/html/glib/index.sgml +383 -215
- data/vendor/local/share/gtk-doc/html/glib/tools.html +7 -7
- data/vendor/local/share/gtk-doc/html/gobject/GBinding.html +56 -25
- data/vendor/local/share/gtk-doc/html/gobject/GTypeModule.html +58 -19
- data/vendor/local/share/gtk-doc/html/gobject/GTypePlugin.html +39 -12
- data/vendor/local/share/gtk-doc/html/gobject/annotation-glossary.html +7 -7
- data/vendor/local/share/gtk-doc/html/gobject/api-index-2-10.html +8 -8
- data/vendor/local/share/gtk-doc/html/gobject/api-index-2-12.html +5 -5
- data/vendor/local/share/gtk-doc/html/gobject/api-index-2-14.html +5 -5
- data/vendor/local/share/gtk-doc/html/gobject/api-index-2-18.html +5 -5
- data/vendor/local/share/gtk-doc/html/gobject/api-index-2-2.html +5 -5
- data/vendor/local/share/gtk-doc/html/gobject/api-index-2-22.html +5 -5
- data/vendor/local/share/gtk-doc/html/gobject/api-index-2-24.html +5 -5
- data/vendor/local/share/gtk-doc/html/gobject/api-index-2-26.html +7 -7
- data/vendor/local/share/gtk-doc/html/gobject/api-index-2-28.html +8 -8
- data/vendor/local/share/gtk-doc/html/gobject/api-index-2-30.html +70 -0
- data/vendor/local/share/gtk-doc/html/gobject/api-index-2-32.html +81 -0
- data/vendor/local/share/gtk-doc/html/gobject/api-index-2-34.html +63 -0
- data/vendor/local/share/gtk-doc/html/gobject/api-index-2-4.html +9 -9
- data/vendor/local/share/gtk-doc/html/gobject/api-index-2-6.html +5 -5
- data/vendor/local/share/gtk-doc/html/gobject/api-index-2-8.html +7 -7
- data/vendor/local/share/gtk-doc/html/gobject/api-index-deprecated.html +94 -7
- data/vendor/local/share/gtk-doc/html/gobject/api-index-full.html +296 -76
- data/vendor/local/share/gtk-doc/html/gobject/ch01s02.html +10 -10
- data/vendor/local/share/gtk-doc/html/gobject/chapter-gobject.html +8 -8
- data/vendor/local/share/gtk-doc/html/gobject/chapter-gtype.html +13 -13
- data/vendor/local/share/gtk-doc/html/gobject/chapter-intro.html +6 -6
- data/vendor/local/share/gtk-doc/html/gobject/chapter-signal.html +14 -14
- data/vendor/local/share/gtk-doc/html/gobject/glib-genmarshal.html +120 -108
- data/vendor/local/share/gtk-doc/html/gobject/glib-mkenums.html +157 -133
- data/vendor/local/share/gtk-doc/html/gobject/gobject-Boxed-Types.html +171 -27
- data/vendor/local/share/gtk-doc/html/gobject/gobject-Closures.html +741 -86
- data/vendor/local/share/gtk-doc/html/gobject/gobject-Enumeration-and-Flag-Types.html +113 -41
- data/vendor/local/share/gtk-doc/html/gobject/gobject-GParamSpec.html +182 -65
- data/vendor/local/share/gtk-doc/html/gobject/gobject-Generic-values.html +124 -37
- data/vendor/local/share/gtk-doc/html/gobject/gobject-Signals.html +365 -136
- data/vendor/local/share/gtk-doc/html/gobject/gobject-Standard-Parameter-and-Value-Types.html +837 -244
- data/vendor/local/share/gtk-doc/html/gobject/gobject-The-Base-Object-Type.html +773 -102
- data/vendor/local/share/gtk-doc/html/gobject/gobject-Type-Information.html +545 -158
- data/vendor/local/share/gtk-doc/html/gobject/gobject-Value-arrays.html +149 -34
- data/vendor/local/share/gtk-doc/html/gobject/gobject-Varargs-Value-Collection.html +26 -11
- data/vendor/local/share/gtk-doc/html/gobject/gobject-memory.html +4 -4
- data/vendor/local/share/gtk-doc/html/gobject/gobject-properties.html +226 -105
- data/vendor/local/share/gtk-doc/html/gobject/gobject-query.html +29 -18
- data/vendor/local/share/gtk-doc/html/gobject/gobject.devhelp2 +92 -34
- data/vendor/local/share/gtk-doc/html/gobject/gtype-conventions.html +11 -10
- data/vendor/local/share/gtk-doc/html/gobject/gtype-instantiable-classed.html +10 -9
- data/vendor/local/share/gtk-doc/html/gobject/gtype-non-instantiable-classed.html +104 -42
- data/vendor/local/share/gtk-doc/html/gobject/gtype-non-instantiable.html +4 -4
- data/vendor/local/share/gtk-doc/html/gobject/howto-gobject-chainup.html +8 -8
- data/vendor/local/share/gtk-doc/html/gobject/howto-gobject-code.html +4 -4
- data/vendor/local/share/gtk-doc/html/gobject/howto-gobject-construction.html +68 -21
- data/vendor/local/share/gtk-doc/html/gobject/howto-gobject-destruction.html +3 -3
- data/vendor/local/share/gtk-doc/html/gobject/howto-gobject-methods.html +7 -7
- data/vendor/local/share/gtk-doc/html/gobject/howto-gobject.html +11 -11
- data/vendor/local/share/gtk-doc/html/gobject/howto-interface-implement.html +33 -18
- data/vendor/local/share/gtk-doc/html/gobject/howto-interface-override.html +135 -0
- data/vendor/local/share/gtk-doc/html/gobject/howto-interface-prerequisite.html +123 -0
- data/vendor/local/share/gtk-doc/html/gobject/howto-interface-properties.html +27 -39
- data/vendor/local/share/gtk-doc/html/gobject/howto-interface.html +40 -51
- data/vendor/local/share/gtk-doc/html/gobject/howto-signals.html +8 -8
- data/vendor/local/share/gtk-doc/html/gobject/index.html +19 -15
- data/vendor/local/share/gtk-doc/html/gobject/index.sgml +59 -3
- data/vendor/local/share/gtk-doc/html/gobject/pr01.html +6 -6
- data/vendor/local/share/gtk-doc/html/gobject/pt01.html +7 -7
- data/vendor/local/share/gtk-doc/html/gobject/pt02.html +12 -11
- data/vendor/local/share/gtk-doc/html/gobject/pt03.html +4 -4
- data/vendor/local/share/gtk-doc/html/gobject/rn01.html +5 -5
- data/vendor/local/share/gtk-doc/html/gobject/rn02.html +4 -4
- data/vendor/local/share/gtk-doc/html/gobject/signal.html +16 -15
- data/vendor/local/share/gtk-doc/html/gobject/tools-ginspector.html +3 -3
- data/vendor/local/share/gtk-doc/html/gobject/tools-gob.html +3 -3
- data/vendor/local/share/gtk-doc/html/gobject/tools-gtkdoc.html +3 -3
- data/vendor/local/share/gtk-doc/html/gobject/tools-refdb.html +3 -3
- data/vendor/local/share/gtk-doc/html/gobject/tools-vala.html +3 -3
- data/vendor/local/share/info/dir +40 -0
- data/vendor/local/share/info/gmp.info +183 -0
- data/vendor/local/share/info/gmp.info-1 +7078 -0
- data/vendor/local/share/info/gmp.info-2 +3513 -0
- data/vendor/local/share/info/gnutls-client-server-use-case.png +0 -0
- data/vendor/local/share/info/gnutls-guile.info +1580 -0
- data/vendor/local/share/info/gnutls-handshake-sequence.png +0 -0
- data/vendor/local/share/info/gnutls-handshake-state.png +0 -0
- data/vendor/local/share/info/gnutls-internals.png +0 -0
- data/vendor/local/share/info/gnutls-layers.png +0 -0
- data/vendor/local/share/info/gnutls-modauth.png +0 -0
- data/vendor/local/share/info/gnutls-pgp.png +0 -0
- data/vendor/local/share/info/gnutls-x509.png +0 -0
- data/vendor/local/share/info/gnutls.info +1237 -683
- data/vendor/local/share/info/gnutls.info-1 +5355 -8447
- data/vendor/local/share/info/gnutls.info-2 +9995 -5771
- data/vendor/local/share/info/gnutls.info-3 +8788 -1871
- data/vendor/local/share/info/gnutls.info-4 +5085 -0
- data/vendor/local/share/info/nettle.info +3355 -0
- data/vendor/local/share/info/pkcs11-vision.png +0 -0
- data/vendor/local/share/license/glib-networking/COPYING +9 -10
- data/vendor/local/share/license/glib/AUTHORS +40 -0
- data/vendor/local/share/license/glib/COPYING +482 -0
- data/vendor/local/share/license/gmp/AUTHORS +79 -0
- data/vendor/local/share/license/gmp/COPYING +674 -0
- data/vendor/local/share/license/gmp/COPYING.LIB +165 -0
- data/vendor/local/share/license/gnutls/AUTHORS +92 -0
- data/vendor/local/share/license/gnutls/COPYING +674 -0
- data/vendor/local/share/license/nettle/AUTHORS +1 -0
- data/vendor/local/share/license/nettle/COPYING.LIB +510 -0
- data/vendor/local/share/locale/af/LC_MESSAGES/glib20.mo +0 -0
- data/vendor/local/share/locale/am/LC_MESSAGES/glib20.mo +0 -0
- data/vendor/local/share/locale/ar/LC_MESSAGES/glib-networking.mo +0 -0
- data/vendor/local/share/locale/ar/LC_MESSAGES/glib20.mo +0 -0
- data/vendor/local/share/locale/as/LC_MESSAGES/glib-networking.mo +0 -0
- data/vendor/local/share/locale/as/LC_MESSAGES/glib20.mo +0 -0
- data/vendor/local/share/locale/ast/LC_MESSAGES/glib20.mo +0 -0
- data/vendor/local/share/locale/az/LC_MESSAGES/glib20.mo +0 -0
- data/vendor/local/share/locale/be/LC_MESSAGES/glib-networking.mo +0 -0
- data/vendor/local/share/locale/be/LC_MESSAGES/glib20.mo +0 -0
- data/vendor/local/share/locale/be@latin/LC_MESSAGES/glib20.mo +0 -0
- data/vendor/local/share/locale/bg/LC_MESSAGES/glib-networking.mo +0 -0
- data/vendor/local/share/locale/bg/LC_MESSAGES/glib20.mo +0 -0
- data/vendor/local/share/locale/bn/LC_MESSAGES/glib20.mo +0 -0
- data/vendor/local/share/locale/bn_IN/LC_MESSAGES/glib20.mo +0 -0
- data/vendor/local/share/locale/bs/LC_MESSAGES/glib20.mo +0 -0
- data/vendor/local/share/locale/ca/LC_MESSAGES/glib-networking.mo +0 -0
- data/vendor/local/share/locale/ca/LC_MESSAGES/glib20.mo +0 -0
- data/vendor/local/share/locale/ca@valencia/LC_MESSAGES/glib-networking.mo +0 -0
- data/vendor/local/share/locale/ca@valencia/LC_MESSAGES/glib20.mo +0 -0
- data/vendor/local/share/locale/cs/LC_MESSAGES/glib-networking.mo +0 -0
- data/vendor/local/share/locale/cs/LC_MESSAGES/glib20.mo +0 -0
- data/vendor/local/share/locale/cs/LC_MESSAGES/gnutls.mo +0 -0
- data/vendor/local/share/locale/cy/LC_MESSAGES/glib20.mo +0 -0
- data/vendor/local/share/locale/da/LC_MESSAGES/glib-networking.mo +0 -0
- data/vendor/local/share/locale/da/LC_MESSAGES/glib20.mo +0 -0
- data/vendor/local/share/locale/de/LC_MESSAGES/glib-networking.mo +0 -0
- data/vendor/local/share/locale/de/LC_MESSAGES/glib20.mo +0 -0
- data/vendor/local/share/locale/de/LC_MESSAGES/gnutls.mo +0 -0
- data/vendor/local/share/locale/dz/LC_MESSAGES/glib20.mo +0 -0
- data/vendor/local/share/locale/el/LC_MESSAGES/glib-networking.mo +0 -0
- data/vendor/local/share/locale/el/LC_MESSAGES/glib20.mo +0 -0
- data/vendor/local/share/locale/en@boldquot/LC_MESSAGES/gnutls.mo +0 -0
- data/vendor/local/share/locale/en@quot/LC_MESSAGES/gnutls.mo +0 -0
- data/vendor/local/share/locale/en@shaw/LC_MESSAGES/glib20.mo +0 -0
- data/vendor/local/share/locale/en_CA/LC_MESSAGES/glib20.mo +0 -0
- data/vendor/local/share/locale/en_GB/LC_MESSAGES/glib-networking.mo +0 -0
- data/vendor/local/share/locale/en_GB/LC_MESSAGES/glib20.mo +0 -0
- data/vendor/local/share/locale/eo/LC_MESSAGES/glib20.mo +0 -0
- data/vendor/local/share/locale/es/LC_MESSAGES/glib-networking.mo +0 -0
- data/vendor/local/share/locale/es/LC_MESSAGES/glib20.mo +0 -0
- data/vendor/local/share/locale/et/LC_MESSAGES/glib-networking.mo +0 -0
- data/vendor/local/share/locale/et/LC_MESSAGES/glib20.mo +0 -0
- data/vendor/local/share/locale/eu/LC_MESSAGES/glib-networking.mo +0 -0
- data/vendor/local/share/locale/eu/LC_MESSAGES/glib20.mo +0 -0
- data/vendor/local/share/locale/fa/LC_MESSAGES/glib-networking.mo +0 -0
- data/vendor/local/share/locale/fa/LC_MESSAGES/glib20.mo +0 -0
- data/vendor/local/share/locale/fi/LC_MESSAGES/glib-networking.mo +0 -0
- data/vendor/local/share/locale/fi/LC_MESSAGES/glib20.mo +0 -0
- data/vendor/local/share/locale/fi/LC_MESSAGES/gnutls.mo +0 -0
- data/vendor/local/share/locale/fr/LC_MESSAGES/glib-networking.mo +0 -0
- data/vendor/local/share/locale/fr/LC_MESSAGES/glib20.mo +0 -0
- data/vendor/local/share/locale/fr/LC_MESSAGES/gnutls.mo +0 -0
- data/vendor/local/share/locale/ga/LC_MESSAGES/glib20.mo +0 -0
- data/vendor/local/share/locale/gl/LC_MESSAGES/glib-networking.mo +0 -0
- data/vendor/local/share/locale/gl/LC_MESSAGES/glib20.mo +0 -0
- data/vendor/local/share/locale/gu/LC_MESSAGES/glib20.mo +0 -0
- data/vendor/local/share/locale/he/LC_MESSAGES/glib-networking.mo +0 -0
- data/vendor/local/share/locale/he/LC_MESSAGES/glib20.mo +0 -0
- data/vendor/local/share/locale/hi/LC_MESSAGES/glib-networking.mo +0 -0
- data/vendor/local/share/locale/hi/LC_MESSAGES/glib20.mo +0 -0
- data/vendor/local/share/locale/hr/LC_MESSAGES/glib20.mo +0 -0
- data/vendor/local/share/locale/hu/LC_MESSAGES/glib-networking.mo +0 -0
- data/vendor/local/share/locale/hu/LC_MESSAGES/glib20.mo +0 -0
- data/vendor/local/share/locale/hy/LC_MESSAGES/glib20.mo +0 -0
- data/vendor/local/share/locale/id/LC_MESSAGES/glib-networking.mo +0 -0
- data/vendor/local/share/locale/id/LC_MESSAGES/glib20.mo +0 -0
- data/vendor/local/share/locale/is/LC_MESSAGES/glib20.mo +0 -0
- data/vendor/local/share/locale/it/LC_MESSAGES/glib-networking.mo +0 -0
- data/vendor/local/share/locale/it/LC_MESSAGES/glib20.mo +0 -0
- data/vendor/local/share/locale/it/LC_MESSAGES/gnutls.mo +0 -0
- data/vendor/local/share/locale/ja/LC_MESSAGES/glib-networking.mo +0 -0
- data/vendor/local/share/locale/ja/LC_MESSAGES/glib20.mo +0 -0
- data/vendor/local/share/locale/ka/LC_MESSAGES/glib20.mo +0 -0
- data/vendor/local/share/locale/kk/LC_MESSAGES/glib20.mo +0 -0
- data/vendor/local/share/locale/km/LC_MESSAGES/glib-networking.mo +0 -0
- data/vendor/local/share/locale/kn/LC_MESSAGES/glib20.mo +0 -0
- data/vendor/local/share/locale/ko/LC_MESSAGES/glib-networking.mo +0 -0
- data/vendor/local/share/locale/ko/LC_MESSAGES/glib20.mo +0 -0
- data/vendor/local/share/locale/ku/LC_MESSAGES/glib20.mo +0 -0
- data/vendor/local/share/locale/lt/LC_MESSAGES/glib-networking.mo +0 -0
- data/vendor/local/share/locale/lt/LC_MESSAGES/glib20.mo +0 -0
- data/vendor/local/share/locale/lv/LC_MESSAGES/glib-networking.mo +0 -0
- data/vendor/local/share/locale/lv/LC_MESSAGES/glib20.mo +0 -0
- data/vendor/local/share/locale/mai/LC_MESSAGES/glib20.mo +0 -0
- data/vendor/local/share/locale/mg/LC_MESSAGES/glib20.mo +0 -0
- data/vendor/local/share/locale/mk/LC_MESSAGES/glib20.mo +0 -0
- data/vendor/local/share/locale/ml/LC_MESSAGES/glib-networking.mo +0 -0
- data/vendor/local/share/locale/ml/LC_MESSAGES/glib20.mo +0 -0
- data/vendor/local/share/locale/mn/LC_MESSAGES/glib20.mo +0 -0
- data/vendor/local/share/locale/mr/LC_MESSAGES/glib-networking.mo +0 -0
- data/vendor/local/share/locale/mr/LC_MESSAGES/glib20.mo +0 -0
- data/vendor/local/share/locale/ms/LC_MESSAGES/glib20.mo +0 -0
- data/vendor/local/share/locale/ms/LC_MESSAGES/gnutls.mo +0 -0
- data/vendor/local/share/locale/nb/LC_MESSAGES/glib-networking.mo +0 -0
- data/vendor/local/share/locale/nb/LC_MESSAGES/glib20.mo +0 -0
- data/vendor/local/share/locale/nds/LC_MESSAGES/glib20.mo +0 -0
- data/vendor/local/share/locale/ne/LC_MESSAGES/glib20.mo +0 -0
- data/vendor/local/share/locale/nl/LC_MESSAGES/glib-networking.mo +0 -0
- data/vendor/local/share/locale/nl/LC_MESSAGES/glib20.mo +0 -0
- data/vendor/local/share/locale/nl/LC_MESSAGES/gnutls.mo +0 -0
- data/vendor/local/share/locale/nn/LC_MESSAGES/glib20.mo +0 -0
- data/vendor/local/share/locale/oc/LC_MESSAGES/glib20.mo +0 -0
- data/vendor/local/share/locale/or/LC_MESSAGES/glib-networking.mo +0 -0
- data/vendor/local/share/locale/or/LC_MESSAGES/glib20.mo +0 -0
- data/vendor/local/share/locale/pa/LC_MESSAGES/glib-networking.mo +0 -0
- data/vendor/local/share/locale/pa/LC_MESSAGES/glib20.mo +0 -0
- data/vendor/local/share/locale/pl/LC_MESSAGES/glib-networking.mo +0 -0
- data/vendor/local/share/locale/pl/LC_MESSAGES/glib20.mo +0 -0
- data/vendor/local/share/locale/pl/LC_MESSAGES/gnutls.mo +0 -0
- data/vendor/local/share/locale/ps/LC_MESSAGES/glib20.mo +0 -0
- data/vendor/local/share/locale/pt/LC_MESSAGES/glib-networking.mo +0 -0
- data/vendor/local/share/locale/pt/LC_MESSAGES/glib20.mo +0 -0
- data/vendor/local/share/locale/pt_BR/LC_MESSAGES/glib-networking.mo +0 -0
- data/vendor/local/share/locale/pt_BR/LC_MESSAGES/glib20.mo +0 -0
- data/vendor/local/share/locale/ro/LC_MESSAGES/glib20.mo +0 -0
- data/vendor/local/share/locale/ru/LC_MESSAGES/glib-networking.mo +0 -0
- data/vendor/local/share/locale/ru/LC_MESSAGES/glib20.mo +0 -0
- data/vendor/local/share/locale/rw/LC_MESSAGES/glib20.mo +0 -0
- data/vendor/local/share/locale/si/LC_MESSAGES/glib20.mo +0 -0
- data/vendor/local/share/locale/sk/LC_MESSAGES/glib-networking.mo +0 -0
- data/vendor/local/share/locale/sk/LC_MESSAGES/glib20.mo +0 -0
- data/vendor/local/share/locale/sl/LC_MESSAGES/glib-networking.mo +0 -0
- data/vendor/local/share/locale/sl/LC_MESSAGES/glib20.mo +0 -0
- data/vendor/local/share/locale/sq/LC_MESSAGES/glib20.mo +0 -0
- data/vendor/local/share/locale/sr/LC_MESSAGES/glib-networking.mo +0 -0
- data/vendor/local/share/locale/sr/LC_MESSAGES/glib20.mo +0 -0
- data/vendor/local/share/locale/sr@ije/LC_MESSAGES/glib20.mo +0 -0
- data/vendor/local/share/locale/sr@latin/LC_MESSAGES/glib-networking.mo +0 -0
- data/vendor/local/share/locale/sr@latin/LC_MESSAGES/glib20.mo +0 -0
- data/vendor/local/share/locale/sv/LC_MESSAGES/glib-networking.mo +0 -0
- data/vendor/local/share/locale/sv/LC_MESSAGES/glib20.mo +0 -0
- data/vendor/local/share/locale/sv/LC_MESSAGES/gnutls.mo +0 -0
- data/vendor/local/share/locale/ta/LC_MESSAGES/glib-networking.mo +0 -0
- data/vendor/local/share/locale/ta/LC_MESSAGES/glib20.mo +0 -0
- data/vendor/local/share/locale/te/LC_MESSAGES/glib-networking.mo +0 -0
- data/vendor/local/share/locale/te/LC_MESSAGES/glib20.mo +0 -0
- data/vendor/local/share/locale/th/LC_MESSAGES/glib-networking.mo +0 -0
- data/vendor/local/share/locale/th/LC_MESSAGES/glib20.mo +0 -0
- data/vendor/local/share/locale/tl/LC_MESSAGES/glib20.mo +0 -0
- data/vendor/local/share/locale/tr/LC_MESSAGES/glib-networking.mo +0 -0
- data/vendor/local/share/locale/tr/LC_MESSAGES/glib20.mo +0 -0
- data/vendor/local/share/locale/tt/LC_MESSAGES/glib20.mo +0 -0
- data/vendor/local/share/locale/ug/LC_MESSAGES/glib20.mo +0 -0
- data/vendor/local/share/locale/uk/LC_MESSAGES/glib-networking.mo +0 -0
- data/vendor/local/share/locale/uk/LC_MESSAGES/glib20.mo +0 -0
- data/vendor/local/share/locale/uk/LC_MESSAGES/gnutls.mo +0 -0
- data/vendor/local/share/locale/vi/LC_MESSAGES/glib-networking.mo +0 -0
- data/vendor/local/share/locale/vi/LC_MESSAGES/glib20.mo +0 -0
- data/vendor/local/share/locale/vi/LC_MESSAGES/gnutls.mo +0 -0
- data/vendor/local/share/locale/wa/LC_MESSAGES/glib20.mo +0 -0
- data/vendor/local/share/locale/xh/LC_MESSAGES/glib20.mo +0 -0
- data/vendor/local/share/locale/yi/LC_MESSAGES/glib20.mo +0 -0
- data/vendor/local/share/locale/zh_CN/LC_MESSAGES/glib-networking.mo +0 -0
- data/vendor/local/share/locale/zh_CN/LC_MESSAGES/glib20.mo +0 -0
- data/vendor/local/share/locale/zh_CN/LC_MESSAGES/gnutls.mo +0 -0
- data/vendor/local/share/locale/zh_HK/LC_MESSAGES/glib-networking.mo +0 -0
- data/vendor/local/share/locale/zh_HK/LC_MESSAGES/glib20.mo +0 -0
- data/vendor/local/share/locale/zh_TW/LC_MESSAGES/glib-networking.mo +0 -0
- data/vendor/local/share/locale/zh_TW/LC_MESSAGES/glib20.mo +0 -0
- data/vendor/local/share/man/man1/certtool.1 +644 -130
- data/vendor/local/share/man/man1/gdbus-codegen.1 +751 -0
- data/vendor/local/share/man/man1/gdbus.1 +93 -15
- data/vendor/local/share/man/man1/gio-querymodules.1 +6 -6
- data/vendor/local/share/man/man1/glib-compile-resources.1 +167 -0
- data/vendor/local/share/man/man1/glib-compile-schemas.1 +20 -15
- data/vendor/local/share/man/man1/glib-genmarshal.1 +88 -70
- data/vendor/local/share/man/man1/glib-gettextize.1 +7 -7
- data/vendor/local/share/man/man1/glib-mkenums.1 +110 -101
- data/vendor/local/share/man/man1/gnutls-cli-debug.1 +133 -27
- data/vendor/local/share/man/man1/gnutls-cli.1 +308 -154
- data/vendor/local/share/man/man1/gnutls-serv.1 +416 -126
- data/vendor/local/share/man/man1/gobject-query.1 +13 -13
- data/vendor/local/share/man/man1/gresource.1 +95 -0
- data/vendor/local/share/man/man1/gsettings.1 +22 -10
- data/vendor/local/share/man/man1/gtester-report.1 +53 -0
- data/vendor/local/share/man/man1/gtester.1 +142 -0
- data/vendor/local/share/man/man1/ocsptool.1 +308 -0
- data/vendor/local/share/man/man1/p11tool.1 +230 -0
- data/vendor/local/share/man/man1/psktool.1 +96 -26
- data/vendor/local/share/man/man1/srptool.1 +117 -59
- data/vendor/local/share/man/man1/tpmtool.1 +197 -0
- data/vendor/local/share/man/man3/ffi.3 +31 -0
- data/vendor/local/share/man/man3/ffi_call.3 +103 -0
- data/vendor/local/share/man/man3/ffi_prep_cif.3 +66 -0
- data/vendor/local/share/man/man3/gnutls_alert_get.3 +19 -12
- data/vendor/local/share/man/man3/gnutls_alert_get_name.3 +16 -7
- data/vendor/local/share/man/man3/gnutls_alert_get_strname.3 +46 -0
- data/vendor/local/share/man/man3/gnutls_alert_send.3 +15 -6
- data/vendor/local/share/man/man3/gnutls_alert_send_appropriate.3 +15 -6
- data/vendor/local/share/man/man3/gnutls_anon_allocate_client_credentials.3 +18 -9
- data/vendor/local/share/man/man3/gnutls_anon_allocate_server_credentials.3 +18 -9
- data/vendor/local/share/man/man3/gnutls_anon_free_client_credentials.3 +16 -7
- data/vendor/local/share/man/man3/gnutls_anon_free_server_credentials.3 +16 -7
- data/vendor/local/share/man/man3/gnutls_anon_set_params_function.3 +17 -8
- data/vendor/local/share/man/man3/gnutls_anon_set_server_dh_params.3 +18 -9
- data/vendor/local/share/man/man3/gnutls_anon_set_server_params_function.3 +17 -8
- data/vendor/local/share/man/man3/gnutls_auth_client_get_type.3 +16 -7
- data/vendor/local/share/man/man3/gnutls_auth_get_type.3 +19 -10
- data/vendor/local/share/man/man3/gnutls_auth_server_get_type.3 +16 -7
- data/vendor/local/share/man/man3/gnutls_bye.3 +23 -15
- data/vendor/local/share/man/man3/gnutls_certificate_activation_time_peers.3 +17 -6
- data/vendor/local/share/man/man3/gnutls_certificate_allocate_credentials.3 +18 -9
- data/vendor/local/share/man/man3/gnutls_certificate_client_get_request_status.3 +16 -7
- data/vendor/local/share/man/man3/gnutls_certificate_expiration_time_peers.3 +17 -6
- data/vendor/local/share/man/man3/gnutls_certificate_free_ca_names.3 +24 -12
- data/vendor/local/share/man/man3/gnutls_certificate_free_cas.3 +20 -11
- data/vendor/local/share/man/man3/gnutls_certificate_free_credentials.3 +20 -11
- data/vendor/local/share/man/man3/gnutls_certificate_free_crls.3 +16 -7
- data/vendor/local/share/man/man3/gnutls_certificate_free_keys.3 +16 -7
- data/vendor/local/share/man/man3/gnutls_certificate_get_issuer.3 +53 -0
- data/vendor/local/share/man/man3/gnutls_certificate_get_ours.3 +20 -11
- data/vendor/local/share/man/man3/gnutls_certificate_get_peers.3 +18 -9
- data/vendor/local/share/man/man3/gnutls_certificate_get_peers_subkey_id.3 +48 -0
- data/vendor/local/share/man/man3/gnutls_certificate_send_x509_rdn_sequence.3 +17 -8
- data/vendor/local/share/man/man3/gnutls_certificate_server_set_request.3 +21 -13
- data/vendor/local/share/man/man3/gnutls_certificate_set_dh_params.3 +18 -9
- data/vendor/local/share/man/man3/gnutls_certificate_set_key.3 +63 -0
- data/vendor/local/share/man/man3/gnutls_certificate_set_ocsp_status_request_file.3 +54 -0
- data/vendor/local/share/man/man3/gnutls_certificate_set_ocsp_status_request_function.3 +63 -0
- data/vendor/local/share/man/man3/gnutls_certificate_set_openpgp_key.3 +30 -15
- data/vendor/local/share/man/man3/gnutls_certificate_set_openpgp_key_file.3 +20 -12
- data/vendor/local/share/man/man3/gnutls_certificate_set_openpgp_key_file2.3 +24 -14
- data/vendor/local/share/man/man3/gnutls_certificate_set_openpgp_key_mem.3 +24 -13
- data/vendor/local/share/man/man3/gnutls_certificate_set_openpgp_key_mem2.3 +26 -16
- data/vendor/local/share/man/man3/gnutls_certificate_set_openpgp_keyring_file.3 +18 -8
- data/vendor/local/share/man/man3/gnutls_certificate_set_openpgp_keyring_mem.3 +21 -11
- data/vendor/local/share/man/man3/gnutls_certificate_set_params_function.3 +17 -8
- data/vendor/local/share/man/man3/gnutls_certificate_set_pin_function.3 +53 -0
- data/vendor/local/share/man/man3/gnutls_certificate_set_retrieve_function.3 +74 -0
- data/vendor/local/share/man/man3/gnutls_certificate_set_retrieve_function2.3 +77 -0
- data/vendor/local/share/man/man3/gnutls_certificate_set_rsa_export_params.3 +18 -9
- data/vendor/local/share/man/man3/gnutls_certificate_set_verify_flags.3 +20 -11
- data/vendor/local/share/man/man3/gnutls_certificate_set_verify_function.3 +60 -0
- data/vendor/local/share/man/man3/gnutls_certificate_set_verify_limits.3 +17 -8
- data/vendor/local/share/man/man3/gnutls_certificate_set_x509_crl.3 +17 -8
- data/vendor/local/share/man/man3/gnutls_certificate_set_x509_crl_file.3 +19 -10
- data/vendor/local/share/man/man3/gnutls_certificate_set_x509_crl_mem.3 +19 -10
- data/vendor/local/share/man/man3/gnutls_certificate_set_x509_key.3 +22 -11
- data/vendor/local/share/man/man3/gnutls_certificate_set_x509_key_file.3 +28 -16
- data/vendor/local/share/man/man3/gnutls_certificate_set_x509_key_mem.3 +24 -21
- data/vendor/local/share/man/man3/gnutls_certificate_set_x509_simple_pkcs12_file.3 +20 -14
- data/vendor/local/share/man/man3/gnutls_certificate_set_x509_simple_pkcs12_mem.3 +69 -0
- data/vendor/local/share/man/man3/gnutls_certificate_set_x509_system_trust.3 +51 -0
- data/vendor/local/share/man/man3/gnutls_certificate_set_x509_trust.3 +18 -8
- data/vendor/local/share/man/man3/gnutls_certificate_set_x509_trust_file.3 +23 -10
- data/vendor/local/share/man/man3/gnutls_certificate_set_x509_trust_mem.3 +21 -12
- data/vendor/local/share/man/man3/gnutls_certificate_type_get.3 +15 -6
- data/vendor/local/share/man/man3/gnutls_certificate_type_get_id.3 +19 -10
- data/vendor/local/share/man/man3/gnutls_certificate_type_get_name.3 +15 -6
- data/vendor/local/share/man/man3/gnutls_certificate_type_list.3 +17 -10
- data/vendor/local/share/man/man3/gnutls_certificate_type_set_priority.3 +17 -8
- data/vendor/local/share/man/man3/gnutls_certificate_verification_status_print.3 +56 -0
- data/vendor/local/share/man/man3/gnutls_certificate_verify_peers2.3 +28 -22
- data/vendor/local/share/man/man3/gnutls_certificate_verify_peers3.3 +64 -0
- data/vendor/local/share/man/man3/gnutls_check_version.3 +24 -17
- data/vendor/local/share/man/man3/gnutls_cipher_add_auth.3 +53 -0
- data/vendor/local/share/man/man3/gnutls_cipher_decrypt.3 +51 -0
- data/vendor/local/share/man/man3/gnutls_cipher_decrypt2.3 +55 -0
- data/vendor/local/share/man/man3/gnutls_cipher_deinit.3 +45 -0
- data/vendor/local/share/man/man3/gnutls_cipher_encrypt.3 +51 -0
- data/vendor/local/share/man/man3/gnutls_cipher_encrypt2.3 +55 -0
- data/vendor/local/share/man/man3/gnutls_cipher_get.3 +16 -7
- data/vendor/local/share/man/man3/gnutls_cipher_get_block_size.3 +46 -0
- data/vendor/local/share/man/man3/gnutls_cipher_get_id.3 +18 -8
- data/vendor/local/share/man/man3/gnutls_cipher_get_key_size.3 +15 -6
- data/vendor/local/share/man/man3/gnutls_cipher_get_name.3 +15 -6
- data/vendor/local/share/man/man3/gnutls_cipher_init.3 +55 -0
- data/vendor/local/share/man/man3/gnutls_cipher_list.3 +18 -7
- data/vendor/local/share/man/man3/gnutls_cipher_set_iv.3 +49 -0
- data/vendor/local/share/man/man3/gnutls_cipher_set_priority.3 +22 -14
- data/vendor/local/share/man/man3/gnutls_cipher_suite_get_name.3 +15 -6
- data/vendor/local/share/man/man3/gnutls_cipher_suite_info.3 +19 -10
- data/vendor/local/share/man/man3/gnutls_cipher_tag.3 +52 -0
- data/vendor/local/share/man/man3/gnutls_compression_get.3 +15 -6
- data/vendor/local/share/man/man3/gnutls_compression_get_id.3 +18 -8
- data/vendor/local/share/man/man3/gnutls_compression_get_name.3 +15 -6
- data/vendor/local/share/man/man3/gnutls_compression_list.3 +16 -9
- data/vendor/local/share/man/man3/gnutls_compression_set_priority.3 +23 -14
- data/vendor/local/share/man/man3/gnutls_credentials_clear.3 +15 -6
- data/vendor/local/share/man/man3/gnutls_credentials_set.3 +34 -19
- data/vendor/local/share/man/man3/gnutls_db_check_entry.3 +16 -7
- data/vendor/local/share/man/man3/gnutls_db_get_ptr.3 +15 -6
- data/vendor/local/share/man/man3/gnutls_db_remove_session.3 +15 -6
- data/vendor/local/share/man/man3/gnutls_db_set_cache_expiration.3 +16 -7
- data/vendor/local/share/man/man3/gnutls_db_set_ptr.3 +15 -6
- data/vendor/local/share/man/man3/gnutls_db_set_remove_function.3 +16 -7
- data/vendor/local/share/man/man3/gnutls_db_set_retrieve_function.3 +16 -7
- data/vendor/local/share/man/man3/gnutls_db_set_store_function.3 +18 -9
- data/vendor/local/share/man/man3/gnutls_deinit.3 +16 -7
- data/vendor/local/share/man/man3/gnutls_dh_get_group.3 +18 -9
- data/vendor/local/share/man/man3/gnutls_dh_get_peers_public_bits.3 +18 -10
- data/vendor/local/share/man/man3/gnutls_dh_get_prime_bits.3 +22 -10
- data/vendor/local/share/man/man3/gnutls_dh_get_pubkey.3 +18 -9
- data/vendor/local/share/man/man3/gnutls_dh_get_secret_bits.3 +18 -9
- data/vendor/local/share/man/man3/gnutls_dh_params_cpy.3 +18 -6
- data/vendor/local/share/man/man3/gnutls_dh_params_deinit.3 +15 -6
- data/vendor/local/share/man/man3/gnutls_dh_params_export2_pkcs3.3 +54 -0
- data/vendor/local/share/man/man3/gnutls_dh_params_export_pkcs3.3 +18 -9
- data/vendor/local/share/man/man3/gnutls_dh_params_export_raw.3 +23 -10
- data/vendor/local/share/man/man3/gnutls_dh_params_generate2.3 +22 -9
- data/vendor/local/share/man/man3/gnutls_dh_params_import_pkcs3.3 +18 -9
- data/vendor/local/share/man/man3/gnutls_dh_params_import_raw.3 +21 -9
- data/vendor/local/share/man/man3/gnutls_dh_params_init.3 +18 -6
- data/vendor/local/share/man/man3/gnutls_dh_set_prime_bits.3 +21 -7
- data/vendor/local/share/man/man3/gnutls_dtls_cookie_send.3 +61 -0
- data/vendor/local/share/man/man3/gnutls_dtls_cookie_verify.3 +59 -0
- data/vendor/local/share/man/man3/gnutls_dtls_get_data_mtu.3 +48 -0
- data/vendor/local/share/man/man3/gnutls_dtls_get_mtu.3 +49 -0
- data/vendor/local/share/man/man3/gnutls_dtls_get_timeout.3 +50 -0
- data/vendor/local/share/man/man3/gnutls_dtls_prestate_set.3 +48 -0
- data/vendor/local/share/man/man3/gnutls_dtls_set_data_mtu.3 +54 -0
- data/vendor/local/share/man/man3/gnutls_dtls_set_mtu.3 +50 -0
- data/vendor/local/share/man/man3/gnutls_dtls_set_timeouts.3 +58 -0
- data/vendor/local/share/man/man3/gnutls_ecc_curve_get.3 +48 -0
- data/vendor/local/share/man/man3/gnutls_ecc_curve_get_name.3 +47 -0
- data/vendor/local/share/man/man3/gnutls_ecc_curve_get_size.3 +46 -0
- data/vendor/local/share/man/man3/gnutls_ecc_curve_list.3 +47 -0
- data/vendor/local/share/man/man3/gnutls_error_is_fatal.3 +26 -16
- data/vendor/local/share/man/man3/gnutls_error_to_alert.3 +16 -7
- data/vendor/local/share/man/man3/gnutls_fingerprint.3 +15 -6
- data/vendor/local/share/man/man3/gnutls_global_deinit.3 +15 -6
- data/vendor/local/share/man/man3/gnutls_global_init.3 +23 -18
- data/vendor/local/share/man/man3/gnutls_global_set_audit_log_function.3 +50 -0
- data/vendor/local/share/man/man3/gnutls_global_set_log_function.3 +20 -11
- data/vendor/local/share/man/man3/gnutls_global_set_log_level.3 +20 -11
- data/vendor/local/share/man/man3/gnutls_global_set_mem_functions.3 +24 -14
- data/vendor/local/share/man/man3/gnutls_global_set_mutex.3 +56 -0
- data/vendor/local/share/man/man3/gnutls_global_set_time_function.3 +46 -0
- data/vendor/local/share/man/man3/gnutls_handshake.3 +20 -9
- data/vendor/local/share/man/man3/gnutls_handshake_get_last_in.3 +15 -6
- data/vendor/local/share/man/man3/gnutls_handshake_get_last_out.3 +15 -6
- data/vendor/local/share/man/man3/gnutls_handshake_set_max_packet_length.3 +15 -6
- data/vendor/local/share/man/man3/gnutls_handshake_set_post_client_hello_function.3 +18 -8
- data/vendor/local/share/man/man3/gnutls_handshake_set_private_extensions.3 +18 -11
- data/vendor/local/share/man/man3/gnutls_handshake_set_timeout.3 +49 -0
- data/vendor/local/share/man/man3/gnutls_hash.3 +51 -0
- data/vendor/local/share/man/man3/gnutls_hash_deinit.3 +47 -0
- data/vendor/local/share/man/man3/gnutls_hash_fast.3 +53 -0
- data/vendor/local/share/man/man3/gnutls_hash_get_len.3 +47 -0
- data/vendor/local/share/man/man3/gnutls_hash_init.3 +51 -0
- data/vendor/local/share/man/man3/gnutls_hash_output.3 +46 -0
- data/vendor/local/share/man/man3/gnutls_heartbeat_allowed.3 +49 -0
- data/vendor/local/share/man/man3/gnutls_heartbeat_enable.3 +47 -0
- data/vendor/local/share/man/man3/gnutls_heartbeat_get_timeout.3 +50 -0
- data/vendor/local/share/man/man3/gnutls_heartbeat_ping.3 +57 -0
- data/vendor/local/share/man/man3/gnutls_heartbeat_pong.3 +48 -0
- data/vendor/local/share/man/man3/gnutls_heartbeat_set_timeouts.3 +58 -0
- data/vendor/local/share/man/man3/gnutls_hex2bin.3 +20 -11
- data/vendor/local/share/man/man3/gnutls_hex_decode.3 +19 -10
- data/vendor/local/share/man/man3/gnutls_hex_encode.3 +15 -6
- data/vendor/local/share/man/man3/gnutls_hmac.3 +51 -0
- data/vendor/local/share/man/man3/gnutls_hmac_deinit.3 +47 -0
- data/vendor/local/share/man/man3/gnutls_hmac_fast.3 +57 -0
- data/vendor/local/share/man/man3/gnutls_hmac_get_len.3 +47 -0
- data/vendor/local/share/man/man3/gnutls_hmac_init.3 +55 -0
- data/vendor/local/share/man/man3/gnutls_hmac_output.3 +46 -0
- data/vendor/local/share/man/man3/gnutls_init.3 +27 -10
- data/vendor/local/share/man/man3/gnutls_key_generate.3 +50 -0
- data/vendor/local/share/man/man3/gnutls_kx_get.3 +15 -6
- data/vendor/local/share/man/man3/gnutls_kx_get_id.3 +18 -8
- data/vendor/local/share/man/man3/gnutls_kx_get_name.3 +15 -6
- data/vendor/local/share/man/man3/gnutls_kx_list.3 +18 -7
- data/vendor/local/share/man/man3/gnutls_kx_set_priority.3 +21 -12
- data/vendor/local/share/man/man3/gnutls_load_file.3 +51 -0
- data/vendor/local/share/man/man3/gnutls_mac_get.3 +15 -6
- data/vendor/local/share/man/man3/gnutls_mac_get_id.3 +20 -10
- data/vendor/local/share/man/man3/gnutls_mac_get_key_size.3 +15 -6
- data/vendor/local/share/man/man3/gnutls_mac_get_name.3 +15 -6
- data/vendor/local/share/man/man3/gnutls_mac_list.3 +18 -7
- data/vendor/local/share/man/man3/gnutls_mac_set_priority.3 +21 -12
- data/vendor/local/share/man/man3/gnutls_ocsp_req_add_cert.3 +55 -0
- data/vendor/local/share/man/man3/gnutls_ocsp_req_add_cert_id.3 +66 -0
- data/vendor/local/share/man/man3/gnutls_ocsp_req_deinit.3 +42 -0
- data/vendor/local/share/man/man3/gnutls_ocsp_req_export.3 +47 -0
- data/vendor/local/share/man/man3/gnutls_ocsp_req_get_cert_id.3 +70 -0
- data/vendor/local/share/man/man3/gnutls_ocsp_req_get_extension.3 +63 -0
- data/vendor/local/share/man/man3/gnutls_ocsp_req_get_nonce.3 +52 -0
- data/vendor/local/share/man/man3/gnutls_ocsp_req_get_version.3 +45 -0
- data/vendor/local/share/man/man3/gnutls_ocsp_req_import.3 +49 -0
- data/vendor/local/share/man/man3/gnutls_ocsp_req_init.3 +45 -0
- data/vendor/local/share/man/man3/gnutls_ocsp_req_print.3 +55 -0
- data/vendor/local/share/man/man3/gnutls_ocsp_req_randomize_nonce.3 +46 -0
- data/vendor/local/share/man/man3/gnutls_ocsp_req_set_extension.3 +53 -0
- data/vendor/local/share/man/man3/gnutls_ocsp_req_set_nonce.3 +51 -0
- data/vendor/local/share/man/man3/gnutls_ocsp_resp_check_crt.3 +50 -0
- data/vendor/local/share/man/man3/gnutls_ocsp_resp_deinit.3 +42 -0
- data/vendor/local/share/man/man3/gnutls_ocsp_resp_export.3 +47 -0
- data/vendor/local/share/man/man3/gnutls_ocsp_resp_get_certs.3 +60 -0
- data/vendor/local/share/man/man3/gnutls_ocsp_resp_get_extension.3 +63 -0
- data/vendor/local/share/man/man3/gnutls_ocsp_resp_get_nonce.3 +53 -0
- data/vendor/local/share/man/man3/gnutls_ocsp_resp_get_produced.3 +45 -0
- data/vendor/local/share/man/man3/gnutls_ocsp_resp_get_responder.3 +53 -0
- data/vendor/local/share/man/man3/gnutls_ocsp_resp_get_response.3 +58 -0
- data/vendor/local/share/man/man3/gnutls_ocsp_resp_get_signature.3 +47 -0
- data/vendor/local/share/man/man3/gnutls_ocsp_resp_get_signature_algorithm.3 +47 -0
- data/vendor/local/share/man/man3/gnutls_ocsp_resp_get_single.3 +73 -0
- data/vendor/local/share/man/man3/gnutls_ocsp_resp_get_status.3 +46 -0
- data/vendor/local/share/man/man3/gnutls_ocsp_resp_get_version.3 +46 -0
- data/vendor/local/share/man/man3/gnutls_ocsp_resp_import.3 +49 -0
- data/vendor/local/share/man/man3/gnutls_ocsp_resp_init.3 +45 -0
- data/vendor/local/share/man/man3/gnutls_ocsp_resp_print.3 +55 -0
- data/vendor/local/share/man/man3/gnutls_ocsp_resp_verify.3 +68 -0
- data/vendor/local/share/man/man3/gnutls_ocsp_resp_verify_direct.3 +62 -0
- data/vendor/local/share/man/man3/gnutls_ocsp_status_request_enable_client.3 +54 -0
- data/vendor/local/share/man/man3/gnutls_ocsp_status_request_get.3 +50 -0
- data/vendor/local/share/man/man3/gnutls_ocsp_status_request_is_checked.3 +51 -0
- data/vendor/local/share/man/man3/gnutls_openpgp_crt_check_hostname.3 +17 -8
- data/vendor/local/share/man/man3/gnutls_openpgp_crt_deinit.3 +15 -6
- data/vendor/local/share/man/man3/gnutls_openpgp_crt_export.3 +16 -7
- data/vendor/local/share/man/man3/gnutls_openpgp_crt_export2.3 +49 -0
- data/vendor/local/share/man/man3/gnutls_openpgp_crt_get_auth_subkey.3 +18 -8
- data/vendor/local/share/man/man3/gnutls_openpgp_crt_get_creation_time.3 +15 -6
- data/vendor/local/share/man/man3/gnutls_openpgp_crt_get_expiration_time.3 +15 -6
- data/vendor/local/share/man/man3/gnutls_openpgp_crt_get_fingerprint.3 +15 -6
- data/vendor/local/share/man/man3/gnutls_openpgp_crt_get_key_id.3 +15 -6
- data/vendor/local/share/man/man3/gnutls_openpgp_crt_get_key_usage.3 +15 -6
- data/vendor/local/share/man/man3/gnutls_openpgp_crt_get_name.3 +19 -9
- data/vendor/local/share/man/man3/gnutls_openpgp_crt_get_pk_algorithm.3 +16 -7
- data/vendor/local/share/man/man3/gnutls_openpgp_crt_get_pk_dsa_raw.3 +16 -7
- data/vendor/local/share/man/man3/gnutls_openpgp_crt_get_pk_rsa_raw.3 +16 -7
- data/vendor/local/share/man/man3/gnutls_openpgp_crt_get_preferred_key_id.3 +15 -6
- data/vendor/local/share/man/man3/gnutls_openpgp_crt_get_revoked_status.3 +15 -6
- data/vendor/local/share/man/man3/gnutls_openpgp_crt_get_subkey_count.3 +16 -7
- data/vendor/local/share/man/man3/gnutls_openpgp_crt_get_subkey_creation_time.3 +15 -6
- data/vendor/local/share/man/man3/gnutls_openpgp_crt_get_subkey_expiration_time.3 +15 -6
- data/vendor/local/share/man/man3/gnutls_openpgp_crt_get_subkey_fingerprint.3 +15 -6
- data/vendor/local/share/man/man3/gnutls_openpgp_crt_get_subkey_id.3 +15 -6
- data/vendor/local/share/man/man3/gnutls_openpgp_crt_get_subkey_idx.3 +15 -6
- data/vendor/local/share/man/man3/gnutls_openpgp_crt_get_subkey_pk_algorithm.3 +16 -7
- data/vendor/local/share/man/man3/gnutls_openpgp_crt_get_subkey_pk_dsa_raw.3 +16 -7
- data/vendor/local/share/man/man3/gnutls_openpgp_crt_get_subkey_pk_rsa_raw.3 +16 -7
- data/vendor/local/share/man/man3/gnutls_openpgp_crt_get_subkey_revoked_status.3 +16 -7
- data/vendor/local/share/man/man3/gnutls_openpgp_crt_get_subkey_usage.3 +16 -7
- data/vendor/local/share/man/man3/gnutls_openpgp_crt_get_version.3 +16 -7
- data/vendor/local/share/man/man3/gnutls_openpgp_crt_import.3 +15 -6
- data/vendor/local/share/man/man3/gnutls_openpgp_crt_init.3 +15 -6
- data/vendor/local/share/man/man3/gnutls_openpgp_crt_print.3 +18 -9
- data/vendor/local/share/man/man3/gnutls_openpgp_crt_set_preferred_key_id.3 +21 -6
- data/vendor/local/share/man/man3/gnutls_openpgp_crt_verify_ring.3 +20 -7
- data/vendor/local/share/man/man3/gnutls_openpgp_crt_verify_self.3 +16 -7
- data/vendor/local/share/man/man3/gnutls_openpgp_keyring_check_id.3 +15 -6
- data/vendor/local/share/man/man3/gnutls_openpgp_keyring_deinit.3 +15 -6
- data/vendor/local/share/man/man3/gnutls_openpgp_keyring_get_crt.3 +17 -6
- data/vendor/local/share/man/man3/gnutls_openpgp_keyring_get_crt_count.3 +16 -7
- data/vendor/local/share/man/man3/gnutls_openpgp_keyring_import.3 +15 -6
- data/vendor/local/share/man/man3/gnutls_openpgp_keyring_init.3 +15 -6
- data/vendor/local/share/man/man3/gnutls_openpgp_privkey_deinit.3 +15 -6
- data/vendor/local/share/man/man3/gnutls_openpgp_privkey_export.3 +19 -10
- data/vendor/local/share/man/man3/gnutls_openpgp_privkey_export2.3 +55 -0
- data/vendor/local/share/man/man3/gnutls_openpgp_privkey_export_dsa_raw.3 +16 -7
- data/vendor/local/share/man/man3/gnutls_openpgp_privkey_export_rsa_raw.3 +16 -7
- data/vendor/local/share/man/man3/gnutls_openpgp_privkey_export_subkey_dsa_raw.3 +16 -7
- data/vendor/local/share/man/man3/gnutls_openpgp_privkey_export_subkey_rsa_raw.3 +16 -7
- data/vendor/local/share/man/man3/gnutls_openpgp_privkey_get_fingerprint.3 +15 -6
- data/vendor/local/share/man/man3/gnutls_openpgp_privkey_get_key_id.3 +15 -6
- data/vendor/local/share/man/man3/gnutls_openpgp_privkey_get_pk_algorithm.3 +16 -7
- data/vendor/local/share/man/man3/gnutls_openpgp_privkey_get_preferred_key_id.3 +15 -6
- data/vendor/local/share/man/man3/gnutls_openpgp_privkey_get_revoked_status.3 +16 -7
- data/vendor/local/share/man/man3/gnutls_openpgp_privkey_get_subkey_count.3 +16 -7
- data/vendor/local/share/man/man3/gnutls_openpgp_privkey_get_subkey_creation_time.3 +15 -6
- data/vendor/local/share/man/man3/gnutls_openpgp_privkey_get_subkey_fingerprint.3 +15 -6
- data/vendor/local/share/man/man3/gnutls_openpgp_privkey_get_subkey_id.3 +15 -6
- data/vendor/local/share/man/man3/gnutls_openpgp_privkey_get_subkey_idx.3 +15 -6
- data/vendor/local/share/man/man3/gnutls_openpgp_privkey_get_subkey_pk_algorithm.3 +16 -7
- data/vendor/local/share/man/man3/gnutls_openpgp_privkey_get_subkey_revoked_status.3 +18 -9
- data/vendor/local/share/man/man3/gnutls_openpgp_privkey_import.3 +20 -11
- data/vendor/local/share/man/man3/gnutls_openpgp_privkey_init.3 +15 -6
- data/vendor/local/share/man/man3/gnutls_openpgp_privkey_sec_param.3 +48 -0
- data/vendor/local/share/man/man3/gnutls_openpgp_privkey_set_preferred_key_id.3 +22 -9
- data/vendor/local/share/man/man3/gnutls_openpgp_privkey_sign_hash.3 +21 -10
- data/vendor/local/share/man/man3/gnutls_openpgp_send_cert.3 +15 -6
- data/vendor/local/share/man/man3/gnutls_openpgp_set_recv_key_function.3 +16 -7
- data/vendor/local/share/man/man3/gnutls_pcert_deinit.3 +44 -0
- data/vendor/local/share/man/man3/gnutls_pcert_import_openpgp.3 +53 -0
- data/vendor/local/share/man/man3/gnutls_pcert_import_openpgp_raw.3 +57 -0
- data/vendor/local/share/man/man3/gnutls_pcert_import_x509.3 +53 -0
- data/vendor/local/share/man/man3/gnutls_pcert_import_x509_raw.3 +55 -0
- data/vendor/local/share/man/man3/gnutls_pcert_list_import_x509_raw.3 +59 -0
- data/vendor/local/share/man/man3/gnutls_pem_base64_decode.3 +15 -6
- data/vendor/local/share/man/man3/gnutls_pem_base64_decode_alloc.3 +15 -6
- data/vendor/local/share/man/man3/gnutls_pem_base64_encode.3 +15 -6
- data/vendor/local/share/man/man3/gnutls_pem_base64_encode_alloc.3 +15 -6
- data/vendor/local/share/man/man3/gnutls_perror.3 +18 -9
- data/vendor/local/share/man/man3/gnutls_pk_algorithm_get_name.3 +15 -6
- data/vendor/local/share/man/man3/gnutls_pk_bits_to_sec_param.3 +50 -0
- data/vendor/local/share/man/man3/gnutls_pk_get_id.3 +49 -0
- data/vendor/local/share/man/man3/gnutls_pk_get_name.3 +47 -0
- data/vendor/local/share/man/man3/gnutls_pk_list.3 +49 -0
- data/vendor/local/share/man/man3/gnutls_pk_to_sign.3 +47 -0
- data/vendor/local/share/man/man3/gnutls_pkcs11_add_provider.3 +51 -0
- data/vendor/local/share/man/man3/gnutls_pkcs11_copy_secret_key.3 +56 -0
- data/vendor/local/share/man/man3/gnutls_pkcs11_copy_x509_crt.3 +54 -0
- data/vendor/local/share/man/man3/gnutls_pkcs11_copy_x509_privkey.3 +57 -0
- data/vendor/local/share/man/man3/gnutls_pkcs11_deinit.3 +44 -0
- data/vendor/local/share/man/man3/gnutls_pkcs11_delete_url.3 +50 -0
- data/vendor/local/share/man/man3/gnutls_pkcs11_get_pin_function.3 +47 -0
- data/vendor/local/share/man/man3/gnutls_pkcs11_init.3 +57 -0
- data/vendor/local/share/man/man3/gnutls_pkcs11_obj_deinit.3 +44 -0
- data/vendor/local/share/man/man3/gnutls_pkcs11_obj_export.3 +61 -0
- data/vendor/local/share/man/man3/gnutls_pkcs11_obj_export2.3 +56 -0
- data/vendor/local/share/man/man3/gnutls_pkcs11_obj_export_url.3 +51 -0
- data/vendor/local/share/man/man3/gnutls_pkcs11_obj_get_info.3 +55 -0
- data/vendor/local/share/man/man3/gnutls_pkcs11_obj_get_type.3 +47 -0
- data/vendor/local/share/man/man3/gnutls_pkcs11_obj_import_url.3 +54 -0
- data/vendor/local/share/man/man3/gnutls_pkcs11_obj_init.3 +47 -0
- data/vendor/local/share/man/man3/gnutls_pkcs11_obj_list_import_url.3 +56 -0
- data/vendor/local/share/man/man3/gnutls_pkcs11_obj_list_import_url2.3 +57 -0
- data/vendor/local/share/man/man3/gnutls_pkcs11_obj_set_pin_function.3 +50 -0
- data/vendor/local/share/man/man3/gnutls_pkcs11_privkey_deinit.3 +42 -0
- data/vendor/local/share/man/man3/gnutls_pkcs11_privkey_export_url.3 +49 -0
- data/vendor/local/share/man/man3/gnutls_pkcs11_privkey_generate.3 +57 -0
- data/vendor/local/share/man/man3/gnutls_pkcs11_privkey_generate2.3 +63 -0
- data/vendor/local/share/man/man3/gnutls_pkcs11_privkey_get_info.3 +53 -0
- data/vendor/local/share/man/man3/gnutls_pkcs11_privkey_get_pk_algorithm.3 +48 -0
- data/vendor/local/share/man/man3/gnutls_pkcs11_privkey_import_url.3 +52 -0
- data/vendor/local/share/man/man3/gnutls_pkcs11_privkey_init.3 +45 -0
- data/vendor/local/share/man/man3/gnutls_pkcs11_privkey_set_pin_function.3 +50 -0
- data/vendor/local/share/man/man3/gnutls_pkcs11_reinit.3 +49 -0
- data/vendor/local/share/man/man3/gnutls_pkcs11_set_pin_function.3 +48 -0
- data/vendor/local/share/man/man3/gnutls_pkcs11_set_token_function.3 +47 -0
- data/vendor/local/share/man/man3/gnutls_pkcs11_token_get_flags.3 +49 -0
- data/vendor/local/share/man/man3/gnutls_pkcs11_token_get_info.3 +54 -0
- data/vendor/local/share/man/man3/gnutls_pkcs11_token_get_mechanism.3 +52 -0
- data/vendor/local/share/man/man3/gnutls_pkcs11_token_get_url.3 +53 -0
- data/vendor/local/share/man/man3/gnutls_pkcs11_token_init.3 +51 -0
- data/vendor/local/share/man/man3/gnutls_pkcs11_token_set_pin.3 +53 -0
- data/vendor/local/share/man/man3/gnutls_pkcs11_type_get_name.3 +49 -0
- data/vendor/local/share/man/man3/gnutls_pkcs12_bag_decrypt.3 +21 -8
- data/vendor/local/share/man/man3/gnutls_pkcs12_bag_deinit.3 +16 -7
- data/vendor/local/share/man/man3/gnutls_pkcs12_bag_encrypt.3 +21 -9
- data/vendor/local/share/man/man3/gnutls_pkcs12_bag_get_count.3 +19 -7
- data/vendor/local/share/man/man3/gnutls_pkcs12_bag_get_data.3 +18 -9
- data/vendor/local/share/man/man3/gnutls_pkcs12_bag_get_friendly_name.3 +20 -10
- data/vendor/local/share/man/man3/gnutls_pkcs12_bag_get_key_id.3 +19 -9
- data/vendor/local/share/man/man3/gnutls_pkcs12_bag_get_type.3 +18 -8
- data/vendor/local/share/man/man3/gnutls_pkcs12_bag_init.3 +18 -9
- data/vendor/local/share/man/man3/gnutls_pkcs12_bag_set_crl.3 +16 -7
- data/vendor/local/share/man/man3/gnutls_pkcs12_bag_set_crt.3 +15 -6
- data/vendor/local/share/man/man3/gnutls_pkcs12_bag_set_data.3 +15 -6
- data/vendor/local/share/man/man3/gnutls_pkcs12_bag_set_friendly_name.3 +21 -11
- data/vendor/local/share/man/man3/gnutls_pkcs12_bag_set_key_id.3 +21 -11
- data/vendor/local/share/man/man3/gnutls_pkcs12_deinit.3 +16 -7
- data/vendor/local/share/man/man3/gnutls_pkcs12_export.3 +17 -8
- data/vendor/local/share/man/man3/gnutls_pkcs12_export2.3 +56 -0
- data/vendor/local/share/man/man3/gnutls_pkcs12_generate_mac.3 +16 -7
- data/vendor/local/share/man/man3/gnutls_pkcs12_get_bag.3 +19 -10
- data/vendor/local/share/man/man3/gnutls_pkcs12_import.3 +16 -7
- data/vendor/local/share/man/man3/gnutls_pkcs12_init.3 +16 -7
- data/vendor/local/share/man/man3/gnutls_pkcs12_set_bag.3 +16 -7
- data/vendor/local/share/man/man3/gnutls_pkcs12_simple_parse.3 +93 -0
- data/vendor/local/share/man/man3/gnutls_pkcs12_verify_mac.3 +16 -7
- data/vendor/local/share/man/man3/gnutls_pkcs7_deinit.3 +15 -6
- data/vendor/local/share/man/man3/gnutls_pkcs7_delete_crl.3 +17 -7
- data/vendor/local/share/man/man3/gnutls_pkcs7_delete_crt.3 +17 -7
- data/vendor/local/share/man/man3/gnutls_pkcs7_export.3 +19 -10
- data/vendor/local/share/man/man3/gnutls_pkcs7_export2.3 +54 -0
- data/vendor/local/share/man/man3/gnutls_pkcs7_get_crl_count.3 +17 -7
- data/vendor/local/share/man/man3/gnutls_pkcs7_get_crl_raw.3 +18 -8
- data/vendor/local/share/man/man3/gnutls_pkcs7_get_crt_count.3 +17 -7
- data/vendor/local/share/man/man3/gnutls_pkcs7_get_crt_raw.3 +18 -8
- data/vendor/local/share/man/man3/gnutls_pkcs7_import.3 +17 -8
- data/vendor/local/share/man/man3/gnutls_pkcs7_init.3 +16 -7
- data/vendor/local/share/man/man3/gnutls_pkcs7_set_crl.3 +17 -7
- data/vendor/local/share/man/man3/gnutls_pkcs7_set_crl_raw.3 +17 -7
- data/vendor/local/share/man/man3/gnutls_pkcs7_set_crt.3 +17 -7
- data/vendor/local/share/man/man3/gnutls_pkcs7_set_crt_raw.3 +17 -7
- data/vendor/local/share/man/man3/gnutls_prf.3 +28 -19
- data/vendor/local/share/man/man3/gnutls_prf_raw.3 +25 -16
- data/vendor/local/share/man/man3/gnutls_priority_certificate_type_list.3 +49 -0
- data/vendor/local/share/man/man3/gnutls_priority_compression_list.3 +49 -0
- data/vendor/local/share/man/man3/gnutls_priority_deinit.3 +15 -6
- data/vendor/local/share/man/man3/gnutls_priority_ecc_curve_list.3 +49 -0
- data/vendor/local/share/man/man3/gnutls_priority_get_cipher_suite_index.3 +54 -0
- data/vendor/local/share/man/man3/gnutls_priority_init.3 +58 -53
- data/vendor/local/share/man/man3/gnutls_priority_protocol_list.3 +49 -0
- data/vendor/local/share/man/man3/gnutls_priority_set.3 +16 -7
- data/vendor/local/share/man/man3/gnutls_priority_set_direct.3 +16 -7
- data/vendor/local/share/man/man3/gnutls_priority_sign_list.3 +49 -0
- data/vendor/local/share/man/man3/gnutls_privkey_decrypt_data.3 +54 -0
- data/vendor/local/share/man/man3/gnutls_privkey_deinit.3 +44 -0
- data/vendor/local/share/man/man3/gnutls_privkey_get_pk_algorithm.3 +51 -0
- data/vendor/local/share/man/man3/gnutls_privkey_get_type.3 +48 -0
- data/vendor/local/share/man/man3/gnutls_privkey_import_ext.3 +59 -0
- data/vendor/local/share/man/man3/gnutls_privkey_import_ext2.3 +62 -0
- data/vendor/local/share/man/man3/gnutls_privkey_import_openpgp.3 +59 -0
- data/vendor/local/share/man/man3/gnutls_privkey_import_openpgp_raw.3 +56 -0
- data/vendor/local/share/man/man3/gnutls_privkey_import_pkcs11.3 +58 -0
- data/vendor/local/share/man/man3/gnutls_privkey_import_pkcs11_url.3 +50 -0
- data/vendor/local/share/man/man3/gnutls_privkey_import_tpm_raw.3 +60 -0
- data/vendor/local/share/man/man3/gnutls_privkey_import_tpm_url.3 +64 -0
- data/vendor/local/share/man/man3/gnutls_privkey_import_url.3 +53 -0
- data/vendor/local/share/man/man3/gnutls_privkey_import_x509.3 +58 -0
- data/vendor/local/share/man/man3/gnutls_privkey_import_x509_raw.3 +59 -0
- data/vendor/local/share/man/man3/gnutls_privkey_init.3 +47 -0
- data/vendor/local/share/man/man3/gnutls_privkey_set_pin_function.3 +53 -0
- data/vendor/local/share/man/man3/gnutls_privkey_sign_data.3 +61 -0
- data/vendor/local/share/man/man3/gnutls_privkey_sign_hash.3 +61 -0
- data/vendor/local/share/man/man3/gnutls_protocol_get_id.3 +18 -8
- data/vendor/local/share/man/man3/gnutls_protocol_get_name.3 +15 -6
- data/vendor/local/share/man/man3/gnutls_protocol_get_version.3 +16 -7
- data/vendor/local/share/man/man3/gnutls_protocol_list.3 +18 -7
- data/vendor/local/share/man/man3/gnutls_protocol_set_priority.3 +16 -7
- data/vendor/local/share/man/man3/gnutls_psk_allocate_client_credentials.3 +18 -8
- data/vendor/local/share/man/man3/gnutls_psk_allocate_server_credentials.3 +18 -8
- data/vendor/local/share/man/man3/gnutls_psk_client_get_hint.3 +15 -6
- data/vendor/local/share/man/man3/gnutls_psk_free_client_credentials.3 +16 -7
- data/vendor/local/share/man/man3/gnutls_psk_free_server_credentials.3 +16 -7
- data/vendor/local/share/man/man3/gnutls_psk_server_get_username.3 +15 -6
- data/vendor/local/share/man/man3/gnutls_psk_set_client_credentials.3 +25 -13
- data/vendor/local/share/man/man3/gnutls_psk_set_client_credentials_function.3 +20 -11
- data/vendor/local/share/man/man3/gnutls_psk_set_params_function.3 +17 -8
- data/vendor/local/share/man/man3/gnutls_psk_set_server_credentials_file.3 +20 -10
- data/vendor/local/share/man/man3/gnutls_psk_set_server_credentials_function.3 +20 -11
- data/vendor/local/share/man/man3/gnutls_psk_set_server_credentials_hint.3 +18 -8
- data/vendor/local/share/man/man3/gnutls_psk_set_server_dh_params.3 +19 -10
- data/vendor/local/share/man/man3/gnutls_psk_set_server_params_function.3 +18 -9
- data/vendor/local/share/man/man3/gnutls_pubkey_deinit.3 +44 -0
- data/vendor/local/share/man/man3/gnutls_pubkey_encrypt_data.3 +54 -0
- data/vendor/local/share/man/man3/gnutls_pubkey_export.3 +63 -0
- data/vendor/local/share/man/man3/gnutls_pubkey_export2.3 +58 -0
- data/vendor/local/share/man/man3/gnutls_pubkey_get_key_id.3 +61 -0
- data/vendor/local/share/man/man3/gnutls_pubkey_get_key_usage.3 +49 -0
- data/vendor/local/share/man/man3/gnutls_pubkey_get_openpgp_key_id.3 +62 -0
- data/vendor/local/share/man/man3/gnutls_pubkey_get_pk_algorithm.3 +51 -0
- data/vendor/local/share/man/man3/gnutls_pubkey_get_pk_dsa_raw.3 +56 -0
- data/vendor/local/share/man/man3/gnutls_pubkey_get_pk_ecc_raw.3 +54 -0
- data/vendor/local/share/man/man3/gnutls_pubkey_get_pk_ecc_x962.3 +52 -0
- data/vendor/local/share/man/man3/gnutls_pubkey_get_pk_rsa_raw.3 +52 -0
- data/vendor/local/share/man/man3/gnutls_pubkey_get_preferred_hash_algorithm.3 +53 -0
- data/vendor/local/share/man/man3/gnutls_pubkey_get_verify_algorithm.3 +52 -0
- data/vendor/local/share/man/man3/gnutls_pubkey_import.3 +55 -0
- data/vendor/local/share/man/man3/gnutls_pubkey_import_dsa_raw.3 +57 -0
- data/vendor/local/share/man/man3/gnutls_pubkey_import_ecc_raw.3 +54 -0
- data/vendor/local/share/man/man3/gnutls_pubkey_import_ecc_x962.3 +52 -0
- data/vendor/local/share/man/man3/gnutls_pubkey_import_openpgp.3 +54 -0
- data/vendor/local/share/man/man3/gnutls_pubkey_import_openpgp_raw.3 +56 -0
- data/vendor/local/share/man/man3/gnutls_pubkey_import_pkcs11.3 +52 -0
- data/vendor/local/share/man/man3/gnutls_pubkey_import_pkcs11_url.3 +52 -0
- data/vendor/local/share/man/man3/gnutls_pubkey_import_privkey.3 +54 -0
- data/vendor/local/share/man/man3/gnutls_pubkey_import_rsa_raw.3 +52 -0
- data/vendor/local/share/man/man3/gnutls_pubkey_import_tpm_raw.3 +59 -0
- data/vendor/local/share/man/man3/gnutls_pubkey_import_tpm_url.3 +60 -0
- data/vendor/local/share/man/man3/gnutls_pubkey_import_url.3 +52 -0
- data/vendor/local/share/man/man3/gnutls_pubkey_import_x509.3 +52 -0
- data/vendor/local/share/man/man3/gnutls_pubkey_import_x509_crq.3 +52 -0
- data/vendor/local/share/man/man3/gnutls_pubkey_import_x509_raw.3 +54 -0
- data/vendor/local/share/man/man3/gnutls_pubkey_init.3 +47 -0
- data/vendor/local/share/man/man3/gnutls_pubkey_print.3 +57 -0
- data/vendor/local/share/man/man3/gnutls_pubkey_set_key_usage.3 +51 -0
- data/vendor/local/share/man/man3/gnutls_pubkey_set_pin_function.3 +53 -0
- data/vendor/local/share/man/man3/gnutls_pubkey_verify_data.3 +56 -0
- data/vendor/local/share/man/man3/gnutls_pubkey_verify_data2.3 +56 -0
- data/vendor/local/share/man/man3/gnutls_pubkey_verify_hash.3 +56 -0
- data/vendor/local/share/man/man3/gnutls_pubkey_verify_hash2.3 +56 -0
- data/vendor/local/share/man/man3/gnutls_random_art.3 +56 -0
- data/vendor/local/share/man/man3/gnutls_record_check_pending.3 +21 -12
- data/vendor/local/share/man/man3/gnutls_record_disable_padding.3 +17 -8
- data/vendor/local/share/man/man3/gnutls_record_get_direction.3 +15 -6
- data/vendor/local/share/man/man3/gnutls_record_get_discarded.3 +47 -0
- data/vendor/local/share/man/man3/gnutls_record_get_max_size.3 +19 -9
- data/vendor/local/share/man/man3/gnutls_record_recv.3 +25 -19
- data/vendor/local/share/man/man3/gnutls_record_recv_seq.3 +59 -0
- data/vendor/local/share/man/man3/gnutls_record_send.3 +26 -18
- data/vendor/local/share/man/man3/gnutls_record_set_max_size.3 +21 -9
- data/vendor/local/share/man/man3/gnutls_rehandshake.3 +23 -7
- data/vendor/local/share/man/man3/gnutls_rnd.3 +51 -0
- data/vendor/local/share/man/man3/gnutls_rsa_export_get_modulus_bits.3 +18 -9
- data/vendor/local/share/man/man3/gnutls_rsa_export_get_pubkey.3 +16 -7
- data/vendor/local/share/man/man3/gnutls_rsa_params_cpy.3 +18 -7
- data/vendor/local/share/man/man3/gnutls_rsa_params_deinit.3 +16 -7
- data/vendor/local/share/man/man3/gnutls_rsa_params_export_pkcs1.3 +20 -12
- data/vendor/local/share/man/man3/gnutls_rsa_params_export_raw.3 +20 -9
- data/vendor/local/share/man/man3/gnutls_rsa_params_generate2.3 +21 -10
- data/vendor/local/share/man/man3/gnutls_rsa_params_import_pkcs1.3 +21 -13
- data/vendor/local/share/man/man3/gnutls_rsa_params_import_raw.3 +20 -8
- data/vendor/local/share/man/man3/gnutls_rsa_params_init.3 +18 -7
- data/vendor/local/share/man/man3/gnutls_safe_renegotiation_status.3 +48 -0
- data/vendor/local/share/man/man3/gnutls_sec_param_get_name.3 +47 -0
- data/vendor/local/share/man/man3/gnutls_sec_param_to_pk_bits.3 +52 -0
- data/vendor/local/share/man/man3/gnutls_server_name_get.3 +30 -15
- data/vendor/local/share/man/man3/gnutls_server_name_set.3 +26 -13
- data/vendor/local/share/man/man3/gnutls_session_channel_binding.3 +54 -0
- data/vendor/local/share/man/man3/gnutls_session_enable_compatibility_mode.3 +17 -8
- data/vendor/local/share/man/man3/gnutls_session_get_data.3 +19 -14
- data/vendor/local/share/man/man3/gnutls_session_get_data2.3 +21 -14
- data/vendor/local/share/man/man3/gnutls_session_get_id.3 +19 -10
- data/vendor/local/share/man/man3/gnutls_session_get_id2.3 +50 -0
- data/vendor/local/share/man/man3/gnutls_session_get_ptr.3 +15 -6
- data/vendor/local/share/man/man3/gnutls_session_get_random.3 +53 -0
- data/vendor/local/share/man/man3/gnutls_session_is_resumed.3 +15 -6
- data/vendor/local/share/man/man3/gnutls_session_resumption_requested.3 +45 -0
- data/vendor/local/share/man/man3/gnutls_session_set_data.3 +15 -6
- data/vendor/local/share/man/man3/gnutls_session_set_premaster.3 +64 -0
- data/vendor/local/share/man/man3/gnutls_session_set_ptr.3 +17 -8
- data/vendor/local/share/man/man3/gnutls_session_ticket_enable_client.3 +48 -0
- data/vendor/local/share/man/man3/gnutls_session_ticket_enable_server.3 +51 -0
- data/vendor/local/share/man/man3/gnutls_session_ticket_key_generate.3 +49 -0
- data/vendor/local/share/man/man3/gnutls_set_default_export_priority.3 +18 -8
- data/vendor/local/share/man/man3/gnutls_set_default_priority.3 +17 -7
- data/vendor/local/share/man/man3/gnutls_sign_algorithm_get.3 +47 -0
- data/vendor/local/share/man/man3/gnutls_sign_algorithm_get_requested.3 +59 -0
- data/vendor/local/share/man/man3/gnutls_sign_callback_get.3 +18 -7
- data/vendor/local/share/man/man3/gnutls_sign_callback_set.3 +18 -7
- data/vendor/local/share/man/man3/gnutls_sign_get_hash_algorithm.3 +47 -0
- data/vendor/local/share/man/man3/gnutls_sign_get_id.3 +45 -0
- data/vendor/local/share/man/man3/gnutls_sign_get_name.3 +45 -0
- data/vendor/local/share/man/man3/gnutls_sign_get_pk_algorithm.3 +47 -0
- data/vendor/local/share/man/man3/gnutls_sign_is_secure.3 +42 -0
- data/vendor/local/share/man/man3/gnutls_sign_list.3 +45 -0
- data/vendor/local/share/man/man3/gnutls_srp_allocate_client_credentials.3 +16 -7
- data/vendor/local/share/man/man3/gnutls_srp_allocate_server_credentials.3 +16 -7
- data/vendor/local/share/man/man3/gnutls_srp_base64_decode.3 +16 -7
- data/vendor/local/share/man/man3/gnutls_srp_base64_decode_alloc.3 +15 -6
- data/vendor/local/share/man/man3/gnutls_srp_base64_encode.3 +15 -6
- data/vendor/local/share/man/man3/gnutls_srp_base64_encode_alloc.3 +15 -6
- data/vendor/local/share/man/man3/gnutls_srp_free_client_credentials.3 +16 -7
- data/vendor/local/share/man/man3/gnutls_srp_free_server_credentials.3 +16 -7
- data/vendor/local/share/man/man3/gnutls_srp_server_get_username.3 +15 -6
- data/vendor/local/share/man/man3/gnutls_srp_set_client_credentials.3 +17 -8
- data/vendor/local/share/man/man3/gnutls_srp_set_client_credentials_function.3 +23 -15
- data/vendor/local/share/man/man3/gnutls_srp_set_prime_bits.3 +54 -0
- data/vendor/local/share/man/man3/gnutls_srp_set_server_credentials_file.3 +18 -9
- data/vendor/local/share/man/man3/gnutls_srp_set_server_credentials_function.3 +24 -15
- data/vendor/local/share/man/man3/gnutls_srp_verifier.3 +19 -12
- data/vendor/local/share/man/man3/gnutls_srtp_get_keys.3 +63 -0
- data/vendor/local/share/man/man3/gnutls_srtp_get_mki.3 +51 -0
- data/vendor/local/share/man/man3/gnutls_srtp_get_profile_id.3 +49 -0
- data/vendor/local/share/man/man3/gnutls_srtp_get_profile_name.3 +48 -0
- data/vendor/local/share/man/man3/gnutls_srtp_get_selected_profile.3 +49 -0
- data/vendor/local/share/man/man3/gnutls_srtp_set_mki.3 +50 -0
- data/vendor/local/share/man/man3/gnutls_srtp_set_profile.3 +50 -0
- data/vendor/local/share/man/man3/gnutls_srtp_set_profile_direct.3 +53 -0
- data/vendor/local/share/man/man3/gnutls_store_commitment.3 +69 -0
- data/vendor/local/share/man/man3/gnutls_store_pubkey.3 +67 -0
- data/vendor/local/share/man/man3/gnutls_strerror.3 +23 -10
- data/vendor/local/share/man/man3/gnutls_strerror_name.3 +49 -0
- data/vendor/local/share/man/man3/gnutls_supplemental_get_name.3 +46 -0
- data/vendor/local/share/man/man3/gnutls_tdb_deinit.3 +42 -0
- data/vendor/local/share/man/man3/gnutls_tdb_init.3 +45 -0
- data/vendor/local/share/man/man3/gnutls_tdb_set_store_commitment_func.3 +49 -0
- data/vendor/local/share/man/man3/gnutls_tdb_set_store_func.3 +49 -0
- data/vendor/local/share/man/man3/gnutls_tdb_set_verify_func.3 +48 -0
- data/vendor/local/share/man/man3/gnutls_tpm_get_registered.3 +48 -0
- data/vendor/local/share/man/man3/gnutls_tpm_key_list_deinit.3 +44 -0
- data/vendor/local/share/man/man3/gnutls_tpm_key_list_get_url.3 +56 -0
- data/vendor/local/share/man/man3/gnutls_tpm_privkey_delete.3 +50 -0
- data/vendor/local/share/man/man3/gnutls_tpm_privkey_generate.3 +73 -0
- data/vendor/local/share/man/man3/gnutls_transport_get_ptr.3 +16 -7
- data/vendor/local/share/man/man3/gnutls_transport_get_ptr2.3 +15 -6
- data/vendor/local/share/man/man3/gnutls_transport_set_errno.3 +21 -17
- data/vendor/local/share/man/man3/gnutls_transport_set_errno_function.3 +51 -0
- data/vendor/local/share/man/man3/gnutls_transport_set_ptr.3 +18 -9
- data/vendor/local/share/man/man3/gnutls_transport_set_ptr2.3 +19 -10
- data/vendor/local/share/man/man3/gnutls_transport_set_pull_function.3 +22 -12
- data/vendor/local/share/man/man3/gnutls_transport_set_pull_timeout_function.3 +55 -0
- data/vendor/local/share/man/man3/gnutls_transport_set_push_function.3 +24 -13
- data/vendor/local/share/man/man3/gnutls_transport_set_vec_push_function.3 +52 -0
- data/vendor/local/share/man/man3/gnutls_url_is_supported.3 +48 -0
- data/vendor/local/share/man/man3/gnutls_verify_stored_pubkey.3 +76 -0
- data/vendor/local/share/man/man3/gnutls_x509_crl_check_issuer.3 +24 -13
- data/vendor/local/share/man/man3/gnutls_x509_crl_deinit.3 +15 -6
- data/vendor/local/share/man/man3/gnutls_x509_crl_export.3 +18 -9
- data/vendor/local/share/man/man3/gnutls_x509_crl_export2.3 +56 -0
- data/vendor/local/share/man/man3/gnutls_x509_crl_get_authority_key_gn_serial.3 +66 -0
- data/vendor/local/share/man/man3/gnutls_x509_crl_get_authority_key_id.3 +60 -0
- data/vendor/local/share/man/man3/gnutls_x509_crl_get_crt_count.3 +16 -7
- data/vendor/local/share/man/man3/gnutls_x509_crl_get_crt_serial.3 +17 -8
- data/vendor/local/share/man/man3/gnutls_x509_crl_get_dn_oid.3 +16 -7
- data/vendor/local/share/man/man3/gnutls_x509_crl_get_extension_data.3 +62 -0
- data/vendor/local/share/man/man3/gnutls_x509_crl_get_extension_info.3 +65 -0
- data/vendor/local/share/man/man3/gnutls_x509_crl_get_extension_oid.3 +57 -0
- data/vendor/local/share/man/man3/gnutls_x509_crl_get_issuer_dn.3 +17 -8
- data/vendor/local/share/man/man3/gnutls_x509_crl_get_issuer_dn_by_oid.3 +22 -13
- data/vendor/local/share/man/man3/gnutls_x509_crl_get_next_update.3 +15 -6
- data/vendor/local/share/man/man3/gnutls_x509_crl_get_number.3 +55 -0
- data/vendor/local/share/man/man3/gnutls_x509_crl_get_raw_issuer_dn.3 +49 -0
- data/vendor/local/share/man/man3/gnutls_x509_crl_get_signature.3 +18 -9
- data/vendor/local/share/man/man3/gnutls_x509_crl_get_signature_algorithm.3 +16 -7
- data/vendor/local/share/man/man3/gnutls_x509_crl_get_this_update.3 +15 -6
- data/vendor/local/share/man/man3/gnutls_x509_crl_get_version.3 +16 -7
- data/vendor/local/share/man/man3/gnutls_x509_crl_import.3 +16 -7
- data/vendor/local/share/man/man3/gnutls_x509_crl_init.3 +16 -7
- data/vendor/local/share/man/man3/gnutls_x509_crl_list_import.3 +58 -0
- data/vendor/local/share/man/man3/gnutls_x509_crl_list_import2.3 +59 -0
- data/vendor/local/share/man/man3/gnutls_x509_crl_print.3 +18 -9
- data/vendor/local/share/man/man3/gnutls_x509_crl_privkey_sign.3 +59 -0
- data/vendor/local/share/man/man3/gnutls_x509_crl_set_authority_key_id.3 +54 -0
- data/vendor/local/share/man/man3/gnutls_x509_crl_set_crt.3 +18 -9
- data/vendor/local/share/man/man3/gnutls_x509_crl_set_crt_serial.3 +17 -8
- data/vendor/local/share/man/man3/gnutls_x509_crl_set_next_update.3 +16 -7
- data/vendor/local/share/man/man3/gnutls_x509_crl_set_number.3 +53 -0
- data/vendor/local/share/man/man3/gnutls_x509_crl_set_this_update.3 +16 -7
- data/vendor/local/share/man/man3/gnutls_x509_crl_set_version.3 +16 -7
- data/vendor/local/share/man/man3/gnutls_x509_crl_sign.3 +19 -8
- data/vendor/local/share/man/man3/gnutls_x509_crl_sign2.3 +16 -7
- data/vendor/local/share/man/man3/gnutls_x509_crl_verify.3 +19 -9
- data/vendor/local/share/man/man3/gnutls_x509_crq_deinit.3 +17 -7
- data/vendor/local/share/man/man3/gnutls_x509_crq_export.3 +23 -13
- data/vendor/local/share/man/man3/gnutls_x509_crq_export2.3 +57 -0
- data/vendor/local/share/man/man3/gnutls_x509_crq_get_attribute_by_oid.3 +25 -15
- data/vendor/local/share/man/man3/gnutls_x509_crq_get_attribute_data.3 +62 -0
- data/vendor/local/share/man/man3/gnutls_x509_crq_get_attribute_info.3 +63 -0
- data/vendor/local/share/man/man3/gnutls_x509_crq_get_basic_constraints.3 +61 -0
- data/vendor/local/share/man/man3/gnutls_x509_crq_get_challenge_password.3 +22 -12
- data/vendor/local/share/man/man3/gnutls_x509_crq_get_dn.3 +25 -17
- data/vendor/local/share/man/man3/gnutls_x509_crq_get_dn_by_oid.3 +23 -16
- data/vendor/local/share/man/man3/gnutls_x509_crq_get_dn_oid.3 +22 -15
- data/vendor/local/share/man/man3/gnutls_x509_crq_get_extension_by_oid.3 +62 -0
- data/vendor/local/share/man/man3/gnutls_x509_crq_get_extension_data.3 +62 -0
- data/vendor/local/share/man/man3/gnutls_x509_crq_get_extension_info.3 +65 -0
- data/vendor/local/share/man/man3/gnutls_x509_crq_get_key_id.3 +61 -0
- data/vendor/local/share/man/man3/gnutls_x509_crq_get_key_purpose_oid.3 +59 -0
- data/vendor/local/share/man/man3/gnutls_x509_crq_get_key_rsa_raw.3 +53 -0
- data/vendor/local/share/man/man3/gnutls_x509_crq_get_key_usage.3 +59 -0
- data/vendor/local/share/man/man3/gnutls_x509_crq_get_pk_algorithm.3 +22 -14
- data/vendor/local/share/man/man3/gnutls_x509_crq_get_private_key_usage_period.3 +52 -0
- data/vendor/local/share/man/man3/gnutls_x509_crq_get_subject_alt_name.3 +69 -0
- data/vendor/local/share/man/man3/gnutls_x509_crq_get_subject_alt_othername_oid.3 +67 -0
- data/vendor/local/share/man/man3/gnutls_x509_crq_get_version.3 +19 -9
- data/vendor/local/share/man/man3/gnutls_x509_crq_import.3 +21 -10
- data/vendor/local/share/man/man3/gnutls_x509_crq_init.3 +18 -8
- data/vendor/local/share/man/man3/gnutls_x509_crq_print.3 +54 -0
- data/vendor/local/share/man/man3/gnutls_x509_crq_privkey_sign.3 +61 -0
- data/vendor/local/share/man/man3/gnutls_x509_crq_set_attribute_by_oid.3 +22 -12
- data/vendor/local/share/man/man3/gnutls_x509_crq_set_basic_constraints.3 +53 -0
- data/vendor/local/share/man/man3/gnutls_x509_crq_set_challenge_password.3 +20 -10
- data/vendor/local/share/man/man3/gnutls_x509_crq_set_dn_by_oid.3 +24 -14
- data/vendor/local/share/man/man3/gnutls_x509_crq_set_key.3 +19 -10
- data/vendor/local/share/man/man3/gnutls_x509_crq_set_key_purpose_oid.3 +55 -0
- data/vendor/local/share/man/man3/gnutls_x509_crq_set_key_rsa_raw.3 +52 -0
- data/vendor/local/share/man/man3/gnutls_x509_crq_set_key_usage.3 +49 -0
- data/vendor/local/share/man/man3/gnutls_x509_crq_set_private_key_usage_period.3 +49 -0
- data/vendor/local/share/man/man3/gnutls_x509_crq_set_pubkey.3 +50 -0
- data/vendor/local/share/man/man3/gnutls_x509_crq_set_subject_alt_name.3 +57 -0
- data/vendor/local/share/man/man3/gnutls_x509_crq_set_version.3 +19 -10
- data/vendor/local/share/man/man3/gnutls_x509_crq_sign.3 +22 -11
- data/vendor/local/share/man/man3/gnutls_x509_crq_sign2.3 +17 -8
- data/vendor/local/share/man/man3/gnutls_x509_crq_verify.3 +50 -0
- data/vendor/local/share/man/man3/gnutls_x509_crt_check_hostname.3 +16 -7
- data/vendor/local/share/man/man3/gnutls_x509_crt_check_issuer.3 +21 -10
- data/vendor/local/share/man/man3/gnutls_x509_crt_check_revocation.3 +16 -7
- data/vendor/local/share/man/man3/gnutls_x509_crt_cpy_crl_dist_points.3 +17 -8
- data/vendor/local/share/man/man3/gnutls_x509_crt_deinit.3 +17 -8
- data/vendor/local/share/man/man3/gnutls_x509_crt_export.3 +17 -8
- data/vendor/local/share/man/man3/gnutls_x509_crt_export2.3 +55 -0
- data/vendor/local/share/man/man3/gnutls_x509_crt_get_activation_time.3 +15 -6
- data/vendor/local/share/man/man3/gnutls_x509_crt_get_authority_info_access.3 +109 -0
- data/vendor/local/share/man/man3/gnutls_x509_crt_get_authority_key_gn_serial.3 +67 -0
- data/vendor/local/share/man/man3/gnutls_x509_crt_get_authority_key_id.3 +30 -16
- data/vendor/local/share/man/man3/gnutls_x509_crt_get_basic_constraints.3 +23 -14
- data/vendor/local/share/man/man3/gnutls_x509_crt_get_ca_status.3 +20 -11
- data/vendor/local/share/man/man3/gnutls_x509_crt_get_crl_dist_points.3 +22 -26
- data/vendor/local/share/man/man3/gnutls_x509_crt_get_dn.3 +26 -17
- data/vendor/local/share/man/man3/gnutls_x509_crt_get_dn_by_oid.3 +32 -21
- data/vendor/local/share/man/man3/gnutls_x509_crt_get_dn_oid.3 +25 -14
- data/vendor/local/share/man/man3/gnutls_x509_crt_get_expiration_time.3 +15 -6
- data/vendor/local/share/man/man3/gnutls_x509_crt_get_extension_by_oid.3 +27 -17
- data/vendor/local/share/man/man3/gnutls_x509_crt_get_extension_data.3 +22 -12
- data/vendor/local/share/man/man3/gnutls_x509_crt_get_extension_info.3 +29 -18
- data/vendor/local/share/man/man3/gnutls_x509_crt_get_extension_oid.3 +26 -13
- data/vendor/local/share/man/man3/gnutls_x509_crt_get_fingerprint.3 +19 -10
- data/vendor/local/share/man/man3/gnutls_x509_crt_get_issuer.3 +20 -11
- data/vendor/local/share/man/man3/gnutls_x509_crt_get_issuer_alt_name.3 +73 -0
- data/vendor/local/share/man/man3/gnutls_x509_crt_get_issuer_alt_name2.3 +67 -0
- data/vendor/local/share/man/man3/gnutls_x509_crt_get_issuer_alt_othername_oid.3 +70 -0
- data/vendor/local/share/man/man3/gnutls_x509_crt_get_issuer_dn.3 +21 -12
- data/vendor/local/share/man/man3/gnutls_x509_crt_get_issuer_dn_by_oid.3 +30 -19
- data/vendor/local/share/man/man3/gnutls_x509_crt_get_issuer_dn_oid.3 +25 -14
- data/vendor/local/share/man/man3/gnutls_x509_crt_get_issuer_unique_id.3 +56 -0
- data/vendor/local/share/man/man3/gnutls_x509_crt_get_key_id.3 +18 -9
- data/vendor/local/share/man/man3/gnutls_x509_crt_get_key_purpose_oid.3 +24 -13
- data/vendor/local/share/man/man3/gnutls_x509_crt_get_key_usage.3 +21 -12
- data/vendor/local/share/man/man3/gnutls_x509_crt_get_pk_algorithm.3 +18 -9
- data/vendor/local/share/man/man3/gnutls_x509_crt_get_pk_dsa_raw.3 +16 -7
- data/vendor/local/share/man/man3/gnutls_x509_crt_get_pk_rsa_raw.3 +16 -7
- data/vendor/local/share/man/man3/gnutls_x509_crt_get_policy.3 +57 -0
- data/vendor/local/share/man/man3/gnutls_x509_crt_get_preferred_hash_algorithm.3 +55 -0
- data/vendor/local/share/man/man3/gnutls_x509_crt_get_private_key_usage_period.3 +53 -0
- data/vendor/local/share/man/man3/gnutls_x509_crt_get_proxy.3 +26 -18
- data/vendor/local/share/man/man3/gnutls_x509_crt_get_raw_dn.3 +18 -9
- data/vendor/local/share/man/man3/gnutls_x509_crt_get_raw_issuer_dn.3 +18 -9
- data/vendor/local/share/man/man3/gnutls_x509_crt_get_serial.3 +21 -13
- data/vendor/local/share/man/man3/gnutls_x509_crt_get_signature.3 +18 -9
- data/vendor/local/share/man/man3/gnutls_x509_crt_get_signature_algorithm.3 +18 -8
- data/vendor/local/share/man/man3/gnutls_x509_crt_get_subject.3 +20 -11
- data/vendor/local/share/man/man3/gnutls_x509_crt_get_subject_alt_name.3 +24 -18
- data/vendor/local/share/man/man3/gnutls_x509_crt_get_subject_alt_name2.3 +33 -17
- data/vendor/local/share/man/man3/gnutls_x509_crt_get_subject_alt_othername_oid.3 +23 -11
- data/vendor/local/share/man/man3/gnutls_x509_crt_get_subject_key_id.3 +21 -12
- data/vendor/local/share/man/man3/gnutls_x509_crt_get_subject_unique_id.3 +54 -0
- data/vendor/local/share/man/man3/gnutls_x509_crt_get_verify_algorithm.3 +54 -0
- data/vendor/local/share/man/man3/gnutls_x509_crt_get_version.3 +16 -7
- data/vendor/local/share/man/man3/gnutls_x509_crt_import.3 +20 -10
- data/vendor/local/share/man/man3/gnutls_x509_crt_import_pkcs11.3 +50 -0
- data/vendor/local/share/man/man3/gnutls_x509_crt_import_pkcs11_url.3 +53 -0
- data/vendor/local/share/man/man3/gnutls_x509_crt_init.3 +16 -7
- data/vendor/local/share/man/man3/gnutls_x509_crt_list_import.3 +23 -8
- data/vendor/local/share/man/man3/gnutls_x509_crt_list_import2.3 +59 -0
- data/vendor/local/share/man/man3/gnutls_x509_crt_list_import_pkcs11.3 +54 -0
- data/vendor/local/share/man/man3/gnutls_x509_crt_list_verify.3 +28 -25
- data/vendor/local/share/man/man3/gnutls_x509_crt_print.3 +18 -9
- data/vendor/local/share/man/man3/gnutls_x509_crt_privkey_sign.3 +57 -0
- data/vendor/local/share/man/man3/gnutls_x509_crt_set_activation_time.3 +17 -8
- data/vendor/local/share/man/man3/gnutls_x509_crt_set_authority_info_access.3 +59 -0
- data/vendor/local/share/man/man3/gnutls_x509_crt_set_authority_key_id.3 +17 -8
- data/vendor/local/share/man/man3/gnutls_x509_crt_set_basic_constraints.3 +19 -10
- data/vendor/local/share/man/man3/gnutls_x509_crt_set_ca_status.3 +17 -8
- data/vendor/local/share/man/man3/gnutls_x509_crt_set_crl_dist_points.3 +19 -10
- data/vendor/local/share/man/man3/gnutls_x509_crt_set_crl_dist_points2.3 +55 -0
- data/vendor/local/share/man/man3/gnutls_x509_crt_set_crq.3 +20 -11
- data/vendor/local/share/man/man3/gnutls_x509_crt_set_crq_extensions.3 +50 -0
- data/vendor/local/share/man/man3/gnutls_x509_crt_set_dn_by_oid.3 +19 -10
- data/vendor/local/share/man/man3/gnutls_x509_crt_set_expiration_time.3 +17 -8
- data/vendor/local/share/man/man3/gnutls_x509_crt_set_extension_by_oid.3 +20 -11
- data/vendor/local/share/man/man3/gnutls_x509_crt_set_issuer_dn_by_oid.3 +19 -10
- data/vendor/local/share/man/man3/gnutls_x509_crt_set_key.3 +17 -8
- data/vendor/local/share/man/man3/gnutls_x509_crt_set_key_purpose_oid.3 +19 -9
- data/vendor/local/share/man/man3/gnutls_x509_crt_set_key_usage.3 +17 -8
- data/vendor/local/share/man/man3/gnutls_x509_crt_set_pin_function.3 +53 -0
- data/vendor/local/share/man/man3/gnutls_x509_crt_set_policy.3 +56 -0
- data/vendor/local/share/man/man3/gnutls_x509_crt_set_private_key_usage_period.3 +49 -0
- data/vendor/local/share/man/man3/gnutls_x509_crt_set_proxy.3 +22 -13
- data/vendor/local/share/man/man3/gnutls_x509_crt_set_proxy_dn.3 +20 -12
- data/vendor/local/share/man/man3/gnutls_x509_crt_set_pubkey.3 +50 -0
- data/vendor/local/share/man/man3/gnutls_x509_crt_set_serial.3 +18 -9
- data/vendor/local/share/man/man3/gnutls_x509_crt_set_subject_alt_name.3 +56 -0
- data/vendor/local/share/man/man3/gnutls_x509_crt_set_subject_alternative_name.3 +25 -12
- data/vendor/local/share/man/man3/gnutls_x509_crt_set_subject_key_id.3 +17 -8
- data/vendor/local/share/man/man3/gnutls_x509_crt_set_version.3 +18 -9
- data/vendor/local/share/man/man3/gnutls_x509_crt_sign.3 +17 -8
- data/vendor/local/share/man/man3/gnutls_x509_crt_sign2.3 +18 -9
- data/vendor/local/share/man/man3/gnutls_x509_crt_verify.3 +19 -10
- data/vendor/local/share/man/man3/gnutls_x509_crt_verify_data.3 +20 -9
- data/vendor/local/share/man/man3/gnutls_x509_crt_verify_hash.3 +54 -0
- data/vendor/local/share/man/man3/gnutls_x509_dn_deinit.3 +17 -8
- data/vendor/local/share/man/man3/gnutls_x509_dn_export.3 +18 -9
- data/vendor/local/share/man/man3/gnutls_x509_dn_export2.3 +54 -0
- data/vendor/local/share/man/man3/gnutls_x509_dn_get_rdn_ava.3 +28 -9
- data/vendor/local/share/man/man3/gnutls_x509_dn_import.3 +17 -13
- data/vendor/local/share/man/man3/gnutls_x509_dn_init.3 +17 -8
- data/vendor/local/share/man/man3/gnutls_x509_dn_oid_known.3 +15 -6
- data/vendor/local/share/man/man3/gnutls_x509_dn_oid_name.3 +51 -0
- data/vendor/local/share/man/man3/gnutls_x509_policy_release.3 +45 -0
- data/vendor/local/share/man/man3/gnutls_x509_privkey_cpy.3 +17 -8
- data/vendor/local/share/man/man3/gnutls_x509_privkey_deinit.3 +16 -7
- data/vendor/local/share/man/man3/gnutls_x509_privkey_export.3 +17 -8
- data/vendor/local/share/man/man3/gnutls_x509_privkey_export2.3 +58 -0
- data/vendor/local/share/man/man3/gnutls_x509_privkey_export2_pkcs8.3 +67 -0
- data/vendor/local/share/man/man3/gnutls_x509_privkey_export_dsa_raw.3 +17 -7
- data/vendor/local/share/man/man3/gnutls_x509_privkey_export_ecc_raw.3 +57 -0
- data/vendor/local/share/man/man3/gnutls_x509_privkey_export_pkcs8.3 +20 -11
- data/vendor/local/share/man/man3/gnutls_x509_privkey_export_rsa_raw.3 +16 -7
- data/vendor/local/share/man/man3/gnutls_x509_privkey_export_rsa_raw2.3 +65 -0
- data/vendor/local/share/man/man3/gnutls_x509_privkey_fix.3 +16 -7
- data/vendor/local/share/man/man3/gnutls_x509_privkey_generate.3 +19 -8
- data/vendor/local/share/man/man3/gnutls_x509_privkey_get_key_id.3 +18 -9
- data/vendor/local/share/man/man3/gnutls_x509_privkey_get_pk_algorithm.3 +16 -7
- data/vendor/local/share/man/man3/gnutls_x509_privkey_get_pk_algorithm2.3 +48 -0
- data/vendor/local/share/man/man3/gnutls_x509_privkey_import.3 +20 -10
- data/vendor/local/share/man/man3/gnutls_x509_privkey_import2.3 +61 -0
- data/vendor/local/share/man/man3/gnutls_x509_privkey_import_dsa_raw.3 +17 -8
- data/vendor/local/share/man/man3/gnutls_x509_privkey_import_ecc_raw.3 +57 -0
- data/vendor/local/share/man/man3/gnutls_x509_privkey_import_openssl.3 +57 -0
- data/vendor/local/share/man/man3/gnutls_x509_privkey_import_pkcs8.3 +29 -15
- data/vendor/local/share/man/man3/gnutls_x509_privkey_import_rsa_raw.3 +17 -8
- data/vendor/local/share/man/man3/gnutls_x509_privkey_import_rsa_raw2.3 +63 -0
- data/vendor/local/share/man/man3/gnutls_x509_privkey_init.3 +16 -7
- data/vendor/local/share/man/man3/gnutls_x509_privkey_sec_param.3 +48 -0
- data/vendor/local/share/man/man3/gnutls_x509_privkey_sign_data.3 +23 -9
- data/vendor/local/share/man/man3/gnutls_x509_privkey_sign_hash.3 +23 -9
- data/vendor/local/share/man/man3/gnutls_x509_privkey_verify_params.3 +45 -0
- data/vendor/local/share/man/man3/gnutls_x509_rdn_get.3 +19 -10
- data/vendor/local/share/man/man3/gnutls_x509_rdn_get_by_oid.3 +20 -11
- data/vendor/local/share/man/man3/gnutls_x509_rdn_get_oid.3 +19 -8
- data/vendor/local/share/man/man3/gnutls_x509_trust_list_add_cas.3 +54 -0
- data/vendor/local/share/man/man3/gnutls_x509_trust_list_add_crls.3 +59 -0
- data/vendor/local/share/man/man3/gnutls_x509_trust_list_add_named_crt.3 +65 -0
- data/vendor/local/share/man/man3/gnutls_x509_trust_list_add_system_trust.3 +52 -0
- data/vendor/local/share/man/man3/gnutls_x509_trust_list_add_trust_file.3 +58 -0
- data/vendor/local/share/man/man3/gnutls_x509_trust_list_add_trust_mem.3 +57 -0
- data/vendor/local/share/man/man3/gnutls_x509_trust_list_deinit.3 +46 -0
- data/vendor/local/share/man/man3/gnutls_x509_trust_list_get_issuer.3 +54 -0
- data/vendor/local/share/man/man3/gnutls_x509_trust_list_init.3 +49 -0
- data/vendor/local/share/man/man3/gnutls_x509_trust_list_verify_crt.3 +61 -0
- data/vendor/local/share/man/man3/gnutls_x509_trust_list_verify_named_crt.3 +62 -0
- data/vendor/local/src/tml/make/libffi_3.0.6-1_win32.log +265 -0
- data/vendor/local/src/tml/make/libffi_3.0.6-1_win32.sh +76 -0
- data/vendor/local/src/tml/packaging/zlib_1.2.5-2_win32.log +42 -0
- data/vendor/local/src/tml/packaging/zlib_1.2.5-2_win32.sh +189 -0
- metadata +668 -4
@@ -0,0 +1,3355 @@
|
|
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.5), a low-level
|
5
|
+
cryptographic library.
|
6
|
+
|
7
|
+
Originally written 2001 by Niels Möller, updated 2011.
|
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.5), a low-level
|
29
|
+
cryptographic library.
|
30
|
+
|
31
|
+
Originally written 2001 by Niels Möller, updated 2011.
|
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 the 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
|
+
* Public-key algorithms::
|
58
|
+
* Randomness::
|
59
|
+
* Ascii encoding::
|
60
|
+
* Miscellaneous functions::
|
61
|
+
* Compatibility functions::
|
62
|
+
|
63
|
+
Cipher modes
|
64
|
+
|
65
|
+
* CBC::
|
66
|
+
* CTR::
|
67
|
+
* GCM::
|
68
|
+
|
69
|
+
Public-key algorithms
|
70
|
+
|
71
|
+
* RSA:: The RSA public key algorithm.
|
72
|
+
* DSA:: The DSA digital signature algorithm.
|
73
|
+
|
74
|
+
|
75
|
+
File: nettle.info, Node: Introduction, Next: Copyright, Prev: Top, Up: Top
|
76
|
+
|
77
|
+
1 Introduction
|
78
|
+
**************
|
79
|
+
|
80
|
+
Nettle is a cryptographic library that is designed to fit easily in more
|
81
|
+
or less any context: In crypto toolkits for object-oriented languages
|
82
|
+
(C++, Python, Pike, ...), in applications like LSH or GNUPG, or even in
|
83
|
+
kernel space. In most contexts, you need more than the basic
|
84
|
+
cryptographic algorithms, you also need some way to keep track of
|
85
|
+
available algorithms, their properties and variants. You often have
|
86
|
+
some algorithm selection process, often dictated by a protocol you want
|
87
|
+
to implement.
|
88
|
+
|
89
|
+
And as the requirements of applications differ in subtle and not so
|
90
|
+
subtle ways, an API that fits one application well can be a pain to use
|
91
|
+
in a different context. And that is why there are so many different
|
92
|
+
cryptographic libraries around.
|
93
|
+
|
94
|
+
Nettle tries to avoid this problem by doing one thing, the low-level
|
95
|
+
crypto stuff, and providing a _simple_ but general interface to it. In
|
96
|
+
particular, Nettle doesn't do algorithm selection. It doesn't do memory
|
97
|
+
allocation. It doesn't do any I/O.
|
98
|
+
|
99
|
+
The idea is that one can build several application and context
|
100
|
+
specific interfaces on top of Nettle, and share the code, test cases,
|
101
|
+
benchmarks, documentation, etc. Examples are the Nettle module for the
|
102
|
+
Pike language, and LSH, which both use an object-oriented abstraction
|
103
|
+
on top of the library.
|
104
|
+
|
105
|
+
This manual explains how to use the Nettle library. It also tries to
|
106
|
+
provide some background on the cryptography, and advice on how to best
|
107
|
+
put it to use.
|
108
|
+
|
109
|
+
|
110
|
+
File: nettle.info, Node: Copyright, Next: Conventions, Prev: Introduction, Up: Top
|
111
|
+
|
112
|
+
2 Copyright
|
113
|
+
***********
|
114
|
+
|
115
|
+
Nettle is distributed under the GNU Lesser General Public License
|
116
|
+
(LGPL), see the file COPYING.LIB for details. A few of the individual
|
117
|
+
files are in the public domain. To find the current status of particular
|
118
|
+
files, you have to read the copyright notices at the top of the files.
|
119
|
+
|
120
|
+
This manual is in the public domain. You may freely copy it in whole
|
121
|
+
or in part, e.g., into documentation of programs that build on Nettle.
|
122
|
+
Attribution, as well as contribution of improvements to the text, is of
|
123
|
+
course appreciated, but it is not required.
|
124
|
+
|
125
|
+
A list of the supported algorithms, their origins and licenses:
|
126
|
+
|
127
|
+
_AES_
|
128
|
+
The implementation of the AES cipher (also known as rijndael) is
|
129
|
+
written by Rafael Sevilla. Assembler for x86 by Rafael Sevilla and
|
130
|
+
Niels Möller, Sparc assembler by Niels Möller. Released under the
|
131
|
+
LGPL.
|
132
|
+
|
133
|
+
_ARCFOUR_
|
134
|
+
The implementation of the ARCFOUR (also known as RC4) cipher is
|
135
|
+
written by Niels Möller. Released under the LGPL.
|
136
|
+
|
137
|
+
_ARCTWO_
|
138
|
+
The implementation of the ARCTWO (also known as RC2) cipher is
|
139
|
+
written by Nikos Mavroyanopoulos and modified by Werner Koch and
|
140
|
+
Simon Josefsson. Released under the LGPL.
|
141
|
+
|
142
|
+
_BLOWFISH_
|
143
|
+
The implementation of the BLOWFISH cipher is written by Werner
|
144
|
+
Koch, copyright owned by the Free Software Foundation. Also hacked
|
145
|
+
by Simon Josefsson and Niels Möller. Released under the LGPL.
|
146
|
+
|
147
|
+
_CAMELLIA_
|
148
|
+
The C implementation is by Nippon Telegraph and Telephone
|
149
|
+
Corporation (NTT), heavily modified by Niels Möller. Assembler for
|
150
|
+
x86 and x86_64 by Niels Möller. Released under the LGPL.
|
151
|
+
|
152
|
+
_CAST128_
|
153
|
+
The implementation of the CAST128 cipher is written by Steve Reid.
|
154
|
+
Released into the public domain.
|
155
|
+
|
156
|
+
_DES_
|
157
|
+
The implementation of the DES cipher is written by Dana L. How, and
|
158
|
+
released under the LGPL.
|
159
|
+
|
160
|
+
_MD2_
|
161
|
+
The implementation of MD2 is written by Andrew Kuchling, and hacked
|
162
|
+
some by Andreas Sigfridsson and Niels Möller. Python Cryptography
|
163
|
+
Toolkit license (essentially public domain).
|
164
|
+
|
165
|
+
_MD4_
|
166
|
+
This is almost the same code as for MD5 below, with modifications
|
167
|
+
by Marcus Comstedt. Released into the public domain.
|
168
|
+
|
169
|
+
_MD5_
|
170
|
+
The implementation of the MD5 message digest is written by Colin
|
171
|
+
Plumb. It has been hacked some more by Andrew Kuchling and Niels
|
172
|
+
Möller. Released into the public domain.
|
173
|
+
|
174
|
+
_RIPMED160_
|
175
|
+
The implementation of RIPEMD160 message digest is based on the
|
176
|
+
code in libgcrypt, copyright owned by the Free Software
|
177
|
+
Foundation. Ported to Nettle by Andres Mejia. Released under the
|
178
|
+
LGPL.
|
179
|
+
|
180
|
+
_SALSA20_
|
181
|
+
The C implementation of SALSA20 is based on D. J. Bernstein's
|
182
|
+
reference implementation (in the public domain), adapted to Nettle
|
183
|
+
by Simon Josefsson, and heavily modified by Niels Möller. Assembly
|
184
|
+
for x86_64 by Niels Möller. Released under the LGPL.
|
185
|
+
|
186
|
+
_SERPENT_
|
187
|
+
The implementation of the SERPENT cipher is based on the code in
|
188
|
+
libgcrypt, copyright owned by the Free Software Foundation.
|
189
|
+
Adapted to Nettle by Simon Josefsson and heavily modified by Niels
|
190
|
+
Möller. Assembly for x86_64 by Niels Möller. Released under the
|
191
|
+
LGPL.
|
192
|
+
|
193
|
+
_SHA1_
|
194
|
+
The C implementation of the SHA1 message digest is written by Peter
|
195
|
+
Gutmann, and hacked some more by Andrew Kuchling and Niels Möller.
|
196
|
+
Released into the public domain. Assembler for x86 by Niels Möller,
|
197
|
+
released under the LGPL.
|
198
|
+
|
199
|
+
_SHA224, SHA256, SHA384, and SHA512_
|
200
|
+
Written by Niels Möller, using Peter Gutmann's SHA1 code as a
|
201
|
+
model. Released under the LGPL.
|
202
|
+
|
203
|
+
_TWOFISH_
|
204
|
+
The implementation of the TWOFISH cipher is written by Ruud de
|
205
|
+
Rooij. Released under the LGPL.
|
206
|
+
|
207
|
+
_RSA_
|
208
|
+
Written by Niels Möller, released under the LGPL. Uses the GMP
|
209
|
+
library for bignum operations.
|
210
|
+
|
211
|
+
_DSA_
|
212
|
+
Written by Niels Möller, released under the LGPL. Uses the GMP
|
213
|
+
library for bignum operations.
|
214
|
+
|
215
|
+
|
216
|
+
File: nettle.info, Node: Conventions, Next: Example, Prev: Copyright, Up: Top
|
217
|
+
|
218
|
+
3 Conventions
|
219
|
+
*************
|
220
|
+
|
221
|
+
For each supported algorithm, there is an include file that defines a
|
222
|
+
_context struct_, a few constants, and declares functions for operating
|
223
|
+
on the context. The context struct encapsulates all information needed
|
224
|
+
by the algorithm, and it can be copied or moved in memory with no
|
225
|
+
unexpected effects.
|
226
|
+
|
227
|
+
For consistency, functions for different algorithms are very similar,
|
228
|
+
but there are some differences, for instance reflecting if the key setup
|
229
|
+
or encryption function differ for encryption and decryption, and whether
|
230
|
+
or not key setup can fail. There are also differences between algorithms
|
231
|
+
that don't show in function prototypes, but which the application must
|
232
|
+
nevertheless be aware of. There is no big difference between the
|
233
|
+
functions for stream ciphers and for block ciphers, although they should
|
234
|
+
be used quite differently by the application.
|
235
|
+
|
236
|
+
If your application uses more than one algorithm of the same type,
|
237
|
+
you should probably create an interface that is tailor-made for your
|
238
|
+
needs, and then write a few lines of glue code on top of Nettle.
|
239
|
+
|
240
|
+
By convention, for an algorithm named `foo', the struct tag for the
|
241
|
+
context struct is `foo_ctx', constants and functions uses prefixes like
|
242
|
+
`FOO_BLOCK_SIZE' (a constant) and `foo_set_key' (a function).
|
243
|
+
|
244
|
+
In all functions, strings are represented with an explicit length, of
|
245
|
+
type `unsigned', and a pointer of type `uint8_t *' or `const uint8_t
|
246
|
+
*'. For functions that transform one string to another, the argument
|
247
|
+
order is length, destination pointer and source pointer. Source and
|
248
|
+
destination areas are of the same length. Source and destination may be
|
249
|
+
the same, so that you can process strings in place, but they _must not_
|
250
|
+
overlap in any other way.
|
251
|
+
|
252
|
+
Many of the functions lack return value and can never fail. Those
|
253
|
+
functions which can fail, return one on success and zero on failure.
|
254
|
+
|
255
|
+
|
256
|
+
File: nettle.info, Node: Example, Next: Linking, Prev: Conventions, Up: Top
|
257
|
+
|
258
|
+
4 Example
|
259
|
+
*********
|
260
|
+
|
261
|
+
A simple example program that reads a file from standard input and
|
262
|
+
writes its SHA1 checksum on standard output should give the flavor of
|
263
|
+
Nettle.
|
264
|
+
|
265
|
+
#include <stdio.h>
|
266
|
+
#include <stdlib.h>
|
267
|
+
|
268
|
+
#include <nettle/sha.h>
|
269
|
+
|
270
|
+
#define BUF_SIZE 1000
|
271
|
+
|
272
|
+
static void
|
273
|
+
display_hex(unsigned length, uint8_t *data)
|
274
|
+
{
|
275
|
+
unsigned i;
|
276
|
+
|
277
|
+
for (i = 0; i<length; i++)
|
278
|
+
printf("%02x ", data[i]);
|
279
|
+
|
280
|
+
printf("\n");
|
281
|
+
}
|
282
|
+
|
283
|
+
int
|
284
|
+
main(int argc, char **argv)
|
285
|
+
{
|
286
|
+
struct sha1_ctx ctx;
|
287
|
+
uint8_t buffer[BUF_SIZE];
|
288
|
+
uint8_t digest[SHA1_DIGEST_SIZE];
|
289
|
+
|
290
|
+
sha1_init(&ctx);
|
291
|
+
for (;;)
|
292
|
+
{
|
293
|
+
int done = fread(buffer, 1, sizeof(buffer), stdin);
|
294
|
+
sha1_update(&ctx, done, buffer);
|
295
|
+
if (done < sizeof(buffer))
|
296
|
+
break;
|
297
|
+
}
|
298
|
+
if (ferror(stdin))
|
299
|
+
return EXIT_FAILURE;
|
300
|
+
|
301
|
+
sha1_digest(&ctx, SHA1_DIGEST_SIZE, digest);
|
302
|
+
|
303
|
+
display_hex(SHA1_DIGEST_SIZE, digest);
|
304
|
+
return EXIT_SUCCESS;
|
305
|
+
}
|
306
|
+
|
307
|
+
On a typical Unix system, this program can be compiled and linked
|
308
|
+
with the command line
|
309
|
+
cc sha-example.c -o sha-example -lnettle
|
310
|
+
|
311
|
+
|
312
|
+
File: nettle.info, Node: Linking, Next: Reference, Prev: Example, Up: Top
|
313
|
+
|
314
|
+
5 Linking
|
315
|
+
*********
|
316
|
+
|
317
|
+
Nettle actually consists of two libraries, `libnettle' and
|
318
|
+
`libhogweed'. The `libhogweed' library contains those functions of
|
319
|
+
Nettle that uses bignum operations, and depends on the GMP library.
|
320
|
+
With this division, linking works the same for both static and dynamic
|
321
|
+
libraries.
|
322
|
+
|
323
|
+
If an application uses only the symmetric crypto algorithms of Nettle
|
324
|
+
(i.e., block ciphers, hash functions, and the like), it's sufficient to
|
325
|
+
link with `-lnettle'. If an application also uses public-key
|
326
|
+
algorithms, the recommended linker flags are `-lhogweed -lnettle
|
327
|
+
-lgmp'. If the involved libraries are installed as dynamic libraries, it
|
328
|
+
may be sufficient to link with just `-lhogweed', and the loader will
|
329
|
+
resolve the dependencies automatically.
|
330
|
+
|
331
|
+
|
332
|
+
File: nettle.info, Node: Reference, Next: Nettle soup, Prev: Linking, Up: Top
|
333
|
+
|
334
|
+
6 Reference
|
335
|
+
***********
|
336
|
+
|
337
|
+
This chapter describes all the Nettle functions, grouped by family.
|
338
|
+
|
339
|
+
* Menu:
|
340
|
+
|
341
|
+
* Hash functions::
|
342
|
+
* Cipher functions::
|
343
|
+
* Cipher modes::
|
344
|
+
* Keyed hash functions::
|
345
|
+
* Public-key algorithms::
|
346
|
+
* Randomness::
|
347
|
+
* Ascii encoding::
|
348
|
+
* Miscellaneous functions::
|
349
|
+
* Compatibility functions::
|
350
|
+
|
351
|
+
|
352
|
+
File: nettle.info, Node: Hash functions, Next: Cipher functions, Prev: Reference, Up: Reference
|
353
|
+
|
354
|
+
6.1 Hash functions
|
355
|
+
==================
|
356
|
+
|
357
|
+
A cryptographic "hash function" is a function that takes variable size
|
358
|
+
strings, and maps them to strings of fixed, short, length. There are
|
359
|
+
naturally lots of collisions, as there are more possible 1MB files than
|
360
|
+
20 byte strings. But the function is constructed such that is hard to
|
361
|
+
find the collisions. More precisely, a cryptographic hash function `H'
|
362
|
+
should have the following properties:
|
363
|
+
|
364
|
+
_One-way_
|
365
|
+
Given a hash value `H(x)' it is hard to find a string `x' that
|
366
|
+
hashes to that value.
|
367
|
+
|
368
|
+
_Collision-resistant_
|
369
|
+
It is hard to find two different strings, `x' and `y', such that
|
370
|
+
`H(x)' = `H(y)'.
|
371
|
+
|
372
|
+
|
373
|
+
Hash functions are useful as building blocks for digital signatures,
|
374
|
+
message authentication codes, pseudo random generators, association of
|
375
|
+
unique ids to documents, and many other things.
|
376
|
+
|
377
|
+
The most commonly used hash functions are MD5 and SHA1.
|
378
|
+
Unfortunately, both these fail the collision-resistance requirement;
|
379
|
+
cryptologists have found ways to construct colliding inputs. The
|
380
|
+
recommended hash function for new applications is SHA256, even though
|
381
|
+
it uses a structure similar to MD5 and SHA1. Constructing better hash
|
382
|
+
functions is an urgent research problem.
|
383
|
+
|
384
|
+
6.1.1 MD5
|
385
|
+
---------
|
386
|
+
|
387
|
+
MD5 is a message digest function constructed by Ronald Rivest, and
|
388
|
+
described in `RFC 1321'. It outputs message digests of 128 bits, or 16
|
389
|
+
octets. Nettle defines MD5 in `<nettle/md5.h>'.
|
390
|
+
|
391
|
+
-- Context struct: struct md5_ctx
|
392
|
+
|
393
|
+
-- Constant: MD5_DIGEST_SIZE
|
394
|
+
The size of an MD5 digest, i.e. 16.
|
395
|
+
|
396
|
+
-- Constant: MD5_DATA_SIZE
|
397
|
+
The internal block size of MD5. Useful for some special
|
398
|
+
constructions, in particular HMAC-MD5.
|
399
|
+
|
400
|
+
-- Function: void md5_init (struct md5_ctx *CTX)
|
401
|
+
Initialize the MD5 state.
|
402
|
+
|
403
|
+
-- Function: void md5_update (struct md5_ctx *CTX, unsigned LENGTH,
|
404
|
+
const uint8_t *DATA)
|
405
|
+
Hash some more data.
|
406
|
+
|
407
|
+
-- Function: void md5_digest (struct md5_ctx *CTX, unsigned LENGTH,
|
408
|
+
uint8_t *DIGEST)
|
409
|
+
Performs final processing and extracts the message digest, writing
|
410
|
+
it to DIGEST. LENGTH may be smaller than `MD5_DIGEST_SIZE', in
|
411
|
+
which case only the first LENGTH octets of the digest are written.
|
412
|
+
|
413
|
+
This function also resets the context in the same way as
|
414
|
+
`md5_init'.
|
415
|
+
|
416
|
+
The normal way to use MD5 is to call the functions in order: First
|
417
|
+
`md5_init', then `md5_update' zero or more times, and finally
|
418
|
+
`md5_digest'. After `md5_digest', the context is reset to its initial
|
419
|
+
state, so you can start over calling `md5_update' to hash new data.
|
420
|
+
|
421
|
+
To start over, you can call `md5_init' at any time.
|
422
|
+
|
423
|
+
6.1.2 MD2
|
424
|
+
---------
|
425
|
+
|
426
|
+
MD2 is another hash function of Ronald Rivest's, described in `RFC
|
427
|
+
1319'. It outputs message digests of 128 bits, or 16 octets. Nettle
|
428
|
+
defines MD2 in `<nettle/md2.h>'.
|
429
|
+
|
430
|
+
-- Context struct: struct md2_ctx
|
431
|
+
|
432
|
+
-- Constant: MD2_DIGEST_SIZE
|
433
|
+
The size of an MD2 digest, i.e. 16.
|
434
|
+
|
435
|
+
-- Constant: MD2_DATA_SIZE
|
436
|
+
The internal block size of MD2.
|
437
|
+
|
438
|
+
-- Function: void md2_init (struct md2_ctx *CTX)
|
439
|
+
Initialize the MD2 state.
|
440
|
+
|
441
|
+
-- Function: void md2_update (struct md2_ctx *CTX, unsigned LENGTH,
|
442
|
+
const uint8_t *DATA)
|
443
|
+
Hash some more data.
|
444
|
+
|
445
|
+
-- Function: void md2_digest (struct md2_ctx *CTX, unsigned LENGTH,
|
446
|
+
uint8_t *DIGEST)
|
447
|
+
Performs final processing and extracts the message digest, writing
|
448
|
+
it to DIGEST. LENGTH may be smaller than `MD2_DIGEST_SIZE', in
|
449
|
+
which case only the first LENGTH octets of the digest are written.
|
450
|
+
|
451
|
+
This function also resets the context in the same way as
|
452
|
+
`md2_init'.
|
453
|
+
|
454
|
+
6.1.3 MD4
|
455
|
+
---------
|
456
|
+
|
457
|
+
MD4 is a predecessor of MD5, described in `RFC 1320'. Like MD5, it is
|
458
|
+
constructed by Ronald Rivest. It outputs message digests of 128 bits,
|
459
|
+
or 16 octets. Nettle defines MD4 in `<nettle/md4.h>'. Use of MD4 is not
|
460
|
+
recommended, but it is sometimes needed for compatibility with existing
|
461
|
+
applications and protocols.
|
462
|
+
|
463
|
+
-- Context struct: struct md4_ctx
|
464
|
+
|
465
|
+
-- Constant: MD4_DIGEST_SIZE
|
466
|
+
The size of an MD4 digest, i.e. 16.
|
467
|
+
|
468
|
+
-- Constant: MD4_DATA_SIZE
|
469
|
+
The internal block size of MD4.
|
470
|
+
|
471
|
+
-- Function: void md4_init (struct md4_ctx *CTX)
|
472
|
+
Initialize the MD4 state.
|
473
|
+
|
474
|
+
-- Function: void md4_update (struct md4_ctx *CTX, unsigned LENGTH,
|
475
|
+
const uint8_t *DATA)
|
476
|
+
Hash some more data.
|
477
|
+
|
478
|
+
-- Function: void md4_digest (struct md4_ctx *CTX, unsigned LENGTH,
|
479
|
+
uint8_t *DIGEST)
|
480
|
+
Performs final processing and extracts the message digest, writing
|
481
|
+
it to DIGEST. LENGTH may be smaller than `MD4_DIGEST_SIZE', in
|
482
|
+
which case only the first LENGTH octets of the digest are written.
|
483
|
+
|
484
|
+
This function also resets the context in the same way as
|
485
|
+
`md4_init'.
|
486
|
+
|
487
|
+
6.1.4 RIPEMD160
|
488
|
+
---------------
|
489
|
+
|
490
|
+
RIPEMD160 is a hash function designed by Hans Dobbertin, Antoon
|
491
|
+
Bosselaers, and Bart Preneel, as a strengthened version of RIPEMD
|
492
|
+
(which, like MD4 and MD5, fails the collision-resistance requirement).
|
493
|
+
It produces message digests of 160 bits, or 20 octets. Nettle defined
|
494
|
+
RIPEMD160 in `nettle/ripemd160.h'.
|
495
|
+
|
496
|
+
-- Context struct: struct ripemd160_ctx
|
497
|
+
|
498
|
+
-- Constant: RIPEMD160_DIGEST_SIZE
|
499
|
+
The size of an RIPEMD160 digest, i.e. 20.
|
500
|
+
|
501
|
+
-- Constant: RIPEMD160_DATA_SIZE
|
502
|
+
The internal block size of RIPEMD160.
|
503
|
+
|
504
|
+
-- Function: void ripemd160_init (struct ripemd160_ctx *CTX)
|
505
|
+
Initialize the RIPEMD160 state.
|
506
|
+
|
507
|
+
-- Function: void ripemd160_update (struct ripemd160_ctx *CTX,
|
508
|
+
unsigned LENGTH, const uint8_t *DATA)
|
509
|
+
Hash some more data.
|
510
|
+
|
511
|
+
-- Function: void ripemd160_digest (struct ripemd160_ctx *CTX,
|
512
|
+
unsigned LENGTH, uint8_t *DIGEST)
|
513
|
+
Performs final processing and extracts the message digest, writing
|
514
|
+
it to DIGEST. LENGTH may be smaller than `RIPEMD160_DIGEST_SIZE',
|
515
|
+
in which case only the first LENGTH octets of the digest are
|
516
|
+
written.
|
517
|
+
|
518
|
+
This function also resets the context in the same way as
|
519
|
+
`ripemd160_init'.
|
520
|
+
|
521
|
+
6.1.5 SHA1
|
522
|
+
----------
|
523
|
+
|
524
|
+
SHA1 is a hash function specified by "NIST" (The U.S. National Institute
|
525
|
+
for Standards and Technology). It outputs hash values of 160 bits, or 20
|
526
|
+
octets. Nettle defines SHA1 in `<nettle/sha.h>'.
|
527
|
+
|
528
|
+
The functions are analogous to the MD5 ones.
|
529
|
+
|
530
|
+
-- Context struct: struct sha1_ctx
|
531
|
+
|
532
|
+
-- Constant: SHA1_DIGEST_SIZE
|
533
|
+
The size of an SHA1 digest, i.e. 20.
|
534
|
+
|
535
|
+
-- Constant: SHA1_DATA_SIZE
|
536
|
+
The internal block size of SHA1. Useful for some special
|
537
|
+
constructions, in particular HMAC-SHA1.
|
538
|
+
|
539
|
+
-- Function: void sha1_init (struct sha1_ctx *CTX)
|
540
|
+
Initialize the SHA1 state.
|
541
|
+
|
542
|
+
-- Function: void sha1_update (struct sha1_ctx *CTX, unsigned LENGTH,
|
543
|
+
const uint8_t *DATA)
|
544
|
+
Hash some more data.
|
545
|
+
|
546
|
+
-- Function: void sha1_digest (struct sha1_ctx *CTX, unsigned LENGTH,
|
547
|
+
uint8_t *DIGEST)
|
548
|
+
Performs final processing and extracts the message digest, writing
|
549
|
+
it to DIGEST. LENGTH may be smaller than `SHA1_DIGEST_SIZE', in
|
550
|
+
which case only the first LENGTH octets of the digest are written.
|
551
|
+
|
552
|
+
This function also resets the context in the same way as
|
553
|
+
`sha1_init'.
|
554
|
+
|
555
|
+
6.1.6 SHA256
|
556
|
+
------------
|
557
|
+
|
558
|
+
SHA256 is another hash function specified by "NIST", intended as a
|
559
|
+
replacement for SHA1, generating larger digests. It outputs hash values
|
560
|
+
of 256 bits, or 32 octets. Nettle defines SHA256 in `<nettle/sha.h>'.
|
561
|
+
|
562
|
+
The functions are analogous to the MD5 ones.
|
563
|
+
|
564
|
+
-- Context struct: struct sha256_ctx
|
565
|
+
|
566
|
+
-- Constant: SHA256_DIGEST_SIZE
|
567
|
+
The size of an SHA256 digest, i.e. 32.
|
568
|
+
|
569
|
+
-- Constant: SHA256_DATA_SIZE
|
570
|
+
The internal block size of SHA256. Useful for some special
|
571
|
+
constructions, in particular HMAC-SHA256.
|
572
|
+
|
573
|
+
-- Function: void sha256_init (struct sha256_ctx *CTX)
|
574
|
+
Initialize the SHA256 state.
|
575
|
+
|
576
|
+
-- Function: void sha256_update (struct sha256_ctx *CTX, unsigned
|
577
|
+
LENGTH, const uint8_t *DATA)
|
578
|
+
Hash some more data.
|
579
|
+
|
580
|
+
-- Function: void sha256_digest (struct sha256_ctx *CTX, unsigned
|
581
|
+
LENGTH, uint8_t *DIGEST)
|
582
|
+
Performs final processing and extracts the message digest, writing
|
583
|
+
it to DIGEST. LENGTH may be smaller than `SHA256_DIGEST_SIZE', in
|
584
|
+
which case only the first LENGTH octets of the digest are written.
|
585
|
+
|
586
|
+
This function also resets the context in the same way as
|
587
|
+
`sha256_init'.
|
588
|
+
|
589
|
+
6.1.7 SHA224
|
590
|
+
------------
|
591
|
+
|
592
|
+
SHA224 is a variant of SHA256, with a different initial state, and with
|
593
|
+
the output truncated to 224 bits, or 28 octets. Nettle defines SHA224 in
|
594
|
+
`<nettle/sha.h>'.
|
595
|
+
|
596
|
+
The functions are analogous to the MD5 ones.
|
597
|
+
|
598
|
+
-- Context struct: struct sha224_ctx
|
599
|
+
|
600
|
+
-- Constant: SHA224_DIGEST_SIZE
|
601
|
+
The size of an SHA224 digest, i.e. 28.
|
602
|
+
|
603
|
+
-- Constant: SHA224_DATA_SIZE
|
604
|
+
The internal block size of SHA224. Useful for some special
|
605
|
+
constructions, in particular HMAC-SHA224.
|
606
|
+
|
607
|
+
-- Function: void sha224_init (struct sha224_ctx *CTX)
|
608
|
+
Initialize the SHA224 state.
|
609
|
+
|
610
|
+
-- Function: void sha224_update (struct sha224_ctx *CTX, unsigned
|
611
|
+
LENGTH, const uint8_t *DATA)
|
612
|
+
Hash some more data.
|
613
|
+
|
614
|
+
-- Function: void sha224_digest (struct sha224_ctx *CTX, unsigned
|
615
|
+
LENGTH, uint8_t *DIGEST)
|
616
|
+
Performs final processing and extracts the message digest, writing
|
617
|
+
it to DIGEST. LENGTH may be smaller than `SHA224_DIGEST_SIZE', in
|
618
|
+
which case only the first LENGTH octets of the digest are written.
|
619
|
+
|
620
|
+
This function also resets the context in the same way as
|
621
|
+
`sha224_init'.
|
622
|
+
|
623
|
+
6.1.8 SHA512
|
624
|
+
------------
|
625
|
+
|
626
|
+
SHA512 is a larger sibling to SHA256, with a very similar structure but
|
627
|
+
with both the output and the internal variables of twice the size. The
|
628
|
+
internal variables are 64 bits rather than 32, making it significantly
|
629
|
+
slower on 32-bit computers. It outputs hash values of 512 bits, or 64
|
630
|
+
octets. Nettle defines SHA512 in `<nettle/sha.h>'.
|
631
|
+
|
632
|
+
The functions are analogous to the MD5 ones.
|
633
|
+
|
634
|
+
-- Context struct: struct sha512_ctx
|
635
|
+
|
636
|
+
-- Constant: SHA512_DIGEST_SIZE
|
637
|
+
The size of an SHA512 digest, i.e. 64.
|
638
|
+
|
639
|
+
-- Constant: SHA512_DATA_SIZE
|
640
|
+
The internal block size of SHA512. Useful for some special
|
641
|
+
constructions, in particular HMAC-SHA512.
|
642
|
+
|
643
|
+
-- Function: void sha512_init (struct sha512_ctx *CTX)
|
644
|
+
Initialize the SHA512 state.
|
645
|
+
|
646
|
+
-- Function: void sha512_update (struct sha512_ctx *CTX, unsigned
|
647
|
+
LENGTH, const uint8_t *DATA)
|
648
|
+
Hash some more data.
|
649
|
+
|
650
|
+
-- Function: void sha512_digest (struct sha512_ctx *CTX, unsigned
|
651
|
+
LENGTH, uint8_t *DIGEST)
|
652
|
+
Performs final processing and extracts the message digest, writing
|
653
|
+
it to DIGEST. LENGTH may be smaller than `SHA512_DIGEST_SIZE', in
|
654
|
+
which case only the first LENGTH octets of the digest are written.
|
655
|
+
|
656
|
+
This function also resets the context in the same way as
|
657
|
+
`sha512_init'.
|
658
|
+
|
659
|
+
6.1.9 SHA384
|
660
|
+
------------
|
661
|
+
|
662
|
+
SHA384 is a variant of SHA512, with a different initial state, and with
|
663
|
+
the output truncated to 384 bits, or 48 octets. Nettle defines SHA384 in
|
664
|
+
`<nettle/sha.h>'.
|
665
|
+
|
666
|
+
The functions are analogous to the MD5 ones.
|
667
|
+
|
668
|
+
-- Context struct: struct sha384_ctx
|
669
|
+
|
670
|
+
-- Constant: SHA384_DIGEST_SIZE
|
671
|
+
The size of an SHA384 digest, i.e. 48.
|
672
|
+
|
673
|
+
-- Constant: SHA384_DATA_SIZE
|
674
|
+
The internal block size of SHA384. Useful for some special
|
675
|
+
constructions, in particular HMAC-SHA384.
|
676
|
+
|
677
|
+
-- Function: void sha384_init (struct sha384_ctx *CTX)
|
678
|
+
Initialize the SHA384 state.
|
679
|
+
|
680
|
+
-- Function: void sha384_update (struct sha384_ctx *CTX, unsigned
|
681
|
+
LENGTH, const uint8_t *DATA)
|
682
|
+
Hash some more data.
|
683
|
+
|
684
|
+
-- Function: void sha384_digest (struct sha384_ctx *CTX, unsigned
|
685
|
+
LENGTH, uint8_t *DIGEST)
|
686
|
+
Performs final processing and extracts the message digest, writing
|
687
|
+
it to DIGEST. LENGTH may be smaller than `SHA384_DIGEST_SIZE', in
|
688
|
+
which case only the first LENGTH octets of the digest are written.
|
689
|
+
|
690
|
+
This function also resets the context in the same way as
|
691
|
+
`sha384_init'.
|
692
|
+
|
693
|
+
6.1.10 `struct nettle_hash'
|
694
|
+
---------------------------
|
695
|
+
|
696
|
+
Nettle includes a struct including information about the supported hash
|
697
|
+
functions. It is defined in `<nettle/nettle-meta.h>', and is used by
|
698
|
+
Nettle's implementation of HMAC (*note Keyed hash functions::).
|
699
|
+
|
700
|
+
-- Meta struct: `struct nettle_hash' name context_size digest_size
|
701
|
+
block_size init update digest
|
702
|
+
The last three attributes are function pointers, of types
|
703
|
+
`nettle_hash_init_func', `nettle_hash_update_func', and
|
704
|
+
`nettle_hash_digest_func'. The first argument to these functions is
|
705
|
+
`void *' pointer to a context struct, which is of size
|
706
|
+
`context_size'.
|
707
|
+
|
708
|
+
-- Constant Struct: struct nettle_hash nettle_md2
|
709
|
+
-- Constant Struct: struct nettle_hash nettle_md4
|
710
|
+
-- Constant Struct: struct nettle_hash nettle_md5
|
711
|
+
-- Constant Struct: struct nettle_hash nettle_ripemd160
|
712
|
+
-- Constant Struct: struct nettle_hash nettle_sha1
|
713
|
+
-- Constant Struct: struct nettle_hash nettle_sha224
|
714
|
+
-- Constant Struct: struct nettle_hash nettle_sha256
|
715
|
+
-- Constant Struct: struct nettle_hash nettle_sha384
|
716
|
+
-- Constant Struct: struct nettle_hash nettle_sha512
|
717
|
+
These are all the hash functions that Nettle implements.
|
718
|
+
|
719
|
+
Nettle also exports a list of all these hashes. This list can be
|
720
|
+
used to dynamically enumerate or search the supported algorithms:
|
721
|
+
|
722
|
+
-- Constant Struct: struct nettle_hash ** nettle_hashes
|
723
|
+
|
724
|
+
|
725
|
+
File: nettle.info, Node: Cipher functions, Next: Cipher modes, Prev: Hash functions, Up: Reference
|
726
|
+
|
727
|
+
6.2 Cipher functions
|
728
|
+
====================
|
729
|
+
|
730
|
+
A "cipher" is a function that takes a message or "plaintext" and a
|
731
|
+
secret "key" and transforms it to a "ciphertext". Given only the
|
732
|
+
ciphertext, but not the key, it should be hard to find the plaintext.
|
733
|
+
Given matching pairs of plaintext and ciphertext, it should be hard to
|
734
|
+
find the key.
|
735
|
+
|
736
|
+
There are two main classes of ciphers: Block ciphers and stream
|
737
|
+
ciphers.
|
738
|
+
|
739
|
+
A block cipher can process data only in fixed size chunks, called
|
740
|
+
"blocks". Typical block sizes are 8 or 16 octets. To encrypt arbitrary
|
741
|
+
messages, you usually have to pad it to an integral number of blocks,
|
742
|
+
split it into blocks, and then process each block. The simplest way is
|
743
|
+
to process one block at a time, independent of each other. That mode of
|
744
|
+
operation is called "ECB", Electronic Code Book mode. However, using
|
745
|
+
ECB is usually a bad idea. For a start, plaintext blocks that are equal
|
746
|
+
are transformed to ciphertext blocks that are equal; that leaks
|
747
|
+
information about the plaintext. Usually you should apply the cipher is
|
748
|
+
some "feedback mode", "CBC" (Cipher Block Chaining) and "CTR" (Counter
|
749
|
+
mode) being two of of the most popular. See *Note Cipher modes::, for
|
750
|
+
information on how to apply CBC and CTR with Nettle.
|
751
|
+
|
752
|
+
A stream cipher can be used for messages of arbitrary length. A
|
753
|
+
typical stream cipher is a keyed pseudo-random generator. To encrypt a
|
754
|
+
plaintext message of N octets, you key the generator, generate N octets
|
755
|
+
of pseudo-random data, and XOR it with the plaintext. To decrypt,
|
756
|
+
regenerate the same stream using the key, XOR it to the ciphertext, and
|
757
|
+
the plaintext is recovered.
|
758
|
+
|
759
|
+
*Caution:* The first rule for this kind of cipher is the same as for
|
760
|
+
a One Time Pad: _never_ ever use the same key twice.
|
761
|
+
|
762
|
+
A common misconception is that encryption, by itself, implies
|
763
|
+
authentication. Say that you and a friend share a secret key, and you
|
764
|
+
receive an encrypted message. You apply the key, and get a plaintext
|
765
|
+
message that makes sense to you. Can you then be sure that it really was
|
766
|
+
your friend that wrote the message you're reading? The answer is no. For
|
767
|
+
example, if you were using a block cipher in ECB mode, an attacker may
|
768
|
+
pick up the message on its way, and reorder, delete or repeat some of
|
769
|
+
the blocks. Even if the attacker can't decrypt the message, he can
|
770
|
+
change it so that you are not reading the same message as your friend
|
771
|
+
wrote. If you are using a block cipher in CBC mode rather than ECB, or
|
772
|
+
are using a stream cipher, the possibilities for this sort of attack
|
773
|
+
are different, but the attacker can still make predictable changes to
|
774
|
+
the message.
|
775
|
+
|
776
|
+
It is recommended to _always_ use an authentication mechanism in
|
777
|
+
addition to encrypting the messages. Popular choices are Message
|
778
|
+
Authentication Codes like HMAC-SHA1 (*note Keyed hash functions::), or
|
779
|
+
digital signatures like RSA.
|
780
|
+
|
781
|
+
Some ciphers have so called "weak keys", keys that results in
|
782
|
+
undesirable structure after the key setup processing, and should be
|
783
|
+
avoided. In Nettle, most key setup functions have no return value, but
|
784
|
+
for ciphers with weak keys, the return value indicates whether or not
|
785
|
+
the given key is weak. For good keys, key setup returns 1, and for weak
|
786
|
+
keys, it returns 0. When possible, avoid algorithms that have weak
|
787
|
+
keys. There are several good ciphers that don't have any weak keys.
|
788
|
+
|
789
|
+
To encrypt a message, you first initialize a cipher context for
|
790
|
+
encryption or decryption with a particular key. You then use the context
|
791
|
+
to process plaintext or ciphertext messages. The initialization is known
|
792
|
+
as "key setup". With Nettle, it is recommended to use each context
|
793
|
+
struct for only one direction, even if some of the ciphers use a single
|
794
|
+
key setup function that can be used for both encryption and decryption.
|
795
|
+
|
796
|
+
6.2.1 AES
|
797
|
+
---------
|
798
|
+
|
799
|
+
AES is a block cipher, specified by NIST as a replacement for the older
|
800
|
+
DES standard. The standard is the result of a competition between
|
801
|
+
cipher designers. The winning design, also known as RIJNDAEL, was
|
802
|
+
constructed by Joan Daemen and Vincent Rijnmen.
|
803
|
+
|
804
|
+
Like all the AES candidates, the winning design uses a block size of
|
805
|
+
128 bits, or 16 octets, and variable key-size, 128, 192 and 256 bits
|
806
|
+
(16, 24 and 32 octets) being the allowed key sizes. It does not have
|
807
|
+
any weak keys. Nettle defines AES in `<nettle/aes.h>'.
|
808
|
+
|
809
|
+
-- Context struct: struct aes_ctx
|
810
|
+
|
811
|
+
-- Constant: AES_BLOCK_SIZE
|
812
|
+
The AES block-size, 16
|
813
|
+
|
814
|
+
-- Constant: AES_MIN_KEY_SIZE
|
815
|
+
|
816
|
+
-- Constant: AES_MAX_KEY_SIZE
|
817
|
+
|
818
|
+
-- Constant: AES_KEY_SIZE
|
819
|
+
Default AES key size, 32
|
820
|
+
|
821
|
+
-- Function: void aes_set_encrypt_key (struct aes_ctx *CTX, unsigned
|
822
|
+
LENGTH, const uint8_t *KEY)
|
823
|
+
-- Function: void aes_set_decrypt_key (struct aes_ctx *CTX, unsigned
|
824
|
+
LENGTH, const uint8_t *KEY)
|
825
|
+
Initialize the cipher, for encryption or decryption, respectively.
|
826
|
+
|
827
|
+
-- Function: void aes_invert_key (struct aes_ctx *DST, const struct
|
828
|
+
aes_ctx *SRC)
|
829
|
+
Given a context SRC initialized for encryption, initializes the
|
830
|
+
context struct DST for decryption, using the same key. If the same
|
831
|
+
context struct is passed for both `src' and `dst', it is converted
|
832
|
+
in place. Calling `aes_set_encrypt_key' and `aes_invert_key' is
|
833
|
+
more efficient than calling `aes_set_encrypt_key' and
|
834
|
+
`aes_set_decrypt_key'. This function is mainly useful for
|
835
|
+
applications which needs to both encrypt and decrypt using the
|
836
|
+
_same_ key.
|
837
|
+
|
838
|
+
-- Function: void aes_encrypt (struct aes_ctx *CTX, unsigned LENGTH,
|
839
|
+
uint8_t *DST, const uint8_t *SRC)
|
840
|
+
Encryption function. LENGTH must be an integral multiple of the
|
841
|
+
block size. If it is more than one block, the data is processed in
|
842
|
+
ECB mode. `src' and `dst' may be equal, but they must not overlap
|
843
|
+
in any other way.
|
844
|
+
|
845
|
+
-- Function: void aes_decrypt (struct aes_ctx *CTX, unsigned LENGTH,
|
846
|
+
uint8_t *DST, const uint8_t *SRC)
|
847
|
+
Analogous to `aes_encrypt'
|
848
|
+
|
849
|
+
6.2.2 ARCFOUR
|
850
|
+
-------------
|
851
|
+
|
852
|
+
ARCFOUR is a stream cipher, also known under the trade marked name RC4,
|
853
|
+
and it is one of the fastest ciphers around. A problem is that the key
|
854
|
+
setup of ARCFOUR is quite weak, you should never use keys with
|
855
|
+
structure, keys that are ordinary passwords, or sequences of keys like
|
856
|
+
"secret:1", "secret:2", .... If you have keys that don't look like
|
857
|
+
random bit strings, and you want to use ARCFOUR, always hash the key
|
858
|
+
before feeding it to ARCFOUR. Furthermore, the initial bytes of the
|
859
|
+
generated key stream leak information about the key; for this reason, it
|
860
|
+
is recommended to discard the first 512 bytes of the key stream.
|
861
|
+
|
862
|
+
/* A more robust key setup function for ARCFOUR */
|
863
|
+
void
|
864
|
+
arcfour_set_key_hashed(struct arcfour_ctx *ctx,
|
865
|
+
unsigned length, const uint8_t *key)
|
866
|
+
{
|
867
|
+
struct sha256_ctx hash;
|
868
|
+
uint8_t digest[SHA256_DIGEST_SIZE];
|
869
|
+
uint8_t buffer[0x200];
|
870
|
+
|
871
|
+
sha256_init(&hash);
|
872
|
+
sha256_update(&hash, length, key);
|
873
|
+
sha256_digest(&hash, SHA256_DIGEST_SIZE, digest);
|
874
|
+
|
875
|
+
arcfour_set_key(ctx, SHA256_DIGEST_SIZE, digest);
|
876
|
+
arcfour_crypt(ctx, sizeof(buffer), buffer, buffer);
|
877
|
+
}
|
878
|
+
|
879
|
+
Nettle defines ARCFOUR in `<nettle/arcfour.h>'.
|
880
|
+
|
881
|
+
-- Context struct: struct arcfour_ctx
|
882
|
+
|
883
|
+
-- Constant: ARCFOUR_MIN_KEY_SIZE
|
884
|
+
Minimum key size, 1
|
885
|
+
|
886
|
+
-- Constant: ARCFOUR_MAX_KEY_SIZE
|
887
|
+
Maximum key size, 256
|
888
|
+
|
889
|
+
-- Constant: ARCFOUR_KEY_SIZE
|
890
|
+
Default ARCFOUR key size, 16
|
891
|
+
|
892
|
+
-- Function: void arcfour_set_key (struct arcfour_ctx *CTX, unsigned
|
893
|
+
LENGTH, const uint8_t *KEY)
|
894
|
+
Initialize the cipher. The same function is used for both
|
895
|
+
encryption and decryption.
|
896
|
+
|
897
|
+
-- Function: void arcfour_crypt (struct arcfour_ctx *CTX, unsigned
|
898
|
+
LENGTH, uint8_t *DST, const uint8_t *SRC)
|
899
|
+
Encrypt some data. The same function is used for both encryption
|
900
|
+
and decryption. Unlike the block ciphers, this function modifies
|
901
|
+
the context, so you can split the data into arbitrary chunks and
|
902
|
+
encrypt them one after another. The result is the same as if you
|
903
|
+
had called `arcfour_crypt' only once with all the data.
|
904
|
+
|
905
|
+
6.2.3 ARCTWO
|
906
|
+
------------
|
907
|
+
|
908
|
+
ARCTWO (also known as the trade marked name RC2) is a block cipher
|
909
|
+
specified in RFC 2268. Nettle also include a variation of the ARCTWO
|
910
|
+
set key operation that lack one step, to be compatible with the reverse
|
911
|
+
engineered RC2 cipher description, as described in a Usenet post to
|
912
|
+
`sci.crypt' by Peter Gutmann.
|
913
|
+
|
914
|
+
ARCTWO uses a block size of 64 bits, and variable key-size ranging
|
915
|
+
from 1 to 128 octets. Besides the key, ARCTWO also has a second
|
916
|
+
parameter to key setup, the number of effective key bits, `ekb'. This
|
917
|
+
parameter can be used to artificially reduce the key size. In practice,
|
918
|
+
`ekb' is usually set equal to the input key size. Nettle defines
|
919
|
+
ARCTWO in `<nettle/arctwo.h>'.
|
920
|
+
|
921
|
+
We do not recommend the use of ARCTWO; the Nettle implementation is
|
922
|
+
provided primarily for interoperability with existing applications and
|
923
|
+
standards.
|
924
|
+
|
925
|
+
-- Context struct: struct arctwo_ctx
|
926
|
+
|
927
|
+
-- Constant: ARCTWO_BLOCK_SIZE
|
928
|
+
The ARCTWO block-size, 8
|
929
|
+
|
930
|
+
-- Constant: ARCTWO_MIN_KEY_SIZE
|
931
|
+
|
932
|
+
-- Constant: ARCTWO_MAX_KEY_SIZE
|
933
|
+
|
934
|
+
-- Constant: ARCTWO_KEY_SIZE
|
935
|
+
Default ARCTWO key size, 8
|
936
|
+
|
937
|
+
-- Function: void arctwo_set_key_ekb (struct arctwo_ctx *CTX, unsigned
|
938
|
+
LENGTH, const uint8_t *KEY, unsigned EKB)
|
939
|
+
-- Function: void arctwo_set_key (struct arctwo_ctx *CTX, unsigned
|
940
|
+
LENGTH, const uint8_t *KEY)
|
941
|
+
-- Function: void arctwo_set_key_gutmann (struct arctwo_ctx *CTX,
|
942
|
+
unsigned LENGTH, const uint8_t *KEY)
|
943
|
+
Initialize the cipher. The same function is used for both
|
944
|
+
encryption and decryption. The first function is the most general
|
945
|
+
one, which lets you provide both the variable size key, and the
|
946
|
+
desired effective key size (in bits). The maximum value for EKB is
|
947
|
+
1024, and for convenience, `ekb = 0' has the same effect as `ekb =
|
948
|
+
1024'.
|
949
|
+
|
950
|
+
`arctwo_set_key(ctx, length, key)' is equivalent to
|
951
|
+
`arctwo_set_key_ekb(ctx, length, key, 8*length)', and
|
952
|
+
`arctwo_set_key_gutmann(ctx, length, key)' is equivalent to
|
953
|
+
`arctwo_set_key_ekb(ctx, length, key, 1024)'
|
954
|
+
|
955
|
+
-- Function: void arctwo_encrypt (struct arctwo_ctx *CTX, unsigned
|
956
|
+
LENGTH, uint8_t *DST, const uint8_t *SRC)
|
957
|
+
Encryption function. LENGTH must be an integral multiple of the
|
958
|
+
block size. If it is more than one block, the data is processed in
|
959
|
+
ECB mode. `src' and `dst' may be equal, but they must not overlap
|
960
|
+
in any other way.
|
961
|
+
|
962
|
+
-- Function: void arctwo_decrypt (struct arctwo_ctx *CTX, unsigned
|
963
|
+
LENGTH, uint8_t *DST, const uint8_t *SRC)
|
964
|
+
Analogous to `arctwo_encrypt'
|
965
|
+
|
966
|
+
6.2.4 BLOWFISH
|
967
|
+
--------------
|
968
|
+
|
969
|
+
BLOWFISH is a block cipher designed by Bruce Schneier. It uses a block
|
970
|
+
size of 64 bits (8 octets), and a variable key size, up to 448 bits. It
|
971
|
+
has some weak keys. Nettle defines BLOWFISH in `<nettle/blowfish.h>'.
|
972
|
+
|
973
|
+
-- Context struct: struct blowfish_ctx
|
974
|
+
|
975
|
+
-- Constant: BLOWFISH_BLOCK_SIZE
|
976
|
+
The BLOWFISH block-size, 8
|
977
|
+
|
978
|
+
-- Constant: BLOWFISH_MIN_KEY_SIZE
|
979
|
+
Minimum BLOWFISH key size, 8
|
980
|
+
|
981
|
+
-- Constant: BLOWFISH_MAX_KEY_SIZE
|
982
|
+
Maximum BLOWFISH key size, 56
|
983
|
+
|
984
|
+
-- Constant: BLOWFISH_KEY_SIZE
|
985
|
+
Default BLOWFISH key size, 16
|
986
|
+
|
987
|
+
-- Function: int blowfish_set_key (struct blowfish_ctx *CTX, unsigned
|
988
|
+
LENGTH, const uint8_t *KEY)
|
989
|
+
Initialize the cipher. The same function is used for both
|
990
|
+
encryption and decryption. Checks for weak keys, returning 1 for
|
991
|
+
good keys and 0 for weak keys. Applications that don't care about
|
992
|
+
weak keys can ignore the return value.
|
993
|
+
|
994
|
+
`blowfish_encrypt' or `blowfish_decrypt' with a weak key will
|
995
|
+
crash with an assert violation.
|
996
|
+
|
997
|
+
-- Function: void blowfish_encrypt (struct blowfish_ctx *CTX, unsigned
|
998
|
+
LENGTH, uint8_t *DST, const uint8_t *SRC)
|
999
|
+
Encryption function. LENGTH must be an integral multiple of the
|
1000
|
+
block size. If it is more than one block, the data is processed in
|
1001
|
+
ECB mode. `src' and `dst' may be equal, but they must not overlap
|
1002
|
+
in any other way.
|
1003
|
+
|
1004
|
+
-- Function: void blowfish_decrypt (struct blowfish_ctx *CTX, unsigned
|
1005
|
+
LENGTH, uint8_t *DST, const uint8_t *SRC)
|
1006
|
+
Analogous to `blowfish_encrypt'
|
1007
|
+
|
1008
|
+
6.2.5 Camellia
|
1009
|
+
--------------
|
1010
|
+
|
1011
|
+
Camellia is a block cipher developed by Mitsubishi and Nippon Telegraph
|
1012
|
+
and Telephone Corporation, described in `RFC3713', and recommended by
|
1013
|
+
some Japanese and European authorities as an alternative to AES. The
|
1014
|
+
algorithm is patented. The implementation in Nettle is derived from the
|
1015
|
+
implementation released by NTT under the GNU LGPL (v2.1 or later), and
|
1016
|
+
relies on the implicit patent license of the LGPL. There is also a
|
1017
|
+
statement of royalty-free licensing for Camellia at
|
1018
|
+
`http://www.ntt.co.jp/news/news01e/0104/010417.html', but this
|
1019
|
+
statement has some limitations which seem problematic for free software.
|
1020
|
+
|
1021
|
+
Camellia uses a the same block size and key sizes as AES: The block
|
1022
|
+
size is 128 bits (16 octets), and the supported key sizes are 128, 192,
|
1023
|
+
and 256 bits. Nettle defines Camellia in `<nettle/camellia.h>'.
|
1024
|
+
|
1025
|
+
-- Context struct: struct camellia_ctx
|
1026
|
+
|
1027
|
+
-- Constant: CAMELLIA_BLOCK_SIZE
|
1028
|
+
The CAMELLIA block-size, 16
|
1029
|
+
|
1030
|
+
-- Constant: CAMELLIA_MIN_KEY_SIZE
|
1031
|
+
|
1032
|
+
-- Constant: CAMELLIA_MAX_KEY_SIZE
|
1033
|
+
|
1034
|
+
-- Constant: CAMELLIA_KEY_SIZE
|
1035
|
+
Default CAMELLIA key size, 32
|
1036
|
+
|
1037
|
+
-- Function: void camellia_set_encrypt_key (struct camellia_ctx *CTX,
|
1038
|
+
unsigned LENGTH, const uint8_t *KEY)
|
1039
|
+
-- Function: void camellia_set_decrypt_key (struct camellia_ctx *CTX,
|
1040
|
+
unsigned LENGTH, const uint8_t *KEY)
|
1041
|
+
Initialize the cipher, for encryption or decryption, respectively.
|
1042
|
+
|
1043
|
+
-- Function: void camellia_invert_key (struct camellia_ctx *DST, const
|
1044
|
+
struct camellia_ctx *SRC)
|
1045
|
+
Given a context SRC initialized for encryption, initializes the
|
1046
|
+
context struct DST for decryption, using the same key. If the same
|
1047
|
+
context struct is passed for both `src' and `dst', it is converted
|
1048
|
+
in place. Calling `camellia_set_encrypt_key' and
|
1049
|
+
`camellia_invert_key' is more efficient than calling
|
1050
|
+
`camellia_set_encrypt_key' and `camellia_set_decrypt_key'. This
|
1051
|
+
function is mainly useful for applications which needs to both
|
1052
|
+
encrypt and decrypt using the _same_ key.
|
1053
|
+
|
1054
|
+
-- Function: void camellia_crypt (struct camellia_ctx *CTX, unsigned
|
1055
|
+
LENGTH, uint8_t *DST, const uint8_t *SRC)
|
1056
|
+
The same function is used for both encryption and decryption.
|
1057
|
+
LENGTH must be an integral multiple of the block size. If it is
|
1058
|
+
more than one block, the data is processed in ECB mode. `src' and
|
1059
|
+
`dst' may be equal, but they must not overlap in any other way.
|
1060
|
+
|
1061
|
+
6.2.6 CAST128
|
1062
|
+
-------------
|
1063
|
+
|
1064
|
+
CAST-128 is a block cipher, specified in `RFC 2144'. It uses a 64 bit
|
1065
|
+
(8 octets) block size, and a variable key size of up to 128 bits.
|
1066
|
+
Nettle defines cast128 in `<nettle/cast128.h>'.
|
1067
|
+
|
1068
|
+
-- Context struct: struct cast128_ctx
|
1069
|
+
|
1070
|
+
-- Constant: CAST128_BLOCK_SIZE
|
1071
|
+
The CAST128 block-size, 8
|
1072
|
+
|
1073
|
+
-- Constant: CAST128_MIN_KEY_SIZE
|
1074
|
+
Minimum CAST128 key size, 5
|
1075
|
+
|
1076
|
+
-- Constant: CAST128_MAX_KEY_SIZE
|
1077
|
+
Maximum CAST128 key size, 16
|
1078
|
+
|
1079
|
+
-- Constant: CAST128_KEY_SIZE
|
1080
|
+
Default CAST128 key size, 16
|
1081
|
+
|
1082
|
+
-- Function: void cast128_set_key (struct cast128_ctx *CTX, unsigned
|
1083
|
+
LENGTH, const uint8_t *KEY)
|
1084
|
+
Initialize the cipher. The same function is used for both
|
1085
|
+
encryption and decryption.
|
1086
|
+
|
1087
|
+
-- Function: void cast128_encrypt (struct cast128_ctx *CTX, unsigned
|
1088
|
+
LENGTH, uint8_t *DST, const uint8_t *SRC)
|
1089
|
+
Encryption function. LENGTH must be an integral multiple of the
|
1090
|
+
block size. If it is more than one block, the data is processed in
|
1091
|
+
ECB mode. `src' and `dst' may be equal, but they must not overlap
|
1092
|
+
in any other way.
|
1093
|
+
|
1094
|
+
-- Function: void cast128_decrypt (struct cast128_ctx *CTX, unsigned
|
1095
|
+
LENGTH, uint8_t *DST, const uint8_t *SRC)
|
1096
|
+
Analogous to `cast128_encrypt'
|
1097
|
+
|
1098
|
+
6.2.7 DES
|
1099
|
+
---------
|
1100
|
+
|
1101
|
+
DES is the old Data Encryption Standard, specified by NIST. It uses a
|
1102
|
+
block size of 64 bits (8 octets), and a key size of 56 bits. However,
|
1103
|
+
the key bits are distributed over 8 octets, where the least significant
|
1104
|
+
bit of each octet may be used for parity. A common way to use DES is to
|
1105
|
+
generate 8 random octets in some way, then set the least significant bit
|
1106
|
+
of each octet to get odd parity, and initialize DES with the resulting
|
1107
|
+
key.
|
1108
|
+
|
1109
|
+
The key size of DES is so small that keys can be found by brute
|
1110
|
+
force, using specialized hardware or lots of ordinary work stations in
|
1111
|
+
parallel. One shouldn't be using plain DES at all today, if one uses
|
1112
|
+
DES at all one should be using "triple DES", see DES3 below.
|
1113
|
+
|
1114
|
+
DES also has some weak keys. Nettle defines DES in `<nettle/des.h>'.
|
1115
|
+
|
1116
|
+
-- Context struct: struct des_ctx
|
1117
|
+
|
1118
|
+
-- Constant: DES_BLOCK_SIZE
|
1119
|
+
The DES block-size, 8
|
1120
|
+
|
1121
|
+
-- Constant: DES_KEY_SIZE
|
1122
|
+
DES key size, 8
|
1123
|
+
|
1124
|
+
-- Function: int des_set_key (struct des_ctx *CTX, const uint8_t *KEY)
|
1125
|
+
Initialize the cipher. The same function is used for both
|
1126
|
+
encryption and decryption. Parity bits are ignored. Checks for
|
1127
|
+
weak keys, returning 1 for good keys and 0 for weak keys.
|
1128
|
+
Applications that don't care about weak keys can ignore the return
|
1129
|
+
value.
|
1130
|
+
|
1131
|
+
-- Function: void des_encrypt (struct des_ctx *CTX, unsigned LENGTH,
|
1132
|
+
uint8_t *DST, const uint8_t *SRC)
|
1133
|
+
Encryption function. LENGTH must be an integral multiple of the
|
1134
|
+
block size. If it is more than one block, the data is processed in
|
1135
|
+
ECB mode. `src' and `dst' may be equal, but they must not overlap
|
1136
|
+
in any other way.
|
1137
|
+
|
1138
|
+
-- Function: void des_decrypt (struct des_ctx *CTX, unsigned LENGTH,
|
1139
|
+
uint8_t *DST, const uint8_t *SRC)
|
1140
|
+
Analogous to `des_encrypt'
|
1141
|
+
|
1142
|
+
-- Function: int des_check_parity (unsigned LENGTH, const uint8_t
|
1143
|
+
*KEY);
|
1144
|
+
Checks that the given key has correct, odd, parity. Returns 1 for
|
1145
|
+
correct parity, and 0 for bad parity.
|
1146
|
+
|
1147
|
+
-- Function: void des_fix_parity (unsigned LENGTH, uint8_t *DST, const
|
1148
|
+
uint8_t *SRC)
|
1149
|
+
Adjusts the parity bits to match DES's requirements. You need this
|
1150
|
+
function if you have created a random-looking string by a key
|
1151
|
+
agreement protocol, and want to use it as a DES key. DST and SRC
|
1152
|
+
may be equal.
|
1153
|
+
|
1154
|
+
6.2.8 DES3
|
1155
|
+
----------
|
1156
|
+
|
1157
|
+
The inadequate key size of DES has already been mentioned. One way to
|
1158
|
+
increase the key size is to pipe together several DES boxes with
|
1159
|
+
independent keys. It turns out that using two DES ciphers is not as
|
1160
|
+
secure as one might think, even if the key size of the combination is a
|
1161
|
+
respectable 112 bits.
|
1162
|
+
|
1163
|
+
The standard way to increase DES's key size is to use three DES
|
1164
|
+
boxes. The mode of operation is a little peculiar: the middle DES box
|
1165
|
+
is wired in the reverse direction. To encrypt a block with DES3, you
|
1166
|
+
encrypt it using the first 56 bits of the key, then _decrypt_ it using
|
1167
|
+
the middle 56 bits of the key, and finally encrypt it again using the
|
1168
|
+
last 56 bits of the key. This is known as "ede" triple-DES, for
|
1169
|
+
"encrypt-decrypt-encrypt".
|
1170
|
+
|
1171
|
+
The "ede" construction provides some backward compatibility, as you
|
1172
|
+
get plain single DES simply by feeding the same key to all three boxes.
|
1173
|
+
That should help keeping down the gate count, and the price, of hardware
|
1174
|
+
circuits implementing both plain DES and DES3.
|
1175
|
+
|
1176
|
+
DES3 has a key size of 168 bits, but just like plain DES, useless
|
1177
|
+
parity bits are inserted, so that keys are represented as 24 octets
|
1178
|
+
(192 bits). As a 112 bit key is large enough to make brute force
|
1179
|
+
attacks impractical, some applications uses a "two-key" variant of
|
1180
|
+
triple-DES. In this mode, the same key bits are used for the first and
|
1181
|
+
the last DES box in the pipe, while the middle box is keyed
|
1182
|
+
independently. The two-key variant is believed to be secure, i.e. there
|
1183
|
+
are no known attacks significantly better than brute force.
|
1184
|
+
|
1185
|
+
Naturally, it's simple to implement triple-DES on top of Nettle's DES
|
1186
|
+
functions. Nettle includes an implementation of three-key "ede"
|
1187
|
+
triple-DES, it is defined in the same place as plain DES,
|
1188
|
+
`<nettle/des.h>'.
|
1189
|
+
|
1190
|
+
-- Context struct: struct des3_ctx
|
1191
|
+
|
1192
|
+
-- Constant: DES3_BLOCK_SIZE
|
1193
|
+
The DES3 block-size is the same as DES_BLOCK_SIZE, 8
|
1194
|
+
|
1195
|
+
-- Constant: DES3_KEY_SIZE
|
1196
|
+
DES key size, 24
|
1197
|
+
|
1198
|
+
-- Function: int des3_set_key (struct des3_ctx *CTX, const uint8_t
|
1199
|
+
*KEY)
|
1200
|
+
Initialize the cipher. The same function is used for both
|
1201
|
+
encryption and decryption. Parity bits are ignored. Checks for
|
1202
|
+
weak keys, returning 1 if all three keys are good keys, and 0 if
|
1203
|
+
one or more key is weak. Applications that don't care about weak
|
1204
|
+
keys can ignore the return value.
|
1205
|
+
|
1206
|
+
For random-looking strings, you can use `des_fix_parity' to adjust
|
1207
|
+
the parity bits before calling `des3_set_key'.
|
1208
|
+
|
1209
|
+
-- Function: void des3_encrypt (struct des3_ctx *CTX, unsigned LENGTH,
|
1210
|
+
uint8_t *DST, const uint8_t *SRC)
|
1211
|
+
Encryption function. LENGTH must be an integral multiple of the
|
1212
|
+
block size. If it is more than one block, the data is processed in
|
1213
|
+
ECB mode. `src' and `dst' may be equal, but they must not overlap
|
1214
|
+
in any other way.
|
1215
|
+
|
1216
|
+
-- Function: void des3_decrypt (struct des3_ctx *CTX, unsigned LENGTH,
|
1217
|
+
uint8_t *DST, const uint8_t *SRC)
|
1218
|
+
Analogous to `des_encrypt'
|
1219
|
+
|
1220
|
+
6.2.9 Salsa20
|
1221
|
+
-------------
|
1222
|
+
|
1223
|
+
Salsa20 is a fairly recent stream cipher designed by D. J. Bernstein. It
|
1224
|
+
is built on the observation that a cryptographic hash function can be
|
1225
|
+
used for encryption: Form the hash input from the secret key and a
|
1226
|
+
counter, xor the hash output and the first block of the plaintext, then
|
1227
|
+
increment the counter to process the next block (similar to CTR mode,
|
1228
|
+
see *note CTR::). Bernstein defined an encryption algorithm, Snuffle,
|
1229
|
+
in this way to ridicule United States export restrictions which treated
|
1230
|
+
hash functions as nice and harmless, but ciphers as dangerous munitions.
|
1231
|
+
|
1232
|
+
Salsa20 uses the same idea, but with a new specialized hash function
|
1233
|
+
to mix key, block counter, and a couple of constants (input and output
|
1234
|
+
are the same size, making it not directly applicable for use as a
|
1235
|
+
general hash function). It's also designed for speed; on x86_64, it is
|
1236
|
+
currently the fastest cipher offered by nettle. It uses a block size of
|
1237
|
+
512 bits (64 octets) and there are two specified key sizes, 128 and 256
|
1238
|
+
bits (16 and 32 octets).
|
1239
|
+
|
1240
|
+
When using Salsa20 to process a message, one specifies both a key
|
1241
|
+
and a "nonce", the latter playing a similar rôle to the initialization
|
1242
|
+
vector (IV) used with CBC or CTR mode. For this reason, Nettle uses the
|
1243
|
+
term IV to refer to the Salsa20 nonce. One can use the same key for
|
1244
|
+
several messages, provided one uses a unique random iv for each
|
1245
|
+
message. The iv is 64 bits (8 octets). The block counter is initialized
|
1246
|
+
to zero for each message, and is also 64 bits (8 octets). Nettle
|
1247
|
+
defines Salsa20 in `<nettle/salsa20.h>'.
|
1248
|
+
|
1249
|
+
-- Context struct: struct salsa20_ctx
|
1250
|
+
|
1251
|
+
-- Constant: SALSA20_MIN_KEY_SIZE
|
1252
|
+
-- Constant: SALSA20_MAX_KEY_SIZE
|
1253
|
+
The two supported key sizes, 16 and 32 octets.
|
1254
|
+
|
1255
|
+
-- Constant: SALSA20_KEY_SIZE
|
1256
|
+
Recommended key size, 32.
|
1257
|
+
|
1258
|
+
-- Constant: SALSA20_BLOCK_SIZE
|
1259
|
+
Salsa20 block size, 64.
|
1260
|
+
|
1261
|
+
-- Constant: SALSA20_IV_SIZE
|
1262
|
+
Size of the IV, 8.
|
1263
|
+
|
1264
|
+
-- Function: void salsa20_set_key (struct salsa20_ctx *CTX, unsigned
|
1265
|
+
LENGTH, const uint8_t *KEY)
|
1266
|
+
Initialize the cipher. The same function is used for both
|
1267
|
+
encryption and decryption. Before using the cipher, you _must_
|
1268
|
+
also call `salsa20_set_iv', see below.
|
1269
|
+
|
1270
|
+
-- Function: void salsa20_set_iv (struct salsa20_ctx *CTX, const
|
1271
|
+
uint8_t *IV)
|
1272
|
+
Sets the IV. It is always of size `SALSA20_IV_SIZE', 8 octets.
|
1273
|
+
This function also initializes the block counter, setting it to
|
1274
|
+
zero.
|
1275
|
+
|
1276
|
+
-- Function: void salsa20_crypt (struct salsa20_ctx *CTX, unsigned
|
1277
|
+
LENGTH, uint8_t *DST, const uint8_t *SRC)
|
1278
|
+
Encrypts or decrypts the data of a message, using salsa20. When a
|
1279
|
+
message is encrypted using a sequence of calls to `salsa20_crypt',
|
1280
|
+
all but the last call _must_ use a length that is a multiple of
|
1281
|
+
`SALSA20_BLOCK_SIZE'.
|
1282
|
+
|
1283
|
+
|
1284
|
+
6.2.10 SERPENT
|
1285
|
+
--------------
|
1286
|
+
|
1287
|
+
SERPENT is one of the AES finalists, designed by Ross Anderson, Eli
|
1288
|
+
Biham and Lars Knudsen. Thus, the interface and properties are similar
|
1289
|
+
to AES'. One peculiarity is that it is quite pointless to use it with
|
1290
|
+
anything but the maximum key size, smaller keys are just padded to
|
1291
|
+
larger ones. Nettle defines SERPENT in `<nettle/serpent.h>'.
|
1292
|
+
|
1293
|
+
-- Context struct: struct serpent_ctx
|
1294
|
+
|
1295
|
+
-- Constant: SERPENT_BLOCK_SIZE
|
1296
|
+
The SERPENT block-size, 16
|
1297
|
+
|
1298
|
+
-- Constant: SERPENT_MIN_KEY_SIZE
|
1299
|
+
Minimum SERPENT key size, 16
|
1300
|
+
|
1301
|
+
-- Constant: SERPENT_MAX_KEY_SIZE
|
1302
|
+
Maximum SERPENT key size, 32
|
1303
|
+
|
1304
|
+
-- Constant: SERPENT_KEY_SIZE
|
1305
|
+
Default SERPENT key size, 32
|
1306
|
+
|
1307
|
+
-- Function: void serpent_set_key (struct serpent_ctx *CTX, unsigned
|
1308
|
+
LENGTH, const uint8_t *KEY)
|
1309
|
+
Initialize the cipher. The same function is used for both
|
1310
|
+
encryption and decryption.
|
1311
|
+
|
1312
|
+
-- Function: void serpent_encrypt (struct serpent_ctx *CTX, unsigned
|
1313
|
+
LENGTH, uint8_t *DST, const uint8_t *SRC)
|
1314
|
+
Encryption function. LENGTH must be an integral multiple of the
|
1315
|
+
block size. If it is more than one block, the data is processed in
|
1316
|
+
ECB mode. `src' and `dst' may be equal, but they must not overlap
|
1317
|
+
in any other way.
|
1318
|
+
|
1319
|
+
-- Function: void serpent_decrypt (struct serpent_ctx *CTX, unsigned
|
1320
|
+
LENGTH, uint8_t *DST, const uint8_t *SRC)
|
1321
|
+
Analogous to `serpent_encrypt'
|
1322
|
+
|
1323
|
+
6.2.11 TWOFISH
|
1324
|
+
--------------
|
1325
|
+
|
1326
|
+
Another AES finalist, this one designed by Bruce Schneier and others.
|
1327
|
+
Nettle defines it in `<nettle/twofish.h>'.
|
1328
|
+
|
1329
|
+
-- Context struct: struct twofish_ctx
|
1330
|
+
|
1331
|
+
-- Constant: TWOFISH_BLOCK_SIZE
|
1332
|
+
The TWOFISH block-size, 16
|
1333
|
+
|
1334
|
+
-- Constant: TWOFISH_MIN_KEY_SIZE
|
1335
|
+
Minimum TWOFISH key size, 16
|
1336
|
+
|
1337
|
+
-- Constant: TWOFISH_MAX_KEY_SIZE
|
1338
|
+
Maximum TWOFISH key size, 32
|
1339
|
+
|
1340
|
+
-- Constant: TWOFISH_KEY_SIZE
|
1341
|
+
Default TWOFISH key size, 32
|
1342
|
+
|
1343
|
+
-- Function: void twofish_set_key (struct twofish_ctx *CTX, unsigned
|
1344
|
+
LENGTH, const uint8_t *KEY)
|
1345
|
+
Initialize the cipher. The same function is used for both
|
1346
|
+
encryption and decryption.
|
1347
|
+
|
1348
|
+
-- Function: void twofish_encrypt (struct twofish_ctx *CTX, unsigned
|
1349
|
+
LENGTH, uint8_t *DST, const uint8_t *SRC)
|
1350
|
+
Encryption function. LENGTH must be an integral multiple of the
|
1351
|
+
block size. If it is more than one block, the data is processed in
|
1352
|
+
ECB mode. `src' and `dst' may be equal, but they must not overlap
|
1353
|
+
in any other way.
|
1354
|
+
|
1355
|
+
-- Function: void twofish_decrypt (struct twofish_ctx *CTX, unsigned
|
1356
|
+
LENGTH, uint8_t *DST, const uint8_t *SRC)
|
1357
|
+
Analogous to `twofish_encrypt'
|
1358
|
+
|
1359
|
+
6.2.12 `struct nettle_cipher'
|
1360
|
+
-----------------------------
|
1361
|
+
|
1362
|
+
Nettle includes a struct including information about some of the more
|
1363
|
+
regular cipher functions. It should be considered a little experimental,
|
1364
|
+
but can be useful for applications that need a simple way to handle
|
1365
|
+
various algorithms. Nettle defines these structs in
|
1366
|
+
`<nettle/nettle-meta.h>'.
|
1367
|
+
|
1368
|
+
-- Meta struct: `struct nettle_cipher' name context_size block_size
|
1369
|
+
key_size set_encrypt_key set_decrypt_key encrypt decrypt
|
1370
|
+
The last four attributes are function pointers, of types
|
1371
|
+
`nettle_set_key_func' and `nettle_crypt_func'. The first argument
|
1372
|
+
to these functions is a `void *' pointer to a context struct,
|
1373
|
+
which is of size `context_size'.
|
1374
|
+
|
1375
|
+
-- Constant Struct: struct nettle_cipher nettle_aes128
|
1376
|
+
-- Constant Struct: struct nettle_cipher nettle_aes192
|
1377
|
+
-- Constant Struct: struct nettle_cipher nettle_aes256
|
1378
|
+
-- Constant Struct: struct nettle_cipher nettle_arctwo40;
|
1379
|
+
-- Constant Struct: struct nettle_cipher nettle_arctwo64;
|
1380
|
+
-- Constant Struct: struct nettle_cipher nettle_arctwo128;
|
1381
|
+
-- Constant Struct: struct nettle_cipher nettle_arctwo_gutmann128;
|
1382
|
+
-- Constant Struct: struct nettle_cipher nettle_arcfour128
|
1383
|
+
-- Constant Struct: struct nettle_cipher nettle_camellia128
|
1384
|
+
-- Constant Struct: struct nettle_cipher nettle_camellia192
|
1385
|
+
-- Constant Struct: struct nettle_cipher nettle_camellia256
|
1386
|
+
-- Constant Struct: struct nettle_cipher nettle_cast128
|
1387
|
+
-- Constant Struct: struct nettle_cipher nettle_serpent128
|
1388
|
+
-- Constant Struct: struct nettle_cipher nettle_serpent192
|
1389
|
+
-- Constant Struct: struct nettle_cipher nettle_serpent256
|
1390
|
+
-- Constant Struct: struct nettle_cipher nettle_twofish128
|
1391
|
+
-- Constant Struct: struct nettle_cipher nettle_twofish192
|
1392
|
+
-- Constant Struct: struct nettle_cipher nettle_twofish256
|
1393
|
+
Nettle includes such structs for all the _regular_ ciphers, i.e.
|
1394
|
+
ones without weak keys or other oddities.
|
1395
|
+
|
1396
|
+
Nettle also exports a list of all these ciphers without weak keys
|
1397
|
+
or other oddities. This list can be used to dynamically enumerate
|
1398
|
+
or search the supported algorithms:
|
1399
|
+
|
1400
|
+
-- Constant Struct: struct nettle_cipher ** nettle_ciphers
|
1401
|
+
|
1402
|
+
|
1403
|
+
File: nettle.info, Node: Cipher modes, Next: Keyed hash functions, Prev: Cipher functions, Up: Reference
|
1404
|
+
|
1405
|
+
6.3 Cipher modes
|
1406
|
+
================
|
1407
|
+
|
1408
|
+
Cipher modes of operation specifies the procedure to use when encrypting
|
1409
|
+
a message that is larger than the cipher's block size. As explained in
|
1410
|
+
*Note Cipher functions::, splitting the message into blocks and
|
1411
|
+
processing them independently with the block cipher (Electronic Code
|
1412
|
+
Book mode, ECB) leaks information. Besides ECB, Nettle provides three
|
1413
|
+
other modes of operation: Cipher Block Chaining (CBC), Counter mode
|
1414
|
+
(CTR), and Galois/Counter mode (gcm). CBC is widely used, but there are
|
1415
|
+
a few subtle issues of information leakage, see, e.g., SSH CBC
|
1416
|
+
vulnerability (http://www.kb.cert.org/vuls/id/958563). CTR and GCM were
|
1417
|
+
standardized more recently, and are believed to be more secure. GCM
|
1418
|
+
includes message authentication; for the other modes, one should always
|
1419
|
+
use a MAC (*note Keyed hash functions::) or signature to authenticate
|
1420
|
+
the message.
|
1421
|
+
|
1422
|
+
* Menu:
|
1423
|
+
|
1424
|
+
* CBC::
|
1425
|
+
* CTR::
|
1426
|
+
* GCM::
|
1427
|
+
|
1428
|
+
|
1429
|
+
File: nettle.info, Node: CBC, Next: CTR, Prev: Cipher modes, Up: Cipher modes
|
1430
|
+
|
1431
|
+
6.3.1 Cipher Block Chaining
|
1432
|
+
---------------------------
|
1433
|
+
|
1434
|
+
When using CBC mode, plaintext blocks are not encrypted independently
|
1435
|
+
of each other, like in Electronic Cook Book mode. Instead, when
|
1436
|
+
encrypting a block in CBC mode, the previous ciphertext block is XORed
|
1437
|
+
with the plaintext before it is fed to the block cipher. When
|
1438
|
+
encrypting the first block, a random block called an "IV", or
|
1439
|
+
Initialization Vector, is used as the "previous ciphertext block". The
|
1440
|
+
IV should be chosen randomly, but it need not be kept secret, and can
|
1441
|
+
even be transmitted in the clear together with the encrypted data.
|
1442
|
+
|
1443
|
+
In symbols, if `E_k' is the encryption function of a block cipher,
|
1444
|
+
and `IV' is the initialization vector, then `n' plaintext blocks
|
1445
|
+
`M_1',... `M_n' are transformed into `n' ciphertext blocks `C_1',...
|
1446
|
+
`C_n' as follows:
|
1447
|
+
|
1448
|
+
C_1 = E_k(IV XOR M_1)
|
1449
|
+
C_2 = E_k(C_1 XOR M_2)
|
1450
|
+
|
1451
|
+
...
|
1452
|
+
|
1453
|
+
C_n = E_k(C_(n-1) XOR M_n)
|
1454
|
+
|
1455
|
+
Nettle's includes two functions for applying a block cipher in Cipher
|
1456
|
+
Block Chaining (CBC) mode, one for encryption and one for decryption.
|
1457
|
+
These functions uses `void *' to pass cipher contexts around.
|
1458
|
+
|
1459
|
+
-- Function: void cbc_encrypt (void *CTX, nettle_crypt_func F,
|
1460
|
+
unsigned BLOCK_SIZE, uint8_t *IV, unsigned LENGTH, uint8_t
|
1461
|
+
*DST, const uint8_t *SRC)
|
1462
|
+
-- Function: void cbc_decrypt (void *CTX, void (*F)(), unsigned
|
1463
|
+
BLOCK_SIZE, uint8_t *IV, unsigned LENGTH, uint8_t *DST, const
|
1464
|
+
uint8_t *SRC)
|
1465
|
+
Applies the encryption or decryption function F in CBC mode. The
|
1466
|
+
final ciphertext block processed is copied into IV before
|
1467
|
+
returning, so that large message be processed be a sequence of
|
1468
|
+
calls to `cbc_encrypt'. The function F is of type
|
1469
|
+
|
1470
|
+
`void f (void *CTX, unsigned LENGTH, uint8_t DST, const uint8_t
|
1471
|
+
*SRC)',
|
1472
|
+
|
1473
|
+
and the `cbc_encrypt' and `cbc_decrypt' functions pass their
|
1474
|
+
argument CTX on to F.
|
1475
|
+
|
1476
|
+
There are also some macros to help use these functions correctly.
|
1477
|
+
|
1478
|
+
-- Macro: CBC_CTX (CONTEXT_TYPE, BLOCK_SIZE)
|
1479
|
+
Expands to
|
1480
|
+
{
|
1481
|
+
context_type ctx;
|
1482
|
+
uint8_t iv[block_size];
|
1483
|
+
}
|
1484
|
+
|
1485
|
+
It can be used to define a CBC context struct, either directly,
|
1486
|
+
|
1487
|
+
struct CBC_CTX(struct aes_ctx, AES_BLOCK_SIZE) ctx;
|
1488
|
+
|
1489
|
+
or to give it a struct tag,
|
1490
|
+
|
1491
|
+
struct aes_cbc_ctx CBC_CTX (struct aes_ctx, AES_BLOCK_SIZE);
|
1492
|
+
|
1493
|
+
-- Macro: CBC_SET_IV (CTX, IV)
|
1494
|
+
First argument is a pointer to a context struct as defined by
|
1495
|
+
`CBC_CTX', and the second is a pointer to an Initialization Vector
|
1496
|
+
(IV) that is copied into that context.
|
1497
|
+
|
1498
|
+
-- Macro: CBC_ENCRYPT (CTX, F, LENGTH, DST, SRC)
|
1499
|
+
-- Macro: CBC_DECRYPT (CTX, F, LENGTH, DST, SRC)
|
1500
|
+
A simpler way to invoke `cbc_encrypt' and `cbc_decrypt'. The first
|
1501
|
+
argument is a pointer to a context struct as defined by `CBC_CTX',
|
1502
|
+
and the second argument is an encryption or decryption function
|
1503
|
+
following Nettle's conventions. The last three arguments define
|
1504
|
+
the source and destination area for the operation.
|
1505
|
+
|
1506
|
+
These macros use some tricks to make the compiler display a warning
|
1507
|
+
if the types of F and CTX don't match, e.g. if you try to use an
|
1508
|
+
`struct aes_ctx' context with the `des_encrypt' function.
|
1509
|
+
|
1510
|
+
|
1511
|
+
File: nettle.info, Node: CTR, Next: GCM, Prev: CBC, Up: Cipher modes
|
1512
|
+
|
1513
|
+
6.3.2 Counter mode
|
1514
|
+
------------------
|
1515
|
+
|
1516
|
+
Counter mode (CTR) uses the block cipher as a keyed pseudo-random
|
1517
|
+
generator. The output of the generator is XORed with the data to be
|
1518
|
+
encrypted. It can be understood as a way to transform a block cipher to
|
1519
|
+
a stream cipher.
|
1520
|
+
|
1521
|
+
The message is divided into `n' blocks `M_1',... `M_n', where `M_n'
|
1522
|
+
is of size `m' which may be smaller than the block size. Except for the
|
1523
|
+
last block, all the message blocks must be of size equal to the
|
1524
|
+
cipher's block size.
|
1525
|
+
|
1526
|
+
If `E_k' is the encryption function of a block cipher, `IC' is the
|
1527
|
+
initial counter, then the `n' plaintext blocks are transformed into `n'
|
1528
|
+
ciphertext blocks `C_1',... `C_n' as follows:
|
1529
|
+
|
1530
|
+
C_1 = E_k(IC) XOR M_1
|
1531
|
+
C_2 = E_k(IC + 1) XOR M_2
|
1532
|
+
|
1533
|
+
...
|
1534
|
+
|
1535
|
+
C_(n-1) = E_k(IC + n - 2) XOR M_(n-1)
|
1536
|
+
C_n = E_k(IC + n - 1) [1..m] XOR M_n
|
1537
|
+
|
1538
|
+
The IC is the initial value for the counter, it plays a similar rôle
|
1539
|
+
as the IV for CBC. When adding, `IC + x', IC is interpreted as an
|
1540
|
+
integer, in network byte order. For the last block, `E_k(IC + n - 1)
|
1541
|
+
[1..m]' means that the cipher output is truncated to `m' bytes.
|
1542
|
+
|
1543
|
+
-- Function: void ctr_crypt (void *CTX, nettle_crypt_func F, unsigned
|
1544
|
+
BLOCK_SIZE, uint8_t *CTR, unsigned LENGTH, uint8_t *DST,
|
1545
|
+
const uint8_t *SRC)
|
1546
|
+
Applies the encryption function F in CTR mode. Note that for CTR
|
1547
|
+
mode, encryption and decryption is the same operation, and hence F
|
1548
|
+
should always be the encryption function for the underlying block
|
1549
|
+
cipher.
|
1550
|
+
|
1551
|
+
When a message is encrypted using a sequence of calls to
|
1552
|
+
`ctr_crypt', all but the last call _must_ use a length that is a
|
1553
|
+
multiple of the block size.
|
1554
|
+
|
1555
|
+
Like for CBC, there are also a couple of helper macros.
|
1556
|
+
|
1557
|
+
-- Macro: CTR_CTX (CONTEXT_TYPE, BLOCK_SIZE)
|
1558
|
+
Expands to
|
1559
|
+
{
|
1560
|
+
context_type ctx;
|
1561
|
+
uint8_t ctr[block_size];
|
1562
|
+
}
|
1563
|
+
|
1564
|
+
-- Macro: CTR_SET_COUNTER (CTX, IV)
|
1565
|
+
First argument is a pointer to a context struct as defined by
|
1566
|
+
`CTR_CTX', and the second is a pointer to an initial counter that
|
1567
|
+
is copied into that context.
|
1568
|
+
|
1569
|
+
-- Macro: CTR_CRYPT (CTX, F, LENGTH, DST, SRC)
|
1570
|
+
A simpler way to invoke `ctr_crypt'. The first argument is a
|
1571
|
+
pointer to a context struct as defined by `CTR_CTX', and the second
|
1572
|
+
argument is an encryption function following Nettle's conventions.
|
1573
|
+
The last three arguments define the source and destination area
|
1574
|
+
for the operation.
|
1575
|
+
|
1576
|
+
|
1577
|
+
File: nettle.info, Node: GCM, Prev: CTR, Up: Cipher modes
|
1578
|
+
|
1579
|
+
6.3.3 Galois counter mode
|
1580
|
+
-------------------------
|
1581
|
+
|
1582
|
+
Galois counter mode is the combination of counter mode with message
|
1583
|
+
authentication based on universal hashing. The main objective of the
|
1584
|
+
design is to provide high performance for hardware implementations,
|
1585
|
+
where other popular MAC algorithms (*note Keyed hash functions::
|
1586
|
+
becomes a bottleneck for high-speed hardware implementations. It was
|
1587
|
+
proposed by David A. McGrew and John Viega in 2005, and recommended by
|
1588
|
+
NIST in 2007, NIST Special Publication 800-38D
|
1589
|
+
(http://csrc.nist.gov/publications/nistpubs/800-38D/SP-800-38D.pdf). It
|
1590
|
+
is constructed on top of a block cipher which must have a block size of
|
1591
|
+
128 bits.
|
1592
|
+
|
1593
|
+
GCM is applied to messages of arbitrary length. The inputs are:
|
1594
|
+
|
1595
|
+
* A key, which can be used for many messages.
|
1596
|
+
|
1597
|
+
* An initialization vector (IV) which _must_ be unique for each
|
1598
|
+
message.
|
1599
|
+
|
1600
|
+
* Additional authenticated data, which is to be included in the
|
1601
|
+
message authentication, but not encrypted. May be empty.
|
1602
|
+
|
1603
|
+
* The plaintext. Maybe empty.
|
1604
|
+
|
1605
|
+
The outputs are a ciphertext, of the same length as the plaintext,
|
1606
|
+
and a message digest of length 128 bits. Nettle's support for GCM
|
1607
|
+
consists of a low-level general interface, some convenience macros, and
|
1608
|
+
specific functions for GCM using AES as the underlying cipher. These
|
1609
|
+
interfaces are defined in `<nettle/gcm.h>'
|
1610
|
+
|
1611
|
+
6.3.3.1 General GCM interface
|
1612
|
+
.............................
|
1613
|
+
|
1614
|
+
-- Context struct: struct gcm_key
|
1615
|
+
Message independent hash subkey, and related tables.
|
1616
|
+
|
1617
|
+
-- Context struct: struct gcm_ctx
|
1618
|
+
Holds state corresponding to a particular message.
|
1619
|
+
|
1620
|
+
-- Constant: GCM_BLOCK_SIZE
|
1621
|
+
GCM's block size, 16.
|
1622
|
+
|
1623
|
+
-- Constant: GCM_IV_SIZE
|
1624
|
+
Recommended size of the IV, 12. Other sizes are allowed.
|
1625
|
+
|
1626
|
+
-- Function: void gcm_set_key (struct gcm_key *KEY, void *CIPHER,
|
1627
|
+
nettle_crypt_func *F)
|
1628
|
+
Initializes KEY. CIPHER gives a context struct for the underlying
|
1629
|
+
cipher, which must have been previously initialized for
|
1630
|
+
encryption, and F is the encryption function.
|
1631
|
+
|
1632
|
+
-- Function: void gcm_set_iv (struct gcm_ctx *CTX, const struct
|
1633
|
+
gcm_key *KEY, unsigned LENGTH, const uint8_t *IV)
|
1634
|
+
Initializes CTX using the given IV. The KEY argument is actually
|
1635
|
+
needed only if LENGTH differs from `GCM_IV_SIZE'.
|
1636
|
+
|
1637
|
+
-- Function: void gcm_update (struct gcm_ctx *CTX, const struct
|
1638
|
+
gcm_key *KEY, unsigned LENGTH, const uint8_t *DATA)
|
1639
|
+
Provides associated data to be authenticated. If used, must be
|
1640
|
+
called before `gcm_encrypt' or `gcm_decrypt'. All but the last call
|
1641
|
+
for each message _must_ use a length that is a multiple of the
|
1642
|
+
block size.
|
1643
|
+
|
1644
|
+
-- Function: void gcm_encrypt (struct gcm_ctx *CTX, const struct
|
1645
|
+
gcm_key *KEY void *CIPHER, nettle_crypt_func *F, unsigned
|
1646
|
+
LENGTH, uint8_t *DST, const uint8_t *SRC)
|
1647
|
+
-- Function: void gcm_decrypt (struct gcm_ctx *CTX, const struct
|
1648
|
+
gcm_key *KEY, void *CIPHER, nettle_crypt_func *F, unsigned
|
1649
|
+
LENGTH, uint8_t *DST, const uint8_t *SRC)
|
1650
|
+
Encrypts or decrypts the data of a message. CIPHER is the context
|
1651
|
+
struct for the underlying cipher and F is the encryption function.
|
1652
|
+
All but the last call for each message _must_ use a length that is
|
1653
|
+
a multiple of the block size.
|
1654
|
+
|
1655
|
+
-- Function: void gcm_digest (struct gcm_ctx *CTX, const struct
|
1656
|
+
gcm_key *KEY, void *CIPHER, nettle_crypt_func *F, unsigned
|
1657
|
+
LENGTH, uint8_t *DIGEST)
|
1658
|
+
Extracts the message digest (also known "authentication tag").
|
1659
|
+
This is the final operation when processing a message. LENGTH is
|
1660
|
+
usually equal to `GCM_BLOCK_SIZE', but if you provide a smaller
|
1661
|
+
value, only the first LENGTH octets of the digest are written.
|
1662
|
+
|
1663
|
+
To encrypt a message using GCM, first initialize a context for the
|
1664
|
+
underlying block cipher with a key to use for encryption. Then call the
|
1665
|
+
above functions in the following order: `gcm_set_key', `gcm_set_iv',
|
1666
|
+
`gcm_update', `gcm_encrypt', `gcm_digest'. The decryption procedure is
|
1667
|
+
analogous, just calling `gcm_decrypt' instead of `gcm_encrypt' (note
|
1668
|
+
that GCM decryption still uses the encryption function of the
|
1669
|
+
underlying block cipher). To process a new message, using the same key,
|
1670
|
+
call `gcm_set_iv' with a new iv.
|
1671
|
+
|
1672
|
+
6.3.3.2 GCM helper macros
|
1673
|
+
.........................
|
1674
|
+
|
1675
|
+
The following macros are defined.
|
1676
|
+
|
1677
|
+
-- Macro: GCM_CTX (CONTEXT_TYPE)
|
1678
|
+
This defines an all-in-one context struct, including the context
|
1679
|
+
of the underlying cipher, the hash subkey, and the per-message
|
1680
|
+
state. It expands to
|
1681
|
+
{
|
1682
|
+
context_type cipher;
|
1683
|
+
struct gcm_key key;
|
1684
|
+
struct gcm_ctx gcm;
|
1685
|
+
}
|
1686
|
+
|
1687
|
+
Example use:
|
1688
|
+
struct gcm_aes_ctx GCM_CTX(struct aes_ctx);
|
1689
|
+
|
1690
|
+
The following macros operate on context structs of this form.
|
1691
|
+
|
1692
|
+
-- Macro: GCM_SET_KEY (CTX, SET_KEY, ENCRYPT, LENGTH, DATA)
|
1693
|
+
First argument, CTX, is a context struct as defined by `GCM_CTX'.
|
1694
|
+
SET_KEY and ENCRYPT are functions for setting the encryption key
|
1695
|
+
and for encrypting data using the underlying cipher. LENGTH and
|
1696
|
+
DATA give the key.
|
1697
|
+
|
1698
|
+
-- Macro: GCM_SET_IV (CTX, LENGTH, DATA)
|
1699
|
+
First argument is a context struct as defined by `GCM_CTX'. LENGTH
|
1700
|
+
and DATA give the initialization vector (IV).
|
1701
|
+
|
1702
|
+
-- Macro: GCM_UPDATE (CTX, LENGTH, DATA)
|
1703
|
+
Simpler way to call `gcm_update'. First argument is a context
|
1704
|
+
struct as defined by `GCM_CTX'
|
1705
|
+
|
1706
|
+
-- Macro: GCM_ENCRYPT (CTX, ENCRYPT, LENGTH, DST, SRC)
|
1707
|
+
-- Macro: GCM_DECRYPT (CTX, ENCRYPT, LENGTH, DST, SRC)
|
1708
|
+
-- Macro: GCM_DIGEST (CTX, ENCRYPT, LENGTH, DIGEST)
|
1709
|
+
Simpler way to call `gcm_encrypt', `gcm_decrypt' or `gcm_digest'.
|
1710
|
+
First argument is a context struct as defined by `GCM_CTX'. Second
|
1711
|
+
argument, ENCRYPT, is a pointer to the encryption function of the
|
1712
|
+
underlying cipher.
|
1713
|
+
|
1714
|
+
6.3.3.3 GCM-AES interface
|
1715
|
+
.........................
|
1716
|
+
|
1717
|
+
The following functions implement the common case of GCM using AES as
|
1718
|
+
the underlying cipher.
|
1719
|
+
|
1720
|
+
-- Context struct: struct gcm_aes_ctx
|
1721
|
+
The context struct, defined using `GCM_CTX'.
|
1722
|
+
|
1723
|
+
-- Function: void gcm_aes_set_key (struct gcm_aes_ctx *CTX, unsigned
|
1724
|
+
LENGTH, const uint8_t *KEY)
|
1725
|
+
Initializes CTX using the given key. All valid AES key sizes can
|
1726
|
+
be used.
|
1727
|
+
|
1728
|
+
-- Function: void gcm_aes_set_iv (struct gcm_aes_ctx *CTX, unsigned
|
1729
|
+
LENGTH, const uint8_t *IV)
|
1730
|
+
Initializes the per-message state, using the given IV.
|
1731
|
+
|
1732
|
+
-- Function: void gcm_aes_update (struct gcm_aes_ctx *CTX, unsigned
|
1733
|
+
LENGTH, const uint8_t *DATA)
|
1734
|
+
Provides associated data to be authenticated. If used, must be
|
1735
|
+
called before `gcm_aes_encrypt' or `gcm_aes_decrypt'. All but the
|
1736
|
+
last call for each message _must_ use a length that is a multiple
|
1737
|
+
of the block size.
|
1738
|
+
|
1739
|
+
-- Function: void gcm_aes_encrypt (struct gcm_aes_ctx *CTX, unsigned
|
1740
|
+
LENGTH, uint8_t *DST, const uint8_t *SRC)
|
1741
|
+
-- Function: void gcm_aes_decrypt (struct gcm_aes_ctx *CTX, unsigned
|
1742
|
+
LENGTH, uint8_t *DST, const uint8_t *SRC)
|
1743
|
+
Encrypts or decrypts the data of a message. All but the last call
|
1744
|
+
for each message _must_ use a length that is a multiple of the
|
1745
|
+
block size.
|
1746
|
+
|
1747
|
+
|
1748
|
+
-- Function: void gcm_aes_digest (struct gcm_aes_ctx *CTX, unsigned
|
1749
|
+
LENGTH, uint8_t *DIGEST)
|
1750
|
+
Extracts the message digest (also known "authentication tag").
|
1751
|
+
This is the final operation when processing a message. LENGTH is
|
1752
|
+
usually equal to `GCM_BLOCK_SIZE', but if you provide a smaller
|
1753
|
+
value, only the first LENGTH octets of the digest are written.
|
1754
|
+
|
1755
|
+
|
1756
|
+
File: nettle.info, Node: Keyed hash functions, Next: Public-key algorithms, Prev: Cipher modes, Up: Reference
|
1757
|
+
|
1758
|
+
6.4 Keyed Hash Functions
|
1759
|
+
========================
|
1760
|
+
|
1761
|
+
A "keyed hash function", or "Message Authentication Code" (MAC) is a
|
1762
|
+
function that takes a key and a message, and produces fixed size MAC.
|
1763
|
+
It should be hard to compute a message and a matching MAC without
|
1764
|
+
knowledge of the key. It should also be hard to compute the key given
|
1765
|
+
only messages and corresponding MACs.
|
1766
|
+
|
1767
|
+
Keyed hash functions are useful primarily for message authentication,
|
1768
|
+
when Alice and Bob shares a secret: The sender, Alice, computes the MAC
|
1769
|
+
and attaches it to the message. The receiver, Bob, also computes the
|
1770
|
+
MAC of the message, using the same key, and compares that to Alice's
|
1771
|
+
value. If they match, Bob can be assured that the message has not been
|
1772
|
+
modified on its way from Alice.
|
1773
|
+
|
1774
|
+
However, unlike digital signatures, this assurance is not
|
1775
|
+
transferable. Bob can't show the message and the MAC to a third party
|
1776
|
+
and prove that Alice sent that message. Not even if he gives away the
|
1777
|
+
key to the third party. The reason is that the _same_ key is used on
|
1778
|
+
both sides, and anyone knowing the key can create a correct MAC for any
|
1779
|
+
message. If Bob believes that only he and Alice knows the key, and he
|
1780
|
+
knows that he didn't attach a MAC to a particular message, he knows it
|
1781
|
+
must be Alice who did it. However, the third party can't distinguish
|
1782
|
+
between a MAC created by Alice and one created by Bob.
|
1783
|
+
|
1784
|
+
Keyed hash functions are typically a lot faster than digital
|
1785
|
+
signatures as well.
|
1786
|
+
|
1787
|
+
6.4.1 HMAC
|
1788
|
+
----------
|
1789
|
+
|
1790
|
+
One can build keyed hash functions from ordinary hash functions. Older
|
1791
|
+
constructions simply concatenate secret key and message and hashes
|
1792
|
+
that, but such constructions have weaknesses. A better construction is
|
1793
|
+
HMAC, described in `RFC 2104'.
|
1794
|
+
|
1795
|
+
For an underlying hash function `H', with digest size `l' and
|
1796
|
+
internal block size `b', HMAC-H is constructed as follows: From a given
|
1797
|
+
key `k', two distinct subkeys `k_i' and `k_o' are constructed, both of
|
1798
|
+
length `b'. The HMAC-H of a message `m' is then computed as `H(k_o |
|
1799
|
+
H(k_i | m))', where `|' denotes string concatenation.
|
1800
|
+
|
1801
|
+
HMAC keys can be of any length, but it is recommended to use keys of
|
1802
|
+
length `l', the digest size of the underlying hash function `H'. Keys
|
1803
|
+
that are longer than `b' are shortened to length `l' by hashing with
|
1804
|
+
`H', so arbitrarily long keys aren't very useful.
|
1805
|
+
|
1806
|
+
Nettle's HMAC functions are defined in `<nettle/hmac.h>'. There are
|
1807
|
+
abstract functions that use a pointer to a `struct nettle_hash' to
|
1808
|
+
represent the underlying hash function and `void *' pointers that point
|
1809
|
+
to three different context structs for that hash function. There are
|
1810
|
+
also concrete functions for HMAC-MD5, HMAC-RIPEMD160 HMAC-SHA1,
|
1811
|
+
HMAC-SHA256, and HMAC-SHA512. First, the abstract functions:
|
1812
|
+
|
1813
|
+
-- Function: void hmac_set_key (void *OUTER, void *INNER, void *STATE,
|
1814
|
+
const struct nettle_hash *H, unsigned LENGTH, const uint8_t
|
1815
|
+
*KEY)
|
1816
|
+
Initializes the three context structs from the key. The OUTER and
|
1817
|
+
INNER contexts corresponds to the subkeys `k_o' and `k_i'. STATE
|
1818
|
+
is used for hashing the message, and is initialized as a copy of
|
1819
|
+
the INNER context.
|
1820
|
+
|
1821
|
+
-- Function: void hmac_update (void *STATE, const struct nettle_hash
|
1822
|
+
*H, unsigned LENGTH, const uint8_t *DATA)
|
1823
|
+
This function is called zero or more times to process the message.
|
1824
|
+
Actually, `hmac_update(state, H, length, data)' is equivalent to
|
1825
|
+
`H->update(state, length, data)', so if you wish you can use the
|
1826
|
+
ordinary update function of the underlying hash function instead.
|
1827
|
+
|
1828
|
+
-- Function: void hmac_digest (const void *OUTER, const void *INNER,
|
1829
|
+
void *STATE, const struct nettle_hash *H, unsigned LENGTH,
|
1830
|
+
uint8_t *DIGEST)
|
1831
|
+
Extracts the MAC of the message, writing it to DIGEST. OUTER and
|
1832
|
+
INNER are not modified. LENGTH is usually equal to
|
1833
|
+
`H->digest_size', but if you provide a smaller value, only the
|
1834
|
+
first LENGTH octets of the MAC are written.
|
1835
|
+
|
1836
|
+
This function also resets the STATE context so that you can start
|
1837
|
+
over processing a new message (with the same key).
|
1838
|
+
|
1839
|
+
Like for CBC, there are some macros to help use these functions
|
1840
|
+
correctly.
|
1841
|
+
|
1842
|
+
-- Macro: HMAC_CTX (TYPE)
|
1843
|
+
Expands to
|
1844
|
+
{
|
1845
|
+
type outer;
|
1846
|
+
type inner;
|
1847
|
+
type state;
|
1848
|
+
}
|
1849
|
+
|
1850
|
+
It can be used to define a HMAC context struct, either directly,
|
1851
|
+
|
1852
|
+
struct HMAC_CTX(struct md5_ctx) ctx;
|
1853
|
+
|
1854
|
+
or to give it a struct tag,
|
1855
|
+
|
1856
|
+
struct hmac_md5_ctx HMAC_CTX (struct md5_ctx);
|
1857
|
+
|
1858
|
+
-- Macro: HMAC_SET_KEY (CTX, H, LENGTH, KEY)
|
1859
|
+
CTX is a pointer to a context struct as defined by `HMAC_CTX', H
|
1860
|
+
is a pointer to a `const struct nettle_hash' describing the
|
1861
|
+
underlying hash function (so it must match the type of the
|
1862
|
+
components of CTX). The last two arguments specify the secret key.
|
1863
|
+
|
1864
|
+
-- Macro: HMAC_DIGEST (CTX, H, LENGTH, DIGEST)
|
1865
|
+
CTX is a pointer to a context struct as defined by `HMAC_CTX', H
|
1866
|
+
is a pointer to a `const struct nettle_hash' describing the
|
1867
|
+
underlying hash function. The last two arguments specify where the
|
1868
|
+
digest is written.
|
1869
|
+
|
1870
|
+
Note that there is no `HMAC_UPDATE' macro; simply call `hmac_update'
|
1871
|
+
function directly, or the update function of the underlying hash
|
1872
|
+
function.
|
1873
|
+
|
1874
|
+
6.4.2 Concrete HMAC functions
|
1875
|
+
-----------------------------
|
1876
|
+
|
1877
|
+
Now we come to the specialized HMAC functions, which are easier to use
|
1878
|
+
than the general HMAC functions.
|
1879
|
+
|
1880
|
+
6.4.2.1 HMAC-MD5
|
1881
|
+
................
|
1882
|
+
|
1883
|
+
-- Context struct: struct hmac_md5_ctx
|
1884
|
+
|
1885
|
+
-- Function: void hmac_md5_set_key (struct hmac_md5_ctx *CTX, unsigned
|
1886
|
+
KEY_LENGTH, const uint8_t *KEY)
|
1887
|
+
Initializes the context with the key.
|
1888
|
+
|
1889
|
+
-- Function: void hmac_md5_update (struct hmac_md5_ctx *CTX, unsigned
|
1890
|
+
LENGTH, const uint8_t *DATA)
|
1891
|
+
Process some more data.
|
1892
|
+
|
1893
|
+
-- Function: void hmac_md5_digest (struct hmac_md5_ctx *CTX, unsigned
|
1894
|
+
LENGTH, uint8_t *DIGEST)
|
1895
|
+
Extracts the MAC, writing it to DIGEST. LENGTH may be smaller than
|
1896
|
+
`MD5_DIGEST_SIZE', in which case only the first LENGTH octets of
|
1897
|
+
the MAC are written.
|
1898
|
+
|
1899
|
+
This function also resets the context for processing new messages,
|
1900
|
+
with the same key.
|
1901
|
+
|
1902
|
+
6.4.2.2 HMAC-RIPEMD160
|
1903
|
+
......................
|
1904
|
+
|
1905
|
+
-- Context struct: struct hmac_ripemd160_ctx
|
1906
|
+
|
1907
|
+
-- Function: void hmac_ripemd160_set_key (struct hmac_ripemd160_ctx
|
1908
|
+
*CTX, unsigned KEY_LENGTH, const uint8_t *KEY)
|
1909
|
+
Initializes the context with the key.
|
1910
|
+
|
1911
|
+
-- Function: void hmac_ripemd160_update (struct hmac_ripemd160_ctx
|
1912
|
+
*CTX, unsigned LENGTH, const uint8_t *DATA)
|
1913
|
+
Process some more data.
|
1914
|
+
|
1915
|
+
-- Function: void hmac_ripemd160_digest (struct hmac_ripemd160_ctx
|
1916
|
+
*CTX, unsigned LENGTH, uint8_t *DIGEST)
|
1917
|
+
Extracts the MAC, writing it to DIGEST. LENGTH may be smaller than
|
1918
|
+
`RIPEMD160_DIGEST_SIZE', in which case only the first LENGTH
|
1919
|
+
octets of the MAC are written.
|
1920
|
+
|
1921
|
+
This function also resets the context for processing new messages,
|
1922
|
+
with the same key.
|
1923
|
+
|
1924
|
+
6.4.2.3 HMAC-SHA1
|
1925
|
+
.................
|
1926
|
+
|
1927
|
+
-- Context struct: struct hmac_sha1_ctx
|
1928
|
+
|
1929
|
+
-- Function: void hmac_sha1_set_key (struct hmac_sha1_ctx *CTX,
|
1930
|
+
unsigned KEY_LENGTH, const uint8_t *KEY)
|
1931
|
+
Initializes the context with the key.
|
1932
|
+
|
1933
|
+
-- Function: void hmac_sha1_update (struct hmac_sha1_ctx *CTX,
|
1934
|
+
unsigned LENGTH, const uint8_t *DATA)
|
1935
|
+
Process some more data.
|
1936
|
+
|
1937
|
+
-- Function: void hmac_sha1_digest (struct hmac_sha1_ctx *CTX,
|
1938
|
+
unsigned LENGTH, uint8_t *DIGEST)
|
1939
|
+
Extracts the MAC, writing it to DIGEST. LENGTH may be smaller than
|
1940
|
+
`SHA1_DIGEST_SIZE', in which case only the first LENGTH octets of
|
1941
|
+
the MAC are written.
|
1942
|
+
|
1943
|
+
This function also resets the context for processing new messages,
|
1944
|
+
with the same key.
|
1945
|
+
|
1946
|
+
6.4.2.4 HMAC-SHA256
|
1947
|
+
...................
|
1948
|
+
|
1949
|
+
-- Context struct: struct hmac_sha256_ctx
|
1950
|
+
|
1951
|
+
-- Function: void hmac_sha256_set_key (struct hmac_sha256_ctx *CTX,
|
1952
|
+
unsigned KEY_LENGTH, const uint8_t *KEY)
|
1953
|
+
Initializes the context with the key.
|
1954
|
+
|
1955
|
+
-- Function: void hmac_sha256_update (struct hmac_sha256_ctx *CTX,
|
1956
|
+
unsigned LENGTH, const uint8_t *DATA)
|
1957
|
+
Process some more data.
|
1958
|
+
|
1959
|
+
-- Function: void hmac_sha256_digest (struct hmac_sha256_ctx *CTX,
|
1960
|
+
unsigned LENGTH, uint8_t *DIGEST)
|
1961
|
+
Extracts the MAC, writing it to DIGEST. LENGTH may be smaller than
|
1962
|
+
`SHA256_DIGEST_SIZE', in which case only the first LENGTH octets
|
1963
|
+
of the MAC are written.
|
1964
|
+
|
1965
|
+
This function also resets the context for processing new messages,
|
1966
|
+
with the same key.
|
1967
|
+
|
1968
|
+
6.4.2.5 HMAC-SHA512
|
1969
|
+
...................
|
1970
|
+
|
1971
|
+
-- Context struct: struct hmac_sha512_ctx
|
1972
|
+
|
1973
|
+
-- Function: void hmac_sha512_set_key (struct hmac_sha512_ctx *CTX,
|
1974
|
+
unsigned KEY_LENGTH, const uint8_t *KEY)
|
1975
|
+
Initializes the context with the key.
|
1976
|
+
|
1977
|
+
-- Function: void hmac_sha512_update (struct hmac_sha512_ctx *CTX,
|
1978
|
+
unsigned LENGTH, const uint8_t *DATA)
|
1979
|
+
Process some more data.
|
1980
|
+
|
1981
|
+
-- Function: void hmac_sha512_digest (struct hmac_sha512_ctx *CTX,
|
1982
|
+
unsigned LENGTH, uint8_t *DIGEST)
|
1983
|
+
Extracts the MAC, writing it to DIGEST. LENGTH may be smaller than
|
1984
|
+
`SHA512_DIGEST_SIZE', in which case only the first LENGTH octets
|
1985
|
+
of the MAC are written.
|
1986
|
+
|
1987
|
+
This function also resets the context for processing new messages,
|
1988
|
+
with the same key.
|
1989
|
+
|
1990
|
+
|
1991
|
+
File: nettle.info, Node: Public-key algorithms, Next: Randomness, Prev: Keyed hash functions, Up: Reference
|
1992
|
+
|
1993
|
+
6.5 Public-key algorithms
|
1994
|
+
=========================
|
1995
|
+
|
1996
|
+
Nettle uses GMP, the GNU bignum library, for all calculations with
|
1997
|
+
large numbers. In order to use the public-key features of Nettle, you
|
1998
|
+
must install GMP, at least version 3.0, before compiling Nettle, and
|
1999
|
+
you need to link your programs with `-lhogweed -lnettle -lgmp'.
|
2000
|
+
|
2001
|
+
The concept of "Public-key" encryption and digital signatures was
|
2002
|
+
discovered by Whitfield Diffie and Martin E. Hellman and described in a
|
2003
|
+
paper 1976. In traditional, "symmetric", cryptography, sender and
|
2004
|
+
receiver share the same keys, and these keys must be distributed in a
|
2005
|
+
secure way. And if there are many users or entities that need to
|
2006
|
+
communicate, each _pair_ needs a shared secret key known by nobody else.
|
2007
|
+
|
2008
|
+
Public-key cryptography uses trapdoor one-way functions. A "one-way
|
2009
|
+
function" is a function `F' such that it is easy to compute the value
|
2010
|
+
`F(x)' for any `x', but given a value `y', it is hard to compute a
|
2011
|
+
corresponding `x' such that `y = F(x)'. Two examples are cryptographic
|
2012
|
+
hash functions, and exponentiation in certain groups.
|
2013
|
+
|
2014
|
+
A "trapdoor one-way function" is a function `F' that is one-way,
|
2015
|
+
unless one knows some secret information about `F'. If one knows the
|
2016
|
+
secret, it is easy to compute both `F' and it's inverse. If this
|
2017
|
+
sounds strange, look at the RSA example below.
|
2018
|
+
|
2019
|
+
Two important uses for one-way functions with trapdoors are
|
2020
|
+
public-key encryption, and digital signatures. The public-key
|
2021
|
+
encryption functions in Nettle are not yet documented; the rest of this
|
2022
|
+
chapter is about digital signatures.
|
2023
|
+
|
2024
|
+
To use a digital signature algorithm, one must first create a
|
2025
|
+
"key-pair": A public key and a corresponding private key. The private
|
2026
|
+
key is used to sign messages, while the public key is used for verifying
|
2027
|
+
that that signatures and messages match. Some care must be taken when
|
2028
|
+
distributing the public key; it need not be kept secret, but if a bad
|
2029
|
+
guy is able to replace it (in transit, or in some user's list of known
|
2030
|
+
public keys), bad things may happen.
|
2031
|
+
|
2032
|
+
There are two operations one can do with the keys. The signature
|
2033
|
+
operation takes a message and a private key, and creates a signature for
|
2034
|
+
the message. A signature is some string of bits, usually at most a few
|
2035
|
+
thousand bits or a few hundred octets. Unlike paper-and-ink signatures,
|
2036
|
+
the digital signature depends on the message, so one can't cut it out of
|
2037
|
+
context and glue it to a different message.
|
2038
|
+
|
2039
|
+
The verification operation takes a public key, a message, and a
|
2040
|
+
string that is claimed to be a signature on the message, and returns
|
2041
|
+
true or false. If it returns true, that means that the three input
|
2042
|
+
values matched, and the verifier can be sure that someone went through
|
2043
|
+
with the signature operation on that very message, and that the
|
2044
|
+
"someone" also knows the private key corresponding to the public key.
|
2045
|
+
|
2046
|
+
The desired properties of a digital signature algorithm are as
|
2047
|
+
follows: Given the public key and pairs of messages and valid
|
2048
|
+
signatures on them, it should be hard to compute the private key, and
|
2049
|
+
it should also be hard to create a new message and signature that is
|
2050
|
+
accepted by the verification operation.
|
2051
|
+
|
2052
|
+
Besides signing meaningful messages, digital signatures can be used
|
2053
|
+
for authorization. A server can be configured with a public key, such
|
2054
|
+
that any client that connects to the service is given a random nonce
|
2055
|
+
message. If the server gets a reply with a correct signature matching
|
2056
|
+
the nonce message and the configured public key, the client is granted
|
2057
|
+
access. So the configuration of the server can be understood as "grant
|
2058
|
+
access to whoever knows the private key corresponding to this
|
2059
|
+
particular public key, and to no others".
|
2060
|
+
|
2061
|
+
* Menu:
|
2062
|
+
|
2063
|
+
* RSA:: The RSA public key algorithm.
|
2064
|
+
* DSA:: The DSA digital signature algorithm.
|
2065
|
+
|
2066
|
+
|
2067
|
+
File: nettle.info, Node: RSA, Next: DSA, Prev: Public-key algorithms, Up: Public-key algorithms
|
2068
|
+
|
2069
|
+
6.5.1 RSA
|
2070
|
+
---------
|
2071
|
+
|
2072
|
+
The RSA algorithm was the first practical digital signature algorithm
|
2073
|
+
that was constructed. It was described 1978 in a paper by Ronald
|
2074
|
+
Rivest, Adi Shamir and L.M. Adleman, and the technique was also
|
2075
|
+
patented in the USA in 1983. The patent expired on September 20, 2000,
|
2076
|
+
and since that day, RSA can be used freely, even in the USA.
|
2077
|
+
|
2078
|
+
It's remarkably simple to describe the trapdoor function behind RSA.
|
2079
|
+
The "one-way"-function used is
|
2080
|
+
|
2081
|
+
F(x) = x^e mod n
|
2082
|
+
|
2083
|
+
I.e. raise x to the `e':th power, while discarding all multiples of
|
2084
|
+
`n'. The pair of numbers `n' and `e' is the public key. `e' can be
|
2085
|
+
quite small, even `e = 3' has been used, although slightly larger
|
2086
|
+
numbers are recommended. `n' should be about 1000 bits or larger.
|
2087
|
+
|
2088
|
+
If `n' is large enough, and properly chosen, the inverse of F, the
|
2089
|
+
computation of `e':th roots modulo `n', is very difficult. But,
|
2090
|
+
where's the trapdoor?
|
2091
|
+
|
2092
|
+
Let's first look at how RSA key-pairs are generated. First `n' is
|
2093
|
+
chosen as the product of two large prime numbers `p' and `q' of roughly
|
2094
|
+
the same size (so if `n' is 1000 bits, `p' and `q' are about 500 bits
|
2095
|
+
each). One also computes the number `phi = (p-1)(q-1)', in mathematical
|
2096
|
+
speak, `phi' is the order of the multiplicative group of integers
|
2097
|
+
modulo n.
|
2098
|
+
|
2099
|
+
Next, `e' is chosen. It must have no factors in common with `phi' (in
|
2100
|
+
particular, it must be odd), but can otherwise be chosen more or less
|
2101
|
+
randomly. `e = 65537' is a popular choice, because it makes raising to
|
2102
|
+
the `e''th power particularly efficient, and being prime, it usually
|
2103
|
+
has no factors common with `phi'.
|
2104
|
+
|
2105
|
+
Finally, a number `d', `d < n' is computed such that `e d mod phi =
|
2106
|
+
1'. It can be shown that such a number exists (this is why `e' and
|
2107
|
+
`phi' must have no common factors), and that for all x,
|
2108
|
+
|
2109
|
+
(x^e)^d mod n = x^(ed) mod n = (x^d)^e mod n = x
|
2110
|
+
|
2111
|
+
Using Euclid's algorithm, `d' can be computed quite easily from
|
2112
|
+
`phi' and `e'. But it is still hard to get `d' without knowing `phi',
|
2113
|
+
which depends on the factorization of `n'.
|
2114
|
+
|
2115
|
+
So `d' is the trapdoor, if we know `d' and `y = F(x)', we can
|
2116
|
+
recover x as `y^d mod n'. `d' is also the private half of the RSA
|
2117
|
+
key-pair.
|
2118
|
+
|
2119
|
+
The most common signature operation for RSA is defined in `PKCS#1',
|
2120
|
+
a specification by RSA Laboratories. The message to be signed is first
|
2121
|
+
hashed using a cryptographic hash function, e.g. MD5 or SHA1. Next,
|
2122
|
+
some padding, the ASN.1 "Algorithm Identifier" for the hash function,
|
2123
|
+
and the message digest itself, are concatenated and converted to a
|
2124
|
+
number `x'. The signature is computed from `x' and the private key as
|
2125
|
+
`s = x^d mod n'(1) (*note RSA-Footnote-1::). The signature, `s' is a
|
2126
|
+
number of about the same size of `n', and it usually encoded as a
|
2127
|
+
sequence of octets, most significant octet first.
|
2128
|
+
|
2129
|
+
The verification operation is straight-forward, `x' is computed from
|
2130
|
+
the message in the same way as above. Then `s^e mod n' is computed, the
|
2131
|
+
operation returns true if and only if the result equals `x'.
|
2132
|
+
|
2133
|
+
6.5.2 Nettle's RSA support
|
2134
|
+
--------------------------
|
2135
|
+
|
2136
|
+
Nettle represents RSA keys using two structures that contain large
|
2137
|
+
numbers (of type `mpz_t').
|
2138
|
+
|
2139
|
+
-- Context struct: rsa_public_key size n e
|
2140
|
+
`size' is the size, in octets, of the modulo, and is used
|
2141
|
+
internally. `n' and `e' is the public key.
|
2142
|
+
|
2143
|
+
-- Context struct: rsa_private_key size d p q a b c
|
2144
|
+
`size' is the size, in octets, of the modulo, and is used
|
2145
|
+
internally. `d' is the secret exponent, but it is not actually
|
2146
|
+
used when signing. Instead, the factors `p' and `q', and the
|
2147
|
+
parameters `a', `b' and `c' are used. They are computed from `p',
|
2148
|
+
`q' and `e' such that `a e mod (p - 1) = 1, b e mod (q - 1) = 1, c
|
2149
|
+
q mod p = 1'.
|
2150
|
+
|
2151
|
+
Before use, these structs must be initialized by calling one of
|
2152
|
+
|
2153
|
+
-- Function: void rsa_public_key_init (struct rsa_public_key *PUB)
|
2154
|
+
-- Function: void rsa_private_key_init (struct rsa_private_key *KEY)
|
2155
|
+
Calls `mpz_init' on all numbers in the key struct.
|
2156
|
+
|
2157
|
+
and when finished with them, the space for the numbers must be
|
2158
|
+
deallocated by calling one of
|
2159
|
+
|
2160
|
+
-- Function: void rsa_public_key_clear (struct rsa_public_key *PUB)
|
2161
|
+
-- Function: void rsa_private_key_clear (struct rsa_private_key *KEY)
|
2162
|
+
Calls `mpz_clear' on all numbers in the key struct.
|
2163
|
+
|
2164
|
+
In general, Nettle's RSA functions deviates from Nettle's "no memory
|
2165
|
+
allocation"-policy. Space for all the numbers, both in the key structs
|
2166
|
+
above, and temporaries, are allocated dynamically. For information on
|
2167
|
+
how to customize allocation, see *Note GMP Allocation: (gmp)Custom
|
2168
|
+
Allocation.
|
2169
|
+
|
2170
|
+
When you have assigned values to the attributes of a key, you must
|
2171
|
+
call
|
2172
|
+
|
2173
|
+
-- Function: int rsa_public_key_prepare (struct rsa_public_key *PUB)
|
2174
|
+
-- Function: int rsa_private_key_prepare (struct rsa_private_key *KEY)
|
2175
|
+
Computes the octet size of the key (stored in the `size' attribute,
|
2176
|
+
and may also do other basic sanity checks. Returns one if
|
2177
|
+
successful, or zero if the key can't be used, for instance if the
|
2178
|
+
modulo is smaller than the minimum size needed for RSA operations
|
2179
|
+
specified by PKCS#1.
|
2180
|
+
|
2181
|
+
Before signing or verifying a message, you first hash it with the
|
2182
|
+
appropriate hash function. You pass the hash function's context struct
|
2183
|
+
to the RSA signature function, and it will extract the message digest
|
2184
|
+
and do the rest of the work. There are also alternative functions that
|
2185
|
+
take the hash digest as argument.
|
2186
|
+
|
2187
|
+
There is currently no support for using SHA224 or SHA384 with RSA
|
2188
|
+
signatures, since there's no gain in either computation time nor
|
2189
|
+
message size compared to using SHA256 and SHA512, respectively.
|
2190
|
+
|
2191
|
+
Creation and verification of signatures is done with the following
|
2192
|
+
functions:
|
2193
|
+
|
2194
|
+
-- Function: int rsa_md5_sign (const struct rsa_private_key *KEY,
|
2195
|
+
struct md5_ctx *HASH, mpz_t SIGNATURE)
|
2196
|
+
-- Function: int rsa_sha1_sign (const struct rsa_private_key *KEY,
|
2197
|
+
struct sha1_ctx *HASH, mpz_t SIGNATURE)
|
2198
|
+
-- Function: int rsa_sha256_sign (const struct rsa_private_key *KEY,
|
2199
|
+
struct sha256_ctx *HASH, mpz_t SIGNATURE)
|
2200
|
+
-- Function: int rsa_sha512_sign (const struct rsa_private_key *KEY,
|
2201
|
+
struct sha512_ctx *HASH, mpz_t SIGNATURE)
|
2202
|
+
The signature is stored in SIGNATURE (which must have been
|
2203
|
+
`mpz_init''ed earlier). The hash context is reset so that it can be
|
2204
|
+
used for new messages. Returns one on success, or zero on failure.
|
2205
|
+
Signing fails if the key is too small for the given hash size,
|
2206
|
+
e.g., it's not possible to create a signature using SHA512 and a
|
2207
|
+
512-bit RSA key.
|
2208
|
+
|
2209
|
+
-- Function: int rsa_md5_sign_digest (const struct rsa_private_key
|
2210
|
+
*KEY, const uint8_t *DIGEST, mpz_t SIGNATURE)
|
2211
|
+
-- Function: int rsa_sha1_sign_digest (const struct rsa_private_key
|
2212
|
+
*KEY, const uint8_t *DIGEST, mpz_t SIGNATURE);
|
2213
|
+
-- Function: int rsa_sha256_sign_digest (const struct rsa_private_key
|
2214
|
+
*KEY, const uint8_t *DIGEST, mpz_t SIGNATURE);
|
2215
|
+
-- Function: int rsa_sha512_sign_digest (const struct rsa_private_key
|
2216
|
+
*KEY, const uint8_t *DIGEST, mpz_t SIGNATURE);
|
2217
|
+
Creates a signature from the given hash digest. DIGEST should
|
2218
|
+
point to a digest of size `MD5_DIGEST_SIZE', `SHA1_DIGEST_SIZE',
|
2219
|
+
or `SHA256_DIGEST_SIZE', respectively. The signature is stored in
|
2220
|
+
SIGNATURE (which must have been `mpz_init':ed earlier). Returns
|
2221
|
+
one on success, or zero on failure.
|
2222
|
+
|
2223
|
+
-- Function: int rsa_md5_verify (const struct rsa_public_key *KEY,
|
2224
|
+
struct md5_ctx *HASH, const mpz_t SIGNATURE)
|
2225
|
+
-- Function: int rsa_sha1_verify (const struct rsa_public_key *KEY,
|
2226
|
+
struct sha1_ctx *HASH, const mpz_t SIGNATURE)
|
2227
|
+
-- Function: int rsa_sha256_verify (const struct rsa_public_key *KEY,
|
2228
|
+
struct sha256_ctx *HASH, const mpz_t SIGNATURE)
|
2229
|
+
-- Function: int rsa_sha512_verify (const struct rsa_public_key *KEY,
|
2230
|
+
struct sha512_ctx *HASH, const mpz_t SIGNATURE)
|
2231
|
+
Returns 1 if the signature is valid, or 0 if it isn't. In either
|
2232
|
+
case, the hash context is reset so that it can be used for new
|
2233
|
+
messages.
|
2234
|
+
|
2235
|
+
-- Function: int rsa_md5_verify_digest (const struct rsa_public_key
|
2236
|
+
*KEY, const uint8_t *DIGEST, const mpz_t SIGNATURE)
|
2237
|
+
-- Function: int rsa_sha1_verify_digest (const struct rsa_public_key
|
2238
|
+
*KEY, const uint8_t *DIGEST, const mpz_t SIGNATURE)
|
2239
|
+
-- Function: int rsa_sha256_verify_digest (const struct rsa_public_key
|
2240
|
+
*KEY, const uint8_t *DIGEST, const mpz_t SIGNATURE)
|
2241
|
+
-- Function: int rsa_sha512_verify_digest (const struct rsa_public_key
|
2242
|
+
*KEY, const uint8_t *DIGEST, const mpz_t SIGNATURE)
|
2243
|
+
Returns 1 if the signature is valid, or 0 if it isn't. DIGEST
|
2244
|
+
should point to a digest of size `MD5_DIGEST_SIZE',
|
2245
|
+
`SHA1_DIGEST_SIZE', or `SHA256_DIGEST_SIZE', respectively.
|
2246
|
+
|
2247
|
+
If you need to use the RSA trapdoor, the private key, in a way that
|
2248
|
+
isn't supported by the above functions Nettle also includes a function
|
2249
|
+
that computes `x^d mod n' and nothing more, using the CRT optimization.
|
2250
|
+
|
2251
|
+
-- Function: void rsa_compute_root (struct rsa_private_key *KEY, mpz_t
|
2252
|
+
X, const mpz_t M)
|
2253
|
+
Computes `x = m^d', efficiently.
|
2254
|
+
|
2255
|
+
At last, how do you create new keys?
|
2256
|
+
|
2257
|
+
-- Function: int rsa_generate_keypair (struct rsa_public_key *PUB,
|
2258
|
+
struct rsa_private_key *KEY, void *RANDOM_CTX,
|
2259
|
+
nettle_random_func RANDOM, void *PROGRESS_CTX,
|
2260
|
+
nettle_progress_func PROGRESS, unsigned N_SIZE, unsigned
|
2261
|
+
E_SIZE);
|
2262
|
+
There are lots of parameters. PUB and KEY is where the resulting
|
2263
|
+
key pair is stored. The structs should be initialized, but you
|
2264
|
+
don't need to call `rsa_public_key_prepare' or
|
2265
|
+
`rsa_private_key_prepare' after key generation.
|
2266
|
+
|
2267
|
+
RANDOM_CTX and RANDOM is a randomness generator.
|
2268
|
+
`random(random_ctx, length, dst)' should generate `length' random
|
2269
|
+
octets and store them at `dst'. For advice, see *Note Randomness::.
|
2270
|
+
|
2271
|
+
PROGRESS and PROGRESS_CTX can be used to get callbacks during the
|
2272
|
+
key generation process, in order to uphold an illusion of
|
2273
|
+
progress. PROGRESS can be NULL, in that case there are no
|
2274
|
+
callbacks.
|
2275
|
+
|
2276
|
+
SIZE_N is the desired size of the modulo, in bits. If SIZE_E is
|
2277
|
+
non-zero, it is the desired size of the public exponent and a
|
2278
|
+
random exponent of that size is selected. But if E_SIZE is zero,
|
2279
|
+
it is assumed that the caller has already chosen a value for `e',
|
2280
|
+
and stored it in PUB. Returns one on success, and zero on
|
2281
|
+
failure. The function can fail for example if if N_SIZE is too
|
2282
|
+
small, or if E_SIZE is zero and `pub->e' is an even number.
|
2283
|
+
|
2284
|
+
|
2285
|
+
File: nettle.info, Node: RSA-Footnotes, Up: RSA
|
2286
|
+
|
2287
|
+
(1) Actually, the computation is not done like this, it is done more
|
2288
|
+
efficiently using `p', `q' and the Chinese remainder theorem (CRT). But
|
2289
|
+
the result is the same.
|
2290
|
+
|
2291
|
+
|
2292
|
+
File: nettle.info, Node: DSA, Prev: RSA, Up: Public-key algorithms
|
2293
|
+
|
2294
|
+
6.5.3 Nettle's DSA support
|
2295
|
+
--------------------------
|
2296
|
+
|
2297
|
+
The DSA digital signature algorithm is more complex than RSA. It was
|
2298
|
+
specified during the early 1990s, and in 1994 NIST published FIPS 186
|
2299
|
+
which is the authoritative specification. Sometimes DSA is referred to
|
2300
|
+
using the acronym DSS, for Digital Signature Standard. The most recent
|
2301
|
+
revision of the specification, FIPS186-3, was issueed in 2009, and it
|
2302
|
+
adds support for larger hash functions than sha1.
|
2303
|
+
|
2304
|
+
For DSA, the underlying mathematical problem is the computation of
|
2305
|
+
discreet logarithms. The public key consists of a large prime `p', a
|
2306
|
+
small prime `q' which is a factor of `p-1', a number `g' which
|
2307
|
+
generates a subgroup of order `q' modulo `p', and an element `y' in
|
2308
|
+
that subgroup.
|
2309
|
+
|
2310
|
+
In the original DSA, the size of `q' is fixed to 160 bits, to match
|
2311
|
+
with the SHA1 hash algorithm. The size of `p' is in principle
|
2312
|
+
unlimited, but the standard specifies only nine specific sizes: `512 +
|
2313
|
+
l*64', where `l' is between 0 and 8. Thus, the maximum size of `p' is
|
2314
|
+
1024 bits, and sizes less than 1024 bits are considered obsolete and not
|
2315
|
+
secure.
|
2316
|
+
|
2317
|
+
The subgroup requirement means that if you compute
|
2318
|
+
|
2319
|
+
g^t mod p
|
2320
|
+
|
2321
|
+
for all possible integers `t', you will get precisely `q' distinct
|
2322
|
+
values.
|
2323
|
+
|
2324
|
+
The private key is a secret exponent `x', such that
|
2325
|
+
|
2326
|
+
g^x = y mod p
|
2327
|
+
|
2328
|
+
In mathematical speak, `x' is the "discrete logarithm" of `y' mod
|
2329
|
+
`p', with respect to the generator `g'. The size of `x' will also be
|
2330
|
+
about the same size as `q'. The security of the DSA algorithm relies on
|
2331
|
+
the difficulty of the discrete logarithm problem. Current algorithms to
|
2332
|
+
compute discrete logarithms in this setting, and hence crack DSA, are
|
2333
|
+
of two types. The first type works directly in the (multiplicative)
|
2334
|
+
group of integers mod `p'. The best known algorithm of this type is the
|
2335
|
+
Number Field Sieve, and it's complexity is similar to the complexity of
|
2336
|
+
factoring numbers of the same size as `p'. The other type works in the
|
2337
|
+
smaller `q'-sized subgroup generated by `g', which has a more difficult
|
2338
|
+
group structure. One good algorithm is Pollard-rho, which has
|
2339
|
+
complexity `sqrt(q)'.
|
2340
|
+
|
2341
|
+
The important point is that security depends on the size of _both_
|
2342
|
+
`p' and `q', and they should be choosen so that the difficulty of both
|
2343
|
+
discrete logarithm methods are comparable. Today, the security margin
|
2344
|
+
of the original DSA may be uncomfortably small. Using a `p' of 1024
|
2345
|
+
bits implies that cracking using the number field sieve is expected to
|
2346
|
+
take about the same time as factoring a 1024-bit RSA modulo, and using
|
2347
|
+
a `q' of size 160 bits implies that cracking using Pollard-rho will
|
2348
|
+
take roughly `2^80' group operations. With the size of `q' fixed, tied
|
2349
|
+
to the SHA1 digest size, it may be tempting to increase the size of `p'
|
2350
|
+
to, say, 4096 bits. This will provide excellent resistance against
|
2351
|
+
attacks like the number field sieve which works in the large group. But
|
2352
|
+
it will do very little to defend against Pollard-rho attacking the small
|
2353
|
+
subgroup; the attacker is slowed down at most by a single factor of 10
|
2354
|
+
due to the more expensive group operation. And the attacker will surely
|
2355
|
+
choose the latter attack.
|
2356
|
+
|
2357
|
+
The signature generation algorithm is randomized; in order to create
|
2358
|
+
a DSA signature, you need a good source for random numbers (*note
|
2359
|
+
Randomness::). Let us describe the common case of a 160-bit `q'.
|
2360
|
+
|
2361
|
+
To create a signature, one starts with the hash digest of the
|
2362
|
+
message, `h', which is a 160 bit number, and a random number `k,
|
2363
|
+
0<k<q', also 160 bits. Next, one computes
|
2364
|
+
|
2365
|
+
r = (g^k mod p) mod q
|
2366
|
+
s = k^-1 (h + x r) mod q
|
2367
|
+
|
2368
|
+
The signature is the pair `(r, s)', two 160 bit numbers. Note the
|
2369
|
+
two different mod operations when computing `r', and the use of the
|
2370
|
+
secret exponent `x'.
|
2371
|
+
|
2372
|
+
To verify a signature, one first checks that `0 < r,s < q', and then
|
2373
|
+
one computes backwards,
|
2374
|
+
|
2375
|
+
w = s^-1 mod q
|
2376
|
+
v = (g^(w h) y^(w r) mod p) mod q
|
2377
|
+
|
2378
|
+
The signature is valid if `v = r'. This works out because `w = s^-1
|
2379
|
+
mod q = k (h + x r)^-1 mod q', so that
|
2380
|
+
|
2381
|
+
g^(w h) y^(w r) = g^(w h) (g^x)^(w r) = g^(w (h + x r)) = g^k
|
2382
|
+
|
2383
|
+
When reducing mod `q' this yields `r'. Note that when verifying a
|
2384
|
+
signature, we don't know either `k' or `x': those numbers are secret.
|
2385
|
+
|
2386
|
+
If you can choose between RSA and DSA, which one is best? Both are
|
2387
|
+
believed to be secure. DSA gained popularity in the late 1990s, as a
|
2388
|
+
patent free alternative to RSA. Now that the RSA patents have expired,
|
2389
|
+
there's no compelling reason to want to use DSA. Today, the original
|
2390
|
+
DSA key size does not provide a large security margin, and it should
|
2391
|
+
probably be phased out together with RSA keys of 1024 bits. Using the
|
2392
|
+
revised DSA algorithm with a larger hash function, in particular,
|
2393
|
+
SHA256, a 256-bit `q', and `p' of size 2048 bits or more, should
|
2394
|
+
provide for a more comfortable security margin, but these variants are
|
2395
|
+
not yet in wide use.
|
2396
|
+
|
2397
|
+
DSA signatures are smaller than RSA signatures, which is important
|
2398
|
+
for some specialized applications.
|
2399
|
+
|
2400
|
+
From a practical point of view, DSA's need for a good randomness
|
2401
|
+
source is a serious disadvantage. If you ever use the same `k' (and
|
2402
|
+
`r') for two different message, you leak your private key.
|
2403
|
+
|
2404
|
+
6.5.4 Nettle's DSA support
|
2405
|
+
--------------------------
|
2406
|
+
|
2407
|
+
Like for RSA, Nettle represents DSA keys using two structures,
|
2408
|
+
containing values of type `mpz_t'. For information on how to customize
|
2409
|
+
allocation, see *Note GMP Allocation: (gmp)Custom Allocation.
|
2410
|
+
|
2411
|
+
Most of the DSA functions are very similar to the corresponding RSA
|
2412
|
+
functions, but there are a few differences pointed out below. For a
|
2413
|
+
start, there are no functions corresponding to `rsa_public_key_prepare'
|
2414
|
+
and `rsa_private_key_prepare'.
|
2415
|
+
|
2416
|
+
-- Context struct: dsa_public_key p q g y
|
2417
|
+
The public parameters described above.
|
2418
|
+
|
2419
|
+
-- Context struct: dsa_private_key x
|
2420
|
+
The private key `x'.
|
2421
|
+
|
2422
|
+
Before use, these structs must be initialized by calling one of
|
2423
|
+
|
2424
|
+
-- Function: void dsa_public_key_init (struct dsa_public_key *PUB)
|
2425
|
+
-- Function: void dsa_private_key_init (struct dsa_private_key *KEY)
|
2426
|
+
Calls `mpz_init' on all numbers in the key struct.
|
2427
|
+
|
2428
|
+
When finished with them, the space for the numbers must be
|
2429
|
+
deallocated by calling one of
|
2430
|
+
|
2431
|
+
-- Function: void dsa_public_key_clear (struct dsa_public_key *PUB)
|
2432
|
+
-- Function: void dsa_private_key_clear (struct dsa_private_key *KEY)
|
2433
|
+
Calls `mpz_clear' on all numbers in the key struct.
|
2434
|
+
|
2435
|
+
Signatures are represented using the structure below, and need to be
|
2436
|
+
initialized and cleared in the same way as the key structs.
|
2437
|
+
|
2438
|
+
-- Context struct: dsa_signature r s
|
2439
|
+
|
2440
|
+
-- Function: void dsa_signature_init (struct dsa_signature *SIGNATURE)
|
2441
|
+
-- Function: void dsa_signature_clear (struct dsa_signature *SIGNATURE)
|
2442
|
+
You must call `dsa_signature_init' before creating or using a
|
2443
|
+
signature, and call `dsa_signature_clear' when you are finished
|
2444
|
+
with it.
|
2445
|
+
|
2446
|
+
For signing, you need to provide both the public and the private key
|
2447
|
+
(unlike RSA, where the private key struct includes all information
|
2448
|
+
needed for signing), and a source for random numbers. Signatures can
|
2449
|
+
use the SHA1 or the SHA256 hash function, although the implementation
|
2450
|
+
of DSA with SHA256 should be considered somewhat experimental due to
|
2451
|
+
lack of official test vectors and interoperability testing.
|
2452
|
+
|
2453
|
+
-- Function: int dsa_sha1_sign (const struct dsa_public_key *PUB,
|
2454
|
+
const struct dsa_private_key *KEY, void *RANDOM_CTX,
|
2455
|
+
nettle_random_func RANDOM, struct sha1_ctx *HASH, struct
|
2456
|
+
dsa_signature *SIGNATURE)
|
2457
|
+
-- Function: int dsa_sha1_sign_digest (const struct dsa_public_key
|
2458
|
+
*PUB, const struct dsa_private_key *KEY, void *RANDOM_CTX,
|
2459
|
+
nettle_random_func RANDOM, const uint8_t *DIGEST, struct
|
2460
|
+
dsa_signature *SIGNATURE)
|
2461
|
+
-- Function: int dsa_sha256_sign (const struct dsa_public_key *PUB,
|
2462
|
+
const struct dsa_private_key *KEY, void *RANDOM_CTX,
|
2463
|
+
nettle_random_func RANDOM, struct sha256_ctx *HASH, struct
|
2464
|
+
dsa_signature *SIGNATURE)
|
2465
|
+
-- Function: int dsa_sha256_sign_digest (const struct dsa_public_key
|
2466
|
+
*PUB, const struct dsa_private_key *KEY, void *RANDOM_CTX,
|
2467
|
+
nettle_random_func RANDOM, const uint8_t *DIGEST, struct
|
2468
|
+
dsa_signature *SIGNATURE)
|
2469
|
+
Creates a signature from the given hash context or digest.
|
2470
|
+
RANDOM_CTX and RANDOM is a randomness generator.
|
2471
|
+
`random(random_ctx, length, dst)' should generate `length' random
|
2472
|
+
octets and store them at `dst'. For advice, see *Note
|
2473
|
+
Randomness::. Returns one on success, or zero on failure. Signing
|
2474
|
+
fails if the key size and the hash size don't match.
|
2475
|
+
|
2476
|
+
Verifying signatures is a little easier, since no randomness
|
2477
|
+
generator is needed. The functions are
|
2478
|
+
|
2479
|
+
-- Function: int dsa_sha1_verify (const struct dsa_public_key *KEY,
|
2480
|
+
struct sha1_ctx *HASH, const struct dsa_signature *SIGNATURE)
|
2481
|
+
-- Function: int dsa_sha1_verify_digest (const struct dsa_public_key
|
2482
|
+
*KEY, const uint8_t *DIGEST, const struct dsa_signature
|
2483
|
+
*SIGNATURE)
|
2484
|
+
-- Function: int dsa_sha256_verify (const struct dsa_public_key *KEY,
|
2485
|
+
struct sha256_ctx *HASH, const struct dsa_signature
|
2486
|
+
*SIGNATURE)
|
2487
|
+
-- Function: int dsa_sha256_verify_digest (const struct dsa_public_key
|
2488
|
+
*KEY, const uint8_t *DIGEST, const struct dsa_signature
|
2489
|
+
*SIGNATURE)
|
2490
|
+
Verifies a signature. Returns 1 if the signature is valid,
|
2491
|
+
otherwise 0.
|
2492
|
+
|
2493
|
+
Key generation uses mostly the same parameters as the corresponding
|
2494
|
+
RSA function.
|
2495
|
+
|
2496
|
+
-- Function: int dsa_generate_keypair (struct dsa_public_key *PUB,
|
2497
|
+
struct dsa_private_key *KEY, void *RANDOM_CTX,
|
2498
|
+
nettle_random_func RANDOM, void *PROGRESS_CTX,
|
2499
|
+
nettle_progress_func PROGRESS, unsigned P_BITS, unsigned
|
2500
|
+
Q_BITS)
|
2501
|
+
PUB and KEY is where the resulting key pair is stored. The structs
|
2502
|
+
should be initialized before you call this function.
|
2503
|
+
|
2504
|
+
RANDOM_CTX and RANDOM is a randomness generator.
|
2505
|
+
`random(random_ctx, length, dst)' should generate `length' random
|
2506
|
+
octets and store them at `dst'. For advice, see *Note Randomness::.
|
2507
|
+
|
2508
|
+
PROGRESS and PROGRESS_CTX can be used to get callbacks during the
|
2509
|
+
key generation process, in order to uphold an illusion of
|
2510
|
+
progress. PROGRESS can be NULL, in that case there are no
|
2511
|
+
callbacks.
|
2512
|
+
|
2513
|
+
P_BITS and Q_BITS are the desired sizes of `p' and `q'. To
|
2514
|
+
generate keys that conform to the original DSA standard, you must
|
2515
|
+
use `q_bits = 160' and select P_BITS of the form `p_bits = 512 +
|
2516
|
+
l*64', for `0 <= l <= 8', where the smaller sizes are no longer
|
2517
|
+
recommended, so you should most likely stick to `p_bits = 1024'.
|
2518
|
+
Non-standard sizes are possible, in particular `p_bits' larger
|
2519
|
+
than 1024, although DSA implementations can not in general be
|
2520
|
+
expected to support such keys. Also note that using very large
|
2521
|
+
P_BITS, with Q_BITS fixed at 160, doesn't make much sense, because
|
2522
|
+
the security is also limited by the size of the smaller prime.
|
2523
|
+
Using a larger `q_bits' requires switchign to a larger hash
|
2524
|
+
function. To generate DSA keys for use with SHA256, use `q_bits =
|
2525
|
+
256' and, e.g., `p_bits = 2048'.
|
2526
|
+
|
2527
|
+
Returns one on success, and zero on failure. The function will
|
2528
|
+
fail if Q_BITS is neither 160 nor 256, or if P_BITS is unreasonably
|
2529
|
+
small.
|
2530
|
+
|
2531
|
+
|
2532
|
+
File: nettle.info, Node: Randomness, Next: Ascii encoding, Prev: Public-key algorithms, Up: Reference
|
2533
|
+
|
2534
|
+
6.6 Randomness
|
2535
|
+
==============
|
2536
|
+
|
2537
|
+
A crucial ingredient in many cryptographic contexts is randomness: Let
|
2538
|
+
`p' be a random prime, choose a random initialization vector `iv', a
|
2539
|
+
random key `k' and a random exponent `e', etc. In the theories, it is
|
2540
|
+
assumed that you have plenty of randomness around. If this assumption
|
2541
|
+
is not true in practice, systems that are otherwise perfectly secure,
|
2542
|
+
can be broken. Randomness has often turned out to be the weakest link
|
2543
|
+
in the chain.
|
2544
|
+
|
2545
|
+
In non-cryptographic applications, such as games as well as
|
2546
|
+
scientific simulation, a good randomness generator usually means a
|
2547
|
+
generator that has good statistical properties, and is seeded by some
|
2548
|
+
simple function of things like the current time, process id, and host
|
2549
|
+
name.
|
2550
|
+
|
2551
|
+
However, such a generator is inadequate for cryptography, for at
|
2552
|
+
least two reasons:
|
2553
|
+
|
2554
|
+
* It's too easy for an attacker to guess the initial seed. Even if
|
2555
|
+
it will take some 2^32 tries before he guesses right, that's far
|
2556
|
+
too easy. For example, if the process id is 16 bits, the
|
2557
|
+
resolution of "current time" is one second, and the attacker knows
|
2558
|
+
what day the generator was seeded, there are only about 2^32
|
2559
|
+
possibilities to try if all possible values for the process id and
|
2560
|
+
time-of-day are tried.
|
2561
|
+
|
2562
|
+
* The generator output reveals too much. By observing only a small
|
2563
|
+
segment of the generator's output, its internal state can be
|
2564
|
+
recovered, and from there, all previous output and all future
|
2565
|
+
output can be computed by the attacker.
|
2566
|
+
|
2567
|
+
A randomness generator that is used for cryptographic purposes must
|
2568
|
+
have better properties. Let's first look at the seeding, as the issues
|
2569
|
+
here are mostly independent of the rest of the generator. The initial
|
2570
|
+
state of the generator (its seed) must be unguessable by the attacker.
|
2571
|
+
So what's unguessable? It depends on what the attacker already knows.
|
2572
|
+
The concept used in information theory to reason about such things is
|
2573
|
+
called "entropy", or "conditional entropy" (not to be confused with the
|
2574
|
+
thermodynamic concept with the same name). A reasonable requirement is
|
2575
|
+
that the seed contains a conditional entropy of at least some 80-100
|
2576
|
+
bits. This property can be explained as follows: Allow the attacker to
|
2577
|
+
ask `n' yes-no-questions, of his own choice, about the seed. If the
|
2578
|
+
attacker, using this question-and-answer session, as well as any other
|
2579
|
+
information he knows about the seeding process, still can't guess the
|
2580
|
+
seed correctly, then the conditional entropy is more than `n' bits.
|
2581
|
+
|
2582
|
+
Let's look at an example. Say information about timing of received
|
2583
|
+
network packets is used in the seeding process. If there is some random
|
2584
|
+
network traffic going on, this will contribute some bits of entropy or
|
2585
|
+
"unguessability" to the seed. However, if the attacker can listen in to
|
2586
|
+
the local network, or if all but a small number of the packets were
|
2587
|
+
transmitted by machines that the attacker can monitor, this additional
|
2588
|
+
information makes the seed easier for the attacker to figure out. Even
|
2589
|
+
if the information is exactly the same, the conditional entropy, or
|
2590
|
+
unguessability, is smaller for an attacker that knows some of it already
|
2591
|
+
before the hypothetical question-and-answer session.
|
2592
|
+
|
2593
|
+
Seeding of good generators is usually based on several sources. The
|
2594
|
+
key point here is that the amount of unguessability that each source
|
2595
|
+
contributes, depends on who the attacker is. Some sources that have been
|
2596
|
+
used are:
|
2597
|
+
|
2598
|
+
High resolution timing of i/o activities
|
2599
|
+
Such as completed blocks from spinning hard disks, network
|
2600
|
+
packets, etc. Getting access to such information is quite system
|
2601
|
+
dependent, and not all systems include suitable hardware. If
|
2602
|
+
available, it's one of the better randomness source one can find
|
2603
|
+
in a digital, mostly predictable, computer.
|
2604
|
+
|
2605
|
+
User activity
|
2606
|
+
Timing and contents of user interaction events is another popular
|
2607
|
+
source that is available for interactive programs (even if I
|
2608
|
+
suspect that it is sometimes used in order to make the user feel
|
2609
|
+
good, not because the quality of the input is needed or used
|
2610
|
+
properly). Obviously, not available when a machine is unattended.
|
2611
|
+
Also beware of networks: User interaction that happens across a
|
2612
|
+
long serial cable, TELNET session, or even SSH session may be
|
2613
|
+
visible to an attacker, in full or partially.
|
2614
|
+
|
2615
|
+
Audio input
|
2616
|
+
Any room, or even a microphone input that's left unconnected, is a
|
2617
|
+
source of some random background noise, which can be fed into the
|
2618
|
+
seeding process.
|
2619
|
+
|
2620
|
+
Specialized hardware
|
2621
|
+
Hardware devices with the sole purpose of generating random data
|
2622
|
+
have been designed. They range from radioactive samples with an
|
2623
|
+
attached Geiger counter, to amplification of the inherent noise in
|
2624
|
+
electronic components such as diodes and resistors, to
|
2625
|
+
low-frequency sampling of chaotic systems. Hashing successive
|
2626
|
+
images of a Lava lamp is a spectacular example of the latter type.
|
2627
|
+
|
2628
|
+
Secret information
|
2629
|
+
Secret information, such as user passwords or keys, or private
|
2630
|
+
files stored on disk, can provide some unguessability. A problem
|
2631
|
+
is that if the information is revealed at a later time, the
|
2632
|
+
unguessability vanishes. Another problem is that this kind of
|
2633
|
+
information tends to be fairly constant, so if you rely on it and
|
2634
|
+
seed your generator regularly, you risk constructing almost
|
2635
|
+
similar seeds or even constructing the same seed more than once.
|
2636
|
+
|
2637
|
+
For all practical sources, it's difficult but important to provide a
|
2638
|
+
reliable lower bound on the amount of unguessability that it provides.
|
2639
|
+
Two important points are to make sure that the attacker can't observe
|
2640
|
+
your sources (so if you like the Lava lamp idea, remember that you have
|
2641
|
+
to get your own lamp, and not put it by a window or anywhere else where
|
2642
|
+
strangers can see it), and that hardware failures are detected. What if
|
2643
|
+
the bulb in the Lava lamp, which you keep locked into a cupboard
|
2644
|
+
following the above advice, breaks after a few months?
|
2645
|
+
|
2646
|
+
So let's assume that we have been able to find an unguessable seed,
|
2647
|
+
which contains at least 80 bits of conditional entropy, relative to all
|
2648
|
+
attackers that we care about (typically, we must at the very least
|
2649
|
+
assume that no attacker has root privileges on our machine).
|
2650
|
+
|
2651
|
+
How do we generate output from this seed, and how much can we get?
|
2652
|
+
Some generators (notably the Linux `/dev/random' generator) tries to
|
2653
|
+
estimate available entropy and restrict the amount of output. The goal
|
2654
|
+
is that if you read 128 bits from `/dev/random', you should get 128
|
2655
|
+
"truly random" bits. This is a property that is useful in some
|
2656
|
+
specialized circumstances, for instance when generating key material for
|
2657
|
+
a one time pad, or when working with unconditional blinding, but in most
|
2658
|
+
cases, it doesn't matter much. For most application, there's no limit on
|
2659
|
+
the amount of useful "random" data that we can generate from a small
|
2660
|
+
seed; what matters is that the seed is unguessable and that the
|
2661
|
+
generator has good cryptographic properties.
|
2662
|
+
|
2663
|
+
At the heart of all generators lies its internal state. Future output
|
2664
|
+
is determined by the internal state alone. Let's call it the generator's
|
2665
|
+
key. The key is initialized from the unguessable seed. Important
|
2666
|
+
properties of a generator are:
|
2667
|
+
|
2668
|
+
"Key-hiding"
|
2669
|
+
An attacker observing the output should not be able to recover the
|
2670
|
+
generator's key.
|
2671
|
+
|
2672
|
+
"Independence of outputs"
|
2673
|
+
Observing some of the output should not help the attacker to guess
|
2674
|
+
previous or future output.
|
2675
|
+
|
2676
|
+
"Forward secrecy"
|
2677
|
+
Even if an attacker compromises the generator's key, he should not
|
2678
|
+
be able to guess the generator output _before_ the key compromise.
|
2679
|
+
|
2680
|
+
"Recovery from key compromise"
|
2681
|
+
If an attacker compromises the generator's key, he can compute
|
2682
|
+
_all_ future output. This is inevitable if the generator is seeded
|
2683
|
+
only once, at startup. However, the generator can provide a
|
2684
|
+
reseeding mechanism, to achieve recovery from key compromise. More
|
2685
|
+
precisely: If the attacker compromises the key at a particular
|
2686
|
+
time `t_1', there is another later time `t_2', such that if the
|
2687
|
+
attacker observes all output generated between `t_1' and `t_2', he
|
2688
|
+
still can't guess what output is generated after `t_2'.
|
2689
|
+
|
2690
|
+
|
2691
|
+
Nettle includes one randomness generator that is believed to have all
|
2692
|
+
the above properties, and two simpler ones.
|
2693
|
+
|
2694
|
+
ARCFOUR, like any stream cipher, can be used as a randomness
|
2695
|
+
generator. Its output should be of reasonable quality, if the seed is
|
2696
|
+
hashed properly before it is used with `arcfour_set_key'. There's no
|
2697
|
+
single natural way to reseed it, but if you need reseeding, you should
|
2698
|
+
be using Yarrow instead.
|
2699
|
+
|
2700
|
+
The "lagged Fibonacci" generator in `<nettle/knuth-lfib.h>' is a
|
2701
|
+
fast generator with good statistical properties, but is *not* for
|
2702
|
+
cryptographic use, and therefore not documented here. It is included
|
2703
|
+
mostly because the Nettle test suite needs to generate some test data
|
2704
|
+
from a small seed.
|
2705
|
+
|
2706
|
+
The recommended generator to use is Yarrow, described below.
|
2707
|
+
|
2708
|
+
6.6.1 Yarrow
|
2709
|
+
------------
|
2710
|
+
|
2711
|
+
Yarrow is a family of pseudo-randomness generators, designed for
|
2712
|
+
cryptographic use, by John Kelsey, Bruce Schneier and Niels Ferguson.
|
2713
|
+
Yarrow-160 is described in a paper at
|
2714
|
+
`http://www.counterpane.com/yarrow.html', and it uses SHA1 and
|
2715
|
+
triple-DES, and has a 160-bit internal state. Nettle implements
|
2716
|
+
Yarrow-256, which is similar, but uses SHA256 and AES to get an
|
2717
|
+
internal state of 256 bits.
|
2718
|
+
|
2719
|
+
Yarrow was an almost finished project, the paper mentioned above is
|
2720
|
+
the closest thing to a specification for it, but some smaller details
|
2721
|
+
are left out. There is no official reference implementation or test
|
2722
|
+
cases. This section includes an overview of Yarrow, but for the
|
2723
|
+
details of Yarrow-256, as implemented by Nettle, you have to consult
|
2724
|
+
the source code. Maybe a complete specification can be written later.
|
2725
|
+
|
2726
|
+
Yarrow can use many sources (at least two are needed for proper
|
2727
|
+
reseeding), and two randomness "pools", referred to as the "slow pool"
|
2728
|
+
and the "fast pool". Input from the sources is fed alternatingly into
|
2729
|
+
the two pools. When one of the sources has contributed 100 bits of
|
2730
|
+
entropy to the fast pool, a "fast reseed" happens and the fast pool is
|
2731
|
+
mixed into the internal state. When at least two of the sources have
|
2732
|
+
contributed at least 160 bits each to the slow pool, a "slow reseed"
|
2733
|
+
takes place. The contents of both pools are mixed into the internal
|
2734
|
+
state. These procedures should ensure that the generator will eventually
|
2735
|
+
recover after a key compromise.
|
2736
|
+
|
2737
|
+
The output is generated by using AES to encrypt a counter, using the
|
2738
|
+
generator's current key. After each request for output, another 256
|
2739
|
+
bits are generated which replace the key. This ensures forward secrecy.
|
2740
|
+
|
2741
|
+
Yarrow can also use a "seed file" to save state across restarts.
|
2742
|
+
Yarrow is seeded by either feeding it the contents of the previous seed
|
2743
|
+
file, or feeding it input from its sources until a slow reseed happens.
|
2744
|
+
|
2745
|
+
Nettle defines Yarrow-256 in `<nettle/yarrow.h>'.
|
2746
|
+
|
2747
|
+
-- Context struct: struct yarrow256_ctx
|
2748
|
+
|
2749
|
+
-- Context struct: struct yarrow_source
|
2750
|
+
Information about a single source.
|
2751
|
+
|
2752
|
+
-- Constant: YARROW256_SEED_FILE_SIZE
|
2753
|
+
Recommanded size of the Yarrow-256 seed file.
|
2754
|
+
|
2755
|
+
-- Function: void yarrow256_init (struct yarrow256_ctx *CTX, unsigned
|
2756
|
+
NSOURCES, struct yarrow_source *SOURCES)
|
2757
|
+
Initializes the yarrow context, and its NSOURCES sources. It's
|
2758
|
+
possible to call it with NSOURCES=0 and SOURCES=NULL, if you don't
|
2759
|
+
need the update features.
|
2760
|
+
|
2761
|
+
-- Function: void yarrow256_seed (struct yarrow256_ctx *CTX, unsigned
|
2762
|
+
LENGTH, uint8_t *SEED_FILE)
|
2763
|
+
Seeds Yarrow-256 from a previous seed file. LENGTH should be at
|
2764
|
+
least `YARROW256_SEED_FILE_SIZE', but it can be larger.
|
2765
|
+
|
2766
|
+
The generator will trust you that the SEED_FILE data really is
|
2767
|
+
unguessable. After calling this function, you _must_ overwrite the
|
2768
|
+
old seed file with newly generated data from `yarrow256_random'.
|
2769
|
+
If it's possible for several processes to read the seed file at
|
2770
|
+
about the same time, access must be coordinated using some locking
|
2771
|
+
mechanism.
|
2772
|
+
|
2773
|
+
-- Function: int yarrow256_update (struct yarrow256_ctx *CTX, unsigned
|
2774
|
+
SOURCE, unsigned ENTROPY, unsigned LENGTH, const uint8_t
|
2775
|
+
*DATA)
|
2776
|
+
Updates the generator with data from source SOURCE (an index that
|
2777
|
+
must be smaller than the number of sources). ENTROPY is your
|
2778
|
+
estimated lower bound for the entropy in the data, measured in
|
2779
|
+
bits. Calling update with zero ENTROPY is always safe, no matter
|
2780
|
+
if the data is random or not.
|
2781
|
+
|
2782
|
+
Returns 1 if a reseed happened, in which case an application using
|
2783
|
+
a seed file may want to generate new seed data with
|
2784
|
+
`yarrow256_random' and overwrite the seed file. Otherwise, the
|
2785
|
+
function returns 0.
|
2786
|
+
|
2787
|
+
-- Function: void yarrow256_random (struct yarrow256_ctx *CTX,
|
2788
|
+
unsigned LENGTH, uint8_t *DST)
|
2789
|
+
Generates LENGTH octets of output. The generator must be seeded
|
2790
|
+
before you call this function.
|
2791
|
+
|
2792
|
+
If you don't need forward secrecy, e.g. if you need non-secret
|
2793
|
+
randomness for initialization vectors or padding, you can gain some
|
2794
|
+
efficiency by buffering, calling this function for reasonably large
|
2795
|
+
blocks of data, say 100-1000 octets at a time.
|
2796
|
+
|
2797
|
+
-- Function: int yarrow256_is_seeded (struct yarrow256_ctx *CTX)
|
2798
|
+
Returns 1 if the generator is seeded and ready to generate output,
|
2799
|
+
otherwise 0.
|
2800
|
+
|
2801
|
+
-- Function: unsigned yarrow256_needed_sources (struct yarrow256_ctx
|
2802
|
+
*CTX)
|
2803
|
+
Returns the number of sources that must reach the threshold before
|
2804
|
+
a slow reseed will happen. Useful primarily when the generator is
|
2805
|
+
unseeded.
|
2806
|
+
|
2807
|
+
-- Function: void yarrow256_fast_reseed (struct yarrow256_ctx *CTX)
|
2808
|
+
-- Function: void yarrow256_slow_reseed (struct yarrow256_ctx *CTX)
|
2809
|
+
Causes a fast or slow reseed to take place immediately, regardless
|
2810
|
+
of the current entropy estimates of the two pools. Use with care.
|
2811
|
+
|
2812
|
+
Nettle includes an entropy estimator for one kind of input source:
|
2813
|
+
User keyboard input.
|
2814
|
+
|
2815
|
+
-- Context struct: struct yarrow_key_event_ctx
|
2816
|
+
Information about recent key events.
|
2817
|
+
|
2818
|
+
-- Function: void yarrow_key_event_init (struct yarrow_key_event_ctx
|
2819
|
+
*CTX)
|
2820
|
+
Initializes the context.
|
2821
|
+
|
2822
|
+
-- Function: unsigned yarrow_key_event_estimate (struct
|
2823
|
+
yarrow_key_event_ctx *CTX, unsigned KEY, unsigned TIME)
|
2824
|
+
KEY is the id of the key (ASCII value, hardware key code, X
|
2825
|
+
keysym, ..., it doesn't matter), and TIME is the timestamp of the
|
2826
|
+
event. The time must be given in units matching the resolution by
|
2827
|
+
which you read the clock. If you read the clock with microsecond
|
2828
|
+
precision, TIME should be provided in units of microseconds. But
|
2829
|
+
if you use `gettimeofday' on a typical Unix system where the clock
|
2830
|
+
ticks 10 or so microseconds at a time, TIME should be given in
|
2831
|
+
units of 10 microseconds.
|
2832
|
+
|
2833
|
+
Returns an entropy estimate, in bits, suitable for calling
|
2834
|
+
`yarrow256_update'. Usually, 0, 1 or 2 bits.
|
2835
|
+
|
2836
|
+
|
2837
|
+
File: nettle.info, Node: Ascii encoding, Next: Miscellaneous functions, Prev: Randomness, Up: Reference
|
2838
|
+
|
2839
|
+
6.7 Ascii encoding
|
2840
|
+
==================
|
2841
|
+
|
2842
|
+
Encryption will transform your data from text into binary format, and
|
2843
|
+
that may be a problem if you want, for example, to send the data as if
|
2844
|
+
it was plain text in an email (or store it along with descriptive text
|
2845
|
+
in a file). You may then use an encoding from binary to text: each
|
2846
|
+
binary byte is translated into a number of bytes of plain text.
|
2847
|
+
|
2848
|
+
A base-N encoding of data is one representation of data that only
|
2849
|
+
uses N different symbols (instead of the 256 possible values of a byte).
|
2850
|
+
|
2851
|
+
The base64 encoding will always use alphanumeric (upper and lower
|
2852
|
+
case) characters and the '+', '/' and '=' symbols to represent the
|
2853
|
+
data. Four output characters are generated for each three bytes of
|
2854
|
+
input. In case the length of the input is not a multiple of three,
|
2855
|
+
padding characters are added at the end.
|
2856
|
+
|
2857
|
+
The base16 encoding, also known as "hexadecimal", uses the decimal
|
2858
|
+
digits and the letters from A to F. Two hexadecimal digits are generated
|
2859
|
+
for each input byte. Base16 may be useful if you want to use the data
|
2860
|
+
for filenames or URLs, for example.
|
2861
|
+
|
2862
|
+
Nettle supports both base64 and base16 encoding and decoding.
|
2863
|
+
|
2864
|
+
Encoding and decoding uses a context struct to maintain its state
|
2865
|
+
(with the exception of base16 encoding, which doesn't need any). To
|
2866
|
+
encode or decode the your data, first initialize the context, then call
|
2867
|
+
the update function as many times as necessary, and complete the
|
2868
|
+
operation by calling the final function.
|
2869
|
+
|
2870
|
+
The following functions can be used to perform base64 encoding and
|
2871
|
+
decoding. They are defined in `<nettle/base64.h>'.
|
2872
|
+
|
2873
|
+
-- Context struct: struct base64_encode_ctx
|
2874
|
+
|
2875
|
+
-- Function: void base64_encode_init (struct base64_encode_ctx *CTX)
|
2876
|
+
Initializes a base64 context. This is necessary before starting an
|
2877
|
+
encoding session.
|
2878
|
+
|
2879
|
+
-- Function: unsigned base64_encode_single (struct base64_encode_ctx
|
2880
|
+
*CTX, uint8_t *DST, uint8_t SRC)
|
2881
|
+
Encodes a single byte. Returns amount of output (always 1 or 2).
|
2882
|
+
|
2883
|
+
-- Macro: BASE64_ENCODE_LENGTH (LENGTH)
|
2884
|
+
The maximum number of output bytes when passing LENGTH input bytes
|
2885
|
+
to `base64_encode_update'.
|
2886
|
+
|
2887
|
+
-- Function: unsigned base64_encode_update (struct base64_encode_ctx
|
2888
|
+
*CTX, uint8_t *DST, unsigned LENGTH, const uint8_t *SRC)
|
2889
|
+
After CTX is initialized, this function may be called to encode
|
2890
|
+
LENGTH bytes from SRC. The result will be placed in DST, and the
|
2891
|
+
return value will be the number of bytes generated. Note that DST
|
2892
|
+
must be at least of size BASE64_ENCODE_LENGTH(LENGTH).
|
2893
|
+
|
2894
|
+
-- Constant: BASE64_ENCODE_FINAL_LENGTH
|
2895
|
+
The maximum amount of output from `base64_encode_final'.
|
2896
|
+
|
2897
|
+
-- Function: unsigned base64_encode_final (struct base64_encode_ctx
|
2898
|
+
*CTX, uint8_t *DST)
|
2899
|
+
After calling base64_encode_update one or more times, this function
|
2900
|
+
should be called to generate the final output bytes, including any
|
2901
|
+
needed paddding. The return value is the number of output bytes
|
2902
|
+
generated.
|
2903
|
+
|
2904
|
+
-- Context struct: struct base64_decode_ctx
|
2905
|
+
|
2906
|
+
-- Function: void base64_decode_init (struct base64_decode_ctx *CTX)
|
2907
|
+
Initializes a base64 decoding context. This is necessary before
|
2908
|
+
starting a decoding session.
|
2909
|
+
|
2910
|
+
-- Function: int base64_decode_single (struct base64_decode_ctx *CTX,
|
2911
|
+
uint8_t *DST, uint8_t SRC)
|
2912
|
+
Decodes a single byte (SRC) and stores the result in DST. Returns
|
2913
|
+
amount of output (0 or 1), or -1 on errors.
|
2914
|
+
|
2915
|
+
-- Macro: BASE64_DECODE_LENGTH (LENGTH)
|
2916
|
+
The maximum number of output bytes when passing LENGTH input bytes
|
2917
|
+
to `base64_decode_update'.
|
2918
|
+
|
2919
|
+
-- Function: void base64_decode_update (struct base64_decode_ctx *CTX,
|
2920
|
+
unsigned *DST_LENGTH, uint8_t *DST, unsigned SRC_LENGTH,
|
2921
|
+
const uint8_t *SRC)
|
2922
|
+
After CTX is initialized, this function may be called to decode
|
2923
|
+
SRC_LENGTH bytes from SRC. DST should point to an area of size at
|
2924
|
+
least BASE64_DECODE_LENGTH(LENGTH), and for sanity checking,
|
2925
|
+
DST_LENGTH should be initialized to the size of that area before
|
2926
|
+
the call. DST_LENGTH is updated to the amount of decoded output.
|
2927
|
+
The function will return 1 on success and 0 on error.
|
2928
|
+
|
2929
|
+
-- Function: int base64_decode_final (struct base64_decode_ctx *CTX)
|
2930
|
+
Check that final padding is correct. Returns 1 on success, and 0 on
|
2931
|
+
error.
|
2932
|
+
|
2933
|
+
Similarly to the base64 functions, the following functions perform
|
2934
|
+
base16 encoding, and are defined in `<nettle/base16.h>'. Note that
|
2935
|
+
there is no encoding context necessary for doing base16 encoding.
|
2936
|
+
|
2937
|
+
-- Function: void base16_encode_single (uint8_t *DST, uint8_t SRC)
|
2938
|
+
Encodes a single byte. Always stores two digits in DST[0] and
|
2939
|
+
DST[1].
|
2940
|
+
|
2941
|
+
-- Macro: BASE16_ENCODE_LENGTH (LENGTH)
|
2942
|
+
The number of output bytes when passing LENGTH input bytes to
|
2943
|
+
`base16_encode_update'.
|
2944
|
+
|
2945
|
+
-- Function: void base16_encode_update (uint8_t *DST, unsigned LENGTH,
|
2946
|
+
const uint8_t *SRC)
|
2947
|
+
Always stores BASE16_ENCODE_LENGTH(LENGTH) digits in DST.
|
2948
|
+
|
2949
|
+
-- Context struct: struct base16_decode_ctx
|
2950
|
+
|
2951
|
+
-- Function: void base16_decode_init (struct base16_decode_ctx *CTX)
|
2952
|
+
Initializes a base16 decoding context. This is necessary before
|
2953
|
+
starting a decoding session.
|
2954
|
+
|
2955
|
+
-- Function: int base16_decode_single (struct base16_decode_ctx *CTX,
|
2956
|
+
uint8_t *DST, uint8_t SRC)
|
2957
|
+
Decodes a single byte from SRC into DST. Returns amount of output
|
2958
|
+
(0 or 1), or -1 on errors.
|
2959
|
+
|
2960
|
+
-- Macro: BASE16_DECODE_LENGTH (LENGTH)
|
2961
|
+
The maximum number of output bytes when passing LENGTH input bytes
|
2962
|
+
to `base16_decode_update'.
|
2963
|
+
|
2964
|
+
-- Function: int base16_decode_update (struct base16_decode_ctx *CTX,
|
2965
|
+
unsigned *DST_LENGTH, uint8_t *DST, unsigned SRC_LENGTH,
|
2966
|
+
const uint8_t *SRC)
|
2967
|
+
After CTX is initialized, this function may be called to decode
|
2968
|
+
SRC_LENGTH bytes from SRC. DST should point to an area of size at
|
2969
|
+
least BASE16_DECODE_LENGTH(LENGTH), and for sanity checking,
|
2970
|
+
DST_LENGTH should be initialized to the size of that area before
|
2971
|
+
the call. DST_LENGTH is updated to the amount of decoded output.
|
2972
|
+
The function will return 1 on success and 0 on error.
|
2973
|
+
|
2974
|
+
-- Function: int base16_decode_final (struct base16_decode_ctx *CTX)
|
2975
|
+
Checks that the end of data is correct (i.e., an even number of
|
2976
|
+
hexadecimal digits have been seen). Returns 1 on success, and 0 on
|
2977
|
+
error.
|
2978
|
+
|
2979
|
+
|
2980
|
+
File: nettle.info, Node: Miscellaneous functions, Next: Compatibility functions, Prev: Ascii encoding, Up: Reference
|
2981
|
+
|
2982
|
+
6.8 Miscellaneous functions
|
2983
|
+
===========================
|
2984
|
+
|
2985
|
+
-- Function: uint8_t * memxor (uint8_t *DST, const uint8_t *SRC,
|
2986
|
+
size_t N)
|
2987
|
+
XORs the source area on top of the destination area. The interface
|
2988
|
+
doesn't follow the Nettle conventions, because it is intended to be
|
2989
|
+
similar to the ANSI-C `memcpy' function.
|
2990
|
+
|
2991
|
+
`memxor' is declared in `<nettle/memxor.h>'.
|
2992
|
+
|
2993
|
+
|
2994
|
+
File: nettle.info, Node: Compatibility functions, Prev: Miscellaneous functions, Up: Reference
|
2995
|
+
|
2996
|
+
6.9 Compatibility functions
|
2997
|
+
===========================
|
2998
|
+
|
2999
|
+
For convenience, Nettle includes alternative interfaces to some
|
3000
|
+
algorithms, for compatibility with some other popular crypto toolkits.
|
3001
|
+
These are not fully documented here; refer to the source or to the
|
3002
|
+
documentation for the original implementation.
|
3003
|
+
|
3004
|
+
MD5 is defined in [RFC 1321], which includes a reference
|
3005
|
+
implementation. Nettle defines a compatible interface to MD5 in
|
3006
|
+
`<nettle/md5-compat.h>'. This file defines the typedef `MD5_CTX', and
|
3007
|
+
declares the functions `MD5Init', `MD5Update' and `MD5Final'.
|
3008
|
+
|
3009
|
+
Eric Young's "libdes" (also part of OpenSSL) is a quite popular DES
|
3010
|
+
implementation. Nettle includes a subset if its interface in
|
3011
|
+
`<nettle/des-compat.h>'. This file defines the typedefs
|
3012
|
+
`des_key_schedule' and `des_cblock', two constants `DES_ENCRYPT' and
|
3013
|
+
`DES_DECRYPT', and declares one global variable `des_check_key', and
|
3014
|
+
the functions `des_cbc_cksum' `des_cbc_encrypt', `des_ecb2_encrypt',
|
3015
|
+
`des_ecb3_encrypt', `des_ecb_encrypt', `des_ede2_cbc_encrypt',
|
3016
|
+
`des_ede3_cbc_encrypt', `des_is_weak_key', `des_key_sched',
|
3017
|
+
`des_ncbc_encrypt' `des_set_key', and `des_set_odd_parity'.
|
3018
|
+
|
3019
|
+
|
3020
|
+
File: nettle.info, Node: Nettle soup, Next: Installation, Prev: Reference, Up: Top
|
3021
|
+
|
3022
|
+
7 Traditional Nettle Soup
|
3023
|
+
*************************
|
3024
|
+
|
3025
|
+
For the serious nettle hacker, here is a recipe for nettle soup. 4
|
3026
|
+
servings.
|
3027
|
+
|
3028
|
+
1 liter fresh nettles (urtica dioica)
|
3029
|
+
|
3030
|
+
2 tablespoons butter
|
3031
|
+
|
3032
|
+
3 tablespoons flour
|
3033
|
+
|
3034
|
+
1 liter stock (meat or vegetable)
|
3035
|
+
|
3036
|
+
1/2 teaspoon salt
|
3037
|
+
|
3038
|
+
a tad white pepper
|
3039
|
+
|
3040
|
+
some cream or milk
|
3041
|
+
|
3042
|
+
Gather 1 liter fresh nettles. Use gloves! Small, tender shoots are
|
3043
|
+
preferable but the tops of larger nettles can also be used.
|
3044
|
+
|
3045
|
+
Rinse the nettles very well. Boil them for 10 minutes in lightly
|
3046
|
+
salted water. Strain the nettles and save the water. Hack the nettles.
|
3047
|
+
Melt the butter and mix in the flour. Dilute with stock and the
|
3048
|
+
nettle-water you saved earlier. Add the hacked nettles. If you wish you
|
3049
|
+
can add some milk or cream at this stage. Bring to a boil and let boil
|
3050
|
+
for a few minutes. Season with salt and pepper.
|
3051
|
+
|
3052
|
+
Serve with boiled egg-halves.
|
3053
|
+
|
3054
|
+
|
3055
|
+
File: nettle.info, Node: Installation, Next: Index, Prev: Nettle soup, Up: Top
|
3056
|
+
|
3057
|
+
8 Installation
|
3058
|
+
**************
|
3059
|
+
|
3060
|
+
Nettle uses `autoconf'. To build it, unpack the source and run
|
3061
|
+
|
3062
|
+
./configure
|
3063
|
+
make
|
3064
|
+
make check
|
3065
|
+
make install
|
3066
|
+
|
3067
|
+
to install in under the default prefix, `/usr/local'.
|
3068
|
+
|
3069
|
+
To get a list of configure options, use `./configure --help'.
|
3070
|
+
|
3071
|
+
By default, both static and shared libraries are built and
|
3072
|
+
installed. To omit building the shared libraries, use the `
|
3073
|
+
--disable-shared' option to `./configure'.
|
3074
|
+
|
3075
|
+
Using GNU make is recommended. For other make programs, in particular
|
3076
|
+
BSD make, you may have to use the `--disable-dependency-tracking'
|
3077
|
+
option to `./configure'.
|
3078
|
+
|
3079
|
+
|
3080
|
+
File: nettle.info, Node: Index, Prev: Installation, Up: Top
|
3081
|
+
|
3082
|
+
Function and Concept Index
|
3083
|
+
**************************
|
3084
|
+
|
3085
|
+
[index]
|
3086
|
+
* Menu:
|
3087
|
+
|
3088
|
+
* aes_decrypt: Cipher functions. (line 123)
|
3089
|
+
* aes_encrypt: Cipher functions. (line 116)
|
3090
|
+
* aes_invert_key: Cipher functions. (line 105)
|
3091
|
+
* aes_set_decrypt_key: Cipher functions. (line 101)
|
3092
|
+
* aes_set_encrypt_key: Cipher functions. (line 99)
|
3093
|
+
* arcfour_crypt: Cipher functions. (line 175)
|
3094
|
+
* arcfour_set_key: Cipher functions. (line 170)
|
3095
|
+
* arctwo_decrypt: Cipher functions. (line 240)
|
3096
|
+
* arctwo_encrypt: Cipher functions. (line 233)
|
3097
|
+
* arctwo_set_key: Cipher functions. (line 217)
|
3098
|
+
* arctwo_set_key_ekb: Cipher functions. (line 215)
|
3099
|
+
* arctwo_set_key_gutmann: Cipher functions. (line 219)
|
3100
|
+
* base16_decode_final: Ascii encoding. (line 139)
|
3101
|
+
* base16_decode_init: Ascii encoding. (line 116)
|
3102
|
+
* BASE16_DECODE_LENGTH: Ascii encoding. (line 125)
|
3103
|
+
* base16_decode_single: Ascii encoding. (line 121)
|
3104
|
+
* base16_decode_update: Ascii encoding. (line 131)
|
3105
|
+
* BASE16_ENCODE_LENGTH: Ascii encoding. (line 106)
|
3106
|
+
* base16_encode_single: Ascii encoding. (line 102)
|
3107
|
+
* base16_encode_update: Ascii encoding. (line 111)
|
3108
|
+
* base64_decode_final: Ascii encoding. (line 94)
|
3109
|
+
* base64_decode_init: Ascii encoding. (line 71)
|
3110
|
+
* BASE64_DECODE_LENGTH: Ascii encoding. (line 80)
|
3111
|
+
* base64_decode_single: Ascii encoding. (line 76)
|
3112
|
+
* base64_decode_update: Ascii encoding. (line 86)
|
3113
|
+
* base64_encode_final: Ascii encoding. (line 63)
|
3114
|
+
* base64_encode_init: Ascii encoding. (line 40)
|
3115
|
+
* BASE64_ENCODE_LENGTH: Ascii encoding. (line 48)
|
3116
|
+
* base64_encode_single: Ascii encoding. (line 45)
|
3117
|
+
* base64_encode_update: Ascii encoding. (line 53)
|
3118
|
+
* Block Cipher: Cipher functions. (line 12)
|
3119
|
+
* blowfish_decrypt: Cipher functions. (line 282)
|
3120
|
+
* blowfish_encrypt: Cipher functions. (line 275)
|
3121
|
+
* blowfish_set_key: Cipher functions. (line 265)
|
3122
|
+
* camellia_crypt: Cipher functions. (line 332)
|
3123
|
+
* camellia_invert_key: Cipher functions. (line 321)
|
3124
|
+
* camellia_set_decrypt_key: Cipher functions. (line 317)
|
3125
|
+
* camellia_set_encrypt_key: Cipher functions. (line 315)
|
3126
|
+
* cast128_decrypt: Cipher functions. (line 372)
|
3127
|
+
* cast128_encrypt: Cipher functions. (line 365)
|
3128
|
+
* cast128_set_key: Cipher functions. (line 360)
|
3129
|
+
* CBC Mode: CBC. (line 6)
|
3130
|
+
* CBC_CTX: CBC. (line 51)
|
3131
|
+
* CBC_DECRYPT: CBC. (line 72)
|
3132
|
+
* cbc_decrypt: CBC. (line 37)
|
3133
|
+
* CBC_ENCRYPT: CBC. (line 71)
|
3134
|
+
* cbc_encrypt: CBC. (line 34)
|
3135
|
+
* CBC_SET_IV: CBC. (line 66)
|
3136
|
+
* Cipher: Cipher functions. (line 6)
|
3137
|
+
* Cipher Block Chaining: CBC. (line 6)
|
3138
|
+
* Collision-resistant: Hash functions. (line 18)
|
3139
|
+
* Conditional entropy: Randomness. (line 51)
|
3140
|
+
* Counter Mode: CTR. (line 6)
|
3141
|
+
* CTR Mode: CTR. (line 6)
|
3142
|
+
* CTR_CRYPT: CTR. (line 60)
|
3143
|
+
* ctr_crypt: CTR. (line 36)
|
3144
|
+
* CTR_CTX: CTR. (line 48)
|
3145
|
+
* CTR_SET_COUNTER: CTR. (line 55)
|
3146
|
+
* des3_decrypt: Cipher functions. (line 494)
|
3147
|
+
* des3_encrypt: Cipher functions. (line 487)
|
3148
|
+
* des3_set_key: Cipher functions. (line 476)
|
3149
|
+
* des_check_parity: Cipher functions. (line 420)
|
3150
|
+
* des_decrypt: Cipher functions. (line 416)
|
3151
|
+
* des_encrypt: Cipher functions. (line 409)
|
3152
|
+
* des_fix_parity: Cipher functions. (line 425)
|
3153
|
+
* des_set_key: Cipher functions. (line 401)
|
3154
|
+
* dsa_generate_keypair: DSA. (line 210)
|
3155
|
+
* dsa_private_key_clear: DSA. (line 142)
|
3156
|
+
* dsa_private_key_init: DSA. (line 135)
|
3157
|
+
* dsa_public_key_clear: DSA. (line 141)
|
3158
|
+
* dsa_public_key_init: DSA. (line 134)
|
3159
|
+
* dsa_sha1_sign: DSA. (line 166)
|
3160
|
+
* dsa_sha1_sign_digest: DSA. (line 170)
|
3161
|
+
* dsa_sha1_verify: DSA. (line 190)
|
3162
|
+
* dsa_sha1_verify_digest: DSA. (line 193)
|
3163
|
+
* dsa_sha256_sign: DSA. (line 174)
|
3164
|
+
* dsa_sha256_sign_digest: DSA. (line 178)
|
3165
|
+
* dsa_sha256_verify: DSA. (line 196)
|
3166
|
+
* dsa_sha256_verify_digest: DSA. (line 199)
|
3167
|
+
* dsa_signature_clear: DSA. (line 151)
|
3168
|
+
* dsa_signature_init: DSA. (line 150)
|
3169
|
+
* Entropy: Randomness. (line 51)
|
3170
|
+
* Galois Counter Mode: GCM. (line 6)
|
3171
|
+
* GCM: GCM. (line 6)
|
3172
|
+
* gcm_aes_decrypt: GCM. (line 167)
|
3173
|
+
* gcm_aes_digest: GCM. (line 174)
|
3174
|
+
* gcm_aes_encrypt: GCM. (line 165)
|
3175
|
+
* gcm_aes_set_iv: GCM. (line 154)
|
3176
|
+
* gcm_aes_set_key: GCM. (line 149)
|
3177
|
+
* gcm_aes_update: GCM. (line 158)
|
3178
|
+
* GCM_CTX: GCM. (line 102)
|
3179
|
+
* GCM_DECRYPT: GCM. (line 132)
|
3180
|
+
* gcm_decrypt: GCM. (line 74)
|
3181
|
+
* GCM_DIGEST: GCM. (line 133)
|
3182
|
+
* gcm_digest: GCM. (line 82)
|
3183
|
+
* GCM_ENCRYPT: GCM. (line 131)
|
3184
|
+
* gcm_encrypt: GCM. (line 71)
|
3185
|
+
* GCM_SET_IV: GCM. (line 123)
|
3186
|
+
* gcm_set_iv: GCM. (line 58)
|
3187
|
+
* GCM_SET_KEY: GCM. (line 117)
|
3188
|
+
* gcm_set_key: GCM. (line 52)
|
3189
|
+
* GCM_UPDATE: GCM. (line 127)
|
3190
|
+
* gcm_update: GCM. (line 63)
|
3191
|
+
* Hash function: Hash functions. (line 6)
|
3192
|
+
* HMAC_CTX: Keyed hash functions.
|
3193
|
+
(line 88)
|
3194
|
+
* HMAC_DIGEST: Keyed hash functions.
|
3195
|
+
(line 110)
|
3196
|
+
* hmac_digest: Keyed hash functions.
|
3197
|
+
(line 76)
|
3198
|
+
* hmac_md5_digest: Keyed hash functions.
|
3199
|
+
(line 140)
|
3200
|
+
* hmac_md5_set_key: Keyed hash functions.
|
3201
|
+
(line 132)
|
3202
|
+
* hmac_md5_update: Keyed hash functions.
|
3203
|
+
(line 136)
|
3204
|
+
* hmac_ripemd160_digest: Keyed hash functions.
|
3205
|
+
(line 162)
|
3206
|
+
* hmac_ripemd160_set_key: Keyed hash functions.
|
3207
|
+
(line 154)
|
3208
|
+
* hmac_ripemd160_update: Keyed hash functions.
|
3209
|
+
(line 158)
|
3210
|
+
* HMAC_SET_KEY: Keyed hash functions.
|
3211
|
+
(line 104)
|
3212
|
+
* hmac_set_key: Keyed hash functions.
|
3213
|
+
(line 61)
|
3214
|
+
* hmac_sha1_digest: Keyed hash functions.
|
3215
|
+
(line 184)
|
3216
|
+
* hmac_sha1_set_key: Keyed hash functions.
|
3217
|
+
(line 176)
|
3218
|
+
* hmac_sha1_update: Keyed hash functions.
|
3219
|
+
(line 180)
|
3220
|
+
* hmac_sha256_digest: Keyed hash functions.
|
3221
|
+
(line 206)
|
3222
|
+
* hmac_sha256_set_key: Keyed hash functions.
|
3223
|
+
(line 198)
|
3224
|
+
* hmac_sha256_update: Keyed hash functions.
|
3225
|
+
(line 202)
|
3226
|
+
* hmac_sha512_digest: Keyed hash functions.
|
3227
|
+
(line 228)
|
3228
|
+
* hmac_sha512_set_key: Keyed hash functions.
|
3229
|
+
(line 220)
|
3230
|
+
* hmac_sha512_update: Keyed hash functions.
|
3231
|
+
(line 224)
|
3232
|
+
* hmac_update: Keyed hash functions.
|
3233
|
+
(line 68)
|
3234
|
+
* Keyed Hash Function: Keyed hash functions.
|
3235
|
+
(line 6)
|
3236
|
+
* MAC: Keyed hash functions.
|
3237
|
+
(line 6)
|
3238
|
+
* md2_digest: Hash functions. (line 96)
|
3239
|
+
* md2_init: Hash functions. (line 88)
|
3240
|
+
* md2_update: Hash functions. (line 92)
|
3241
|
+
* md4_digest: Hash functions. (line 129)
|
3242
|
+
* md4_init: Hash functions. (line 121)
|
3243
|
+
* md4_update: Hash functions. (line 125)
|
3244
|
+
* md5_digest: Hash functions. (line 58)
|
3245
|
+
* md5_init: Hash functions. (line 50)
|
3246
|
+
* md5_update: Hash functions. (line 54)
|
3247
|
+
* memxor: Miscellaneous functions.
|
3248
|
+
(line 8)
|
3249
|
+
* Message Authentication Code: Keyed hash functions.
|
3250
|
+
(line 6)
|
3251
|
+
* One-way: Hash functions. (line 14)
|
3252
|
+
* One-way function: Public-key algorithms.
|
3253
|
+
(line 18)
|
3254
|
+
* Public Key Cryptography: Public-key algorithms.
|
3255
|
+
(line 18)
|
3256
|
+
* Randomness: Randomness. (line 6)
|
3257
|
+
* ripemd160_digest: Hash functions. (line 162)
|
3258
|
+
* ripemd160_init: Hash functions. (line 154)
|
3259
|
+
* ripemd160_update: Hash functions. (line 158)
|
3260
|
+
* rsa_compute_root: RSA. (line 187)
|
3261
|
+
* rsa_generate_keypair: RSA. (line 196)
|
3262
|
+
* rsa_md5_sign: RSA. (line 130)
|
3263
|
+
* rsa_md5_sign_digest: RSA. (line 145)
|
3264
|
+
* rsa_md5_verify: RSA. (line 159)
|
3265
|
+
* rsa_md5_verify_digest: RSA. (line 171)
|
3266
|
+
* rsa_private_key_clear: RSA. (line 96)
|
3267
|
+
* rsa_private_key_init: RSA. (line 89)
|
3268
|
+
* rsa_private_key_prepare: RSA. (line 109)
|
3269
|
+
* rsa_public_key_clear: RSA. (line 95)
|
3270
|
+
* rsa_public_key_init: RSA. (line 88)
|
3271
|
+
* rsa_public_key_prepare: RSA. (line 108)
|
3272
|
+
* rsa_sha1_sign: RSA. (line 132)
|
3273
|
+
* rsa_sha1_sign_digest: RSA. (line 147)
|
3274
|
+
* rsa_sha1_verify: RSA. (line 161)
|
3275
|
+
* rsa_sha1_verify_digest: RSA. (line 173)
|
3276
|
+
* rsa_sha256_sign: RSA. (line 134)
|
3277
|
+
* rsa_sha256_sign_digest: RSA. (line 149)
|
3278
|
+
* rsa_sha256_verify: RSA. (line 163)
|
3279
|
+
* rsa_sha256_verify_digest: RSA. (line 175)
|
3280
|
+
* rsa_sha512_sign: RSA. (line 136)
|
3281
|
+
* rsa_sha512_sign_digest: RSA. (line 151)
|
3282
|
+
* rsa_sha512_verify: RSA. (line 165)
|
3283
|
+
* rsa_sha512_verify_digest: RSA. (line 177)
|
3284
|
+
* salsa20_crypt: Cipher functions. (line 554)
|
3285
|
+
* salsa20_set_iv: Cipher functions. (line 548)
|
3286
|
+
* salsa20_set_key: Cipher functions. (line 542)
|
3287
|
+
* serpent_decrypt: Cipher functions. (line 597)
|
3288
|
+
* serpent_encrypt: Cipher functions. (line 590)
|
3289
|
+
* serpent_set_key: Cipher functions. (line 585)
|
3290
|
+
* sha1_digest: Hash functions. (line 197)
|
3291
|
+
* sha1_init: Hash functions. (line 189)
|
3292
|
+
* sha1_update: Hash functions. (line 193)
|
3293
|
+
* sha224_digest: Hash functions. (line 265)
|
3294
|
+
* sha224_init: Hash functions. (line 257)
|
3295
|
+
* sha224_update: Hash functions. (line 261)
|
3296
|
+
* sha256_digest: Hash functions. (line 231)
|
3297
|
+
* sha256_init: Hash functions. (line 223)
|
3298
|
+
* sha256_update: Hash functions. (line 227)
|
3299
|
+
* sha384_digest: Hash functions. (line 335)
|
3300
|
+
* sha384_init: Hash functions. (line 327)
|
3301
|
+
* sha384_update: Hash functions. (line 331)
|
3302
|
+
* sha512_digest: Hash functions. (line 301)
|
3303
|
+
* sha512_init: Hash functions. (line 293)
|
3304
|
+
* sha512_update: Hash functions. (line 297)
|
3305
|
+
* Stream Cipher: Cipher functions. (line 12)
|
3306
|
+
* twofish_decrypt: Cipher functions. (line 633)
|
3307
|
+
* twofish_encrypt: Cipher functions. (line 626)
|
3308
|
+
* twofish_set_key: Cipher functions. (line 621)
|
3309
|
+
* yarrow256_fast_reseed: Randomness. (line 277)
|
3310
|
+
* yarrow256_init: Randomness. (line 226)
|
3311
|
+
* yarrow256_is_seeded: Randomness. (line 267)
|
3312
|
+
* yarrow256_needed_sources: Randomness. (line 272)
|
3313
|
+
* yarrow256_random: Randomness. (line 258)
|
3314
|
+
* yarrow256_seed: Randomness. (line 232)
|
3315
|
+
* yarrow256_slow_reseed: Randomness. (line 278)
|
3316
|
+
* yarrow256_update: Randomness. (line 245)
|
3317
|
+
* yarrow_key_event_estimate: Randomness. (line 293)
|
3318
|
+
* yarrow_key_event_init: Randomness. (line 289)
|
3319
|
+
|
3320
|
+
|
3321
|
+
|
3322
|
+
Tag Table:
|
3323
|
+
Node: Top543
|
3324
|
+
Node: Introduction2159
|
3325
|
+
Node: Copyright3725
|
3326
|
+
Node: Conventions7757
|
3327
|
+
Node: Example9719
|
3328
|
+
Node: Linking10966
|
3329
|
+
Node: Reference11799
|
3330
|
+
Node: Hash functions12186
|
3331
|
+
Node: Cipher functions25387
|
3332
|
+
Node: Cipher modes54077
|
3333
|
+
Node: CBC55105
|
3334
|
+
Node: CTR58379
|
3335
|
+
Node: GCM60906
|
3336
|
+
Node: Keyed hash functions68467
|
3337
|
+
Node: Public-key algorithms77824
|
3338
|
+
Node: RSA81744
|
3339
|
+
Node: RSA-Footnotes92358
|
3340
|
+
Ref: RSA-Footnote-192411
|
3341
|
+
Node: DSA92580
|
3342
|
+
Node: Randomness103923
|
3343
|
+
Node: Ascii encoding119027
|
3344
|
+
Node: Miscellaneous functions125477
|
3345
|
+
Node: Compatibility functions125985
|
3346
|
+
Node: Nettle soup127230
|
3347
|
+
Node: Installation128223
|
3348
|
+
Node: Index128918
|
3349
|
+
|
3350
|
+
End Tag Table
|
3351
|
+
|
3352
|
+
|
3353
|
+
Local Variables:
|
3354
|
+
coding: utf-8
|
3355
|
+
End:
|