mirror of
https://gitea.psi.ch/ELOG/elog.git
synced 2026-09-08 17:13:56 +00:00
Implemented rudimentary certificate check
This commit is contained in:
parent
de42cea37b
commit
3a48dcab7a
25
src/elog.c
25
src/elog.c
@ -299,18 +299,28 @@ int ssl_connect(int sock, SSL ** ssl_con)
|
|||||||
{
|
{
|
||||||
SSL_METHOD *meth;
|
SSL_METHOD *meth;
|
||||||
SSL_CTX *ctx;
|
SSL_CTX *ctx;
|
||||||
|
X509 *cert = NULL;
|
||||||
|
int i;
|
||||||
|
|
||||||
SSL_library_init();
|
SSL_library_init();
|
||||||
SSL_load_error_strings();
|
SSL_load_error_strings();
|
||||||
|
|
||||||
meth = (SSL_METHOD *) TLSv1_method();
|
meth = (SSL_METHOD *) TLSv1_method();
|
||||||
ctx = SSL_CTX_new(meth);
|
ctx = SSL_CTX_new(meth);
|
||||||
|
|
||||||
*ssl_con = SSL_new(ctx);
|
*ssl_con = SSL_new(ctx);
|
||||||
SSL_set_fd(*ssl_con, sock);
|
SSL_set_fd(*ssl_con, sock);
|
||||||
if (SSL_connect(*ssl_con) <= 0)
|
if (SSL_connect(*ssl_con) <= 0)
|
||||||
return -1;
|
return -1;
|
||||||
|
|
||||||
|
cert = SSL_get_peer_certificate(*ssl_con);
|
||||||
|
if (cert == NULL)
|
||||||
|
return -1;
|
||||||
|
|
||||||
|
i = SSL_get_verify_result(*ssl_con);
|
||||||
|
if (i != X509_V_OK)
|
||||||
|
printf("Possibly invalid certificate, continue on your own risk!\n");
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
@ -962,8 +972,6 @@ INT submit_elog(char *host, int port, int ssl, char *subdir, char *experiment,
|
|||||||
printf("Error: No logbook specified\n");
|
printf("Error: No logbook specified\n");
|
||||||
else if (strstr(response, "enter password"))
|
else if (strstr(response, "enter password"))
|
||||||
printf("Error: Missing or invalid password\n");
|
printf("Error: Missing or invalid password\n");
|
||||||
else if (strstr(response, "form name=form1"))
|
|
||||||
printf("Error: Missing or invalid user name/password\n");
|
|
||||||
else if (strstr(response, "Error: Attribute")) {
|
else if (strstr(response, "Error: Attribute")) {
|
||||||
if (strstr(response, "not existing")) {
|
if (strstr(response, "not existing")) {
|
||||||
strncpy(str, strstr(response, "Error: Attribute") + 27, sizeof(str));
|
strncpy(str, strstr(response, "Error: Attribute") + 27, sizeof(str));
|
||||||
@ -976,7 +984,10 @@ INT submit_elog(char *host, int port, int ssl, char *subdir, char *experiment,
|
|||||||
*strchr(str, '<') = 0;
|
*strchr(str, '<') = 0;
|
||||||
printf("Error: Missing required attribute \"%s\"\n", str);
|
printf("Error: Missing required attribute \"%s\"\n", str);
|
||||||
}
|
}
|
||||||
} else
|
}
|
||||||
|
else if (strstr(response, "form name=form1"))
|
||||||
|
printf("Error: Missing or invalid user name/password\n");
|
||||||
|
else
|
||||||
printf("Error transmitting message\n");
|
printf("Error transmitting message\n");
|
||||||
|
|
||||||
return 1;
|
return 1;
|
||||||
|
|||||||
18
src/elogd.c
18
src/elogd.c
@ -2439,18 +2439,28 @@ int ssl_connect(int sock, SSL ** ssl_con)
|
|||||||
{
|
{
|
||||||
SSL_METHOD *meth;
|
SSL_METHOD *meth;
|
||||||
SSL_CTX *ctx;
|
SSL_CTX *ctx;
|
||||||
|
X509 *cert = NULL;
|
||||||
|
int i;
|
||||||
|
|
||||||
SSL_library_init();
|
SSL_library_init();
|
||||||
SSL_load_error_strings();
|
SSL_load_error_strings();
|
||||||
|
|
||||||
meth = (SSL_METHOD *) TLSv1_method();
|
meth = (SSL_METHOD *) TLSv1_method();
|
||||||
ctx = SSL_CTX_new(meth);
|
ctx = SSL_CTX_new(meth);
|
||||||
|
|
||||||
*ssl_con = SSL_new(ctx);
|
*ssl_con = SSL_new(ctx);
|
||||||
SSL_set_fd(*ssl_con, sock);
|
SSL_set_fd(*ssl_con, sock);
|
||||||
if (SSL_connect(*ssl_con) <= 0)
|
if (SSL_connect(*ssl_con) <= 0)
|
||||||
return -1;
|
return -1;
|
||||||
|
|
||||||
|
cert = SSL_get_peer_certificate(*ssl_con);
|
||||||
|
if (cert == NULL)
|
||||||
|
return -1;
|
||||||
|
|
||||||
|
i = SSL_get_verify_result(*ssl_con);
|
||||||
|
if (i != X509_V_OK)
|
||||||
|
printf("Possibly invalid certificate, continue on your own risk!\n");
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|||||||
@ -93,7 +93,7 @@
|
|||||||
D52BA2F113999DB0000458E3 /* Project object */ = {
|
D52BA2F113999DB0000458E3 /* Project object */ = {
|
||||||
isa = PBXProject;
|
isa = PBXProject;
|
||||||
attributes = {
|
attributes = {
|
||||||
LastUpgradeCheck = 0630;
|
LastUpgradeCheck = 0830;
|
||||||
ORGANIZATIONNAME = PSI;
|
ORGANIZATIONNAME = PSI;
|
||||||
};
|
};
|
||||||
buildConfigurationList = D52BA2F413999DB0000458E3 /* Build configuration list for PBXProject "elog" */;
|
buildConfigurationList = D52BA2F413999DB0000458E3 /* Build configuration list for PBXProject "elog" */;
|
||||||
@ -133,14 +133,20 @@
|
|||||||
CLANG_WARN_CONSTANT_CONVERSION = YES;
|
CLANG_WARN_CONSTANT_CONVERSION = YES;
|
||||||
CLANG_WARN_EMPTY_BODY = YES;
|
CLANG_WARN_EMPTY_BODY = YES;
|
||||||
CLANG_WARN_ENUM_CONVERSION = YES;
|
CLANG_WARN_ENUM_CONVERSION = YES;
|
||||||
|
CLANG_WARN_INFINITE_RECURSION = YES;
|
||||||
CLANG_WARN_INT_CONVERSION = YES;
|
CLANG_WARN_INT_CONVERSION = YES;
|
||||||
|
CLANG_WARN_SUSPICIOUS_MOVE = YES;
|
||||||
CLANG_WARN_UNREACHABLE_CODE = YES;
|
CLANG_WARN_UNREACHABLE_CODE = YES;
|
||||||
CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
|
CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
|
||||||
ENABLE_STRICT_OBJC_MSGSEND = YES;
|
ENABLE_STRICT_OBJC_MSGSEND = YES;
|
||||||
|
ENABLE_TESTABILITY = YES;
|
||||||
GCC_C_LANGUAGE_STANDARD = gnu99;
|
GCC_C_LANGUAGE_STANDARD = gnu99;
|
||||||
GCC_NO_COMMON_BLOCKS = YES;
|
GCC_NO_COMMON_BLOCKS = YES;
|
||||||
GCC_OPTIMIZATION_LEVEL = 0;
|
GCC_OPTIMIZATION_LEVEL = 0;
|
||||||
GCC_PREPROCESSOR_DEFINITIONS = DEBUG;
|
GCC_PREPROCESSOR_DEFINITIONS = (
|
||||||
|
DEBUG,
|
||||||
|
HAVE_SSL,
|
||||||
|
);
|
||||||
GCC_SYMBOLS_PRIVATE_EXTERN = NO;
|
GCC_SYMBOLS_PRIVATE_EXTERN = NO;
|
||||||
GCC_VERSION = com.apple.compilers.llvm.clang.1_0;
|
GCC_VERSION = com.apple.compilers.llvm.clang.1_0;
|
||||||
GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
|
GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
|
||||||
@ -149,6 +155,8 @@
|
|||||||
GCC_WARN_UNINITIALIZED_AUTOS = YES;
|
GCC_WARN_UNINITIALIZED_AUTOS = YES;
|
||||||
GCC_WARN_UNUSED_FUNCTION = YES;
|
GCC_WARN_UNUSED_FUNCTION = YES;
|
||||||
GCC_WARN_UNUSED_VARIABLE = YES;
|
GCC_WARN_UNUSED_VARIABLE = YES;
|
||||||
|
HEADER_SEARCH_PATHS = /opt/local/include;
|
||||||
|
LIBRARY_SEARCH_PATHS = /opt/local/lib;
|
||||||
MACOSX_DEPLOYMENT_TARGET = 10.6;
|
MACOSX_DEPLOYMENT_TARGET = 10.6;
|
||||||
ONLY_ACTIVE_ARCH = YES;
|
ONLY_ACTIVE_ARCH = YES;
|
||||||
SDKROOT = macosx;
|
SDKROOT = macosx;
|
||||||
@ -162,12 +170,15 @@
|
|||||||
CLANG_WARN_CONSTANT_CONVERSION = YES;
|
CLANG_WARN_CONSTANT_CONVERSION = YES;
|
||||||
CLANG_WARN_EMPTY_BODY = YES;
|
CLANG_WARN_EMPTY_BODY = YES;
|
||||||
CLANG_WARN_ENUM_CONVERSION = YES;
|
CLANG_WARN_ENUM_CONVERSION = YES;
|
||||||
|
CLANG_WARN_INFINITE_RECURSION = YES;
|
||||||
CLANG_WARN_INT_CONVERSION = YES;
|
CLANG_WARN_INT_CONVERSION = YES;
|
||||||
|
CLANG_WARN_SUSPICIOUS_MOVE = YES;
|
||||||
CLANG_WARN_UNREACHABLE_CODE = YES;
|
CLANG_WARN_UNREACHABLE_CODE = YES;
|
||||||
CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
|
CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
|
||||||
ENABLE_STRICT_OBJC_MSGSEND = YES;
|
ENABLE_STRICT_OBJC_MSGSEND = YES;
|
||||||
GCC_C_LANGUAGE_STANDARD = gnu99;
|
GCC_C_LANGUAGE_STANDARD = gnu99;
|
||||||
GCC_NO_COMMON_BLOCKS = YES;
|
GCC_NO_COMMON_BLOCKS = YES;
|
||||||
|
GCC_PREPROCESSOR_DEFINITIONS = HAVE_SSL;
|
||||||
GCC_VERSION = com.apple.compilers.llvm.clang.1_0;
|
GCC_VERSION = com.apple.compilers.llvm.clang.1_0;
|
||||||
GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
|
GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
|
||||||
GCC_WARN_ABOUT_RETURN_TYPE = YES;
|
GCC_WARN_ABOUT_RETURN_TYPE = YES;
|
||||||
@ -175,6 +186,8 @@
|
|||||||
GCC_WARN_UNINITIALIZED_AUTOS = YES;
|
GCC_WARN_UNINITIALIZED_AUTOS = YES;
|
||||||
GCC_WARN_UNUSED_FUNCTION = YES;
|
GCC_WARN_UNUSED_FUNCTION = YES;
|
||||||
GCC_WARN_UNUSED_VARIABLE = YES;
|
GCC_WARN_UNUSED_VARIABLE = YES;
|
||||||
|
HEADER_SEARCH_PATHS = /opt/local/include;
|
||||||
|
LIBRARY_SEARCH_PATHS = /opt/local/lib;
|
||||||
MACOSX_DEPLOYMENT_TARGET = 10.6;
|
MACOSX_DEPLOYMENT_TARGET = 10.6;
|
||||||
SDKROOT = macosx;
|
SDKROOT = macosx;
|
||||||
};
|
};
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user