Bom dia!

Estou desenvolvendo a procedura que gera os XML de transmissão  e recepção
dos retornos da NFSE Prefeitura de SP.
Estou tendo dificuldade na geração da tag <Assinatura> do RPS que baseado na
concatenação de vários dados do RPS deve ser criptografado conforme abaixo
(Segundo Manual da Prefeitura):

1) Converta a cadeia de caracteres ASCII para bytes (Base64)
   Fiz no braço pois não achei uma function do Oracle que fizesse;
    String Base64:
MzEwMDAwMDBMTExMTDAwMDAwMDAwMDAwMTIwMDcwMTIwVE5OMDAwMDAwMDAwMTAwMDAwMDAwMDAw
MDAwMDEwMDAwMDI2NTgxMDAwMTg1NjQwNzE4NzgAA=

2) Gere o Hash (array de bytes) utilizando SHA1
   Tentei usar o a function abaixo com sh1, md5 e rc4, não funcionou pois o
retorno da function devolveu:
   47F8CF03E5322A1B7F7BA13C919CD5C2 (Não lembro qual foi a que usei nesse
caso (sh1, md5 ou rc4)

3) Gere o Hash (array de bytes) utilizando RSA-SHA1
   Não segui adiante pois me complequei no ítem 2

Observação no Manual da Prefeitura:
ATENÇÃO! Na maioria das linguagens de programação, os passos 3 e 4 são
feitos através de uma única função. Verifique a documentação de sua
linguagem para evitar assinar um hash de um hash.


Pedido de Ajuda:
Alguém do grupo já desenvolveu a NFSE Paulistana e pode me ajudar com a tag
<Assinatura> do RPS, não é a tag de assinatura digital essa já consegui
fazer.

Obrigado pela atenção mais uma vez.

Sérgio Pennacchiotti

----------------------------------------------------------------------------
------------
create or replace function F_CRYPTO_SHA1( c_string in varchar2 )
return varchar2 is
   n_hash_function                     number;
   r_hash                              raw(128);
begin
   n_hash_function                     := dbms_crypto.hash_sh1;
--   n_hash_function                     := dbms_crypto.hash_md5;
--   n_hash_function                     := dbms_crypto.hash_rc4;
   r_hash                              := dbms_crypto.hash(
                                                            utl_raw.cast_to_
raw(c_string)
                                                           ,n_hash_function
                                                           );
   return( r_hash );
   exception
      when others then
           return( '' );
end F_CRYPTO_SHA1;
----------------------------------------------------------------------------
-------------

Responder a