diff options
Diffstat (limited to 'openbsd-compat')
-rw-r--r-- | openbsd-compat/arc4random.h | 2 | ||||
-rw-r--r-- | openbsd-compat/openssl-compat.c | 26 | ||||
-rw-r--r-- | openbsd-compat/openssl-compat.h | 10 | ||||
-rw-r--r-- | openbsd-compat/port-linux.c | 2 |
4 files changed, 39 insertions, 1 deletions
diff --git a/openbsd-compat/arc4random.h b/openbsd-compat/arc4random.h index 5af3a44..af2d5c1 100644 --- a/openbsd-compat/arc4random.h +++ b/openbsd-compat/arc4random.h @@ -23,7 +23,9 @@ * Stub functions for portability. From LibreSSL with some adaptations. */ +#ifdef HAVE_SYS_MMAN_H #include <sys/mman.h> +#endif #include <signal.h> diff --git a/openbsd-compat/openssl-compat.c b/openbsd-compat/openssl-compat.c index 6c65003..1486507 100644 --- a/openbsd-compat/openssl-compat.c +++ b/openbsd-compat/openssl-compat.c @@ -95,4 +95,30 @@ ssh_libcrypto_init(void) #endif /* USE_OPENSSL_ENGINE */ } +#ifndef HAVE_EVP_DIGESTSIGN +int +EVP_DigestSign(EVP_MD_CTX *ctx, unsigned char *sigret, size_t *siglen, + const unsigned char *tbs, size_t tbslen) +{ + if (sigret != NULL) { + if (EVP_DigestSignUpdate(ctx, tbs, tbslen) <= 0) + return 0; + } + + return EVP_DigestSignFinal(ctx, sigret, siglen); +} +#endif + +#ifndef HAVE_EVP_DIGESTVERIFY +int +EVP_DigestVerify(EVP_MD_CTX *ctx, const unsigned char *sigret, size_t siglen, + const unsigned char *tbs, size_t tbslen) +{ + if (EVP_DigestVerifyUpdate(ctx, tbs, tbslen) <= 0) + return -1; + + return EVP_DigestVerifyFinal(ctx, sigret, siglen); +} +#endif + #endif /* WITH_OPENSSL */ diff --git a/openbsd-compat/openssl-compat.h b/openbsd-compat/openssl-compat.h index f6796b3..2b9780f 100644 --- a/openbsd-compat/openssl-compat.h +++ b/openbsd-compat/openssl-compat.h @@ -78,5 +78,15 @@ int EVP_CIPHER_CTX_set_iv(EVP_CIPHER_CTX *ctx, const unsigned char *iv, size_t len); #endif /* HAVE_EVP_CIPHER_CTX_SET_IV */ +#ifndef HAVE_EVP_DIGESTSIGN +int EVP_DigestSign(EVP_MD_CTX *, unsigned char *, size_t *, + const unsigned char *, size_t); +#endif + +#ifndef HAVE_EVP_DIGESTVERIFY +int EVP_DigestVerify(EVP_MD_CTX *, const unsigned char *, size_t, + const unsigned char *, size_t); +#endif + #endif /* WITH_OPENSSL */ #endif /* _OPENSSL_COMPAT_H */ diff --git a/openbsd-compat/port-linux.c b/openbsd-compat/port-linux.c index 4c024c6..8adfec5 100644 --- a/openbsd-compat/port-linux.c +++ b/openbsd-compat/port-linux.c @@ -366,7 +366,7 @@ ssh_systemd_notify(const char *fmt, ...) error_f("socket \"%s\": %s", path, strerror(errno)); goto out; } - if (connect(fd, &addr, sizeof(addr)) != 0) { + if (connect(fd, (struct sockaddr *)&addr, sizeof(addr)) != 0) { error_f("socket \"%s\" connect: %s", path, strerror(errno)); goto out; } |