|
Please also provide your Key PF DDS. Make sure your key file's "KEY" same "bytevalue(Hex Code)" same as thirdparty provided. Then retry it. Best regards, Vengoal venkatreddy puram wrote: > Hello Everyone, > Apologies for the lenghty email... Good afternoon, I am trying to > encrypt data with RSA with public/private key provided by third > party... I am using Qc3EncryptData and Qc3DecryptData APIs to do the > encryption and decryption. The below code works fine for the for the > public/private key created by cryptograhic service provider on the > AS400 but not for the ones that are created by third party. I have all > kinds of methods but no success... (I wonder why IBM makes it so > difficult to use this APIs)... > > Just as note: My counterparts in Java world in the my company had same > issue with third party keys... They solved it by doing (In java ofcource) > > c = Cipher.getInstance("RSA/ECB/PKCS1Padding", "BC"); > > Instead of > > c = Cipher.getInstance("RSA", "BC"); > > > Here is the code on the AS400.... > > H DEBUG OPTION(*SRCSTMT:*NODEBUGIO) > > ‚*===================================================================== > > ‚*===================================================================== > > ‚* > ‚* PROGRAM: TESTPGM > ‚* > ‚* DESCRIPTION: Test Program > ‚* > ‚* CRTRPGMOD TESTPGM > ‚* CRTPGM PGM(TESTPGM) BNDSRVPGM(QC3DTAEN QC3DTADE QC3PRNG) > ‚* > ‚*===================================================================== > > ‚* MODIFICATION LOG: > ‚*===================================================================== > > ‚* > ‚* ChangeId Who Date Reason > ‚* -------- ------ -------- > ------------------------------------------ > ‚*===================================================================== > > ‚*===================================================================== > > ‚* program file specifications > ‚*===================================================================== > > ‚* > FKEYFILEP IF E K DISK > ‚* > ‚******************************************************************* > ‚*Data definitions > ‚******************************************************************* > ‚*ALGD0400 algorithm description structure > DQC3D0400 DS > ‚* Qc3 Format ALGD0400 > D QC3PKA 1 4B 0 > ‚* Public Key Alg > D QC3PKABF 5 5 > ‚* PKA Block Format > D QC3ERVED00 6 8 INZ(x'000000') > ‚* Reserved > D QC3SHA 9 12B 0 > ‚* Signing Hash Alg > ‚*KEYD0200 key description format structure > DQC3D020000 DS > ‚* Qc3 Format KEYD0200 > D QC3KT 1 4B 0 > ‚* Key Type > D QC3KSL 5 8B 0 > ‚* Key String Len > D QC3KF 9 9 > ‚* Key Format > D QC3ERVED02 10 12 inz(x'000000') > ‚* Reserved > ‚*QC3KS 13 13 > ‚* > ‚* variable length > ‚******************************************************************* > > ‚* API error structure > D APIERR DS > D ERRPRV 10I 0 INZ(272) > D ERRLEN 10I 0 > D EXCPID 7A > D RSRVD2 1A > D EXCPDT 256A > D > ‚* > ‚*Encrypt Data > ‚* > D Qc3EncryptData Pr ExtProc('Qc3EncryptData') > D clrDta 32767a > D clrDtaLen 10I 0 > D clrDtaFmt 8 > D algorithm like(QC3D0400) > D algorithmFmt 8 > D key like(KeyC) > D keyFmt 8 > D srvProvider 1 > D deviceName 10 > D encryptedData 32767a > D encryptedBufL 10I 0 > D encryptedRtnL 10I 0 > D errcde like(APIERR) > > ‚* > ‚* Decrypt Data > ‚* > D Qc3DecryptData Pr ExtProc('Qc3DecryptData') > D encryptedData 32767a > D encryptedDtaL 10I 0 > D algorithm like(QC3D0400) > D algorithmFmt 8 > D key like(keyC) > D keyFmt 8 > D srvProvider 1 > D deviceName 10 > D clrDta 32767a > D clrDtaBufL 10I 0 > D clrDtaRtnL 10I 0 > D errcde like(APIERR) > > D ClrDtaRtn S 32767a > D clrDta S 32767a > D clrDtaLen S 10I 0 > D clrDtaFmt S 8 inz('DATA0100') > D algorithm S like(QC3D0400) > D algorithmFmt S 8 inz('ALGD0400') > D key S like(KeyC) > D keyFmt S 8 inz('KEYD0200') > D srvProvider S 1 > D deviceName S 10 > D encryptedData S 32767a > D encryptedDtaL S 10I 0 > D encryptedBufL S 10I 0 > D encryptedRtnL S 10I 0 > D clrDtaBufL S 10I 0 > D clrDtaRtnL S 10I 0 > D ReturnString S 10000 > > D KeyC S 1504 > > > D InputStrinG C 'My Test String ABCDEF' > > D Length S 5 0 > ‚*===================================================================== > > ‚* Main Line > ‚*===================================================================== > > > C Read KeyFileP > C Eval Algorithm = QC3D0400 > > C Exsr $Encryption > > C Exsr $Decryption > > > C Seton LR > C Return > ‚*===================================================================== > > ‚* $Encryption > ‚*===================================================================== > > C $Encryption BegSR > > C Eval QC3PKA = 50 > > C Eval QC3PKABF = '0' > > C Eval QC3SHA = X'00000000' > > C Eval algorithm = QC3D0400 > > ‚* Set up the key now. > ‚* =========================== > ‚* Key Type > C Eval QC3KT = 50 > ‚* Key Length > > C Eval QC3KSL = KyLen > ‚* Key Format > C Eval QC3KF = '1' > ‚* Key String > > C Eval KeyC = QC3D020000 + %Subst(Key1:1:KyLen) > C Eval Key = KeyC > > C Eval clrDta = InputString > C Eval clrDtaLen = %len(%trim(clrDta)) > C Eval encryptedBufL = %size(encryptedData) > C Reset EncryptedData > > C CallP Qc3EncryptData( > C clrDta : > C clrDtaLen : > C clrDtaFmt : > C algorithm : > C algorithmFmt : > C key : > C keyFmt : > C srvProvider : > C deviceName : > C encryptedData : > C encryptedBufL : > C encryptedRtnL : > C APIERR > C ) > C ExSr ChkErrCde > > C Eval ReturnString = %Subst(EncryptedData:1: > C EncryptedRtnL) > > > C EndSR > ‚*===================================================================== > > ‚* $Decryption > ‚*===================================================================== > > C $Decryption BegSR > > C Eval QC3PKA = 50 > > C Eval QC3PKABF = '0' > > C Eval QC3SHA = X'00000000' > > C Eval algorithm = QC3D0400 > > ‚* Set up the key now. > ‚* =========================== > ‚* Key Type > C Eval QC3KT = 51 > ‚* Key Length > C Eval QC3KSL = KyLen2 > ‚* Key Format > C Eval QC3KF = '1' > ‚* Key String > > C Eval KeyC = QC3D020000 + %Subst(Key2:1:KyLen2) > C Eval Key = KeyC > > C Clear clrDta > C Eval clrDtaBufL = %size(clrDta) > C Eval encryptedDtaL = encryptedRtnL > C CallP Qc3DecryptData( > C encryptedData : > C encryptedDtaL : > C algorithm : > C algorithmFmt : > C key : > C keyFmt : > C srvProvider : > C deviceName : > C ClrDta : > C clrDtaBufL : > C clrDtaRtnL : > C APIERR > C ) > C ExSr ChkErrCde > > C Eval ReturnString= %Subst(ClrDta:1:clrDtaRtnL) > > > C EndSR > ‚*===================================================================== > > ‚* *INZSR > ‚*===================================================================== > > C *INZSR BegSr > C Eval SrvProvider = '1' > C Eval DeviceName = *BLANKS > C EndSr > ‚*===================================================================== > > ‚* ChkErrCde > ‚*===================================================================== > > C ChkErrCde BegSr > C If ERRLEN > 0 > C EXCPID DSPLY > C Dump > C EndIf > C EndSr > ‚*===================================================================== > > > > > > VENKAT REDDY > >
As an Amazon Associate we earn from qualifying purchases.
This mailing list archive is Copyright 1997-2024 by midrange.com and David Gibbs as a compilation work. Use of the archive is restricted to research of a business or technical nature. Any other uses are prohibited. Full details are available on our policy page. If you have questions about this, please contact [javascript protected email address].
Operating expenses for this site are earned using the Amazon Associate program and Google Adsense.