Which PKCS#11 function does Oracle Database 11g makes use of? - database

I am currently in the process of coming up with a PKCS#11 library with minimal functions such that my legacy HSM is able to support the Oracle database 11g transparent data encryption (TDE). I do not want to come up with the complete PKCS#11 library with all the functions since all I need is to support Oracle database. In addition, coding all functions will take too long a development effort and it would be an overkill in doing so.
Does anybody have any ideas as to which PKCS#11 functions does "Oracle Database 11g Release 2 (11.2)" makes use of for supporting TDE with HSM?

Most probably at least the following:
C_GetFunctionList
C_Initialize
C_GetSlotList
C_OpenSession
C_Login
C_FindObjectsInit
C_FindObjects
C_FindObjectsFinal
C_EncryptInit
C_Encrypt or
C_EncryptUpdate
C_EncryptFinal
C_DecryptInit
C_Decrypt or
C_DecryptUpdate
C_DecryptFinal
You can use OpenSC pkcs11-spy to sniff on Oracle to see which functions it actually uses and with what kind of parameters.

The following answer is as quoted from Oracle Forum:
I checked the 11.2 code and you need to implement these functions for use with TDE:
C_Initialize
C_GetFunctionList
C_GetInfo
C_GetSlotList
C_OpenSession
C_Login
C_CloseSession
C_Finalize
C_GenerateKey
C_FindObjectsInit
C_FindObjects
C_FindObjectsFinal
C_EncryptInit
C_Encrypt
C_DecryptInit
C_Decrypt
C_CloseSession
It is also recommended to implement C_GenerateKeyPair so it can be used by wallet manager to create a certificate request

I used OpenSC's pkcs11-spy, and find out that Oracle 11g R2 Wallet Manager would also call:
C_GenerateKeyPairs, C_SignInit, and C_Sign during the certificate request process.
Oscar

Related

Server communication with database

I'm creating an online game and the client is going to be made using unity as well as the server and I'm wondering whether it's okay for the server to communicate with mysql database via PHP
For simple tasks, there is actually nothing wrong with that.
There is also a example of using this method in the wiki here: http://wiki.unity3d.com/index.php?title=Server_Side_Highscores
But be aware: that is not the fastest solution.
You could make a faster direct connection with a plugin like this one:
https://github.com/Hanslen/Unity-with-MYSQL
And for native unity support on Android and iOS support i would go with a sqlite database plugin: https://github.com/rizasif/sqlite-unity-plugin

QuickBooks connection using asp

May not be the best place to ask sorry if that's true.
I have worked on SQL and while I never worked on QuickBooks I am hoping it is possible to connect to it and just use it similar to a SQL Database. I am wondering I am wondering if it is possible to connect to QuickBooks using ASP. My purpose is to create simple forms and insert the data into QuickBooks similar to what is done on SQL.Occasionally I would just generate reports as well using web pages. All I am wondering is does ASP have the capability to connect to Quick Books and if so can I also run query's similar to SQL and is there any sources or reference available for research ? And what my options are for setting this up. If I have to use asp.net as a last resort that is fine too, though I would prefer to have to be without it.
Thank you
Update #1
While i am working on getting the Version of Quick-Books here is what information I have.
I plan on using ASP-Classic, and I want to develop web forms so this would be a website that can be accessed. This will not be a desktop application I plan on making but various webpage's where you can view Quick-books data, and insert records into Quick-books using forms, similar to what I do for SQL. And the Version of our Quick-Books is 2013 Enterprise Windows Desktop USA edition.
All I am wondering is does ASP have the capability to connect to Quick Books
Yes.
can I also run query's similar to SQL
Maybe.
QuickBooks itself does not provide an SQL-based interface. Communication with QuickBooks is via XML. However, QuickBooks Enterprise comes with something called QODBC which provides an ODBC interface to the XML interface QuickBooks provides, which might get you what you need.
One problem you want to watch out for -- there are times when you won't be able to connect to QuickBooks. e.g. it is not an "always-on" solution like a typical SQL database is. If you're in single-user mode in QuickBooks, or someone closes QuickBooks, or someone is doing a QuickBooks backup, or someone is updating QuickBooks, then you won't be able to connect. You'll have to plan for this in your application.
A better solution might be to use the QuickBooks SDK (specifically the QuickBooks Web Connector). If you download and install the SDK there is example code included. The SDK install also includes about 600 pages of PDF documentation on topics which you are asking about.
Striking out the below stuff since you've provided more details now: But unfortunately you didn't provide anywhere near enough information for anyone to actually give you a decent answer.
How about providing some actual details so that people can actually help you? Like, maybe:
Is this QuickBooks ONLINE, or QuickBooks for WINDOWS, or QuickBooks for MAC? (they are three entirely separate products, with entirely separate sets of capabilities)
What version/year/edition/country of QuickBooks?
ASP classic or ASP.NET?
Is this a website you're connecting from, or is this a desktop application, or...?

Any node.js relational database bindings for Windows?

