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