18fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuang/*
28fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuang * Cryptographic API.
38fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuang *
48fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuang * Algorithm autoloader.
58fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuang *
68fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuang * Copyright (c) 2002 James Morris <jmorris@intercode.com.au>
78fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuang *
88fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuang * This program is free software; you can redistribute it and/or modify it
98fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuang * under the terms of the GNU General Public License as published by the Free
108fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuang * Software Foundation; either version 2 of the License, or (at your option)
118fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuang * any later version.
128fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuang *
138fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuang */
148fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuang#include "kmap_types.h"
158fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuang
168fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuang#include <linux/kernel.h>
178fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuang//#include <linux/crypto.h>
188fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuang#include "rtl_crypto.h"
198fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuang#include <linux/string.h>
208fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuang#include <linux/kmod.h>
218fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuang#include "internal.h"
228fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuang
238fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuang/*
248fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuang * A far more intelligent version of this is planned.  For now, just
258fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuang * try an exact match on the name of the algorithm.
268fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuang */
278fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuangvoid crypto_alg_autoload(const char *name)
288fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuang{
298fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuang	request_module(name);
308fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuang}
318fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuang
328fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuangstruct crypto_alg *crypto_alg_mod_lookup(const char *name)
338fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuang{
348fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuang	struct crypto_alg *alg = crypto_alg_lookup(name);
358fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuang	if (alg == NULL) {
368fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuang		crypto_alg_autoload(name);
378fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuang		alg = crypto_alg_lookup(name);
388fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuang	}
398fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuang	return alg;
408fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuang}
41