EldoS | Feel safer!

Software components for data protection, secure storage and transfer

Problem function TransformData()

Posted: 07/04/2013 04:36:26
by David MICHEL (Standard support level)
Joined: 09/23/2009
Posts: 48


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 :

Here my code :
function TAuthSignature.AuthSignature(fnReqXml, fnCleAuth, fnPass: TFileName): Boolean;
  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;  

  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;
    Ref  := TElXMLReference.Create;
      //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;
        C14N.CanonicalizationMethod := xcmCanon;

      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
        Buffer := Ref.TransformChain.TransformData(Ref.URINode);  //??
      else begin
        Buffer := Ref.TransformChain.TransformData(FURINodeList);  //??
        Ref.DigestValue := CalculateDigest(Buffer,length(Buffer),xdmSHA256);

      //Ajout de Ref dans RefListe

    //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);
      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,

Sincerely yours,
Posted: 07/04/2013 04:47:33
by Vsevolod Ievgiienko (Team)

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.
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,



Topic viewed 1150 times

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


Back to top

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

Got it!