Blame view

crypto/proc.c 2.83 KB
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
1
2
3
4
5
6
  /*
   * Scatterlist Cryptographic API.
   *
   * Procfs information.
   *
   * Copyright (c) 2002 James Morris <jmorris@intercode.com.au>
5cb1454b8   Herbert Xu   [CRYPTO] Allow mu...
7
   * Copyright (c) 2005 Herbert Xu <herbert@gondor.apana.org.au>
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
8
9
10
11
12
13
14
   *
   * This program is free software; you can redistribute it and/or modify it
   * under the terms of the GNU General Public License as published by the Free
   * Software Foundation; either version 2 of the License, or (at your option) 
   * any later version.
   *
   */
6521f3027   Herbert Xu   [CRYPTO] api: Add...
15
16
  
  #include <asm/atomic.h>
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
17
18
19
20
21
22
  #include <linux/init.h>
  #include <linux/crypto.h>
  #include <linux/rwsem.h>
  #include <linux/proc_fs.h>
  #include <linux/seq_file.h>
  #include "internal.h"
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
23
24
  static void *c_start(struct seq_file *m, loff_t *pos)
  {
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
25
  	down_read(&crypto_alg_sem);
13d31894b   Pavel Emelianov   Make crypto API u...
26
  	return seq_list_start(&crypto_alg_list, *pos);
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
27
28
29
30
  }
  
  static void *c_next(struct seq_file *m, void *p, loff_t *pos)
  {
13d31894b   Pavel Emelianov   Make crypto API u...
31
  	return seq_list_next(p, &crypto_alg_list, pos);
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
32
33
34
35
36
37
38
39
40
  }
  
  static void c_stop(struct seq_file *m, void *p)
  {
  	up_read(&crypto_alg_sem);
  }
  
  static int c_show(struct seq_file *m, void *p)
  {
13d31894b   Pavel Emelianov   Make crypto API u...
41
  	struct crypto_alg *alg = list_entry(p, struct crypto_alg, cra_list);
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
42
43
44
  	
  	seq_printf(m, "name         : %s
  ", alg->cra_name);
5cb1454b8   Herbert Xu   [CRYPTO] Allow mu...
45
46
  	seq_printf(m, "driver       : %s
  ", alg->cra_driver_name);
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
47
48
  	seq_printf(m, "module       : %s
  ", module_name(alg->cra_module));
5cb1454b8   Herbert Xu   [CRYPTO] Allow mu...
49
50
  	seq_printf(m, "priority     : %d
  ", alg->cra_priority);
6521f3027   Herbert Xu   [CRYPTO] api: Add...
51
52
  	seq_printf(m, "refcnt       : %d
  ", atomic_read(&alg->cra_refcnt));
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
  	
  	switch (alg->cra_flags & CRYPTO_ALG_TYPE_MASK) {
  	case CRYPTO_ALG_TYPE_CIPHER:
  		seq_printf(m, "type         : cipher
  ");
  		seq_printf(m, "blocksize    : %u
  ", alg->cra_blocksize);
  		seq_printf(m, "min keysize  : %u
  ",
  					alg->cra_cipher.cia_min_keysize);
  		seq_printf(m, "max keysize  : %u
  ",
  					alg->cra_cipher.cia_max_keysize);
  		break;
  		
  	case CRYPTO_ALG_TYPE_DIGEST:
  		seq_printf(m, "type         : digest
  ");
  		seq_printf(m, "blocksize    : %u
  ", alg->cra_blocksize);
  		seq_printf(m, "digestsize   : %u
  ",
  		           alg->cra_digest.dia_digestsize);
  		break;
  	case CRYPTO_ALG_TYPE_COMPRESS:
  		seq_printf(m, "type         : compression
  ");
  		break;
  	default:
e853c3cfa   Herbert Xu   [CRYPTO] api: Add...
82
83
84
85
86
  		if (alg->cra_type && alg->cra_type->show)
  			alg->cra_type->show(m, alg);
  		else
  			seq_printf(m, "type         : unknown
  ");
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
  		break;
  	}
  
  	seq_putc(m, '
  ');
  	return 0;
  }
  
  static struct seq_operations crypto_seq_ops = {
  	.start		= c_start,
  	.next		= c_next,
  	.stop		= c_stop,
  	.show		= c_show
  };
  
  static int crypto_info_open(struct inode *inode, struct file *file)
  {
  	return seq_open(file, &crypto_seq_ops);
  }
          
2b8693c06   Arjan van de Ven   [PATCH] mark stru...
107
  static const struct file_operations proc_crypto_ops = {
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
108
109
110
111
112
113
114
115
116
117
118
119
120
121
  	.open		= crypto_info_open,
  	.read		= seq_read,
  	.llseek		= seq_lseek,
  	.release	= seq_release
  };
  
  void __init crypto_init_proc(void)
  {
  	struct proc_dir_entry *proc;
  	
  	proc = create_proc_entry("crypto", 0, NULL);
  	if (proc)
  		proc->proc_fops = &proc_crypto_ops;
  }
cce9e06d1   Herbert Xu   [CRYPTO] api: Spl...
122
123
124
125
126
  
  void __exit crypto_exit_proc(void)
  {
  	remove_proc_entry("crypto", NULL);
  }