Skip site navigation (1) Skip section navigation (2)

store files encrypted with pgcrypto

From: "elmarkivp" <elmarkivo(at)hotmail(dot)com>
To: <pgsql-php(at)postgresql(dot)org>
Subject: store files encrypted with pgcrypto
Date: 2008-10-21 16:03:28
Message-ID: BAY108-DAV39826CFF85D285CF8C600A32E0@phx.gbl (view raw or flat)
Thread:
Lists: pgsql-php
Hi, i'm trying to store files encrypted in postgres 8.3.4, using sym_encrypt_bytea function.
this is quoted from the postgres8.3 documentation, thats was my guide, below is the php code i have used to make it, with no results and the respective errors.

FROM http://www.postgresql.org/docs/8.3/static/pgcrypto.html

F.20.3.1. pgp_sym_encrypt()

    pgp_sym_encrypt(data text, psw text [, options text ]) returns bytea
    pgp_sym_encrypt_bytea(data bytea, psw text [, options text ]) returns bytea
   

Encrypt data with a symmetric PGP key psw. The options parameter can contain option settings, as described below.
F.20.3.2. pgp_sym_decrypt()

    pgp_sym_decrypt(msg bytea, psw text [, options text ]) returns text
    pgp_sym_decrypt_bytea(msg bytea, psw text [, options text ]) returns bytea
   

Decrypt a symmetric-key-encrypted PGP message.

Decrypting bytea data with pgp_sym_decrypt is disallowed. This is to avoid outputting invalid character data. Decrypting originally textual data with pgp_sym_decrypt_bytea is fine.

The options parameter can contain option settings, as described below. 

F.20.3.7. Options for PGP functions

Options are named to be similar to GnuPG. An option's value should be given after an equal sign; separate options from each other with commas. For example:

    pgp_sym_encrypt(data, psw, 'compress-algo=1, cipher-algo=aes256')
   

All of the options except convert-crlf apply only to encrypt functions. Decrypt functions get the parameters from the PGP data.

The most interesting options are probably compress-algo and unicode-mode. The rest should have reasonable defaults. 

THIS IS MY CODE..
 
  <?php
  $fp = fopen($tmp_name, "rb");
     $buffer = fread($fp, filesize($tmp_name));
  fclose($fp);
  $buffer=pg_escape_bytea($buffer);
  $sql = "INSERT INTO foo(nombre, descripcion, archivo_bytea, mime, size) VALUES ('$nombre', '$desc', pgp_sym_encrypt_bytea('$buffer',123,'cipher-algo=aes256'), '$type', $size)";
  ?>

ERRORS:  
  ERROR: No function matches the given name and argument types. You might need to add explicit type casts 
  ERROR: function pgp_sym_encrypt_bytea(unknown, integer, unknown) does not exist 
  
OTHER CODE WITH EXPLICIT TYPES
  
  <?php
  $fp = fopen($tmp_name, "rb");
     $buffer = fread($fp, filesize($tmp_name));
  fclose($fp);
  $buffer=pg_escape_bytea($buffer);
  $sql = "INSERT INTO foo(nombre, descripcion, archivo_bytea, mime, size) VALUES ('$nombre', '$desc', pgp_sym_encrypt_bytea('$buffer'::bytea,123::text,'cipher-algo=aes256'::text), '$type', $size)";
  ?>

ERRORS:
  ERROR: function pgp_sym_encrypt_bytea(bytea, text, text) does not exist 
  
any help is welcome!
  
  

Responses

pgsql-php by date

Next:From: ChrisDate: 2008-10-21 21:56:58
Subject: Re: store files encrypted with pgcrypto
Previous:From: Andrew McMillanDate: 2008-10-12 07:25:07
Subject: Re: storing binary files / memory limit

Privacy Policy | About PostgreSQL
Copyright © 1996-2014 The PostgreSQL Global Development Group