Académique Documents
Professionnel Documents
Culture Documents
User Manual
Confidentiality Undertaking
Copyright Wincor Nixdorf International GmbH 2015 - The contents of this document may not be
reproduced, exploited or published, whether in whole or in part, without the prior written permission of
Wincor Nixdorf International GmbH. This also includes translation into other languages.
The copyright applies to all forms of storage and reproduction in which this information is incorporated
including, but not limited to, magnetic memory, computer printouts and visual displays.
Offenders will be liable for damages.
All rights, including rights created by patent grant or registration of a utility model or design, are
reserved.
Right of technical modifications reserved.
Target Group
This manual is intended for use by ProView systems administrators and
programmers.
Using the ProView User Extensions requires knowledge of ProView and
programming skills, for example the skill of developing applications in C/C++.
This manual explains the possible user exits in ProView and describes the
functions, parameters and data structures.
Document Administration
Date of last update: 27. April 2015.
Notational conventions
Notation Application Example
Italics External cross references "...further information is available in
the manual XYZ for the product
ABC..."
Names of interactive elements "...in the field Bank Sort Code..."
Emphasized italics Internal cross references "...see page 23..."
provide page numbers
B o ld For emphasis "...the module ABC is..."
Buttons, name enclosed in [S ave ]
square brackets
Accessible screen elements "...click on the appropriate ID to...."
Menu items "Select
File > S ave to"
Non-proportional Source texts <head>
<title>XYZ</title>
</head>
Folder and file names The customer clicks on this link and
the file xyz.htm is opened.
Note
Notes providing additional explanation and tips on how to use the product
more effectively are shown in this format.
Caution
Information critical to operation of the product and the avoidance of faults,
misoperation, and so on is shown in this format.
Chapter 3 Appendix 51
List of ProView Manuals 52
This chapter describes the basic concept of the ProView User Exits.
It contains the sections
Overview on page 2
Software Development Kit on page 3
1.1 Overview
With the available standard modules and their flexible configuration ProView
can be adapted to a wide range of different requirements.
For environments in which these configuration options are not sufficient,
ProView offers programming interfaces to develop individual user exits.
Normally this means expenditure in programming and quality assurance.
User exits are implemented as dynamic linkable library functions (DLLs) that
provide a C programming interface.
By default ProView will be used "as is", which means without user specific
extensions. Installing the ProView components creates a consistent plug &
play environment.
Following is a list of user exits and their purposes:
2.1.1 Overview
The ProView Problem Manager supports user-specific extensions to the
automatic mailing facility in the following points:
Formatting of the problem text
The problem text can be prepared and extended as required.
User-specific sending mechanisms
The Problem Manager supports a link to the user's specific mail systems
(for example proprietary fax or modem interfaces) and the sending of
custom attachments.
2.2.1 Overview
ProView uses the SSOP protocol for internal communication. This protocol
supports data transfer in ASCII format and in any compressed format. A
configuration parameter in the Registry of the ProView Server defines whether
compression is used for data transfer. Of course the Agent must be able to
compress and decompress the data as required if you choose this option. For
example, the ProView Agent can handle compressed messages.
The ProView standard is based on PKWARE's compression method which has
become a de facto standard. If a project requires a custom compression
algorithm, however, it is possible to integrate a custom user exit in ProView in
order to compress/decompress the messages that are transferred. This user
exit has to be made available as a DLL and has to be installed both on the
ProView Server and on the Agent systems.
The following sections describe the user exit requirements and the application
programming interface that is affected.
2.2.2.1 InitCompression()
Syntax RC_COMPRESS InitCompression(VOID)
Description The InitCompression() function is called once when the system is started
up. It is possible to perform custom initialization operations.
The existence of this function is optional, which means if it does not exist, it is
not called at system startup.
Parameters None.
Return codes
COMPRESS_SUCCESS The function executed successfully.
COMPRESS_INTERNAL_ERROR An internal error has occurred, e.g. an unexpected null
pointer, null handle, etc.
COMPRESS_NO_MEMORY The required memory space could not be allocated.
Parameters
pvUncompressedData Input This pointer indicates the start of the data to be
compressed. It can be any data including binary data.
Return codes
COMPRESS_SUCCESS The function executed successfully.
COMPRESS_INTERNAL_ERROR An internal error has occurred, for example an unexpected
null pointer, null handle, and so on.
COMPRESS_NO_MEMORY The required memory space could not be allocated.
COMPRESS_INVALID_PARAMETER One of the call parameters was invalid (for example a null
pointer for an input parameter).
2.2.2.3 UncompressData()
Syntax RC_COMPRESS UncompressData(VOID* pvCompressedData,
ULONG ulLengthCompressedData,
VOID** ppvUncompressedData,
ULONG* pulLengthUncompressedData)
Parameters
pvCompressedData Input This pointer indicates the start of the data to be
decompressed. This data was generated before by
CompressData().
Return codes
COMPRESS_SUCCESS The function executed successfully.
COMPRESS_INTERNAL_ERROR An internal error has occurred, for example an unexpected
null pointer, null handle, and so on.
COMPRESS_NO_MEMORY The required memory space could not be allocated.
COMPRESS_INVALID_PARAMETER One of the call parameters was invalid (for example a null
pointer for an input parameter).
Parameters
pvCompressionBuffer Input This pointer indicates the start of the memory space to
be deallocated.
Return codes
COMPRESS_SUCCESS The function executed successfully.
COMPRESS_INTERNAL_ERROR An internal error has occurred, for example an unexpected
null pointer, null handle, and so on.
COMPRESS_INVALID_PARAMETER One of the call parameters was invalid (for example a null
pointer for an input parameter).
2.2.2.5 ExitCompression()
Syntax RC_COMPRESS ExitCompression(VOID)
Description The ExitCompression() function is called once when the system is shut
down. It is possible to perform custom cleaning up operations. It is the
counterpart to the InitCompression function.
The existence of this function is optional, which means if it does not exist it is
not called at system shutdown, but the DLL will work nevertheless.
Parameters None.
Return codes
COMPRESS_SUCCESS The function executed successfully.
COMPRESS_INTERNAL_ERROR An internal error has occurred, for example an unexpected
null pointer, null handle, and so on.
COMPRESS_NO_MEMORY The required memory space could not be allocated.
2.2.4 Installation
1 Before the user exit is deployed in the ProView environment it should be
tested thoroughly. It is a good idea to use test programs which simulate a
call by ProView. It is particularly important to make sure no memory
overlaps occur. The memory space that is allocated should be enough to
cope with extreme situations.
2 The DLL has to be installed on the ProView Server by copying it to any
folder there. It is best to choose a folder which has already been entered in
the PATH system variable.
3 If this is not the case, the chosen folder has to be added to the PATH
system variable.
4 The name of the DLL has to be configured in the Server's registry with
"RegEdit.exe".
Key: [HKLM\SOFTWARE\Wincor Nixdorf\ProView\
CurrentVersion\Common]
Value name: "CompressionDLLName"
Value: "MyUserExitDLLName"
Just type in the name of your DLL under "Value", which means without
any path details.
5 Now activate compression on the ProView Server by setting the following
value in the Registry of the ProView Server:
Key: [HKLM\SOFTWARE\Wincor Nixdorf\CurrentVersion\
Common\AGMGR01\SSOP]
Value name: "Compress"
Value: "Y"
6 Terminate the ProView Service on the ProView Server and restart it
immediately. This activates the changes you have made.
Comparable steps have to be carried out on the Agent system. Refer to the
documentation for your type of Agent for this as keys and names of registry
parameters may vary between different types.
Finally test the compression behavior with a selected Agent system, and
perform various activities from a Console, for example file transfers,
commands and so on.
2.3.1 Overview
Forwarding events in an e-mail requires CMC-Mapi.
Unfortunately, earlier Lotus Notes versions do not support this interface.
Therefore the Lotus Notes extension is implementing the Problem Manager's
Mail System Extension API. The extension's purpose is to forward events to a
Lotus Notes mail system. Events are not reformatted. The installation requires
know-how about the specific Lotus Notes installation.
The Problem Manager's Lotus Notes Mail Extension contains the following
DLLs:
notesmail.dll
ProView Problem Manager Lotus Notes Mail Extension DLL
lncppn201.dl
Lotus Notes C++ API - needed to execute, part of the Lotus Notes C++ API
Toolkit
pvlnpwd.dll
ProView DLL for the use of Lotus Notes users with password protection
Restrictions
The Lotus Notes extensions have been released only for Lotus Notes
version 6.55. Other version of Lotus Notes are not guaranteed to work
properly with the extension.
Password
If Lotus Notes requires a password, PVLNPWD will read the password from
the Windows registry key [HKLM\Software\Wincor Nixdorf\
ProView\CurrentVersion\Common\PBMGR01\Extensions\Mail].
Be sure that the correct password is stored before using PVLNPWD. To store
the password correctly use ProView Server Setup. Select the function
M a i n t e n a n c e / M o d i f y / C h a n g e L o t u s No t e s p a s s w o r d .
7 Edit the Windows registry. You should have a key structure like this (if your
Problem Manager is PBMGR01):
[HKEY_LOCAL_MACHINE\SOFTWARE\Wincor Nixdorf\ProView\
CurrentVersion\Common\PBMGR01\Extensions\Mail]
Description="Lotus Notes Mail Extension"
DLLName="C:\\Lotus\\Notes\\notesmail.dll"
Format="N"
PagerDuplicateMessage="N"
Send="Y"
User=<Lotus Notes user>
Password=<Password for Lotus Notes user>
8 Restart the Problem Manager after making these changes. The new mail
extention DLL will be loaded automatically.
2.4.1 Overview
ProView uses the Problem Manager to trigger actions based on rules. One
action type is to forward events to a Problem Manager System.
With the Problem Manager a default extension DLL ("pvsnmpea.dll") is
delivered which sends SNMPv1 traps to configurable Problem Management
Systems.
During startup the problem manager extension DLL will be loaded dynamically
by the Problem Manager. If the default problem manager extension DLL is not
sufficient, a customer may decide to implement his own problem manager
extension DLL.
The DLL can additionally export the following functions (not mandatory):
Init()
Exit()
LastError()
2.4.2.1 Init()
Syntax BOOL Init(const CHAR* pszSubkey)
Description If provided this function is called once when the problem manager extension
DLL is loaded.
The existence of this function is optional, which means if it does not exist, it is
not called at system startup.
Parameters
pszSubkey Input Pointer to the registry subkey of the DLL
Return codes
TRUE The DLL has been initialized successfully.
FALSE An error has occurred, the DLL cannot be used.
Description When provided this function is called once when the Problem Manager
Extension DLL is unloaded.
The existence of this function is optional, which means if it does not exist, it is
not called at system shutdown.
Parameters None.
2.4.2.3 SendTrap()
Syntax BOOL SendTrap(const PV_LPEVENT lpEvent,
const PV_LPEVENTTEXT lpEventtext)
Description The SendTrap() function is called to send events. The forwarding of an event
to a problem management system has to be implemented here.
Parameters
lpEvent Input Pointer to the ProView event structure.
lpEventText Input Pointer to the ProView event text structure.
Return codes
TRUE The function executed successfully.
FALSE An error has occurred.
Description If provided the LastError() function is invoked when the call of the function
Init() or SendTrap() has failed. The LastError() function has to return
a pointer to a statically C string variable containing a null terminated error
message.
Parameters None.
Return codes
Null terminated C string Error message
2.4.4 Installation
Before the user exit is deployed in the ProView environment it should be tested
thoroughly. It is a good idea to use test programs which simulate ProView.
1 The DLL has to be installed on the ProView Server by copying it to any
folder there. It is best to choose a folder which has already been included in
the PATH system variable.
If this is not the case, the chosen folder has to be added to the PATH
system variable.
2 The name of the extension DLL has to be configured in the Server registry
using "regedit.exe". In the key [HKLM\SOFTWARE\Wincor
Nixdorf\ProView\CurrentVersion\Common\PBMGR01\Extension
\Manager], add a sub-key with the same name as the DLL (for example:
if the DLL name is "MngrSys.dll" you have to name the sub-key
"MngrSys"). If the DLL has configuration parameters they can be
specified in this sub-key. A reference to the sub-key is passed by the
Init() function.
3 To enable the changes please restart the ProView Service.
2.5.1 Overview
ProView includes functions for problem reporting.
The main idea is that a ProView user manages problems at a ProView
Console. He recognizes problems by changing colors, changing icons or via
alert view.
It is also taken into consideration that problems are received by a first level
support and forwarded to the Console user.
The Console menu includes functions for viewing and dealing with problem
reports.
In addition to the Console functions there is a programming interface (API) for
problem reporting. This API offers the possibility to open, manage and close a
problem from an external program. This is interesting in combination with mail
extension. If the receiver of a forwarded problem should have the possibility to
manage this problem at his external workstation (no ProView Console) he has
to build an application using the API below.
2.5.1.1 PrInitialize()
Syntax PR_APIRET PrInitialize(CHAR* pszServerName)
Description The PrInitialize() function is called to initialize the Problem Report API.
This function must be called before any other function of the API.
Parameters
pszServerName Input Server name for the SSOP communication.
Return codes
PR_SUCCESS The function executed successfully.
PR_SERVICE_ERROR Problem report service error (in most cases because of a
wrong SSOP configuration).
PR_INVALID_PARAMETER An invalid parameter was specified.
Description The PrExit() function is called to shutdown the Problem Report API. This
function cleans up all resources and must be called after an application
decided to stop calling the API.
Parameters None.
Return codes
PR_SUCCESS The function executed successfully.
PR_SERVICE_ERROR Problem report service error (in most cases because of a
wrong SSOP configuration).
2.5.1.3 PrOpen()
Syntax PR_APIRET PrOpen(CHAR* pszRemoteService,
PR_HANDLE* phReportService)
Description The PrOpen() function is called to connect to a remote service for problem
report handling. If the function succeeds, a handle to the report service will be
delivered. This handle must be used for all functions performing problem report
activities.
Parameters
pszRemoteService Input Remote service name (typically FEMGR01RC).
phReportService Output Resulting report service handle.
Return codes
PR_SUCCESS The function executed successfully.
PR_SERVICE_ERROR Problem report service error (communication error or
wrong SSOP configuration).
PR_INVALID_PARAMETER An invalid parameter was specified.
Description The PrClose() function is called to disconnect from a remote service. After
calling this function, the report service handle will become invalid.
Parameters
hReportService Input Report service handle.
Return codes
PR_SUCCESS The function executed successfully.
PR_SERVICE_ERROR Problem report service error (communication error).
PR_INVALID_PARAMETER An invalid parameter was specified.
2.5.1.5 PrCreateReport()
Syntax PR_APIRET PrCreateReport(PR_HANDLE hReportService,
CHAR* pszComponent,
PR_COMPONENTTYPE eComponentType,
LONG lEventCount,
CHAR* pszTopic,
PR_REPORT_SEVERITY severity,
CHAR* pszReference,
CHAR* pszDescription,
LONG* plReportId)
Parameters
hReportService Input Report service handle.
pszComponent Input Component name.
eComponentType Input Component type.
0 = Device,
1 = Group
lEventCount Input Event counter, if the report is created as a reaction to
an event. Zero, if no event is associated.
pszTopic Input Problem report topic.
severity Input Problem severity.
Return codes
PR_SUCCESS The function executed successfully.
PR_SERVICE_ERROR Problem report service error (in most cases because of a
wrong SSOP configuration).
PR_INVALID_PARAMETER An invalid parameter was specified.
PR_INVALID_HANDLE An invalid report service handle was specified.
Parameters
hReportService Input Report service handle.
lReportId Input Report identifier.
pszDescription Input New description to be added to the problem.
Return codes
PR_SUCCESS The function executed successfully.
PR_SERVICE_ERROR Problem report service error (in most cases because of a
wrong SSOP configuration).
PR_INVALID_PARAMETER An invalid parameter was specified.
PR_INVALID_HANDLE An invalid report service handle was specified.
PR_INVALID_REPORTID An invalid report identifier was specified.
PR_PERMISSION_ERROR No permission (not owner of problem report).
PR_REPORT_LOCKED The report is locked.
2.5.1.7 PrCloseReport()
Syntax PR_APIRET PrCloseReport(PR_HANDLE hReportService,
LONG lReportId,
CHAR* pszDescription)
Parameters
hReportService Input Report service handle.
lReportId Input Report identifier.
pszDescription Input Reason for closing the problem report.
Return codes
PR_SUCCESS The function executed successfully.
PR_SERVICE_ERROR Problem report service error (in most cases because of a
wrong SSOP configuration).
PR_INVALID_PARAMETER An invalid parameter was specified.
PR_INVALID_HANDLE An invalid report service handle was specified.
PR_INVALID_REPORTID An invalid report identifier was specified.
PR_PERMISSION_ERROR No permission (not owner of problem report).
PR_REPORT_LOCKED The report is locked.
Parameters
hReportService Input Report service handle.
lReportId Input Report identifier.
pszDescription Input Reason for changing the owner.
Return codes
PR_SUCCESS The function executed successfully.
PR_SERVICE_ERROR Problem report service error (in most cases because of a
wrong SSOP configuration).
PR_INVALID_PARAMETER An invalid parameter was specified.
PR_INVALID_HANDLE An invalid report service handle was specified.
PR_INVALID_REPORTID An invalid report identifier was specified.
PR_REPORT_LOCKED The report is locked.
2.5.1.9 PrSetSeverity()
Syntax PR_APIRET PrSetSeverity(PR_HANDLE hReportService,
LONG lReportId,
PR_REPORT_SEVERITY severity,
CHAR* pszDescription)
Parameters
hReportService Input Report service handle.
lReportId Input Report identifier.
severity Input New problem severity.
Return codes
PR_SUCCESS The function executed successfully.
PR_SERVICE_ERROR Problem report service error (in most cases because of a
wrong SSOP configuration).
PR_INVALID_PARAMETER An invalid parameter was specified.
PR_INVALID_HANDLE An invalid report service handle was specified.
PR_INVALID_REPORTID An invalid report identifier was specified.
PR_PERMISSION_ERROR No permission (not owner of problem report).
PR_REPORT_LOCKED The report is locked.
Parameters
hReportService Input Report service handle.
lReportId Input Report identifier.
pszReference Input New external reference identifier.
pszDescription Input Reason for changing the reference.
Return codes
PR_SUCCESS The function executed successfully.
PR_SERVICE_ERROR Problem report service error (in most cases because of a
wrong SSOP configuration).
PR_INVALID_PARAMETER An invalid parameter was specified.
PR_INVALID_HANDLE An invalid report service handle was specified.
PR_INVALID_REPORTID An invalid report identifier was specified.
PR_PERMISSION_ERROR No permission (not owner of problem report).
PR_REPORT_LOCKED The report is locked.
2.5.1.11 PrSetTopic()
Syntax PR_APIRET PrSetTopic(PR_HANDLE hReportService,
LONG lReportId,
CHAR* pszTopic,
CHAR* pszDescription)
Parameters
hReportService Input Report service handle.
lReportId Input Report identifier.
pszTopic Input New problem report topic.
pszDescription Input Reason for changing the topic.
Return codes
PR_SUCCESS The function executed successfully.
PR_SERVICE_ERROR Problem report service error (in most cases because of a
wrong SSOP configuration).
PR_INVALID_PARAMETER An invalid parameter was specified.
PR_INVALID_HANDLE An invalid report service handle was specified.
PR_INVALID_REPORTID An invalid report identifier was specified.
PR_PERMISSION_ERROR No permission (not owner of problem report).
PR_REPORT_LOCKED The report is locked.
Parameters
hReportService Input Report service handle.
lReportId Input Report identifier.
ppReport Output Pointer to the found problem report address.
Return codes
PR_SUCCESS The function executed successfully.
PR_SERVICE_ERROR Problem report service error (in most cases because of a
wrong SSOP configuration).
PR_INVALID_PARAMETER An invalid parameter was specified.
PR_INVALID_HANDLE An invalid report service handle was specified.
PR_INVALID_REPORTID An invalid report identifier was specified.
PR_REPORT_LOCKED The report is locked.
Description The PrFreeReport() function is called to free the problem report memory
allocated in the function PrQueryReport().
Parameters
hReportService Input Report service handle.
pReport Input Problem report address.
Return codes
PR_SUCCESS The function executed successfully.
PR_SERVICE_ERROR Problem report service error (in most cases because of a
wrong SSOP configuration).
PR_INVALID_PARAMETER An invalid parameter was specified.
PR_INVALID_HANDLE An invalid report service handle was specified.
PR_INVALID_REPORTID An invalid report identifier was specified.
PR_PERMISSION_ERROR No permission (not owner of problem report).
PR_REPORT_LOCKED The report is locked.
2.5.3 Installation
You need a typical ProView runtime environment for the developed application.
To install this environment use the installation procedure on your ProView CD
in the "SDK" folder. Call "SETUP.EXE" and follow the instructions of this
program. SETUP does not require a deeper understanding of ProView. It just
prompts for a destination path and the computer name of your ProView Server.
This runtime environment consists of a set of DLLs and a configuration which
guarantees the connection to the ProView Server. The configuration equals a
Console configuration. It contains a server for problem report itself
("<computer name>P") and another one for the Frontend Manager
("FEMGR01") of the ProView Server.
2.6.1 Overview
ProView uses the SSOP protocol for internal communication. This protocol
supports message authentification and encryption of the variable data
proceeding the protocol header. Within the product, a default security provider
DLL will be delivered.
The security provider accomplishes the following services:
Data encryption and decryption
Signing and authentification of data
During startup, the security provider DLL will be loaded dynamically by the
ProView Server and the Agent. You may decide to implement your own
security provider DLL.
2.6.2.1 SecStartup()
Syntax SEC_SSP_REF SecStartup(VOID)
Description The SecStartup() function is called once when the security provider is
started up. It may be used to perform provider specific initializations.
SecStartup() must return a reference to a security context, which is defined
to be of type VOID*. This means that it is up to the provider to define which
context data is needed.
Parameters None.
Return codes
<VOID*> Pointer to a provider specific security context.
NULL The security provider startup failed.
Description The SecEncode() function is called to encode data. The custom encryption
algorithm has to be implemented here.
The function has to create an output buffer holding the encoded data. The
provider must be prepared to free this buffer, when it is called with
SecFreeData().
Parameters
hRef Input Security context created during SecStartup.
pszReceiverName Input Name of the receiver of the message, for example
US_NYC_BWY_ATM01. May be used to determine
the encryption key.
puchPlainMsg Input Data to be encoded.
lPlainMsgLen Input Length of data in puchPlainMsg.
ppuchEncodedMsg Output Encoded data after the function has successfully
completed.
Return codes
SEC_SSP_SUCCESS The function executed successfully.
SEC_SSP_NOMEM Not enough memory for allocation of output buffer.
SEC_SSP_KEYNOTFOUND Encryption key was not found.
SEC_SSP_ALGO_ERROR Error during encryption algorithm computation.
2.6.2.3 SecDecode()
Syntax SEC_SSP_API SecDecode(SEC_SSP_REF hRef,
UCHAR* puchEncodedMsg,
LONG lEncodedLen,
UCHAR** ppuchPlainMsg,
LONG* plPlainMsgLen)
Description The SecDecode() function is called to decode data. The custom encryption
algorithm has to be implemented here.
The function has to create an output buffer holding the decoded data. The
provider must be prepared to free this buffer, when it is called with
SecFreeData().
Parameters
hRef Input Security context created during SecStartup.
puchEncodedMsg Input Data to be decoded.
lEncodedLen Input Length of data in puchEncodedMsg.
ppuchPlainMsg Output Decoded data after the function has successfully
completed.
Return codes
SEC_SSP_SUCCESS The function executed successfully.
SEC_SSP_NOMEM Not enough memory for allocation of output buffer.
SEC_SSP_KEYNOTFOUND Encryption key was not found.
SEC_SSP_ALGO_ERROR Error during encryption algorithm computation.
Parameters
hRef Input Security context created during SecStartup.
pszReceiverName Input Name of the receiver of the message, for example
US_NYC_BWY_ATM01. May be used to determine
the encryption key.
puchPlainMsg Input Data to be encoded.
lPlainMsgLen Input Length of data in puchPlainMsg.
ppuchEncodedMsg Output Encoded data after the function has successfully
completed.
Return codes
SEC_SSP_SUCCESS The function executed successfully.
SEC_SSP_NOMEM Not enough memory for allocation of output buffer.
SEC_SSP_KEYNOTFOUND Encryption key was not found.
SEC_SSP_ALGO_ERROR Error during encryption algorithm computation.
2.6.2.5 Sec3DESDecode()
Syntax SEC_SSP_API Sec3DESDecode(SEC_SSP_REF hRef,
UCHAR* puchEncodedMsg,
LONG lEncodedLen,
UCHAR** ppuchPlainMsg,
LONG* plPlainMsgLen)
Parameters
hRef Input Security context created during SecStartup.
puchEncodedMsg Input Data to be decoded.
lEncodedLen Input Length of data in puchEncodedMsg.
ppuchPlainMsg Output Decoded data after the function has successfully
completed.
Return codes
SEC_SSP_SUCCESS The function executed successfully.
SEC_SSP_NOMEM Not enough memory for allocation of output buffer.
SEC_SSP_KEYNOTFOUND Encryption key was not found.
SEC_SSP_ALGO_ERROR Error during encryption algorithm computation.
Parameters
hRef Input Security context created during SecStartup.
pszSignerName Input Name of the signer, for example
US_NYC_BWY_ATM01. May be used to determine
the correct key for the signing algorithm.
puchMsg Input Data to be signed.
lMsgLen Input Length of data in puchMsg.
ppuchSignature Output Message signature, after function has successfully
completed.
Return codes
SEC_SSP_SUCCESS The function executed successfully.
SEC_SSP_NOMEM Not enough memory for allocation of output buffer.
SEC_SSP_KEYNOTFOUND Encryption key was not found.
SEC_SSP_ALGO_ERROR Error during encryption algorithm computation.
2.6.2.7 SecVerify()
Syntax SEC_SSP_API SecVerify(SEC_SSP_REF hRef,
UCHAR* puchMsg,
LONG lMsgLen,
UCHAR* puchSignature,
LONG lSignatureLen)
Description The SecVerify() function is called to verify the signature of a message. The
custom verification algorithm has to be implemented here. The function must
check if the signature delivered in puchSignature is correct for the message
delivered in puchMsg.
Parameters
hRef Input Security context created during SecStartup.
puchMsg Input Data that has been signed.
lMsgLen Input Length of data in puchMsg.
puchSignature Output Signature received for data in puchMsg.
lSignatureLen Output Length of data in puchSignature.
Return codes
SEC_SSP_SUCCESS The function executed successfully.
SEC_SSP_NOMEM Not enough memory for allocation of output buffer.
SEC_SSP_KEYNOTFOUND Encryption key was not found.
SEC_SSP_ALGO_ERROR Error during encryption algorithm computation.
SEC_SSP_INVALID_SIGNATURE The signature delivered in puchSignature is wrong.
Description The SecFreeData() function is called to free the output data allocated during
SecEncode(), SecDecode() or SegSign().
Parameters
hRef Input Security context created during SecStartup.
puchMsg Input Buffer allocated during SecEncode, SecDecode or
SegSign.
Return codes
TRUE The function executed successfully.
FALSE The memory could not be freed.
2.6.2.9 SecShutdown()
Syntax BOOL SecShutdown(SEC_SSP_REF hRef)
Description The SecShutdown() function is called during shutdown of the security data. It
may be used to clean up all resources created during SecStartup().
Parameters
hRef Input Security context created during SecStartup.
Return codes
TRUE The function executed successfully.
FALSE The security provider could not be shut down correctly.
2.6.4 Installation
Before the user exit is deployed in the ProView environment it should be tested
thoroughly. It is a good idea to use test programs which simulate a call by
ProView. It is particularly important to make sure no memory overlaps occur.
The memory space that is allocated should be enough to cope with extreme
situations.
The DLL has to be installed on the ProView Server by copying it to any folder
there. It is best to choose a folder which has already been entered in the PATH
system variable.
If this is not the case, the chosen folder has to be added to the PATH system
variable.
The name of the DLL has to be configured in the Server registry with
"Regedit.exe".
Key: [HKLM\SOFTWARE\Wincor
Nixdorf\ProView\CurrentVersion\Common]
Value name: "SecurityDLLName"
Value: "MyUserExitDLLName"
Just type in the name of your DLL under "Value", which means without any
path details.
Please make sure that encryption has been properly installed and activated
during setup of the server.
Terminate the ProView Service on the ProView Server and restart it. This
enables the changes you have made.
Comparable steps have to be carried out on the Agent system. Refer to the
documentation for your type of Agent, since this as keys and names of registry
parameters may vary between different types.
Finally test the encryption behavior with a selected Agent system, and perform
various activities from a Console, for examples file transfers or remote control
commands.
2.7.1 Overview
The Lightweight Directory Access Protocol (LDAP) is an application protocol
for accessing and maintaining distributed directory information services over
an Internet Protocol (IP) network. Proview supports to use LDAP to authorize
user: If a valid user exists and is maintained in LDAP server, Proview can get
the user information thus the user doesnt need to input password again when
login to Proview server.
The default LDAP Extension is implemented with no encryption(for tcp
session) and DIGEST-MD5(SASL) authentication method. Enduser can
customize LDAP Extension if the default one is not quite satisfied with the
requirements. The name of the DLL of LDAP Extension must be
pvldap.dll.
2.7.2.1 GetAttributeValue()
Syntax PVLADP_ERROR GetAttributeValue (LPPVLDAP_INFO lpPvLdapInfo,
CHAR* strSearchFilter,
CHAR* strAttributeKey,
CHAR* strAttributeValue,
ULONG* ulAttributeValueLength)
Description Authenticate specified user with specified LDAP server, and then, get the value
of specified attribute of the user from LDAP server, which is used to match the
account name in Proview System.
Parameters
lpPvLdapInfo Input Pointer to a PVLDAP_INFO structure containing
information about LDAP server. The description of
PVLDAP_INFO can be found in Head File section.
strSearchFilter Input Pointer to a null-terminated string that specifies the
search filter.
strAttributeKey Input Pointer to a null-terminated string that specifies the
attribute key.
strAttributeValue Output Pointer to a null-terminated string that specifies the
attribute value.
ulAttributeValueLength Input Specifies the buffer length of strAttributeValue.
2.7.2.2 GetDefaultSearchFilter()
Syntax CHAR* GetDefaultSearchFilter()
Description Return the default search filter string if it is configured in Proview Database.
Parameters None
Return value
CHAR* Return a pointer to a null-terminated string that specifies
the search filter.
2.7.4 Installation
1 Before the user exit is deployed in the Proview environment it should be
tested thoroughly. It is a good idea to use test programs which simulate a
call by ProView. It is particularly important to make sure no memory
overlaps occur. The memory space that is allocated should be enough to
cope with extreme situations.
2 Replace the "pvldap.dll" with the customized one in Proview installed
folder.
3 Configure Proview to enable LDAP authorization. Please refer to proview
operation manual for detail.
4 Configure the parameters related to LDAP authorization. Please refer to
proview operation manual for detail.
5 Restart Proivew Service.