1
2
3                           TODO for Crypt::RSA
4            $Id: TODO,v 1.25 2001/05/20 23:37:42 vipul Exp $
5
6-------------------------------------------------------------------------------
7P No Task                                              Status
8- -- ------------------------------------------------  ------------------------
9   1 Implement "Optimal Asymetric Encryption" (OAEP)   Jan 01 2001  0130
10     + oaep_encode()                                   Dec 25 2000  0000
11     + oaep_decode()                                   Dec 25 2000  0025
12     + oaep_encrypt()                                  Dec 25 2000  0100
13     + oaep_decrypt()                                  Dec 25 2000  0100
14     + implement octet_xor()                           Dec 26 2000  0245
15   2 oaep_encrypt()/decrypt() should work with         Jan 01 2001  0130
16     moduli of lengths that are not multiples
17     of 8.
18   3 SSLv3 compatability                               Postponed.
19*  4 Read/write SSH public keys
20     ::Key::Public::SSH should derive from
21     ::Key::Public and override its read() and
22     write()
23*  5 Choose a large `e' with Maurer's method
24   6 Move rsaparams() over to Crypt::RSA::Key          Not required.
25   7 Implement i2osp(), os2ip(), mgf1()                Dec 21 2000  0425
26   8 Find & study PKCS #7 specification                Feb 19 2001  2345
27   9 Read/write PGP 2.6i/5.x and GPG keys
28     (Crypt::OpenPGP should do this, not us.)
29  10 A comprehensive test suite                        Mar 03 2001  1900
30  11 Implement decryption using the Chinese            Apr 07 2001  1300
31     Remainder Theorem (in core_decrypt()).
32     (Patch by Benjamin Trott)
33* 12 Resolve endianness issues.
34  13 Move OAEP code to Crypt::RSA::EME::OAEP           Feb 12 2001  2000
35  14 Ensure n is exactly specified number of           Mar 06 2001  2315
36     bits
37*    + Modify Crypt::Primes::maurer() to accept
38       an integer range instead of bitsize.
39  15 Better exception handling in oaep_decrypt()       Not required.
40     Cloak calls to os2ip/ip2os and core_decrypt()
41     in evals and croak with "Decryption Error"
42     if an exception is raised in these methods
43     (Suggestion by magister on #perl:
44      Use DBI's error handling method)
45  16 Add support for Math::Pari bigints to             Apr 19 2001  1200
46     Convert::ASN1.  <ben@rhumba.pair.com>
47  17 Add support for DER encoding in Convert::ASN1.    Postponed.
48  18 Replace mod2int with Math::Pari::lift()           Feb 14 2001  0300
49  19 Implement core_sign() and core_verify()           Feb 12 2001  1330
50     + clock calls to core_encrypt()/decrypt()
51       in evals and return appropriate error
52       messages.
53  19 Signature with appendix Crypt::RSA::PKCS15        Postponed.
54     (Requires ASN1)
55  20 Signature with appendix (randomized)              Feb 19 2001  2030
56     Crypt::RSA::SSA::PSS
57  21 Split the code into modules listed in             Feb 14 2001  2100
58     MANIFEST
59     + Update tests.                                   Feb 14 2001  2100
60  22 Use the DBI error handling method.                Feb 15 2001  2300
61  23 Plaintext and key material should                 Feb 15 2001  2300
62     we wiped out from memory at error
63     and DESTROY()
64     + Implement Crypt::RSA::Key::DESTROY              Mar 03 2001  1500
65  24 Move mgf1 to Crypt::RSA::DataFormat               Feb 15 2001  2100
66     and wrap in a method in
67     EME::OAEP, SSA::PSS
68  25 Rename Cyphertext to Ciphertext in                Mar 06 2001  2315
69     Crypt::RSA::Primitives::decrypt()
70  26 Restructre Key modules into                       Mar 02 2001  2100
71     Crypt::RSA::Key
72     Crypt::RSA::Key::Public
73     %key = ( version  => ...,
74              owner    => [],
75              ownersig => [],
76              type    => type
77              size    => size in bits of n,
78              n       => modulus
79              e       => exponent
80            ),
81     Crypt::RSA::Key::Private
82     Same as public key and:
83     %key = (
84             __d      => decryption exp,
85             __p      => prime,
86             __q      => prime,
87            )
88* 27 $key->check before operations
89       n == p*q
90       d*e mod p == 1
91       d*e mod q == 1
92       p*u mod q == 1
93
94  28 Add support for version specific operations       Mar 31 2001  0400
95     in EME::* and SSA::*.  Version number
96     should be provided at new()
97  29 Crypt::RSA should be able to use non-native       Apr 29 2001  0400
98     key formats through a mechanism similar to
99     variable EME/SSA support.
100  30 Consider renaming EME to ES and SSA to SS.        Mar 31 2001  1500
101     (Renamed EME to ES, SSA to SS)
102* 31 Re-orgazine Crypt::RSA::Primitives.
103     core_encrypt|decrypt|sign|verify() should be
104     replaced with rsaop() that uses the encryption
105     exponent or the decryption exponent depending
106     on the type of key passed.  Also implement
107     decryption with CRT here.
108  32 Write Crypt::RSA::EME|SSA::RSAREF2                Apr 06 2001  1930
109     (as ::ES/SS::PKCS1v15)
110* 33 Write Crypt::RSA::EME|SSA::Textbook
111  34 Write a note in documentation on insecurity of    Apr 30 2001  0300
112     Textbook RSA.  Also explain the concept of
113     Schemes.
114* 35 Remove use lib 'locallib' from all modules
115     in production version. (nhuillard@ghs.fr)
116* 36 Fix parameterization in ::ES::OAEP and
117     ::ES::PSS
118
119-------------------------------------------------------------------------------
120
121LEGEND
122 - Date in the Status field indicates the task was completed on that date.
123 - `*' in P field distinguishes pending tasks.
124 - `+' before the task description indicates a sub-task.
125
126
127