× The internal search function is temporarily non-functional. The current search engine is no longer viable and we are researching alternatives.
As a stop gap measure, we are using Google's custom search engine service.
If you know of an easy to use, open source, search engine ... please contact support@midrange.com.



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 thread ...

Follow-Ups:
Replies:

Follow On AppleNews
Return to Archive home page | Return to MIDRANGE.COM home page

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.