JNIEXPORT jboolean JNICALL Java_com_cenqua_shaj_Win32Authenticator_checkGroupMembershipImpl (JNIEnv * jvm, jclass jThisClass, jstring aDomain, jstring aUsername, jstring aGroup, jobject jLog) { const jchar* wc_domain; const jchar* wc_username; const jchar* wc_group; loginfo_t loginfo; jboolean result; HANDLE token = NULL; BOOL status = 1; loginfo = shaj_init_logger(jvm, jLog); wc_domain = (aDomain == NULL) ? NULL : (*jvm)->GetStringChars(jvm, aDomain, NULL); wc_username = (*jvm)->GetStringChars(jvm, aUsername, NULL); wc_group = (*jvm)->GetStringChars(jvm, aGroup, NULL); status = shaj_memberOfGroup(wc_domain, wc_username, wc_group, TRUE, TRUE, TRUE, &loginfo); result = status ? JNI_TRUE : JNI_FALSE; shaj_log_debug(&loginfo, "checking group for domain=%ws user=%ws group=%ws => %d", (wc_domain==NULL)? L"(NULL)" : wc_domain, wc_username, wc_group, (int) result); if (aDomain != NULL) { (*jvm)->ReleaseStringChars(jvm, aDomain, wc_domain); } (*jvm)->ReleaseStringChars(jvm, aUsername, wc_username); (*jvm)->ReleaseStringChars(jvm, aGroup, wc_group); return result; }
JNIEXPORT jboolean JNICALL Java_com_cenqua_shaj_Win32Authenticator_checkPasswordImpl (JNIEnv * jvm, jclass jThisClass, jstring aDomain, jstring aUsername, jstring aPassword, jobject jLog) { const char* c_domain; const char* c_username; const char* c_password; loginfo_t loginfo; jboolean result; HANDLE token = NULL; BOOL status = 1; loginfo = shaj_init_logger(jvm, jLog); c_domain = (aDomain == NULL) ? NULL : (*jvm)->GetStringUTFChars(jvm, aDomain, NULL); c_username = (*jvm)->GetStringUTFChars(jvm, aUsername, NULL); c_password = (*jvm)->GetStringUTFChars(jvm, aPassword, NULL); status = SSPLogonUser((char*)c_domain, (char*)c_username, (char*)c_password, &loginfo); result = status ? JNI_TRUE : JNI_FALSE; shaj_log_debug(&loginfo, "checking password for domain=%s user=%s => %d", (c_domain==NULL)? "(NULL)" : c_domain, c_username, (int) result); if (aDomain != NULL) { (*jvm)->ReleaseStringUTFChars(jvm, aDomain, c_domain); } (*jvm)->ReleaseStringUTFChars(jvm, aUsername, c_username); (*jvm)->ReleaseStringUTFChars(jvm, aPassword, c_password); return result; }
JNIEXPORT jboolean JNICALL Java_com_cenqua_shaj_PAMAuthenticator_checkPasswordImpl (JNIEnv *jvm, jclass jThisClass, jstring aService, jstring aUsername, jstring aPassword, jobject jLog) { const char* c_service; const char* c_username; const char* c_password; jboolean result; loginfo_t loginfo; loginfo = shaj_init_logger(jvm, jLog); //TODO do a check for username=="" or null //TODO what is the correct "default" servicename if null? c_service = (*jvm)->GetStringUTFChars(jvm, aService, NULL); c_username = (*jvm)->GetStringUTFChars(jvm, aUsername, NULL); c_password = (*jvm)->GetStringUTFChars(jvm, aPassword, NULL); result = shaj_chkpasswd_pam(c_service, c_username, c_password, &loginfo); (*jvm)->ReleaseStringUTFChars(jvm, aService, c_service); (*jvm)->ReleaseStringUTFChars(jvm, aUsername, c_username); (*jvm)->ReleaseStringUTFChars(jvm, aPassword, c_password); return result; }
JNIEXPORT jboolean JNICALL Java_com_cenqua_shaj_Shaj_initlibrary (JNIEnv * jvm, jclass jThisClass, jobject jLog) { loginfo_t loginfo; if (HAVE_LOADED == JNI_TRUE) { return HAVE_LOADED_RESULT; } loginfo = shaj_init_logger(jvm, jLog); HAVE_LOADED_RESULT = shaj_init(&loginfo); HAVE_LOADED = JNI_TRUE; return HAVE_LOADED_RESULT; }
JNIEXPORT jboolean JNICALL Java_com_cenqua_shaj_PAMAuthenticator_checkGroupMembershipImpl (JNIEnv *jvm, jclass jThisClass, jstring aUsername, jstring aGroup, jobject jLog) { const char* c_username; const char* c_group; jboolean result; loginfo_t loginfo; loginfo = shaj_init_logger(jvm, jLog); c_username = (*jvm)->GetStringUTFChars(jvm, aUsername, NULL); c_group = (*jvm)->GetStringUTFChars(jvm, aGroup, NULL); result = shaj_memberOfGroup(c_username, c_group, &loginfo); (*jvm)->ReleaseStringUTFChars(jvm, aUsername, c_username); (*jvm)->ReleaseStringUTFChars(jvm, aGroup, c_group); return result; }