Hi all again.
I have a problem with encrypting and decrypting. I am sure the problem is when 
I am loading the key to decrypt..but maybe someone can point me into the good 
direction.

I made a couple of functions to use in the program. First, I create a key using:



Myfunc_Createkey()

{

      TSS_UUID    SRK_UUID = TSS_UUID_SRK;

initFlags = TSS_KEY_TYPE_BIND |
TSS_KEY_SIZE_512 | TSS_KEY_NO_AUTHORIZATION | TSS_KEY_NOT_MIGRATABLE;

      

Tspi_Context_LoadKeyByUUID(hContext,TSS_PS_TYPE_SYSTEM,SRK_UUID,&hSRK);

 

Tspi_Context_CreateObject(hContext,TSS_OBJECT_TYPE_POLICY,
TSS_POLICY_USAGE, &hPolicySRK);

 

Tspi_GetPolicyObject(hSRK,
TSS_POLICY_USAGE, &hPolicySRK);

 

Tspi_Policy_SetSecret(hPolicySRK,
TSS_SECRET_MODE_PLAIN, secret_srk_len, (BYTE*)secret_srk);

 

Tspi_Policy_AssignToObject(hPolicySRK,
hSRK);

 

Tspi_Context_CreateObject(hContext,TSS_OBJECT_TYPE_RSAKEY,initFlags,&hKey);

 

Tspi_SetAttribUint32(hKey,TSS_TSPATTRIB_KEY_INFO,TSS_TSPATTRIB_KEYINFO_ENCSCHEME,TSS_ES_RSAESPKCSV15);

 

Tspi_Key_CreateKey(hKey,hSRK,0);

 

 

      UINT32 outSize;

      BYTE *out;

      FILE *fKey=fopen("hKey.key","w");

 



Tspi_GetAttribData(hKey,TSS_TSPATTRIB_KEY_BLOB,TSS_TSPATTRIB_KEYBLOB_BLOB,&outSize,&out);

      

out[outSize]='\0';

      fwrite(out,1,outSize,fKey);

}
Here I am trying to write the key Blob to a file, so I can load it when I want 
to decrypt a file. I want to encrypt/decrypt a file that contains the symmetric 
key.
Now i do the encryption using this function:

Myfunc_BindData()

{

      TSS_HENCDATA
hEncData;

      UINT32
keySize,outSize,inSize;

      BYTE *out,*in;

 

 

      Myfunc_Createkey();

 

      result =
Tspi_Key_LoadKey(hKey,hSRK);

 

 

      FILE
*fOut,*fIn=fopen("keytoencrypt.txt","r");

      fseek(fIn,0,SEEK_END);

      inSize=ftell(fIn);

      rewind(fIn);

      in=new unsigned char[inSize];

      fread(in,1,inSize,fIn);

      in[inSize]='\0';

      fclose(fIn);

      

 

Tspi_Context_CreateObject(hContext,TSS_OBJECT_TYPE_ENCDATA,TSS_ENCDATA_BIND,
&hEncData );

      

Tspi_GetAttribUint32( hKey, TSS_TSPATTRIB_KEY_INFO,TSS_TSPATTRIB_KEYINFO_SIZE,
&keySize );

            

Tspi_Data_Bind( hEncData, hKey, inSize,
in);

      

 

Tspi_GetAttribData(hEncData,TSS_TSPATTRIB_ENCDATA_BLOB,TSS_TSPATT
RIB_ENCDATABLOB_BLOB,&outSize,&out);

      

 

      out[outSize]='\0';

      fOut=fopen("encryptedkey.txt","w");

      fwrite(out,1,outSize,fOut);

 

 

      Tspi_Key_UnloadKey(hKey);

      Tspi_Context_CloseObject(hContext,hKey);

      Tspi_Context_CloseObject(
hContext, hEncData);

 

      return 0;

}


If I try to encrypt here using Tspi_data_unbind it works perfect. But if try to 
load the key used at the encryption from the blob saved to the file, I am 
having problems. Here is what I've tryed:


Myfunc_UnbindData()

{

      TSS_UUID    SRK_UUID = TSS_UUID_SRK;

initFlags = TSS_KEY_TYPE_BIND |
TSS_KEY_SIZE_512 | TSS_KEY_NO_AUTHORIZATION | TSS_KEY_NOT_MIGRATABLE;

      TSS_HENCDATA
hEncData;

      UINT32
outSize,inSize;

      BYTE *out,*in;

 

Tspi_Context_LoadKeyByUUID(hContext,TSS_PS_TYPE_SYSTEM,SRK_UUID,&hSRK);

 

Tspi_Context_CreateObject(hContext,TSS_OBJECT_TYPE_POLICY,
TSS_POLICY_USAGE, &hPolicySRK);

            

      Tspi_GetPolicyObject(hSRK,
TSS_POLICY_USAGE, &hPolicySRK);

      

Tspi_Policy_SetSecret(hPolicySRK,
TSS_SECRET_MODE_PLAIN, secret_srk_len, (BYTE*)secret_srk);

 

Tspi_Policy_AssignToObject(hPolicySRK,
hSRK);

      

 

      FILE *fKey=fopen("hKey.key","r");

      UINT32 keySize;

      BYTE *key;

 

 

      fseek(fKey,0,SEEK_END);

      keySize=ftell(fKey);

      rewind(fKey);

      key=new unsigned
char[keySize];

      fread(key,1,keySize,fKey);

      key[keySize]='\0';

      fclose(fKey);

 

 

Tspi_Context_CreateObject(hContext,TSS_OBJECT_TYPE_RSAKEY,initFlags,&hKey);

 

Tspi_SetAttribUint32(hKey,TSS_TSPATTRIB_KEY_INFO,TSS_TSPATTRIB_KEYINFO_ENCSCHEME,TSS_ES_RSAESPKCSV15);

      

Tspi_SetAttribData(hKey,TSS_TSPATTRIB_KEY_BLOB,TSS_TSPATTRIB_KEYBLOB_BLOB,keySize,key);

 

Tspi_Context_LoadKeyByBlob(hContext,hSRK,keySize,key,&hKey);

 //Here I get an error, so I guess it is a problem with the write/read key blob 
from file.


//Tspi_Key_LoadKey(hKey,hSRK);

 

 

FILE *fIn=fopen("encryptedkey.txt","r");

      fseek(fIn,0,SEEK_END);

      inSize=ftell(fIn);

      rewind(fIn);

      in=new unsigned
char[inSize];

      fread(in,1,inSize,fIn);

      in[inSize]='\0';

      fclose(fIn);

 

 

Tspi_Context_CreateObject(hContext,TSS_OBJECT_TYPE_ENCDATA,TSS_ENCDATA_BIND,
&hEncData );

      

Tspi_SetAttribData(
hEncData,TSS_TSPATTRIB_ENCDATA_BLOB, TSS_TSPATTRIB_ENCDATABLOB_BLOB, inSize, in
);

      

Tspi_Data_Unbind( hEncData, hKey,
&outSize, &out);

 

      

      FILE *fOut=fopen("backtoplaintext.txt","w");

      fwrite(out,1,outSize,fOut);

      

      return 0;

}
Any ideea will be much apreciated, 10x for the time.



------------------------------------------------------------------------------
Achieve unprecedented app performance and reliability
What every C/C++ and Fortran developer should know.
Learn how Intel has extended the reach of its next-generation tools
to help boost performance applications - inlcuding clusters.
http://p.sf.net/sfu/intel-dev2devmay
_______________________________________________
TrouSerS-users mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/trousers-users

Reply via email to