PC Review


Reply
Thread Tools Rate Thread

Cryptography - Signing File

 
 
Allen Holman
Guest
Posts: n/a
 
      31st Jul 2003
I am attempting to write software using the compact
framework that duplicates on a PDA the file signing we
are using on PCs.

So far, I have been able to write software that computes
an identical 20 byte SHA-1 hash on either the PC or PDA.

However, I have been unable to sign the hash and get
identical results. One problem is that I need to import
my private key to the PDA. I have read an written code
to implement the techniques described in Q228786 and this
allows me to import the public / private key pair, and I
have set the key length so both the PC and PDA return 128
bytes of signed data. The problem is that the byte
streams are not identical.

One problem may be mapping the key from one system to the
other. On the PC, I can export the key as an
RSAParameters object. On the PDA side I have to use a
PRIVATEKEYBLOB class to import the key. The two objects
have different variable names and I have mapped them as
follows

RSAParameter PRIVATEKEYBLOB

D -------------- privateExponent
dP ------------- exponent1
dQ ------------- exponent2
IQ ------------- coefficient
Modulus -------- modulus
P -------------- prime1
Q -------------- prime2

This could be a source of my problem if this is not
correct.

The code I am using to import the key follows:

if (CryptExportKey(hPrivateKey,(IntPtr)0, PRIVATEKEYBLOB,
0, bData, ref iLgth))
{
CryptDestroyKey(hPrivateKey);
hPrivateKey = (IntPtr)0;
CreatePrivateExponentOneKey(bData);
CryptImportKey(hProvider, bData, iLgth, (IntPtr)0, 0, ref
hPrivateKey);
CryptDestroyKey(hPrivateKey);
hPrivateKey = (IntPtr)0;
SetMDIPDAPrivateKey(bData,iLgth);
CryptImportKey(hProvider, bData, iLgth, (IntPtr)0,
CRYPT_EXPORTABLE, ref hPrivateKey);
CryptExportKey(hPrivateKey,(IntPtr)0, PRIVATEKEYBLOB, 0,
bData, ref iLgth);
}

The code to sign the hash is as follows:

CryptSignHash(hHash, AT_SIGNATURE, null, 0, bSignature,
ref iLgth);

Any help in getting this to work will be appreciated.

Allen Holman




 
Reply With Quote
 
 
 
 
Yan-Hong Huang[MSFT]
Guest
Posts: n/a
 
      4th Aug 2003
Hello Allen,

After reviewing the describtion carefully, I feel it would be best to post this question in the following newsgroup:

Microsoft.public.PlatfromSDK.Security

All Cryptography related issues, configuration and other questions are posted in the newsgroup above.

The reason why we recommend posting appropriately is you will get the most qualified pool of respondents, and other
partners who the newsgroups regularly can either share their knowledge or learn from your interaction with us. Also, this is to
make sure that the responders can better track the problem Thank you for your understanding.

Thanks again for using Microsoft MSDN Newsgroups.

Best regards,
Yanhong Huang
Microsoft Online Partner Support

Get Secure! - www.microsoft.com/security
This posting is provided "AS IS" with no warranties, and confers no rights.

