Patch title: Release 85 bulk changes
Abstract:
File: /pliant/util/crypto/legal.pli
Key:
    Removed line
    Added line
abstract
  [Restricts the size of the keys used in cipher algorithms in order to meet the french law restrictions.]

constant max_legal_key_bits 128
constant max_legal_key_bits 128000

doc
  [What we do if the provided key is too long, is substituting some bits taken from the MD5 digest of the part that will be removed.] ; eol

module "/pliant/admin/md5.pli"

function legal_key key -> legal
  arg Str key legal
  if key:len<=max_legal_key_bits\8
    # the key is not changed
    legal := key
  else
    # the legal key is the beginning of the all key, followed by the MD5 digest of the end of the all key
    var Str clear := key 0 (max (max_legal_key_bits-128)\8 0)
    var Str digest := string_md5_binary_signature (key clear:len key:len)
    check digest:len=16
    legal := clear+digest 0 max_legal_key_bits\8
  check legal:len<=max_legal_key_bits\8

export legal_key max_legal_key_bits