home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 10 Tools / 10-Tools.zip / crypl200.zip / README.1ST < prev    next >
Text File  |  1996-10-11  |  4KB  |  107 lines

  1. This file contains various comments on the library which I'd like feedback on
  2. or help with.
  3.  
  4. Things I'd like help with:
  5.  
  6. - An OS/2 port.  This should be more or less identical to the Win32 version
  7.   except for the randomness-gathering routines.  I expect it's about a day of
  8.   work.
  9.  
  10. - Help with the Mac port.  Work is progressing on this, but I need someone to
  11.   write the randomness-gathering routines.
  12.  
  13. - A proper Visual Basic interface.  crypt.bas hasn't been updated for ages, I
  14.   don't have a copy of VB (or a system to run it on), it'd be nice if someone
  15.   could look at this and get it going again.  A cryptlib OCX would be nice.
  16.  
  17. - A proper Delphi interface.  Again, I don't use Delphi, someone would need to
  18.   create the appropriate header file for it.
  19.  
  20. - A Sparc and MIPS assembly-language version of the bnlib core routines.  There
  21.   currently exist 8086, 80386, i960, Alpha, 68K, 68020, and PPC versions of
  22.   this code, Sparc and MIPS versions (especially with code which takes
  23.   advantage of 64-bit extensions) would be nice.  If someone's really got a lot
  24.   of time, a VAX asm version would be nice too.  It's not an awful lot of work,
  25.   there are only a few core routines which are absolutely necessary and these
  26.   run to about 8K of asm code.
  27.  
  28. - Help with the VMS port (or a port to anything else, for that matter).  Again,
  29.   it shouldn't be too hard since only the randomness-gathering code is
  30.   OS-specific.  A PDP-11 port has been tried, but a 20-year-old compiler on a
  31.   machine with 64K of core (and I do mean core) just isn't up to the task.
  32.  
  33. - An FTP site in Europe to distribute betas.  This site should have reasonably
  34.   good connectivity to the US (some European sites are very slow or hard to get
  35.   to from the US).  There are a few other requirements which can be worked out
  36.   later.
  37.  
  38.  
  39. Future developments:
  40.  
  41. The next big step is to add the full RDBMS interface for the key databases.
  42. Currently only portions of this code are included because I don't have access
  43. to the necessary tools under Unix to work on this.  Parts of the interface
  44. aren't defined yet because you either need to perform messy querying of
  45. encrypted objects to find out what sort of keys you'll need, or use callback
  46. functions, neither of which I'm very fond of.  If anyone can help with this,
  47. please let me know.  The main thing I need is people to help with Unix DBMS
  48. interfaces.
  49.  
  50. The DSA code is present but disabled while I figure out a clean interface for
  51. it (a DSA signature consists of two values rather than one, which makes the
  52. existing 'object + length' interface difficult to work with).  This needs to be
  53. fixed.  If someone can send me a copy of X9.30 and X9.31 it would help the
  54. situation somewhat.
  55.  
  56. The key management routines aren't very well documented yet because they will
  57. probably change based on work on the key database interface.  If you need the
  58. capability badly enough you can probably figure out how to call the routines in
  59. cryptdbx.c which read PGP and X.509/SET keys.
  60.  
  61. Three very common operations seem to be:
  62.  
  63.   cryptInitContext( ..., DEFAULT, DEFAULT );
  64.   cryptGenerateContext( ..., DEFAULT );
  65.  
  66. and:
  67.  
  68.   cryptInitContext( ..., DEFAULT, DEFAULT );
  69.   cryptDeriveContext( ..., passPhrase, passPhraseLength );
  70.  
  71. for export and:
  72.  
  73.   cryptQueryObject( ..., &cryptObjectInfo );
  74.   cryptCreateContextEx( ..., cryptObjectInfo.cryptAlgo,
  75.                         cryptObjectInfo.cryptMode,
  76.                         cryptObjectInfo.cryptContextExInfo );
  77.   cryptDeriveKeyEx( ..., userKey, userKeyLength, cryptObjectInfo.keySetupAlgo,
  78.                     cryptObjectInfo.keySetupIterations );
  79.  
  80. for import.  It might be worthwhile adding these built-in functions:
  81.  
  82.   cryptGenerateKeyContext( ... );
  83.  
  84. and:
  85.  
  86.   cryptDeriveKeyContext( ..., passPhrase, passPhraseLength );
  87.  
  88. and:
  89.  
  90.   cryptDeriveKeyFromObject( ..., passPhrase, passPhraseLength );
  91.  
  92. which combine the functionality into one call.  In practice it hardly seems
  93. worth it since there are only two calls, but it makes the library a bit more
  94. idiot-proof and easier to use, so that:
  95.  
  96.   cryptGenerateKeyContext( ... );
  97.   cryptExportKey( ... );
  98.   cryptDestroyContext( ... );
  99.  
  100. and:
  101.  
  102.   cryptDeriveKeyFromObject( ... );
  103.   cryptImportKey( ... );
  104.   cryptDestroyContext( ... );
  105.  
  106. are enough to export and import data via passphrase-derived keys.
  107.