<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" version="2.0">
  <channel>
    <title>topic cryptography: ippsECCPSignDSA example in Intel® Integrated Performance Primitives</title>
    <link>https://community.intel.com/t5/Intel-Integrated-Performance/cryptography-ippsECCPSignDSA-example/m-p/902623#M12976</link>
    <description>Hello,&lt;BR /&gt;as a newcomer I'm trying to write a simple example to ippsECCPSignDSA.&lt;BR /&gt;What should I change to obtain valid signature with this code:&lt;BR /&gt;&lt;BR /&gt;#include "ippcore.h"&lt;BR /&gt;#include "ippcp.h"&lt;BR /&gt;#include "bignum.h"&lt;BR /&gt;#include &lt;STDIO.H&gt;&lt;BR /&gt;#include "cpobjs.h"&lt;BR /&gt;&lt;BR /&gt;int main(){&lt;BR /&gt;int pSize;&lt;BR /&gt;int feBitSize=256;&lt;BR /&gt;&lt;BR /&gt;// Standart EC 256r1 Setting&lt;BR /&gt;ippsECCPGetSize(feBitSize,&amp;amp;pSize);&lt;BR /&gt;//cout &amp;lt;&amp;lt; "pSize: " &amp;lt;&amp;lt; pSize&amp;lt;&amp;lt; endl;&lt;BR /&gt;IppsECCPState* pECC=(IppsECCPState *)(new Ipp8u [pSize]);&lt;BR /&gt;ippsECCPInit(feBitSize,pECC);&lt;BR /&gt;ippsECCPSetStd(IppECCPStd256r1,pECC);&lt;BR /&gt;&lt;BR /&gt;// ECValidation&lt;BR /&gt;IppsPRNGState* pRand=newPRNG(); &lt;BR /&gt;int nTrials=20;&lt;BR /&gt;IppECResult pResult;&lt;BR /&gt;ippsECCPValidate(nTrials,&amp;amp;pResult,pECC,ippsPRNGen,pRand);//pRand pPrng&lt;BR /&gt;cout &amp;lt;&amp;lt; "ECValidation: " &amp;lt;&amp;lt; ippsECCGetResultString(pResult) &amp;lt;&amp;lt; endl;&lt;BR /&gt;//ECValidation: Validation pass successfully&lt;BR /&gt;&lt;BR /&gt;// Regular Keys&lt;BR /&gt;int pPointSize;&lt;BR /&gt;ippsECCPPointGetSize(feBitSize,&amp;amp;pPointSize);&lt;BR /&gt;IppsBigNumState* pPrivate = newBN(feBitSize/32); ////???&lt;BR /&gt;IppsECCPPointState* pPublic=(IppsECCPPointState *)(new Ipp8u [pPointSize]);&lt;BR /&gt;ippsECCPPointInit(feBitSize,pPublic);&lt;BR /&gt;ippsECCPGenKeyPair(pPrivate,pPublic,pECC,ippsPRNGen,pRand);&lt;BR /&gt;ippsECCPSetKeyPair(pPrivate,pPublic,ippTrue,pECC);&lt;BR /&gt;ippsECCPValidateKeyPair(pPrivate,pPublic,&amp;amp;pResult,pECC);&lt;BR /&gt;cout &amp;lt;&amp;lt; "regKeyPairValidation: "&amp;lt;&amp;lt; ippsECCGetResultString(pResult) &amp;lt;&amp;lt; endl;&lt;BR /&gt;//regKeyPairValidation: Validation pass successfully&lt;BR /&gt;&lt;BR /&gt;// Digest&lt;BR /&gt;Ipp32u ddat[] = {&lt;BR /&gt; 0xBEAD208B, 0x5E668076, 0x2ABF62E3, 0xDB7C000};&lt;BR /&gt;IppsBigNumState* digest=newBN(feBitSize/32,ddat);&lt;BR /&gt;&lt;BR /&gt;// Ephemeral Keys&lt;BR /&gt;IppsBigNumState* pephPrivate = newBN(feBitSize/32);////???&lt;BR /&gt;IppsECCPPointState* pephPublic=(IppsECCPPointState *)(new Ipp8u [pPointSize]);&lt;BR /&gt;ippsECCPGenKeyPair(pephPrivate,pephPublic,pECC,ippsPRNGen,pRand);&lt;BR /&gt;ippsECCPSetKeyPair(pephPrivate,pephPublic,ippFalse,pECC);&lt;BR /&gt;ippsECCPPublicKey(pephPrivate,pephPublic,pECC);&lt;BR /&gt;ippsECCPValidateKeyPair(pephPrivate,pephPublic,&amp;amp;pResult,pECC);&lt;BR /&gt;cout &amp;lt;&amp;lt; "ephKeyPairValidation: "&amp;lt;&amp;lt; ippsECCGetResultString(pResult) &amp;lt;&amp;lt; endl;&lt;BR /&gt;//ephKeyPairValidation: Validation pass successfully&lt;BR /&gt;&lt;BR /&gt;// Signature&lt;BR /&gt;IppsBigNumState* pSignX = newBN(feBitSize/32);////???&lt;BR /&gt;IppsBigNumState* pSignY = newBN(feBitSize/32);////???&lt;BR /&gt;IppStatus w;&lt;BR /&gt;w=ippsECCPSignDSA(digest,pPrivate,pSignX,pSignY,pECC);&lt;BR /&gt;cout &amp;lt;&amp;lt; "Sign: "&amp;lt;&lt;IPPGETSTATUSSTRING&gt;&lt;/IPPGETSTATUSSTRING&gt;//Sign: ippStsNoErr: No error, it's OK&lt;BR /&gt;&lt;BR /&gt;//Verification&lt;BR /&gt;w=ippsECCPVerifyDSA(digest,pSignX,pSignY,&amp;amp;pResult,pECC);&lt;BR /&gt;cout &amp;lt;&amp;lt; "Verify: "&amp;lt;&amp;lt; ippsECCGetResultString(pResult) &amp;lt;&amp;lt; endl;&lt;BR /&gt;//Verify: Invalid Signature // !!!&lt;BR /&gt;cout &amp;lt;&amp;lt;"Verify: "&amp;lt;&amp;lt; ippGetStatusString(w) &amp;lt;&amp;lt; endl;&lt;BR /&gt;//Verify: ippStsNoErr: No error, it's OK&lt;BR /&gt;return 0;&lt;BR /&gt;}&lt;BR /&gt;&lt;BR /&gt;A. Chrzeszczyk&lt;/STDIO.H&gt;</description>
    <pubDate>Wed, 05 Aug 2009 14:04:44 GMT</pubDate>
    <dc:creator>achrzesz2</dc:creator>
    <dc:date>2009-08-05T14:04:44Z</dc:date>
    <item>
      <title>cryptography: ippsECCPSignDSA example</title>
      <link>https://community.intel.com/t5/Intel-Integrated-Performance/cryptography-ippsECCPSignDSA-example/m-p/902623#M12976</link>
      <description>Hello,&lt;BR /&gt;as a newcomer I'm trying to write a simple example to ippsECCPSignDSA.&lt;BR /&gt;What should I change to obtain valid signature with this code:&lt;BR /&gt;&lt;BR /&gt;#include "ippcore.h"&lt;BR /&gt;#include "ippcp.h"&lt;BR /&gt;#include "bignum.h"&lt;BR /&gt;#include &lt;STDIO.H&gt;&lt;BR /&gt;#include "cpobjs.h"&lt;BR /&gt;&lt;BR /&gt;int main(){&lt;BR /&gt;int pSize;&lt;BR /&gt;int feBitSize=256;&lt;BR /&gt;&lt;BR /&gt;// Standart EC 256r1 Setting&lt;BR /&gt;ippsECCPGetSize(feBitSize,&amp;amp;pSize);&lt;BR /&gt;//cout &amp;lt;&amp;lt; "pSize: " &amp;lt;&amp;lt; pSize&amp;lt;&amp;lt; endl;&lt;BR /&gt;IppsECCPState* pECC=(IppsECCPState *)(new Ipp8u [pSize]);&lt;BR /&gt;ippsECCPInit(feBitSize,pECC);&lt;BR /&gt;ippsECCPSetStd(IppECCPStd256r1,pECC);&lt;BR /&gt;&lt;BR /&gt;// ECValidation&lt;BR /&gt;IppsPRNGState* pRand=newPRNG(); &lt;BR /&gt;int nTrials=20;&lt;BR /&gt;IppECResult pResult;&lt;BR /&gt;ippsECCPValidate(nTrials,&amp;amp;pResult,pECC,ippsPRNGen,pRand);//pRand pPrng&lt;BR /&gt;cout &amp;lt;&amp;lt; "ECValidation: " &amp;lt;&amp;lt; ippsECCGetResultString(pResult) &amp;lt;&amp;lt; endl;&lt;BR /&gt;//ECValidation: Validation pass successfully&lt;BR /&gt;&lt;BR /&gt;// Regular Keys&lt;BR /&gt;int pPointSize;&lt;BR /&gt;ippsECCPPointGetSize(feBitSize,&amp;amp;pPointSize);&lt;BR /&gt;IppsBigNumState* pPrivate = newBN(feBitSize/32); ////???&lt;BR /&gt;IppsECCPPointState* pPublic=(IppsECCPPointState *)(new Ipp8u [pPointSize]);&lt;BR /&gt;ippsECCPPointInit(feBitSize,pPublic);&lt;BR /&gt;ippsECCPGenKeyPair(pPrivate,pPublic,pECC,ippsPRNGen,pRand);&lt;BR /&gt;ippsECCPSetKeyPair(pPrivate,pPublic,ippTrue,pECC);&lt;BR /&gt;ippsECCPValidateKeyPair(pPrivate,pPublic,&amp;amp;pResult,pECC);&lt;BR /&gt;cout &amp;lt;&amp;lt; "regKeyPairValidation: "&amp;lt;&amp;lt; ippsECCGetResultString(pResult) &amp;lt;&amp;lt; endl;&lt;BR /&gt;//regKeyPairValidation: Validation pass successfully&lt;BR /&gt;&lt;BR /&gt;// Digest&lt;BR /&gt;Ipp32u ddat[] = {&lt;BR /&gt; 0xBEAD208B, 0x5E668076, 0x2ABF62E3, 0xDB7C000};&lt;BR /&gt;IppsBigNumState* digest=newBN(feBitSize/32,ddat);&lt;BR /&gt;&lt;BR /&gt;// Ephemeral Keys&lt;BR /&gt;IppsBigNumState* pephPrivate = newBN(feBitSize/32);////???&lt;BR /&gt;IppsECCPPointState* pephPublic=(IppsECCPPointState *)(new Ipp8u [pPointSize]);&lt;BR /&gt;ippsECCPGenKeyPair(pephPrivate,pephPublic,pECC,ippsPRNGen,pRand);&lt;BR /&gt;ippsECCPSetKeyPair(pephPrivate,pephPublic,ippFalse,pECC);&lt;BR /&gt;ippsECCPPublicKey(pephPrivate,pephPublic,pECC);&lt;BR /&gt;ippsECCPValidateKeyPair(pephPrivate,pephPublic,&amp;amp;pResult,pECC);&lt;BR /&gt;cout &amp;lt;&amp;lt; "ephKeyPairValidation: "&amp;lt;&amp;lt; ippsECCGetResultString(pResult) &amp;lt;&amp;lt; endl;&lt;BR /&gt;//ephKeyPairValidation: Validation pass successfully&lt;BR /&gt;&lt;BR /&gt;// Signature&lt;BR /&gt;IppsBigNumState* pSignX = newBN(feBitSize/32);////???&lt;BR /&gt;IppsBigNumState* pSignY = newBN(feBitSize/32);////???&lt;BR /&gt;IppStatus w;&lt;BR /&gt;w=ippsECCPSignDSA(digest,pPrivate,pSignX,pSignY,pECC);&lt;BR /&gt;cout &amp;lt;&amp;lt; "Sign: "&amp;lt;&lt;IPPGETSTATUSSTRING&gt;&lt;/IPPGETSTATUSSTRING&gt;//Sign: ippStsNoErr: No error, it's OK&lt;BR /&gt;&lt;BR /&gt;//Verification&lt;BR /&gt;w=ippsECCPVerifyDSA(digest,pSignX,pSignY,&amp;amp;pResult,pECC);&lt;BR /&gt;cout &amp;lt;&amp;lt; "Verify: "&amp;lt;&amp;lt; ippsECCGetResultString(pResult) &amp;lt;&amp;lt; endl;&lt;BR /&gt;//Verify: Invalid Signature // !!!&lt;BR /&gt;cout &amp;lt;&amp;lt;"Verify: "&amp;lt;&amp;lt; ippGetStatusString(w) &amp;lt;&amp;lt; endl;&lt;BR /&gt;//Verify: ippStsNoErr: No error, it's OK&lt;BR /&gt;return 0;&lt;BR /&gt;}&lt;BR /&gt;&lt;BR /&gt;A. Chrzeszczyk&lt;/STDIO.H&gt;</description>
      <pubDate>Wed, 05 Aug 2009 14:04:44 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-Integrated-Performance/cryptography-ippsECCPSignDSA-example/m-p/902623#M12976</guid>
      <dc:creator>achrzesz2</dc:creator>
      <dc:date>2009-08-05T14:04:44Z</dc:date>
    </item>
    <item>
      <title>Re: cryptography: ippsECCPSignDSA example</title>
      <link>https://community.intel.com/t5/Intel-Integrated-Performance/cryptography-ippsECCPSignDSA-example/m-p/902624#M12977</link>
      <description>&lt;DIV style="margin:0px;"&gt;