--------------------
!Content-Class: urn:content-classes:message
!From: "Allen Holman" <(E-Mail Removed)>
!Sender: "Allen Holman" <(E-Mail Removed)>
!Subject: Cryptography - Signing File
!Date: Thu, 31 Jul 2003 12:32:22 -0700
!Lines: 67
!Message-ID: <037201c3579a$76af0eb0$(E-Mail Removed)>
!MIME-Version: 1.0
!Content-Type: text/plain;
! charset="iso-8859-1"
!Content-Transfer-Encoding: 7bit
!X-Newsreader: Microsoft CDO for Windows 2000
!X-MimeOLE: Produced By Microsoft MimeOLE V5.50.4910.0300
!Thread-Index: AcNXmnavU1cx1u8yToyebd13tcebDQ==
!Newsgroups: microsoft.public.dotnet.framework
!Path: cpmsftngxa06.phx.gbl
!Xref: cpmsftngxa06.phx.gbl microsoft.public.dotnet.framework:50274
!NNTP-Posting-Host: TK2MSFTNGXA11 10.40.1.163
!X-Tomcat-NG: microsoft.public.dotnet.framework
!
!I am attempting to write software using the compact
!framework that duplicates on a PDA the file signing we
!are using on PCs.
!
!So far, I have been able to write software that computes
!an identical 20 byte SHA-1 hash on either the PC or PDA.
!
!However, I have been unable to sign the hash and get
!identical results. One problem is that I need to import
!my private key to the PDA. I have read an written code
!to implement the techniques described in Q228786 and this
!allows me to import the public / private key pair, and I
!have set the key length so both the PC and PDA return 128
!bytes of signed data. The problem is that the byte
!streams are not identical.
!
!One problem may be mapping the key from one system to the
!other. On the PC, I can export the key as an
!RSAParameters object. On the PDA side I have to use a
!PRIVATEKEYBLOB class to import the key. The two objects
!have different variable names and I have mapped them as
!follows
!
!RSAParameter PRIVATEKEYBLOB
!
!D -------------- privateExponent
!dP ------------- exponent1
!dQ ------------- exponent2
!IQ ------------- coefficient
!Modulus -------- modulus
!P -------------- prime1
!Q -------------- prime2
!
!This could be a source of my problem if this is not
!correct.
!
!The code I am using to import the key follows:
!
!if (CryptExportKey(hPrivateKey,(IntPtr)0, PRIVATEKEYBLOB,
!0, bData, ref iLgth))
!{
!CryptDestroyKey(hPrivateKey);
!hPrivateKey = (IntPtr)0;
!CreatePrivateExponentOneKey(bData);
!CryptImportKey(hProvider, bData, iLgth, (IntPtr)0, 0, ref
!hPrivateKey);
!CryptDestroyKey(hPrivateKey);
!hPrivateKey = (IntPtr)0;
!SetMDIPDAPrivateKey(bData,iLgth);
!CryptImportKey(hProvider, bData, iLgth, (IntPtr)0,
!CRYPT_EXPORTABLE, ref hPrivateKey);
!CryptExportKey(hPrivateKey,(IntPtr)0, PRIVATEKEYBLOB, 0,
!bData, ref iLgth);
!}
!
!The code to sign the hash is as follows:
!
!CryptSignHash(hHash, AT_SIGNATURE, null, 0, bSignature,
!ref iLgth);
!
!Any help in getting this to work will be appreciated.
!
!Allen Holman
!
!
!
!
!


 
Reply With Quote
 
Allen Holman
Guest
Posts: n/a
 
      5th Aug 2003
Hello Yanhong,

I will do so today. Thanks!

Allen

>-----Original Message-----
>Hello Allen,
>
>After reviewing the describtion carefully, I feel it

would be best to post this question in the following
newsgroup:
>
>Microsoft.public.PlatfromSDK.Security
>
>All Cryptography related issues, configuration and other

questions are posted in the newsgroup above.
>
>The reason why we recommend posting appropriately is you

will get the most qualified pool of respondents, and
other
>partners who the newsgroups regularly can either share

their knowledge or learn from your interaction with us.
Also, this is to
>make sure that the responders can better track the

problem Thank you for your understanding.
>
>Thanks again for using Microsoft MSDN Newsgroups.
>
>Best regards,
>Yanhong Huang
>Microsoft Online Partner Support
>
>Get Secure! - www.microsoft.com/security
>This posting is provided "AS IS" with no warranties, and

confers no rights.
>
>--------------------
>!Content-Class: urn:content-classes:message
>!From: "Allen Holman" <(E-Mail Removed)>
>!Sender: "Allen Holman" <(E-Mail Removed)>
>!Subject: Cryptography - Signing File
>!Date: Thu, 31 Jul 2003 12:32:22 -0700
>!Lines: 67
>!Message-ID: <037201c3579a$76af0eb0$(E-Mail Removed)>
>!MIME-Version: 1.0
>!Content-Type: text/plain;
>! charset="iso-8859-1"
>!Content-Transfer-Encoding: 7bit
>!X-Newsreader: Microsoft CDO for Windows 2000
>!X-MimeOLE: Produced By Microsoft MimeOLE V5.50.4910.0300
>!Thread-Index: AcNXmnavU1cx1u8yToyebd13tcebDQ==
>!Newsgroups: microsoft.public.dotnet.framework
>!Path: cpmsftngxa06.phx.gbl
>!Xref: cpmsftngxa06.phx.gbl

microsoft.public.dotnet.framework:50274
>!NNTP-Posting-Host: TK2MSFTNGXA11 10.40.1.163
>!X-Tomcat-NG: microsoft.public.dotnet.framework
>!
>!I am attempting to write software using the compact
>!framework that duplicates on a PDA the file signing we
>!are using on PCs.
>!
>!So far, I have been able to write software that

computes
>!an identical 20 byte SHA-1 hash on either the PC or

PDA.
>!
>!However, I have been unable to sign the hash and get
>!identical results. One problem is that I need to

import
>!my private key to the PDA. I have read an written code
>!to implement the techniques described in Q228786 and

this
>!allows me to import the public / private key pair, and

I
>!have set the key length so both the PC and PDA return

128
>!bytes of signed data. The problem is that the byte
>!streams are not identical.
>!
>!One problem may be mapping the key from one system to

the
>!other. On the PC, I can export the key as an
>!RSAParameters object. On the PDA side I have to use a
>!PRIVATEKEYBLOB class to import the key. The two

