×

Good News Everybody!

The new search engine is LIVE!

Please report any problems to david (at) 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-2026 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.