aboutsummaryrefslogtreecommitdiffstats
path: root/contrib/libs/openssl/crypto/rand/rand_vms.c
diff options
context:
space:
mode:
authortpashkin <tpashkin@yandex-team.ru>2022-02-10 16:46:42 +0300
committerDaniil Cherednik <dcherednik@yandex-team.ru>2022-02-10 16:46:42 +0300
commit656921707c02b816d730f31c1fdc1d615adbfe00 (patch)
tree49e222ea1c5804306084bb3ae065bb702625360f /contrib/libs/openssl/crypto/rand/rand_vms.c
parent5475379a04e37df30085bd1724f1c57e3f40996f (diff)
downloadydb-656921707c02b816d730f31c1fdc1d615adbfe00.tar.gz
Restoring authorship annotation for <tpashkin@yandex-team.ru>. Commit 2 of 2.
Diffstat (limited to 'contrib/libs/openssl/crypto/rand/rand_vms.c')
-rw-r--r--contrib/libs/openssl/crypto/rand/rand_vms.c200
1 files changed, 100 insertions, 100 deletions
diff --git a/contrib/libs/openssl/crypto/rand/rand_vms.c b/contrib/libs/openssl/crypto/rand/rand_vms.c
index 349f5dd301..b1e9f7974e 100644
--- a/contrib/libs/openssl/crypto/rand/rand_vms.c
+++ b/contrib/libs/openssl/crypto/rand/rand_vms.c
@@ -1,5 +1,5 @@
/*
- * Copyright 2001-2020 The OpenSSL Project Authors. All Rights Reserved.
+ * Copyright 2001-2020 The OpenSSL Project Authors. All Rights Reserved.
*
* Licensed under the OpenSSL license (the "License"). You may not use
* this file except in compliance with the License. You can obtain a copy
@@ -13,42 +13,42 @@
# define __NEW_STARLET 1 /* New starlet definitions since VMS 7.0 */
# include <unistd.h>
# include "internal/cryptlib.h"
-# include <openssl/bio.h>
-# include <openssl/err.h>
+# include <openssl/bio.h>
+# include <openssl/err.h>
# include <openssl/rand.h>
-# include "crypto/rand.h"
-# include "rand_local.h"
+# include "crypto/rand.h"
+# include "rand_local.h"
# include <descrip.h>
# include <dvidef.h>
# include <jpidef.h>
-# error #include <rmidef.h>
+# error #include <rmidef.h>
# include <syidef.h>
# include <ssdef.h>
# include <starlet.h>
-# error #include <efndef.h>
+# error #include <efndef.h>
# include <gen64def.h>
-# error #include <iosbdef.h>
+# error #include <iosbdef.h>
# include <iledef.h>
# include <lib$routines.h>
# ifdef __DECC
# pragma message disable DOLLARID
# endif
-# include <dlfcn.h> /* SYS$GET_ENTROPY presence */
-
+# include <dlfcn.h> /* SYS$GET_ENTROPY presence */
+
# ifndef OPENSSL_RAND_SEED_OS
# error "Unsupported seeding method configured; must be os"
# endif
-/*
- * DATA COLLECTION METHOD
- * ======================
- *
- * This is a method to get low quality entropy.
- * It works by collecting all kinds of statistical data that
- * VMS offers and using them as random seed.
- */
-
+/*
+ * DATA COLLECTION METHOD
+ * ======================
+ *
+ * This is a method to get low quality entropy.
+ * It works by collecting all kinds of statistical data that
+ * VMS offers and using them as random seed.
+ */
+
/* We need to make sure we have the right size pointer in some cases */
# if __INITIAL_POINTER_SIZE == 64
# pragma pointer_size save
@@ -343,7 +343,7 @@ static void massage_JPI(ILE3 *items)
*/
#define ENTROPY_FACTOR 20
-size_t data_collect_method(RAND_POOL *pool)
+size_t data_collect_method(RAND_POOL *pool)
{
ILE3 JPI_items_64bit[OSSL_NELEM(JPI_item_data_64bit) + 1];
ILE3 RMI_items_64bit[OSSL_NELEM(RMI_item_data_64bit) + 1];
@@ -458,12 +458,12 @@ size_t data_collect_method(RAND_POOL *pool)
* If we can't feed the requirements from the caller, we're in deep trouble.
*/
if (!ossl_assert(total_length >= bytes_needed)) {
- char buf[100]; /* That should be enough */
+ char buf[100]; /* That should be enough */
- BIO_snprintf(buf, sizeof(buf), "Needed: %zu, Available: %zu",
- bytes_needed, total_length);
- RANDerr(RAND_F_DATA_COLLECT_METHOD, RAND_R_RANDOM_POOL_UNDERFLOW);
- ERR_add_error_data(1, buf);
+ BIO_snprintf(buf, sizeof(buf), "Needed: %zu, Available: %zu",
+ bytes_needed, total_length);
+ RANDerr(RAND_F_DATA_COLLECT_METHOD, RAND_R_RANDOM_POOL_UNDERFLOW);
+ ERR_add_error_data(1, buf);
return 0;
}
@@ -490,7 +490,7 @@ int rand_pool_add_nonce_data(RAND_POOL *pool)
/*
* Add process id, thread id, and a high resolution timestamp
* (where available, which is OpenVMS v8.4 and up) to ensure that
- * the nonce is unique with high probability for different process
+ * the nonce is unique with high probability for different process
* instances.
*/
data.pid = getpid();
@@ -504,80 +504,80 @@ int rand_pool_add_nonce_data(RAND_POOL *pool)
return rand_pool_add(pool, (unsigned char *)&data, sizeof(data), 0);
}
-/*
- * SYS$GET_ENTROPY METHOD
- * ======================
- *
- * This is a high entropy method based on a new system service that is
- * based on getentropy() from FreeBSD 12. It's only used if available,
- * and its availability is detected at run-time.
- *
- * We assume that this function provides full entropy random output.
- */
-#define PUBLIC_VECTORS "SYS$LIBRARY:SYS$PUBLIC_VECTORS.EXE"
-#define GET_ENTROPY "SYS$GET_ENTROPY"
-
-static int get_entropy_address_flag = 0;
-static int (*get_entropy_address)(void *buffer, size_t buffer_size) = NULL;
-static int init_get_entropy_address(void)
-{
- if (get_entropy_address_flag == 0)
- get_entropy_address = dlsym(dlopen(PUBLIC_VECTORS, 0), GET_ENTROPY);
- get_entropy_address_flag = 1;
- return get_entropy_address != NULL;
-}
-
-size_t get_entropy_method(RAND_POOL *pool)
-{
- /*
- * The documentation says that SYS$GET_ENTROPY will give a maximum of
- * 256 bytes of data.
- */
- unsigned char buffer[256];
- size_t bytes_needed;
- size_t bytes_to_get = 0;
- uint32_t status;
-
- for (bytes_needed = rand_pool_bytes_needed(pool, 1);
- bytes_needed > 0;
- bytes_needed -= bytes_to_get) {
- bytes_to_get =
- bytes_needed > sizeof(buffer) ? sizeof(buffer) : bytes_needed;
-
- status = get_entropy_address(buffer, bytes_to_get);
- if (status == SS$_RETRY) {
- /* Set to zero so the loop doesn't diminish |bytes_needed| */
- bytes_to_get = 0;
- /* Should sleep some amount of time */
- continue;
- }
-
- if (status != SS$_NORMAL) {
- lib$signal(status);
- return 0;
- }
-
- rand_pool_add(pool, buffer, bytes_to_get, 8 * bytes_to_get);
- }
-
- return rand_pool_entropy_available(pool);
-}
-
-/*
- * MAIN ENTROPY ACQUISITION FUNCTIONS
- * ==================================
- *
- * These functions are called by the RAND / DRBG functions
- */
-
-size_t rand_pool_acquire_entropy(RAND_POOL *pool)
-{
- if (init_get_entropy_address())
- return get_entropy_method(pool);
- return data_collect_method(pool);
-}
-
-
+/*
+ * SYS$GET_ENTROPY METHOD
+ * ======================
+ *
+ * This is a high entropy method based on a new system service that is
+ * based on getentropy() from FreeBSD 12. It's only used if available,
+ * and its availability is detected at run-time.
+ *
+ * We assume that this function provides full entropy random output.
+ */
+#define PUBLIC_VECTORS "SYS$LIBRARY:SYS$PUBLIC_VECTORS.EXE"
+#define GET_ENTROPY "SYS$GET_ENTROPY"
+
+static int get_entropy_address_flag = 0;
+static int (*get_entropy_address)(void *buffer, size_t buffer_size) = NULL;
+static int init_get_entropy_address(void)
+{
+ if (get_entropy_address_flag == 0)
+ get_entropy_address = dlsym(dlopen(PUBLIC_VECTORS, 0), GET_ENTROPY);
+ get_entropy_address_flag = 1;
+ return get_entropy_address != NULL;
+}
+
+size_t get_entropy_method(RAND_POOL *pool)
+{
+ /*
+ * The documentation says that SYS$GET_ENTROPY will give a maximum of
+ * 256 bytes of data.
+ */
+ unsigned char buffer[256];
+ size_t bytes_needed;
+ size_t bytes_to_get = 0;
+ uint32_t status;
+
+ for (bytes_needed = rand_pool_bytes_needed(pool, 1);
+ bytes_needed > 0;
+ bytes_needed -= bytes_to_get) {
+ bytes_to_get =
+ bytes_needed > sizeof(buffer) ? sizeof(buffer) : bytes_needed;
+
+ status = get_entropy_address(buffer, bytes_to_get);
+ if (status == SS$_RETRY) {
+ /* Set to zero so the loop doesn't diminish |bytes_needed| */
+ bytes_to_get = 0;
+ /* Should sleep some amount of time */
+ continue;
+ }
+
+ if (status != SS$_NORMAL) {
+ lib$signal(status);
+ return 0;
+ }
+
+ rand_pool_add(pool, buffer, bytes_to_get, 8 * bytes_to_get);
+ }
+
+ return rand_pool_entropy_available(pool);
+}
+
+/*
+ * MAIN ENTROPY ACQUISITION FUNCTIONS
+ * ==================================
+ *
+ * These functions are called by the RAND / DRBG functions
+ */
+
+size_t rand_pool_acquire_entropy(RAND_POOL *pool)
+{
+ if (init_get_entropy_address())
+ return get_entropy_method(pool);
+ return data_collect_method(pool);
+}
+
+
int rand_pool_add_additional_data(RAND_POOL *pool)
{
struct {