From: Ronald T. <ron...@ia...> - 2009-09-09 09:04:03
|
Hi, The data you bind must be encrypted in a tdTPM_BOUND_DATA structure, the definition of which can be found in the TPM specifications. Ronald Arshad Noor wrote: > Hi, > > Recently started testing native JTSS 0.41. All tests pass on my > system (JDK6U15 64-bit on CentOS 5.3; TPM is an STM 1.2.4.30). > > When I try to encrypt data or a symmetric key (using SunJCE) with > an RSAPublicKey (whose Bind Key was generated in the TPM) and > decrypt the ciphertext with the Bind Key in the TPM, I run into > the following exception consistently: > > --------------------- > iaik.tc.tss.api.exceptions.tcs.TcTpmException: > > TSS Error: > error layer: 0x00 (TPM) > error code (without layer): 0x21 > error code (full): 0x21 > error message: The decryption process did not complete. > > at > iaik.tc.tss.impl.java.tcs.pbg.TcTpmCmdCommon.handleRetCode(TcTpmCmdCommon.java:73) > at > iaik.tc.tss.impl.java.tcs.pbg.TcTpmCmdStorage.TpmUnBind(TcTpmCmdStorage.java:244) > at > iaik.tc.tss.impl.java.tcs.tcsi.TcTcsi.TcsipUnBind(TcTcsi.java:1638) > at > iaik.tc.tss.impl.java.tsp.tcsbinding.local.TcTcsBindingLocal.TcsipUnBind(TcTcsBindingLocal.java:442) > at > iaik.tc.tss.impl.java.tsp.internal.TcTspInternal.TspUnBind_Internal(TcTspInternal.java:1766) > at iaik.tc.tss.impl.java.tsp.TcEncData.unbind(TcEncData.java:221) > at > jtss.BindDataWithJCEUnbindWithTPM.main(BindDataWithJCEUnbindWithTPM.java:97) > --------------------- > > I presume that it should be possible to do what I'm doing; I > didn't see anything that might otherwise indicate that it was > not possible. Here is the relevant section of the code that > I'm using; it is the unbind() method that causes the problem: > > ------------------------ > String plaintext = "To be....or not to be; that is the question!"; > Cipher cipher = Cipher.getInstance("RSA/ECB/PKCS1Padding"); > cipher.init(Cipher.ENCRYPT_MODE, rsabindkey); > byte[] ciphertext = cipher.doFinal(plaintext.getBytes()); > TcIEncData encdataobject = > tpmctx.createEncDataObject(TcTssConstants.TSS_ENCDATA_BIND); > encdataobject.setAttribData(TcTssConstants.TSS_TSPATTRIB_ENCDATA_BLOB, > TcTssConstants.TSS_TSPATTRIB_ENCDATABLOB_BLOB, > TcBlobData.newByteArray(ciphertext)); > bindkey.loadKey(srk); > TcBlobData ptobject = encdataobject.unbind(bindkey); > ------------------------ > > I get the same exception even if I use "NoPadding" in my > cipher's transform. > > Thanks for your help. > > Arshad Noor > StrongAuth, Inc. > > -- Dipl.-Ing. Ronald Tögl phone +43 316/873-5502 Trusted Computing Labs fax +43 316/873-5520 IAIK ron...@ia... Graz University of Technology http://www.iaik.tugraz.at |