ASIUtil.CCrypto 64 bit version?

I am in the process of converting from a 32 bit to a 64 bit server.  We have a custom registration application in Coldfusion that calls the COM object ASIUtil.CCrypto.  I get the following error:

Normal
0

false
false
false

EN-US
X-NONE
X-NONE


D:\ColdFusion9\jintegra\bin\ntvinv.dll: Can't load IA 32-bit .dll on a AMD 64-bit platform null

We are on 10.6 still.  I am pretty sure this error is being generated because the dll in question is 32 bit.  Is there a 64 bit version of this dll? 

Thanks,

Jack

Comment viewing options

Select your preferred way to display the comments and click "Save settings" to activate your changes.

No, but there should be.

I just went through this for a client. ther is no 64-bit version yet that I've been able to find. Your choices are:

* install 32-bit SQL on your 64-bit OS
* link your 64-bit SQL to a 32-bit SQL instance which can do the crypto (this is what my client chose)
* don't do crypto in SQL (but Autodraft and others require it)

If ASI still has the source code, they really need to build a 64-bit copy. you can't even get a 32-bit OS anymore.

--
Bruce Wilson
Director, Technical Services
RSM McGladrey, Inc.

ASIUtil.CCrypto 64 bit Version?

Thank you for the quick reply!  I am pretty sure our SQL box is still in 32 bit mode.  However, the code runs on the 64 bit box.  So is there a way to point my code at a COM object on my SQL 32 bit box and have this work?  Do you happen to have a code snippet you could link to get me started in the right direction?

Maybe I'm way off and the code already runs on SQL.  Here is the coldfusion com call that bombs out.

<cfobject type="COM" action="create" context="INPROC" class="ASIUtil.CCrypto" name="Crypto">
        <cfset init = Crypto.Init("#dsn#","#username#","#password#")>
        <cfset client.encrypted_cc_number = Crypto.OmnisEncrypt("#trim(Form.CC_NUMBER)#")>
        <cfset client.cc_exp = Form.CC_month_expire & "/" & Form.CC_year_expire>
        <cfset client.encrypted_cc_exp = Crypto.OmnisEncrypt("#client.cc_exp#")>

Sorry, I was talking about SQL

Sorry, I missed the part about ColdFusion.

To invoke AsiUtil from ColdFusion, you'll need to run IIS in 32-bit mode.  There are instructions on the Microsoft site (and linked from somewhere on imiscommunity, if I remember right) on how to do this.

From what I was able to determine in the SQL-64 vs. SQL-32 situation is that a 64-bit DLL is inherently very different from a 32-bit DLL.  The internal pointers and headers are massively different.  Even Google couldn't find any way to invoke a 32-bit DLL from a 64-bit process.  The SQL64 to SQL32 solution essentially uses a network connection to let a 64-bit process talk to a separate 32-bit process.

If your SQL is running in 32-bit mode, you could also call a stored procedure or function to perform the encryption for you.  This is probably a step in the wrong direction, though.  Doing so would mean transmitting the data relatively "in the clear" from IIS to SQL, and sp_OACreate is fairly burdensome on the SQL server.

--
Bruce Wilson
Director, Technical Services
RSM McGladrey, Inc.

Resolution

I ended up using the approach of calling a sql stored procedure which runs the same DLL on a 32 bit SQL Server box.  Thanks very much for the suggestion!

any more ideas?

Are there any other options?  Does anyone have any ideas when there might be a 64-bit dll for this?

 

Thanks.

F. Nelson Stover, Intelligent Technologies, Inc.

My crystal ball says...

Since iMIS 15.1.3 is reported to support 64-bit Windows 7 on the desktop, I'm guessing it will not be long.

--
Bruce Wilson
Director, Technical Services
RSM McGladrey, Inc.