objects
>!have different variable names and I have mapped them as
>!follows
>!
>!RSAParameter PRIVATEKEYBLOB
>!
>!D -------------- privateExponent
>!dP ------------- exponent1
>!dQ ------------- exponent2
>!IQ ------------- coefficient
>!Modulus -------- modulus
>!P -------------- prime1
>!Q -------------- prime2
>!
>!This could be a source of my problem if this is not
>!correct.
>!
>!The code I am using to import the key follows:
>!
>!if (CryptExportKey(hPrivateKey,(IntPtr)0,

PRIVATEKEYBLOB,
>!0, bData, ref iLgth))
>!{
>!CryptDestroyKey(hPrivateKey);
>!hPrivateKey = (IntPtr)0;
>!CreatePrivateExponentOneKey(bData);
>!CryptImportKey(hProvider, bData, iLgth, (IntPtr)0, 0,

ref
>!hPrivateKey);
>!CryptDestroyKey(hPrivateKey);
>!hPrivateKey = (IntPtr)0;
>!SetMDIPDAPrivateKey(bData,iLgth);
>!CryptImportKey(hProvider, bData, iLgth, (IntPtr)0,
>!CRYPT_EXPORTABLE, ref hPrivateKey);
>!CryptExportKey(hPrivateKey,(IntPtr)0, PRIVATEKEYBLOB,

0,
>!bData, ref iLgth);
>!}
>!
>!The code to sign the hash is as follows:
>!
>!CryptSignHash(hHash, AT_SIGNATURE, null, 0, bSignature,
>!ref iLgth);
>!
>!Any help in getting this to work will be appreciated.
>!
>!Allen Holman
>!
>!
>!
>!
>!
>
>
>.
>

 
Reply With Quote
 
Yan-Hong Huang[MSFT]
Guest
Posts: n/a
 
      6th Aug 2003
Hi Allen,

Thanks very much for your understanding.

And thanks for participating the community.

Best regards,
Yanhong Huang
Microsoft Online Partner Support

Get Secure! - www.microsoft.com/security
This posting is provided "AS IS" with no warranties, and confers no rights.