&lt;DIV id="quote_reply" style="width: 100%; margin-top: 5px;"&gt;
&lt;DIV style="margin-left:2px;margin-right:2px;"&gt;Quoting - &lt;A href="https://community.intel.com/en-us/profile/434368"&gt;achrzesz2&lt;/A&gt;&lt;/DIV&gt;
&lt;DIV style="background-color:#E5E5E5; padding:5px;border: 1px; border-style: inset;margin-left:2px;margin-right:2px;"&gt;&lt;EM&gt;&lt;/EM&gt;&lt;EM&gt;Hello,&lt;BR /&gt;as a newcomer I'm trying to write a simple example to ippsECCPSignDSA.&lt;BR /&gt;What should I change to obtain valid signature with this code:&lt;BR /&gt;&lt;BR /&gt;#include "ippcore.h"&lt;BR /&gt;#include "ippcp.h"&lt;BR /&gt;#include "bignum.h"&lt;BR /&gt;#include &lt;STDIO.H&gt;&lt;BR /&gt;#include "cpobjs.h"&lt;BR /&gt;&lt;BR /&gt;int main(){&lt;BR /&gt;int pSize;&lt;BR /&gt;int feBitSize=256;&lt;BR /&gt;&lt;BR /&gt;// Standart EC 256r1 Setting&lt;BR /&gt;ippsECCPGetSize(feBitSize,&amp;amp;pSize);&lt;BR /&gt;//cout &amp;lt;&amp;lt; "pSize: " &amp;lt;&amp;lt; pSize&amp;lt;&amp;lt; endl;&lt;BR /&gt;IppsECCPState* pECC=(IppsECCPState *)(new Ipp8u [pSize]);&lt;BR /&gt;ippsECCPInit(feBitSize,pECC);&lt;BR /&gt;ippsECCPSetStd(IppECCPStd256r1,pECC);&lt;BR /&gt;&lt;BR /&gt;// ECValidation&lt;BR /&gt;IppsPRNGState* pRand=newPRNG(); &lt;BR /&gt;int nTrials=20;&lt;BR /&gt;IppECResult pResult;&lt;BR /&gt;ippsECCPValidate(nTrials,&amp;amp;pResult,pECC,ippsPRNGen,pRand);//pRand pPrng&lt;BR /&gt;cout &amp;lt;&amp;lt; "ECValidation: " &amp;lt;&amp;lt; ippsECCGetResultString(pResult) &amp;lt;&amp;lt; endl;&lt;BR /&gt;//ECValidation: Validation pass successfully&lt;BR /&gt;&lt;BR /&gt;// Regular Keys&lt;BR /&gt;int pPointSize;&lt;BR /&gt;ippsECCPPointGetSize(feBitSize,&amp;amp;pPointSize);&lt;BR /&gt;IppsBigNumState* pPrivate = newBN(feBitSize/32); ////???&lt;BR /&gt;IppsECCPPointState* pPublic=(IppsECCPPointState *)(new Ipp8u [pPointSize]);&lt;BR /&gt;ippsECCPPointInit(feBitSize,pPublic);&lt;BR /&gt;ippsECCPGenKeyPair(pPrivate,pPublic,pECC,ippsPRNGen,pRand);&lt;BR /&gt;ippsECCPSetKeyPair(pPrivate,pPublic,ippTrue,pECC);&lt;BR /&gt;ippsECCPValidateKeyPair(pPrivate,pPublic,&amp;amp;pResult,pECC);&lt;BR /&gt;cout &amp;lt;&amp;lt; "regKeyPairValidation: "&amp;lt;&amp;lt; ippsECCGetResultString(pResult) &amp;lt;&amp;lt; endl;&lt;BR /&gt;//regKeyPairValidation: Validation pass successfully&lt;BR /&gt;&lt;BR /&gt;// Digest&lt;BR /&gt;Ipp32u ddat[] = {&lt;BR /&gt; 0xBEAD208B, 0x5E668076, 0x2ABF62E3, 0xDB7C000};&lt;BR /&gt;IppsBigNumState* digest=newBN(feBitSize/32,ddat);&lt;BR /&gt;&lt;BR /&gt;// Ephemeral Keys&lt;BR /&gt;IppsBigNumState* pephPrivate = newBN(feBitSize/32);////???&lt;BR /&gt;IppsECCPPointState* pephPublic=(IppsECCPPointState *)(new Ipp8u [pPointSize]);&lt;BR /&gt;ippsECCPGenKeyPair(pephPrivate,pephPublic,pECC,ippsPRNGen,pRand);&lt;BR /&gt;ippsECCPSetKeyPair(pephPrivate,pephPublic,ippFalse,pECC);&lt;BR /&gt;ippsECCPPublicKey(pephPrivate,pephPublic,pECC);&lt;BR /&gt;ippsECCPValidateKeyPair(pephPrivate,pephPublic,&amp;amp;pResult,pECC);&lt;BR /&gt;cout &amp;lt;&amp;lt; "ephKeyPairValidation: "&amp;lt;&amp;lt; ippsECCGetResultString(pResult) &amp;lt;&amp;lt; endl;&lt;BR /&gt;//ephKeyPairValidation: Validation pass successfully&lt;BR /&gt;&lt;BR /&gt;// Signature&lt;BR /&gt;IppsBigNumState* pSignX = newBN(feBitSize/32);////???&lt;BR /&gt;IppsBigNumState* pSignY = newBN(feBitSize/32);////???&lt;BR /&gt;IppStatus w;&lt;BR /&gt;w=ippsECCPSignDSA(digest,pPrivate,pSignX,pSignY,pECC);&lt;BR /&gt;cout &amp;lt;&amp;lt; "Sign: "&amp;lt;&lt;IPPGETSTATUSSTRING&gt;&lt;/IPPGETSTATUSSTRING&gt;//Sign: ippStsNoErr: No error, it's OK&lt;BR /&gt;&lt;BR /&gt;//Verification&lt;BR /&gt;w=ippsECCPVerifyDSA(digest,pSignX,pSignY,&amp;amp;pResult,pECC);&lt;BR /&gt;cout &amp;lt;&amp;lt; "Verify: "&amp;lt;&amp;lt; ippsECCGetResultString(pResult) &amp;lt;&amp;lt; endl;&lt;BR /&gt;//Verify: Invalid Signature // !!!&lt;BR /&gt;cout &amp;lt;&amp;lt;"Verify: "&amp;lt;&amp;lt; ippGetStatusString(w) &amp;lt;&amp;lt; endl;&lt;BR /&gt;//Verify: ippStsNoErr: No error, it's OK&lt;BR /&gt;return 0;&lt;BR /&gt;}&lt;BR /&gt;&lt;BR /&gt;A. Chrzeszczyk&lt;/STDIO.H&gt;&lt;/EM&gt;&lt;/DIV&gt;
&lt;/DIV&gt;
&lt;/DIV&gt;
&lt;BR /&gt;Hi&lt;BR /&gt;The problem was caused by the  uninitialized Ephemeral Key&lt;BR /&gt;After initialization it's OK.&lt;BR /&gt;achrzesz2&lt;BR /&gt;</description>
      <pubDate>Wed, 12 Aug 2009 08:05:15 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-Integrated-Performance/cryptography-ippsECCPSignDSA-example/m-p/902624#M12977</guid>
      <dc:creator>achrzesz2</dc:creator>
      <dc:date>2009-08-12T08:05:15Z</dc:date>
    </item>
    <item>
      <title>Re: cryptography: ippsECCPSignDSA example</title>
      <link>https://community.intel.com/t5/Intel-Integrated-Performance/cryptography-ippsECCPSignDSA-example/m-p/902625#M12978</link>
      <description>&lt;DIV style="margin:0px;"&gt;&lt;/DIV&gt;
&lt;BR /&gt;Thanks for update on this and glad to hear it work for you.&lt;BR /&gt;&lt;BR /&gt;Vladimir</description>
      <pubDate>Wed, 12 Aug 2009 10:04:18 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-Integrated-Performance/cryptography-ippsECCPSignDSA-example/m-p/902625#M12978</guid>
      <dc:creator>Vladimir_Dudnik</dc:creator>
      <dc:date>2009-08-12T10:04:18Z</dc:date>
    </item>
  </channel>
</rss>

