anchor.diff:  ;; this file is for defining "encryption profiles", as described in the rfc
   ;; this amounts to a set of functions which should be dispatched to depending on
   ;; the encrpyion type
  +
  +;; FIXME: add more profiel functions to get other info, e.g. cipher key size, cipher block size etc
   
   (defvar *profiles* nil
     "A list of symbols naming available encryption type profiles.")
  
positive.code: 
  (defmethod string-to-key ((type (eql :rc4)) password salt)
    (rc4-string-to-key password))
  
negative.code: 
  (defprofile :des-cbc-crc)
  
  (defmethod profile-encrypt-data ((type (eql :des-cbc-crc)) octets key &key initialization-vector)
    (des-encrypt octets
  	       (lambda (data)
  		 (encrypt-des-cbc key data :initialization-vector (or initialization-vector key)))
  	       #'crc32
  	       :cksum-len 4))
  
  (defmethod profile-decrypt-data ((type (eql :des-cbc-crc)) octets key &key initialization-vector)
    (des-decrypt octets
  	       (lambda (data)
  		 (decrypt-des-cbc key data :initialization-vector (or initialization-vector key)))
  	       #'crc32
  	       :cksum-len 4))
  
  