diff for duplicates of <25271998.F6jFv7Sebt@positron.chronox.de> diff --git a/a/1.txt b/N1/1.txt index 71a9e60..47b2698 100644 --- a/a/1.txt +++ b/N1/1.txt @@ -1,4 +1,4 @@ -Am Donnerstag, 23. März 2017, 10:44:06 CET schrieb Herbert Xu: +Am Donnerstag, 23. M?rz 2017, 10:44:06 CET schrieb Herbert Xu: Hi Herbert, @@ -15,3 +15,10 @@ this code is only a demonstrator which lacks some features. Ciao Stephan +-------------- next part -------------- +A non-text attachment was scrubbed... +Name: kcapi-rng.c +Type: text/x-csrc +Size: 3542 bytes +Desc: not available +URL: <http://lists.infradead.org/pipermail/linux-arm-kernel/attachments/20170323/c0d8f632/attachment.bin> diff --git a/a/2.hdr b/a/2.hdr deleted file mode 100644 index 2cb802f..0000000 --- a/a/2.hdr +++ /dev/null @@ -1,3 +0,0 @@ -Content-Disposition: attachment; filename="kcapi-rng.c" -Content-Transfer-Encoding: 7Bit -Content-Type: text/x-csrc; charset="UTF-8"; name="kcapi-rng.c" diff --git a/a/2.txt b/a/2.txt deleted file mode 100644 index 1404831..0000000 --- a/a/2.txt +++ /dev/null @@ -1,169 +0,0 @@ -/* - * Copyright (C) 2017, Stephan Mueller <smueller@chronox.de> - * - * License: see COPYING file in root directory - * - * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESS OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES - * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, ALL OF - * WHICH ARE HEREBY DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE - * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR - * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT - * OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR - * BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE - * USE OF THIS SOFTWARE, EVEN IF NOT ADVISED OF THE POSSIBILITY OF SUCH - * DAMAGE. - */ - -#include <unistd.h> -#include <errno.h> -#include <limits.h> -#include <stdint.h> -#include <sys/types.h> -#include <sys/stat.h> -#include <fcntl.h> -#include <stdio.h> -#include <stdlib.h> -#include <string.h> - -#include <linux/random.h> -#ifdef HAVE_GETRANDOM -#include <sys/random.h> -#endif - -#include <kcapi.h> - -struct kcapi_handle *rng = NULL; - -static int read_complete(int fd, uint8_t *buf, uint32_t buflen) -{ - ssize_t ret; - - do { - ret = read(fd, buf, buflen); - if (0 < ret) { - buflen -= ret; - buf += ret; - } - } while ((0 < ret || EINTR == errno || ERESTART == errno) - && buflen > 0); - - if (buflen == 0) - return 0; - return 1; -} - -static int read_random(uint8_t *buf, uint32_t buflen) -{ - int fd; - int ret = 0; - - fd = open("/dev/urandom", O_RDONLY|O_CLOEXEC); - if (0 > fd) - return fd; - - ret = read_complete(fd, buf, buflen); - close(fd); - return ret; -} - -static int get_random(uint8_t *buf, uint32_t buflen) -{ - if (buflen > INT_MAX) - return 1; - -#ifdef HAVE_GETRANDOM - return getrandom(buf, buflen, 0); -#else -# ifdef __NR_getrandom - do { - int ret = syscall(__NR_getrandom, buf, buflen, 0); - - if (0 < ret) { - buflen -= ret; - buf += ret; - } - } while ((0 < ret || EINTR == errno || ERESTART == errno) - && buflen > 0); - - if (buflen == 0) - return 0; - - return 1; -# else - return read_random(buf, buflen); -# endif -#endif -} - -static void usage(void) -{ - char version[30]; - uint32_t ver = kcapi_version(); - - memset(version, 0, sizeof(version)); - kcapi_versionstring(version, sizeof(version)); - - fprintf(stderr, "\nKernel Crypto API Random Number Gatherer\n"); - fprintf(stderr, "\nKernel Crypto API interface library version: %s\n", version); - fprintf(stderr, "Reported numeric version number %u\n\n", ver); - fprintf(stderr, "Usage:\n"); - fprintf(stderr, "\t<NUM>\tNumber of bytes to generate\n"); -} - -int main(int argc, char *argv[]) -{ - int ret; - uint8_t buf[64]; - unsigned long outlen; - - if (argc != 2) { - usage(); - return -EINVAL; - } - - outlen = strtoul(argv[1], NULL, 10); - if (outlen == ULONG_MAX) { - usage(); - return -EINVAL; - } - - ret = kcapi_rng_init(&rng, "drbg_nopr_hmac_sha256", 0); - if (ret) - return ret; - - ret = get_random(buf, sizeof(buf)); - if (ret) - goto out; - - ret = kcapi_rng_seed(rng, buf, sizeof(buf)); - kcapi_memset_secure(buf, 0, sizeof(buf)); - if (ret) - goto out; - - while (outlen) { - uint32_t todo = (outlen < sizeof(buf)) ? outlen : sizeof(buf); - - ret = kcapi_rng_generate(rng, buf, todo); - if (ret < 0) - goto out; - - if ((uint32_t)ret != todo) { - ret = -EFAULT; - goto out; - } - - fwrite(&buf, todo, 1, stdout); - - outlen -= todo; - } - -out: - if (rng) - kcapi_rng_destroy(rng); - kcapi_memset_secure(buf, 0, sizeof(buf)); - - return ret; -} diff --git a/a/content_digest b/N1/content_digest index 9517daf..61c6f54 100644 --- a/a/content_digest +++ b/N1/content_digest @@ -1,19 +1,13 @@ "ref\020170318092554.lggkhfg5eko23o3k@kozik-lap\0" "ref\020170323082307.GB16625@Red\0" "ref\020170323094406.GA6848@gondor.apana.org.au\0" - "From\0Stephan M\303\274ller <smueller@chronox.de>\0" - "Subject\0Re: Question - seeding the hw pseudo random number generator\0" + "From\0smueller@chronox.de (Stephan M\303\274ller)\0" + "Subject\0Question - seeding the hw pseudo random number generator\0" "Date\0Thu, 23 Mar 2017 14:06:22 +0100\0" - "To\0Herbert Xu <herbert@gondor.apana.org.au>\0" - "Cc\0Corentin Labbe <clabbe.montjoie@gmail.com>" - PrasannaKumar Muralidharan <prasannatsmkumar@gmail.com> - linux-arm-kernel@lists.infradead.org - linux-crypto@vger.kernel.org - Krzysztof Kozlowski <krzk@kernel.org> - " Matt Mackall <mpm@selenic.com>\0" - "\01:1\0" + "To\0linux-arm-kernel@lists.infradead.org\0" + "\00:1\0" "b\0" - "Am Donnerstag, 23. M\303\244rz 2017, 10:44:06 CET schrieb Herbert Xu:\n" + "Am Donnerstag, 23. M?rz 2017, 10:44:06 CET schrieb Herbert Xu:\n" "\n" "Hi Herbert,\n" "\n" @@ -29,178 +23,13 @@ "this code is only a demonstrator which lacks some features.\n" "\n" "Ciao\n" - Stephan - "\01:2\0" - "fn\0kcapi-rng.c\0" - "b\0" - "/*\n" - " * Copyright (C) 2017, Stephan Mueller <smueller@chronox.de>\n" - " *\n" - " * License: see COPYING file in root directory\n" - " *\n" - " * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESS OR IMPLIED\n" - " * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES\n" - " * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, ALL OF\n" - " * WHICH ARE HEREBY DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE\n" - " * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR\n" - " * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT\n" - " * OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR\n" - " * BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF\n" - " * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n" - " * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE\n" - " * USE OF THIS SOFTWARE, EVEN IF NOT ADVISED OF THE POSSIBILITY OF SUCH\n" - " * DAMAGE.\n" - " */\n" - "\n" - "#include <unistd.h>\n" - "#include <errno.h>\n" - "#include <limits.h>\n" - "#include <stdint.h>\n" - "#include <sys/types.h>\n" - "#include <sys/stat.h>\n" - "#include <fcntl.h>\n" - "#include <stdio.h>\n" - "#include <stdlib.h>\n" - "#include <string.h>\n" - "\n" - "#include <linux/random.h>\n" - "#ifdef HAVE_GETRANDOM\n" - "#include <sys/random.h>\n" - "#endif\n" - "\n" - "#include <kcapi.h>\n" - "\n" - "struct kcapi_handle *rng = NULL;\n" - "\n" - "static int read_complete(int fd, uint8_t *buf, uint32_t buflen)\n" - "{\n" - "\tssize_t ret;\n" - "\n" - "\tdo {\n" - "\t\tret = read(fd, buf, buflen);\n" - "\t\tif (0 < ret) {\n" - "\t\t\tbuflen -= ret;\n" - "\t\t\tbuf += ret;\n" - "\t\t}\n" - "\t} while ((0 < ret || EINTR == errno || ERESTART == errno)\n" - "\t\t && buflen > 0);\n" - "\n" - "\tif (buflen == 0)\n" - "\t\treturn 0;\n" - "\treturn 1;\n" - "}\n" - "\n" - "static int read_random(uint8_t *buf, uint32_t buflen)\n" - "{\n" - "\tint fd;\n" - "\tint ret = 0;\n" - "\n" - "\tfd = open(\"/dev/urandom\", O_RDONLY|O_CLOEXEC);\n" - "\tif (0 > fd)\n" - "\t\treturn fd;\n" - "\n" - "\tret = read_complete(fd, buf, buflen);\n" - "\tclose(fd);\n" - "\treturn ret;\n" - "}\n" - "\n" - "static int get_random(uint8_t *buf, uint32_t buflen)\n" - "{\n" - "\tif (buflen > INT_MAX)\n" - "\t\treturn 1;\n" - "\n" - "#ifdef HAVE_GETRANDOM\n" - "\treturn getrandom(buf, buflen, 0);\n" - "#else\n" - "# ifdef __NR_getrandom\n" - "\tdo {\n" - "\t\tint ret = syscall(__NR_getrandom, buf, buflen, 0);\n" - "\n" - "\t\tif (0 < ret) {\n" - "\t\t\tbuflen -= ret;\n" - "\t\t\tbuf += ret;\n" - "\t\t}\n" - "\t} while ((0 < ret || EINTR == errno || ERESTART == errno)\n" - "\t\t && buflen > 0);\n" - "\n" - "\tif (buflen == 0)\n" - "\t\treturn 0;\n" - "\n" - "\treturn 1;\n" - "# else\n" - "\treturn read_random(buf, buflen);\n" - "# endif\n" - "#endif\n" - "}\n" - "\n" - "static void usage(void)\n" - "{\n" - "\tchar version[30];\n" - "\tuint32_t ver = kcapi_version();\n" - "\n" - "\tmemset(version, 0, sizeof(version));\n" - "\tkcapi_versionstring(version, sizeof(version));\n" - "\n" - "\tfprintf(stderr, \"\\nKernel Crypto API Random Number Gatherer\\n\");\n" - "\tfprintf(stderr, \"\\nKernel Crypto API interface library version: %s\\n\", version);\n" - "\tfprintf(stderr, \"Reported numeric version number %u\\n\\n\", ver);\n" - "\tfprintf(stderr, \"Usage:\\n\");\n" - "\tfprintf(stderr, \"\\t<NUM>\\tNumber of bytes to generate\\n\");\n" - "}\n" - "\n" - "int main(int argc, char *argv[])\n" - "{\n" - "\tint ret;\n" - "\tuint8_t buf[64];\n" - "\tunsigned long outlen;\n" - "\n" - "\tif (argc != 2) {\n" - "\t\tusage();\n" - "\t\treturn -EINVAL;\n" - "\t}\n" - "\n" - "\toutlen = strtoul(argv[1], NULL, 10);\n" - "\tif (outlen == ULONG_MAX) {\n" - "\t\tusage();\n" - "\t\treturn -EINVAL;\n" - "\t}\n" - "\n" - "\tret = kcapi_rng_init(&rng, \"drbg_nopr_hmac_sha256\", 0);\n" - "\tif (ret)\n" - "\t\treturn ret;\n" - "\n" - "\tret = get_random(buf, sizeof(buf));\n" - "\tif (ret)\n" - "\t\tgoto out;\n" - "\n" - "\tret = kcapi_rng_seed(rng, buf, sizeof(buf));\n" - "\tkcapi_memset_secure(buf, 0, sizeof(buf));\n" - "\tif (ret)\n" - "\t\tgoto out;\n" - "\n" - "\twhile (outlen) {\n" - "\t\tuint32_t todo = (outlen < sizeof(buf)) ? outlen : sizeof(buf);\n" - "\n" - "\t\tret = kcapi_rng_generate(rng, buf, todo);\n" - "\t\tif (ret < 0)\n" - "\t\t\tgoto out;\n" - "\n" - "\t\tif ((uint32_t)ret != todo) {\n" - "\t\t\tret = -EFAULT;\n" - "\t\t\tgoto out;\n" - "\t\t}\n" - "\n" - "\t\tfwrite(&buf, todo, 1, stdout);\n" - "\n" - "\t\toutlen -= todo;\n" - "\t}\n" - "\n" - "out:\n" - "\tif (rng)\n" - "\t\tkcapi_rng_destroy(rng);\n" - "\tkcapi_memset_secure(buf, 0, sizeof(buf));\n" - "\n" - "\treturn ret;\n" - } + "Stephan\n" + "-------------- next part --------------\n" + "A non-text attachment was scrubbed...\n" + "Name: kcapi-rng.c\n" + "Type: text/x-csrc\n" + "Size: 3542 bytes\n" + "Desc: not available\n" + URL: <http://lists.infradead.org/pipermail/linux-arm-kernel/attachments/20170323/c0d8f632/attachment.bin> -7babcf2afc0648e3a4da8a2d19e015a6207eb458490ae94cb8b8d8ec553814c0 +23d5d450077afe616da1461c789762260edf8bf7873cd206ff57883ce01ce4db
This is an external index of several public inboxes, see mirroring instructions on how to clone and mirror all data and code used by this external index.