コード例 #1
0
ファイル: arcfour.c プロジェクト: andreiw/polaris
int
_init(void)
{
	int ret;

	/*
	 * Register with KCF. If the registration fails, log an error
	 * and uninstall the module.
	 */
	if ((ret = crypto_register_provider(&rc4_prov_info,
	    &rc4_prov_handle)) != CRYPTO_SUCCESS) {
		cmn_err(CE_WARN, "_init: crypto_register_provider(%s)"
		    "failed (0x%x)", "arcfour", ret);
		return (EACCES);
	}

	if ((ret = mod_install(&modlinkage)) != 0) {
		int rv;

		ASSERT(rc4_prov_handle != NULL);
		/* We should not return if the unregister returns busy. */
		while ((rv = crypto_unregister_provider(rc4_prov_handle))
		    == CRYPTO_BUSY) {
			cmn_err(CE_WARN, "_init: crypto_unregister_provider(%s)"
			    " failed (0x%x). Retrying.", "arcfour", rv);
			/* wait 10 seconds and try again. */
			delay(10 * drv_usectohz(1000000));
		}
	}

	return (0);
}
コード例 #2
0
ファイル: aes.c プロジェクト: MatiasNAmendola/AuroraUX-SunOS
int
_init(void)
{
	int ret;

	/*
	 * Register with KCF. If the registration fails, return error.
	 */
	if ((ret = crypto_register_provider(&aes_prov_info,
	    &aes_prov_handle)) != CRYPTO_SUCCESS) {
		cmn_err(CE_WARN, "%s _init: crypto_register_provider()"
		    "failed (0x%x)", CRYPTO_PROVIDER_NAME, ret);
		return (EACCES);
	}

	if ((ret = mod_install(&modlinkage)) != 0) {
		int rv;

		ASSERT(aes_prov_handle != NULL);
		/* We should not return if the unregister returns busy. */
		while ((rv = crypto_unregister_provider(aes_prov_handle))
		    == CRYPTO_BUSY) {
			cmn_err(CE_WARN,
			    "%s _init: crypto_unregister_provider() "
			    "failed (0x%x). Retrying.",
			    CRYPTO_PROVIDER_NAME, rv);
			/* wait 10 seconds and try again. */
			delay(10 * drv_usectohz(1000000));
		}
	}

	return (ret);
}
コード例 #3
0
ファイル: aes.c プロジェクト: apprisi/illumos-gate
int
_fini(void)
{
	/* Unregister from KCF if module is registered */
	if (aes_prov_handle != NULL) {
		if (crypto_unregister_provider(aes_prov_handle))
			return (EBUSY);

		aes_prov_handle = NULL;
	}

	return (mod_remove(&modlinkage));
}
コード例 #4
0
ファイル: skein_mod.c プロジェクト: GregorKopka/zfs
int
skein_mod_fini(void)
{
	int ret;

	if (skein_prov_handle != 0) {
		if ((ret = crypto_unregister_provider(skein_prov_handle)) !=
		    CRYPTO_SUCCESS) {
			cmn_err(CE_WARN,
			    "skein _fini: crypto_unregister_provider() "
			    "failed (0x%x)", ret);
			return (EBUSY);
		}
		skein_prov_handle = 0;
	}

	return (mod_remove(&modlinkage));
}
コード例 #5
0
ファイル: md5_mod.c プロジェクト: andreiw/polaris
int
_fini(void)
{
	int ret;

	/*
	 * Unregister from KCF if previous registration succeeded.
	 */
	if (md5_prov_handle != NULL) {
		if ((ret = crypto_unregister_provider(md5_prov_handle)) !=
		    CRYPTO_SUCCESS) {
			cmn_err(CE_WARN, "md5 _fini: "
			    "crypto_unregister_provider() failed (0x%x)", ret);
			return (EBUSY);
		}
		md5_prov_handle = NULL;
	}

	return (mod_remove(&modlinkage));
}
コード例 #6
0
ファイル: aes.c プロジェクト: MatiasNAmendola/AuroraUX-SunOS
int
_fini(void)
{
	int ret;

	/*
	 * Unregister from KCF if previous registration succeeded.
	 */
	if (aes_prov_handle != NULL) {
		if ((ret = crypto_unregister_provider(aes_prov_handle)) !=
		    CRYPTO_SUCCESS) {
			cmn_err(CE_WARN,
			    "%s _fini: crypto_unregister_provider() "
			    "failed (0x%x)", CRYPTO_PROVIDER_NAME, ret);
			return (EBUSY);
		}
		aes_prov_handle = NULL;
	}

	return (mod_remove(&modlinkage));
}