⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 .#pam_pkcs15.c.1.1

📁 linux下的专门用于处理PKCS11的c++库和源代码 非常好用
💻 1
字号:
#include <stdio.h>#include <stdlib.h>#include <security/pam_appl.h>#include <security/pam_modules.h>#include <openssl/x509.h>#include <openssl/rsa.h>#include <sc.h>#include <sc-pkcs15.h>static struct sc_context *ctx = NULL;static struct sc_card *card = NULL;static struct sc_pkcs15_card *p15card = NULL;PAM_EXTERN int pam_sm_authenticate(pam_handle_t * pamh, int flags, int argc, const char **argv){	int r, i;	const char *user, *password = NULL;	for (i = 0; i < argc; i++)		printf("%s\n", argv[i]);	r = pam_get_user(pamh, &user, NULL);	if (r != PAM_SUCCESS)		return r;	r = sc_establish_context(&ctx);	if (r != 0) {		printf("establish_context() failed: %s\n", sc_strerror(r));		return PAM_AUTH_ERR;	}	for (i = 0; i < ctx->reader_count; i++) {		if (sc_detect_card(ctx, i) == 1) {			if (sc_connect_card(ctx, i, &card) != 0) {				printf("Connecting to card failed: %s\n", sc_strerror(r));				goto err;			}		}	}	if (card == NULL) {		printf("SmartCard absent.\n");		goto err;	}	r = sc_pkcs15_init(card, &p15card);	if (r != 0) {		printf("PKCS#15 initialization failed: %s.\n", sc_strerror(r));		goto err;	}	sc_pkcs15_destroy(p15card);	sc_disconnect_card(card);	sc_destroy_context(ctx);	return PAM_SUCCESS;err:	if (p15card)		sc_pkcs15_destroy(p15card);	if (card)		sc_disconnect_card(card);	if (ctx)		sc_destroy_context(ctx);	return PAM_AUTH_ERR;}PAM_EXTERN int pam_sm_setcred(pam_handle_t *pamh, int flags, int argc, const char **argv){	printf("pam_sm_setcred() called\n");	return PAM_SUCCESS;}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -