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



Here's the background on the problem I'm having:

For an upcoming project, I need to store some encrypted data in a cookie which 
has me looking at using the CIPHER MI instruction to do this. I started by 
looking at a few examples that do an MD5 hash (which doesn't work for me since 
I need to decrypt it) and, of course, Scott Klement's RC4 example. I did a 
little bit of research into using RC4 and it looks like it's easy to make 
implementation mistakes that reduce it's security so I'm wanting to use 
something better (or at least not as easy to screw up), specifically, I want to 
use AES.

I spent a little bit of time working on this today but I'm getting this error 
when I run my program: "Requested function not valid or is not available on the 
machine.". To double check what's installed, I ran Scott's program that lists 
the installed ciphers and 128 bit AES was listed. I know the crypto providers 
are installed and we're on V5R1. Anyone have any ideas?

Here's the code:

     H DFTACTGRP(*NO) BNDDIR('QC2LE') option(*SRCSTMT: *NODEBUGIO)
     H ACTGRP(*NEW)

     Dcipher           PR                  extproc('_CIPHER')
     D receiver                        *
     D control                       96A
     D source                          *

     DAES_Controls     DS
     D FunctionID                     2A
     D DataLen                        5U 0
     D Operation                      1A
     D Mode                           1A
     D BlockLength                    3U 0
     D MAClength                      3U 0
     D InitVector                    32A
     D Reserved                       7A
     D KeyOption                      1A
     D KeySchedulePtr                  *
     D Key                           32A

     DKeySchedule      S           1088A
     DOP_ENCRYPT       C                   const(x'00')
     DOP_DECRYPT       C                   const(x'01')
     DOP_MAC           C                   const(x'02')
     DMODE_ECB         C                   const(x'00')
     DMODE_CBC         C                   const(x'01')
     DKEYOPT_SCHEDULE  C                   const(x'00')
     DKEYOPT_16BYTE    C                   const(x'10')
     DKEYOPT_24BYTE    C                   const(x'18')
     DKEYOPT_32BYTE    C                   const(x'20')
     DFUNCID_AES       C                   const(x'0015')

     DTestData         S             32A   inz('Secret Text!')
     DEncrypted        S             20A
     DPassword         S             32A   inz('My Password 123')
     Dp_recv           s               *
     Dp_src            s               *
     Ddalen            s             10I 0

      /free
          AES_Controls = *ALLx'00';
          dalen=%size(aes_controls);
          dalen=%len(aes_controls);
          FunctionID = FUNCID_AES;
          DataLen = %len(TestData);
          Operation = OP_ENCRYPT;
          Mode = MODE_ECB;
          BlockLength = 32;
          KeyOption = KEYOPT_32BYTE;
          KeySchedulePtr = %addr(KeySchedule);
          Key = Password;

          p_recv = %addr(Encrypted);
          p_src  = %addr(TestData);

          cipher( p_recv: AES_Controls: p_src);

          *inLR = *ON;
      /end-free

Thanks,

Matt


As an Amazon Associate we earn from qualifying purchases.

This thread ...

Follow-Ups:

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.