Implemented rudimentary certificate check
This commit is contained in:
+18
-7
@@ -299,18 +299,28 @@ int ssl_connect(int sock, SSL ** ssl_con)
|
||||
{
|
||||
SSL_METHOD *meth;
|
||||
SSL_CTX *ctx;
|
||||
|
||||
X509 *cert = NULL;
|
||||
int i;
|
||||
|
||||
SSL_library_init();
|
||||
SSL_load_error_strings();
|
||||
|
||||
|
||||
meth = (SSL_METHOD *) TLSv1_method();
|
||||
ctx = SSL_CTX_new(meth);
|
||||
|
||||
|
||||
*ssl_con = SSL_new(ctx);
|
||||
SSL_set_fd(*ssl_con, sock);
|
||||
if (SSL_connect(*ssl_con) <= 0)
|
||||
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;
|
||||
}
|
||||
#endif
|
||||
@@ -962,8 +972,6 @@ INT submit_elog(char *host, int port, int ssl, char *subdir, char *experiment,
|
||||
printf("Error: No logbook specified\n");
|
||||
else if (strstr(response, "enter password"))
|
||||
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")) {
|
||||
if (strstr(response, "not existing")) {
|
||||
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;
|
||||
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");
|
||||
|
||||
return 1;
|
||||
|
||||
+14
-4
@@ -2439,18 +2439,28 @@ int ssl_connect(int sock, SSL ** ssl_con)
|
||||
{
|
||||
SSL_METHOD *meth;
|
||||
SSL_CTX *ctx;
|
||||
|
||||
X509 *cert = NULL;
|
||||
int i;
|
||||
|
||||
SSL_library_init();
|
||||
SSL_load_error_strings();
|
||||
|
||||
|
||||
meth = (SSL_METHOD *) TLSv1_method();
|
||||
ctx = SSL_CTX_new(meth);
|
||||
|
||||
|
||||
*ssl_con = SSL_new(ctx);
|
||||
SSL_set_fd(*ssl_con, sock);
|
||||
if (SSL_connect(*ssl_con) <= 0)
|
||||
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;
|
||||
}
|
||||
#endif
|
||||
|
||||
@@ -93,7 +93,7 @@
|
||||
D52BA2F113999DB0000458E3 /* Project object */ = {
|
||||
isa = PBXProject;
|
||||
attributes = {
|
||||
LastUpgradeCheck = 0630;
|
||||
LastUpgradeCheck = 0830;
|
||||
ORGANIZATIONNAME = PSI;
|
||||
};
|
||||
buildConfigurationList = D52BA2F413999DB0000458E3 /* Build configuration list for PBXProject "elog" */;
|
||||
@@ -133,14 +133,20 @@
|
||||
CLANG_WARN_CONSTANT_CONVERSION = YES;
|
||||
CLANG_WARN_EMPTY_BODY = YES;
|
||||
CLANG_WARN_ENUM_CONVERSION = YES;
|
||||
CLANG_WARN_INFINITE_RECURSION = YES;
|
||||
CLANG_WARN_INT_CONVERSION = YES;
|
||||
CLANG_WARN_SUSPICIOUS_MOVE = YES;
|
||||
CLANG_WARN_UNREACHABLE_CODE = YES;
|
||||
CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
|
||||
ENABLE_STRICT_OBJC_MSGSEND = YES;
|
||||
ENABLE_TESTABILITY = YES;
|
||||
GCC_C_LANGUAGE_STANDARD = gnu99;
|
||||
GCC_NO_COMMON_BLOCKS = YES;
|
||||
GCC_OPTIMIZATION_LEVEL = 0;
|
||||
GCC_PREPROCESSOR_DEFINITIONS = DEBUG;
|
||||
GCC_PREPROCESSOR_DEFINITIONS = (
|
||||
DEBUG,
|
||||
HAVE_SSL,
|
||||
);
|
||||
GCC_SYMBOLS_PRIVATE_EXTERN = NO;
|
||||
GCC_VERSION = com.apple.compilers.llvm.clang.1_0;
|
||||
GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
|
||||
@@ -149,6 +155,8 @@
|
||||
GCC_WARN_UNINITIALIZED_AUTOS = YES;
|
||||
GCC_WARN_UNUSED_FUNCTION = YES;
|
||||
GCC_WARN_UNUSED_VARIABLE = YES;
|
||||
HEADER_SEARCH_PATHS = /opt/local/include;
|
||||
LIBRARY_SEARCH_PATHS = /opt/local/lib;
|
||||
MACOSX_DEPLOYMENT_TARGET = 10.6;
|
||||
ONLY_ACTIVE_ARCH = YES;
|
||||
SDKROOT = macosx;
|
||||
@@ -162,12 +170,15 @@
|
||||
CLANG_WARN_CONSTANT_CONVERSION = YES;
|
||||
CLANG_WARN_EMPTY_BODY = YES;
|
||||
CLANG_WARN_ENUM_CONVERSION = YES;
|
||||
CLANG_WARN_INFINITE_RECURSION = YES;
|
||||
CLANG_WARN_INT_CONVERSION = YES;
|
||||
CLANG_WARN_SUSPICIOUS_MOVE = YES;
|
||||
CLANG_WARN_UNREACHABLE_CODE = YES;
|
||||
CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
|
||||
ENABLE_STRICT_OBJC_MSGSEND = YES;
|
||||
GCC_C_LANGUAGE_STANDARD = gnu99;
|
||||
GCC_NO_COMMON_BLOCKS = YES;
|
||||
GCC_PREPROCESSOR_DEFINITIONS = HAVE_SSL;
|
||||
GCC_VERSION = com.apple.compilers.llvm.clang.1_0;
|
||||
GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
|
||||
GCC_WARN_ABOUT_RETURN_TYPE = YES;
|
||||
@@ -175,6 +186,8 @@
|
||||
GCC_WARN_UNINITIALIZED_AUTOS = YES;
|
||||
GCC_WARN_UNUSED_FUNCTION = YES;
|
||||
GCC_WARN_UNUSED_VARIABLE = YES;
|
||||
HEADER_SEARCH_PATHS = /opt/local/include;
|
||||
LIBRARY_SEARCH_PATHS = /opt/local/lib;
|
||||
MACOSX_DEPLOYMENT_TARGET = 10.6;
|
||||
SDKROOT = macosx;
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user