--------------------
!Content-Class: urn:content-classes:message
!From: "Allen Holman" <(E-Mail Removed)>
!Sender: "Allen Holman" <(E-Mail Removed)>
!References: <037201c3579a$76af0eb0$(E-Mail Removed)> <UxPaB$(E-Mail Removed)>
!Subject: RE: Cryptography - Signing File
!Date: Tue, 5 Aug 2003 08:28:04 -0700
!Lines: 142
!Message-ID: <0dec01c35b66$2a077730$(E-Mail Removed)>
!MIME-Version: 1.0
!Content-Type: text/plain;
! charset="iso-8859-1"
!Content-Transfer-Encoding: 7bit
!X-Newsreader: Microsoft CDO for Windows 2000
!X-MimeOLE: Produced By Microsoft MimeOLE V5.50.4910.0300
!Thread-Index: AcNbZioH0VqSfGwfR+WdakRUNDA7+Q==
!Newsgroups: microsoft.public.dotnet.framework
!Path: cpmsftngxa06.phx.gbl
!Xref: cpmsftngxa06.phx.gbl microsoft.public.dotnet.framework:50593
!NNTP-Posting-Host: TK2MSFTNGXA12 10.40.1.164
!X-Tomcat-NG: microsoft.public.dotnet.framework
!
!Hello Yanhong,
!
!I will do so today. Thanks!
!
!Allen
!
!>-----Original Message-----
!>Hello Allen,
!>
!>After reviewing the describtion carefully, I feel it
!would be best to post this question in the following
!newsgroup:
!>
!>Microsoft.public.PlatfromSDK.Security
!>
!>All Cryptography related issues, configuration and other
!questions are posted in the newsgroup above.
!>
!>The reason why we recommend posting appropriately is you
!will get the most qualified pool of respondents, and
!other
!>partners who the newsgroups regularly can either share
!their knowledge or learn from your interaction with us.
!Also, this is to
!>make sure that the responders can better track the
!problem Thank you for your understanding.
!>
!>Thanks again for using Microsoft MSDN Newsgroups.
!>
!>Best regards,
!>Yanhong Huang
!>Microsoft Online Partner Support
!>
!>Get Secure! - www.microsoft.com/security
!>This posting is provided "AS IS" with no warranties, and
!confers no rights.
!>
!>--------------------
!>!Content-Class: urn:content-classes:message
!>!From: "Allen Holman" <(E-Mail Removed)>
!>!Sender: "Allen Holman" <(E-Mail Removed)>
!>!Subject: Cryptography - Signing File
!>!Date: Thu, 31 Jul 2003 12:32:22 -0700
!>!Lines: 67
!>!Message-ID: <037201c3579a$76af0eb0$(E-Mail Removed)>
!>!MIME-Version: 1.0
!>!Content-Type: text/plain;
!>! charset="iso-8859-1"
!>!Content-Transfer-Encoding: 7bit
!>!X-Newsreader: Microsoft CDO for Windows 2000
!>!X-MimeOLE: Produced By Microsoft MimeOLE V5.50.4910.0300
!>!Thread-Index: AcNXmnavU1cx1u8yToyebd13tcebDQ==
!>!Newsgroups: microsoft.public.dotnet.framework
!>!Path: cpmsftngxa06.phx.gbl
!>!Xref: cpmsftngxa06.phx.gbl
!microsoft.public.dotnet.framework:50274
!>!NNTP-Posting-Host: TK2MSFTNGXA11 10.40.1.163
!>!X-Tomcat-NG: microsoft.public.dotnet.framework
!>!
!>!I am attempting to write software using the compact
!>!framework that duplicates on a PDA the file signing we
!>!are using on PCs.
!>!
!>!So far, I have been able to write software that
!computes
!>!an identical 20 byte SHA-1 hash on either the PC or
!PDA.
!>!
!>!However, I have been unable to sign the hash and get
!>!identical results. One problem is that I need to
!import
!>!my private key to the PDA. I have read an written code
!>!to implement the techniques described in Q228786 and
!this
!>!allows me to import the public / private key pair, and
!I
!>!have set the key length so both the PC and PDA return
!128
!>!bytes of signed data. The problem is that the byte
!>!streams are not identical.
!>!
!>!One problem may be mapping the key from one system to
!the
!>!other. On the PC, I can export the key as an
!>!RSAParameters object. On the PDA side I have to use a
!>!PRIVATEKEYBLOB class to import the key. The two
!objects
!>!have different variable names and I have mapped them as
!>!follows
!>!
!>!RSAParameter PRIVATEKEYBLOB
!>!
!>!D -------------- privateExponent
!>!dP ------------- exponent1
!>!dQ ------------- exponent2
!>!IQ ------------- coefficient
!>!Modulus -------- modulus
!>!P -------------- prime1
!>!Q -------------- prime2
!>!
!>!This could be a source of my problem if this is not
!>!correct.
!>!
!>!The code I am using to import the key follows:
!>!
!>!if (CryptExportKey(hPrivateKey,(IntPtr)0,
!PRIVATEKEYBLOB,
!>!0, bData, ref iLgth))
!>!{
!>!CryptDestroyKey(hPrivateKey);
!>!hPrivateKey = (IntPtr)0;
!>!CreatePrivateExponentOneKey(bData);
!>!CryptImportKey(hProvider, bData, iLgth, (IntPtr)0, 0,
!ref
!>!hPrivateKey);
!>!CryptDestroyKey(hPrivateKey);
!>!hPrivateKey = (IntPtr)0;
!>!SetMDIPDAPrivateKey(bData,iLgth);
!>!CryptImportKey(hProvider, bData, iLgth, (IntPtr)0,
!>!CRYPT_EXPORTABLE, ref hPrivateKey);
!>!CryptExportKey(hPrivateKey,(IntPtr)0, PRIVATEKEYBLOB,
!0,
!>!bData, ref iLgth);
!>!}
!>!
!>!The code to sign the hash is as follows:
!>!
!>!CryptSignHash(hHash, AT_SIGNATURE, null, 0, bSignature,
!>!ref iLgth);
!>!
!>!Any help in getting this to work will be appreciated.
!>!
!>!Allen Holman
!>!
!>!
!>!
!>!
!>!
!>
!>
!>.
!>
!


 
Reply With Quote
 
 
 
Reply

Thread Tools
Rate This Thread
Rate This Thread:

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Trackbacks are On
Pingbacks are On
Refbacks are Off


Similar Threads
Thread Thread Starter Forum Replies Last Post
Problem with signing assemblies using AL.exe (Strong name signing an unsigned assembly) Poggs Microsoft C# .NET 0 4th Mar 2008 01:22 AM
Signing with PFX file using CSC l0b0 Microsoft C# .NET 1 11th Oct 2007 10:20 AM
System.Security.Cryptography and OpenNETCF.Security.Cryptography Jeffry van de Vuurst Microsoft Dot NET Compact Framework 3 13th Dec 2006 02:46 PM
Signing a CAB file =?Utf-8?B?TmFkYXY=?= Microsoft C# .NET 1 31st May 2006 09:34 AM
Cryptography - File Signing Allen Holman Microsoft Dot NET Framework 2 6th Aug 2003 01:30 AM


Features
 

Advertising
 

Newsgroups
 


All times are GMT +1. The time now is 09:35 AM.