I'm trying to build a RESTful internal web server at work using node.js, where I'm currently restricted to using a Windows 2003 Server.
I've hit a stumbling block with regards to database support however. Are there any bindings currently available for reading and writing to sqlite, PostgreSQL or MySQL on Windows based machines?
Mariano has mentioned Windows support in the future in these comments, but ideally I'd like to use something available just now as a proof of concept.
I'm author of mysql-native.
Both official (felixge node-mysql) and my driver has been successfully used under windows,
I'm using and developing it under linux/windows 50/50% time . Feel free to contact me if you have any questions
Have you tried mysql-native? It's native (mysql) which means there are no other dependencies, so should run on any platform node supports. Seems to be actively maintained also, and has some examples to show you how to use the library. Link: https://github.com/sidorares/nodejs-mysql-native

How to access databases from within Delphi XE Professional IDE?

I cannot access ANY database by ANY means from within Delphi XE Professional. What I mean by accessing the data base is:
having the live database appear via
components in the Object Inspector,
when the connected property is set
to true
using the Data Explorer to create
and explore database connections
EDIT:
SORTED !!
The core problem is that communication into the database, including specifically the communication generated by the IDE and any code built using the drivers was problematic.
Confounding and masking sub-issues were:
Missing or misplaced DLLs.
The Data Explorer does not fully support dbExpress drivers.
There is a bug within the 2009 IDE code, found by Chee-Yang Chau when writing the dbxFirebird driver, which limits static linking of drivers into Delphi. It is not known if this bug extends to 2010 or XE.
When using the Object Inspector, it is easy to cause the IDE to revert changed connection parameters to their default values.
Some drivers had incorrect default values (eg assuming the client dll was always gdb32.dll irrespective of whether the database was Interbase or Firebird).
Installation of two versions of Interbase led to some clashes in database communication - server names generated by the tools were odd; and the view of the databases depended on which installation of the Interbase tools were used.
The documentation available is of varying dates; refers to different versions; and as a result often appears contradictory.
END EDIT:
Approaches tried:
Multiple databases
Multiple different drivers/components
Accessing the database through other external tools, such as IBSQL and Flame Robin.
Raising questions (here and here) on SO.
Raising questions on the support forums for Firebird, Embarcardo, and Flame Robin.
Environment:
OS: Windows 7 Ultimate 64bit:
Delphi Embarcadero® RAD Studio XE Professional Version 15.0.3953.35171
Database: W1-V2.5.0.26074 Firebird 2.5 (64 bit)
Connection technology: dbExpress
Delphi Professional does not support Firebird with the native dbExpress drivers that come with Delphi. You need the Enterprise or Architect version of Delphi in order for the native firebird dbExpress driver to work.
I have Delphi 2010 Professional. I didn't want to spend the extra money on the E or A version and I failed to read the feature matrix to see that the Firebird dbExpress driver is not available with the Pro version.
I have found a few really nice videos that show how to connect to Firebird using Delphi. However, when I tried to follow along with my Professonal version nothing worked.
Shame on me and more shame on Embarcadero for touting that Delphi supports Firebird in big bold print but not mentioning that you need the Enterprise or Architect version except in the tiny fine print.
I can now write code to access Firebird within the IDE. I have (limited, but sufficient) access to the drivers within the IDE. Specifically, the drivers appear in the Data Explorer, which can be used to generate default values for the SQLConnection (dbExpress component). These can be accessed and used within the Object Inspector. The workaround to the IDE bug quoted below is necessary to ensure the communication parameters are correct. When writing database code, it is necessary to compile in the source for the dbExpress driver.
The following code is the minimum, with minimum parameter set, necessary to establish and test a database connection:
unit Unit2;
interface
uses Classes, SqlExpr, Dialogs, dbxDevartInterbase;
var SQLConnection1 : TSQLConnection;
implementation
{$R *.dfm}
begin
SQLConnection1 := TSQLConnection.Create(nil);
with SQLConnection1 do
begin
ConnectionName := 'TestConnection';
DriverName := 'DevartInterBase';
LibraryName := 'dbexpida40.dll';
VendorLib := 'fbclient.dll';
GetDriverFunc := 'getSQLDriverInterBase';
Params.Clear;
Params.Add('User_Name=SYSDBA');
Params.Add('Password=masterkey');
Params.Add('Database=localhost:C:\Program Files\Firebird\Firebird_2_5\examples\empbuild\employee.fdb');
Open;
If Connected then ShowMessage('Connection is active');
Free;
end;
end.
The workaround, courtesy of Bob Swart on one of the Codegear forums is:
The trick is to select a
ConnectionName value, which will then
assign a value to the Driver property
and all other properties like
LibraryName, VendorLib and
GetDriverFunc.
Then, make changes - if needed - to
the subproperties of the Driver
property, and finally clear the name
of the Driver property.
This will leave all your changes in
the Params list (which you can also
manually edit if you wish).
Note: leave the ConnectionName set -
if you clear that one, the parameters
will be cleared again.
Now you can compile your application
and deploy it without the need for
dbxdrivers.exe or dbxconnections.ini
(but you need to deploy the DLLs
specified in the LibraryName and
VendorLib, of course).
Also make sure to set LoginPrompt to
False and leave LoadParamsOnConnect
set to False, too.
BOUNTY AWARD
I have awarded the bounty to this answer as it was the one that pointed me away from investigation of the IDE, its installation and configuration, to investigation of the connection into the database.
END
DK about Firebird 64 bit - -no experience. But I've always had a lot of trouble with dbExpress. Never any problem with the included IB components suite. But there is a lot of confusion with IB versions...
But IMO you're best served using the ADO ('DBGo') components as opposed to any proprietary IB or Delphi specific drivers. What you need is an ADO provider for IB, available #:
http://www.ibprovider.com/eng/ - and as others have said, avoid using localhost, use 127.0.0.1, or better still, determine the true IP address of your workstation (ping machine-name...) And are you sure you don't have some kind of firewall or intrustion protection that may be involved?
You also need to make sure that your IB connection is configured properly - local or TCP, and no, don't use quotation marks for your names, pwrds, etc. The error message you got seems to indicate that you're trying to connect via TCP and it's not properly configured. What happened between the time it worked and the time it didn't work? Shut down Delphi? Reboot the machine? Explain please....
No 'special permissions' are needed - you simply need to ensure that your database server and client are properly installed and configured. In terms of functionality you can do everything with the pro version - just that the drivers etc aren't included in the package.
Again, IMO go for ADO and you'll never look back.
HTH,
MNG
Have you tried Paradox via the Borland Database Engine (BDE) and related components: TTable TQuery TStoredProc TDatabase and TSession?
If memory serves me correctly, at least as far back as Delphi 3, the distinguishing factor between "professional" and the "higher-level" editions has been the type of database development "out the box".
In Delphi 1, the BDE was the only way to do out-the-box database development.
Delphi 2 permitted a custom database layer by abstracting parts of the database component hierarchy.
Delphi 3 Professional provided BDE and drivers for file-based databases and Interbase.
One level up (Enterprise?*) they provided BDE drivers for typical client-server database access: SQL Server, Sybase, Interbase, Oracle,... (and native drivers for Interbase)
Another level up (Architect?*) introduced multi-tier development with Midas. Unfortunately, Borland took a step back with Midas, because the multi-tier components were again hard-wired to the BDE. (This was resolved in Delphi 4.)
?* Please note, I may be mistaken about the exact naming of these editions. Around about that time I formed the opinion that Borland was merely coming up with "grander" names in order to charge more for features that didn't really offer as much benefit as the 'big-cheque-writing-CIOs' came to believe - leaving developers to deal with the fallout. (Yes, I have battle-scars from Midas I.)
Rant aside, the theory was....
If one embarked on entry-level database development, you would purchase Delphi ?? Professional. Develop your system against a file-based database or Interbase via the BDE.
If you later needed to scale-up: you would upgrade Delphi, purchase your chosen SQL RDBMS, switch your connectivity via the TDatabase component, and apply the few necessary tweaks.
NOTE: In Delphi 3, you could switch to Native Interbase (personally not recommended) or use third-party components for non-Midas development. From Delphi 4 up, ADO and DevExpress started receiving more attention and nowdays, the BDE seems to be pretty much forgotten.
Of course theory & practice seldom frequent the same pubs. However, with a few cautionary pointers, you should be able to develop a significant file based solution that can be upgraded relatively painlessly.
Keep your business logic out of the database. This is quite possibly the biggest and most frequently encountered error. Huge chunks of systems are often written in triggers and stored procedures, making it more difficult to maintain or migrate a system.
Avoid platform-specific database techniques. This should go without saying, but if you don't explicitly look out for them, you will encounter problems.
Particularly relevant to file based database systems, many support special locking mechanisms - avoid them! They don't scale well to large multi-user systems in any case.
Generating of artificial keys often varies by platform: Generators, IDENTITY columns, how you get the new value.
Plan your system for large volumes of data. Identify the high-transaction tables, and avoid using uncontrolled retrieval of all records. I'd also avoid the TTable in this situation - BDE does a lot of interesting background things with TTable, and behaviour can vary according to driver and platform.
Disclaimer: All this was a long time ago, so some of the details may be a bit sketchy.
Disclaimer2: I don't have any experience with Delphi XE specifically. I currently use D5 professionally, and D2009 in my personal capacity.

Accessing a Remote Database with VB6

How to access a remote database with Visual Basic 6?
It's been a while since I've done any code in Visual Basic 6, I remember ODBC connections however I'm not sure how I would go about it. All that I need is to have a database on a host computer and then some clients would connect to it, probably without need to guarantee simultaneous access.
Edit: I'm trying to access a Microsoft Access database.
You need to use ADODB, here is a tutorial that covers most of what you need.
This tutorial should help you get started.
The methods mentioned by #rick_schott and #eric_j are good and legit, but if you want speed, that is not the way to go.
Instead, you want to use DAO and Jet (the technology released prior to ADODB). Here is a pretty good tutorial:
http://www.vb6.us/tutorials/using-dao-data-access-objects-code-tutorial

Resources