Silvio, I had the same requirement for an HMAC and used the DCP library:
http://wiki.freepascal.org/DCPcrypt I then used the following code snippet to generate the HMAC Regards Tony Whyman MWA unit hmac; {$mode objfpc}{$H+} interface uses Classes, SysUtils; procedure MakeHMAC(text: string; var seed: LongInt; var hash: string); function ValidateHMAC(text: string; seed: LongInt; hmac: string): boolean; implementation uses DCPsha1; function GenerateHash(seed: longint; data: string):string; var b1, b2, b3, b4: byte; q: integer; sha1: TDCP_sha1; buffer: PChar; memsize: integer; len: integer; begin len := Length(data); b1 := seed mod 256; q := seed div 256; b2 := q mod 256; q := q div 256; b3 := q mod 256; b4 := q div 256; sha1 := TDCP_sha1.Create(nil); try sha1.Init; memsize := len + 4; buffer := SysGetMem(memsize); try Move(b1,buffer^,1); Move(b2,(buffer+1)^,1); Move(b3,(buffer+2)^,1); Move(b4,(buffer+3)^,1); Move(data[1],(buffer+4)^,len); SHA1.Update(buffer^,len+4); setlength(Result,20); SHA1.Final(Result[1]); finally SysFreeMem(buffer); end; finally sha1.free; end; end; procedure MakeHMAC(text: string; var seed: LongInt; var hash: string); begin Randomize; seed := Round(Random(MaxLongInt)); hash := GenerateHash(seed,text); hash := GenerateHash(seed,hash); end; function ValidateHMAC(text: string; seed: LongInt; hmac: string): boolean; var hash1, hash2: string; begin hash1 := GenerateHash(seed,text); hash2 := GenerateHash(seed,hash1); Result := CompareMem(@(hmac[1]),@(hash2[1]),20) end; end. On 23/03/13 05:28, silvioprog wrote: > Hello, > > How to get HMAC_SHA1 using native functions of FPC? > > HMAC_SHA1: > http://en.wikipedia.org/wiki/Hash-based_message_authentication_code#Examples_of_HMAC_.28MD5.2C_SHA1.2C_SHA256.29 > > Thank you! > > -- > Silvio Clécio > My public projects - github.com/silvioprog <http://github.com/silvioprog> > > > _______________________________________________ > fpc-pascal maillist - fpc-pascal@lists.freepascal.org > http://lists.freepascal.org/mailman/listinfo/fpc-pascal
_______________________________________________ fpc-pascal maillist - fpc-pascal@lists.freepascal.org http://lists.freepascal.org/mailman/listinfo/fpc-pascal