1. 10 Jul, 2005 5 commits
    • Bruce Momjian's avatar
      I made the patch that implements regexp_replace again. · 75a64eeb
      Bruce Momjian authored
      The specification of this function is as follows.
      
      regexp_replace(source text, pattern text, replacement text, [flags
      text])
      returns text
      
      Replace string that matches to regular expression in source text to
      replacement text.
      
       - pattern is regular expression pattern.
       - replacement is replace string that can use '\1'-'\9', and '\&'.
          '\1'-'\9': back reference to the n'th subexpression.
          '\&'     : entire matched string.
       - flags can use the following values:
          g: global (replace all)
          i: ignore case
          When the flags is not specified, case sensitive, replace the first
          instance only.
      
      Atsushi Ogawa
      75a64eeb
    • Bruce Momjian's avatar
      Major pgcrypto changes: · 73e24318
      Bruce Momjian authored
      of password-based encryption from RFC2440 (OpenPGP).
      
      The goal of this code is to be more featureful encryption solution
      than current encrypt(), which only functionality is running cipher
      over data.
      
      Compared to encrypt(), pgp_encrypt() does following:
      
      * It uses the equvialent of random Inital Vector to get cipher
        into random state before it processes user data
      * Stores SHA-1 of the data into result so any modification
        will be detected.
      * Remembers if data was text or binary - thus it can decrypt
        to/from text data.  This was a major nuisance for encrypt().
      * Stores info about used algorithms with result, so user needs
        not remember them - more user friendly!
      * Uses String2Key algorithms (similar to crypt()) with random salt
        to generate full-length binary key to be used for encrypting.
      * Uses standard format for data - you can feed it to GnuPG, if needed.
      
      Optional features (off by default):
      
      * Can use separate session key - user data will be encrypted
        with totally random key, which will be encrypted with S2K
        generated key and attached to result.
      * Data compression with zlib.
      * Can convert between CRLF<->LF line-endings - to get fully
        RFC2440-compliant behaviour.  This is off by default as
        pgcrypto does not know the line-endings of user data.
      
      Interface is simple:
      
      
          pgp_encrypt(data text, key text) returns bytea
          pgp_decrypt(data text, key text) returns text
          pgp_encrypt_bytea(data bytea, key text) returns bytea
          pgp_decrypt_bytea(data bytea, key text) returns bytea
      
      To change parameters (cipher, compression, mdc):
      
          pgp_encrypt(data text, key text, parms text) returns bytea
          pgp_decrypt(data text, key text, parms text) returns text
          pgp_encrypt_bytea(data bytea, key text, parms text) returns bytea
          pgp_decrypt_bytea(data bytea, key text, parms text) returns bytea
      
      Parameter names I lifted from gpg:
      
         pgp_encrypt('message', 'key', 'compress-algo=1,cipher-algo=aes256')
      
      For text data, pgp_encrypt simply encrypts the PostgreSQL internal data.
      
      This maps to RFC2440 data type 't' - 'extenally specified encoding'.
      But this may cause problems if data is dumped and reloaded into database
      which as different internal encoding.  My next goal is to implement data
      type 'u' - which means data is in UTF-8 encoding by converting internal
      encoding to UTF-8 and back.  And there wont be any compatibility
      problems with current code, I think its ok to submit this without UTF-8
      encoding by converting internal encoding to UTF-8 and back.  And there
      wont be any compatibility problems with current code, I think its ok to
      submit this without UTF-8 support.
      
      
      Here is v4 of PGP encrypt.  This depends on previously sent
      Fortuna-patch, as it uses the px_add_entropy function.
      
      - New function: pgp_key_id() for finding key id's.
      - Add SHA1 of user data and key into RNG pools.  We need to get
        randomness from somewhere, and it is in user best interests
        to contribute.
      - Regenerate pgp-armor test for SQL_ASCII database.
      - Cleanup the key handling so that the pubkey support is less
        hackish.
      
      Marko Kreen
      73e24318
    • Bruce Momjian's avatar
      - Add Fortuna PRNG to pgcrypto. · 4fcf8b11
      Bruce Momjian authored
      - Move openssl random provider to openssl.c and builtin provider
        to internal.c
      - Make px_random_bytes use Fortuna, instead of giving error.
      - Retarget random.c to aquiring system randomness, for initial seeding
        of Fortuna.  There is ATM 2 functions for Windows,
        reader from /dev/urandom and the regular time()/getpid() silliness.
      
      Marko Kreen
      4fcf8b11
    • Bruce Momjian's avatar
      This patch adds implementation of SHA2 to pgcrypto. · 248eeb82
      Bruce Momjian authored
      New hashes: SHA256, SHA384, SHA512.
      
      Marko Kreen
      248eeb82
    • Bruce Momjian's avatar
      Add psql \pset numericsep to allow output numbers like 100,000.0 or · 73a7c322
      Bruce Momjian authored
      100.000,0.
      
      Eugen Nedelcu
      73a7c322
  2. 09 Jul, 2005 1 commit
  3. 08 Jul, 2005 8 commits
  4. 07 Jul, 2005 5 commits
    • Tom Lane's avatar
      Track dependencies on shared objects (which is to say, roles; we already · 59d1b3d9
      Tom Lane authored
      have adequate mechanisms for tracking the contents of databases and
      tablespaces).  This solves the longstanding problem that you can drop a
      user who still owns objects and/or has access permissions.
      Alvaro Herrera, with some kibitzing from Tom Lane.
      59d1b3d9
    • Bruce Momjian's avatar
      Update: · 442b59dd
      Bruce Momjian authored
      < 	   writer.
      > 	   writer.  It might cause problems for applying WAL on recovery
      > 	   into a partially-written page, but later the full page will be
      > 	   replaced from WAL.
      442b59dd
    • Bruce Momjian's avatar
      Update: · f0a2a919
      Bruce Momjian authored
      >
      > 	o  -Add ability to turn off full page writes
      > 	o  When off, write CRC to WAL and check file system blocks
      > 	   on recovery
      > 	o  Write full pages during file system write and not when
      > 	   the page is modified in the buffer cache
      >
      > 	   This allows most full page writes to happen in the background
      > 	   writer.
      f0a2a919
    • Bruce Momjian's avatar
      Fix plperl expected output. · 1c883366
      Bruce Momjian authored
      Andrew Dunstan
      1c883366
    • Bruce Momjian's avatar
      pg_column_size() cleanup for messages and code cleanup. · 294de2dc
      Bruce Momjian authored
      Mark Kirkwood
      294de2dc
  5. 06 Jul, 2005 12 commits
  6. 05 Jul, 2005 8 commits
  7. 04 Jul, 2005 1 commit