EldoS | Feel safer!

Software components for data protection, secure storage and transfer

Problem function TransformData()

Also by EldoS: RawDisk
Access locked and protected files in Windows, read and write disks and partitions and more.
#25533
Posted: 07/04/2013 04:36:26
by David MICHEL (Standard support level)
Joined: 09/23/2009
Posts: 48

Hello,

I migrated my sources from DELPHI 2009 - SecureBlackbox version 9 towards Delphi EX3 - SecureBlackbox version 10.


At the compile time, I have an error on the function :
Ref.TransformChain.TransformData(FURINodeList);

Here my code :
Code
function TAuthSignature.AuthSignature(fnReqXml, fnCleAuth, fnPass: TFileName): Boolean;
var
  Ref            : TElXMLReference;
  RefList        : TElXMLReferenceList;
  C14N           : TElXMLC14NTransform;
  Signer         : TElXMLSigner;
  RSAKeyData     : TElXMLKeyInfoRSAData;
  NodeSign       : TElXMLDOMNode;
  newNodeSign    : TElXMLDOMElement;
  FURINode       : TElXMLDOMNode;
  FURINodeList   : TElXMLDOMNodeList;
  Storage        : TElPKCS11CertStorage;
  Session        : TElPKCS11SessionInfo;
  Cert           : TElX509Certificate;
  CertStorage    : TElMemoryCertStorage;  
  fsFichCle      : TFileStream;
  Encodage       : String;
  LigneNormalise : Boolean;
  SigneOk        : Boolean;
  Buffer         : ByteArray;
  FichierDLL     : TFileName;
  MDP            : String;
  MemoSerial     : String;
  Resultat       : Integer;  
begin

  SigneOk := False;

  Encodage       := 'utf-8';
  LigneNormalise := True;

  //Chargement en mémoire du contenu d'un fichier XML
  uFonctionsXML.ChargementXML(fnReqXml, Encodage, LigneNormalise);

  //Traitement de la signature

  //Mise en place de éléments Ref et RefList pour le calcul du Hash
  //Permet la mise en place de la partie des balises <ds:Reference>...</ds:>
  RefList := TElXMLReferenceList.Create;
  try//1
    Ref  := TElXMLReference.Create;
    try
      //Algo du Hash
      Ref.DigestMethod := xdmSHA256;
      Ref.URI := '#xpointer(//*[@authenticate=''true''])';
      ExtractURINode('//*[@authenticate]', uParametres.Xmlns, fnReqXml);  //uParametres.Xmlns à la place de 'http://www.ebics.org/H003'
      //URI... = Mise en place des données pour la canonisation et calcul du hash
      Ref.URINode := FURINode;
      Ref.URIData := nil;

      //C14N Transform = 'Canonical transform'
      C14N := TElXMLC14NTransform.Create;
      try
        C14N.CanonicalizationMethod := xcmCanon;
        Ref.TransformChain.Add(C14N);
      except
      end;

      Ref.TransformChain.TransformData(FURINodeList);  //??

      //Permet de visualiser le contenu de la canonisation avant le calcul du Hash
      //if (frmCommunication.FURINode <> nil) then
      if (FURINode <> nil) then
      begin
        Buffer := Ref.TransformChain.TransformData(Ref.URINode);  //??
        Ref.UpdateDigestValue;
      end
      else begin
        Buffer := Ref.TransformChain.TransformData(FURINodeList);  //??
        Ref.DigestValue := CalculateDigest(Buffer,length(Buffer),xdmSHA256);
      end;
      Finalize(Buffer);

      //Ajout de Ref dans RefListe
      RefList.Add(Ref);
    except
    end;

    //Mise en place des éléments pour la signature
    //Permet la mise en place de la partie des balises <ds:SignedInfo>...</ds:>
    Signer := TElXMLSigner.Create(Application);
    try//2
      Signer.SignatureType          := xstEnveloped;  //Signature Enveloppée (Existe aussi Signature détachée et Signature Enveloppante)
      Signer.CanonicalizationMethod := xcmCanon;      //Methode à appliquer avec la signature = Canonisation sans les commentaires
      Signer.SignatureMethodType    := xmtSig;        //Type de méthode de signature
      Signer.SignatureCompliance    := xscEBICS;      //Indique le nom de la balise racine de la signature. <AuthSignature> = xscEBICS ; <Signature> = xscDSIG;
      Signer.SignatureMethod        := xsmRSA_SHA256; //Méthode de la signature
      Signer.References             := RefList;       //Ajoute les éléments Références
      Signer.KeyName                := '';
      Signer.IncludeKey             := False;         //Ajoute ou non les informations du certificat et clé privée dans le schéma de la signature

      Signer.OnFormatElement := FormatElement;
      Signer.OnFormatText    := FormatText;
      
      ...
      ...


Thank you.


Sincerely yours,
David MICHEL.


Sincerely yours,
David MICHEL.
#25534
Posted: 07/04/2013 04:47:33
by Vsevolod Ievgiienko (EldoS Corp.)

Thank you for contacting us.

Indeed the method was changed. Now you should pass the second parameter of TElXMLCanonicalizationMethod type to Ref.TransformChain.TransformData method.
#25535
Posted: 07/04/2013 06:11:33
by David MICHEL (Standard support level)
Joined: 09/23/2009
Posts: 48

Thank you for your answer.

Therefore, if I modify my function, that gives :
Ref.TransformChain.TransformData(FURINodeList, xcmCanon);

Thank you.


Sincerely yours,
David MICHEL.

Reply

Statistics

Topic viewed 770 times

Number of guests: 1, registered members: 0, in total hidden: 0




|

Back to top

As of July 15, 2016 EldoS Corporation will operate as a division of /n software inc. For more information, please read the announcement.

Got it!