KMIPServer Component

Properties   Methods   Events   Config Settings   Errors  

The KMIPServer component provides server-side functionality for Key Management Interoperability Protocol (KMIP).

Syntax

nsoftware.SecureBlackbox.KMIPServer

Remarks

The Key Management Interoperability Protocol (KMIP) is an OASIS standard for communication between key management servers and clients. KMIP servers are typically responsible for managing cryptographic keys and providing access to them to remote client applications.

Property List


The following is the full list of the properties of the component with short descriptions. Click on the links for further details.

ActiveIndicates if the KMIP server is active and listening to incoming connections.
AllowKeepAliveEnables or disables keep-alive mode.
AuthRealmSpecifies authentication realm for digest and NTLM authentication.
AuthTypesDefines allowed HTTP authentication types.
BoundPortIndicates the bound listening port.
CACertificateThe default CA certificate.
CertificateContains the certificate that has just been generated or added.
CompressionLevelThe default compression level to use.
ExternalCryptoProvides access to external signing and DC parameters.
FIPSModeReserved.
HandshakeTimeoutSpecifies the handshake timeout in milliseconds.
HostSpecifies the host name of the KMIP server.
KeyContains the key that has just been generated or added.
PinnedClientPopulates the pinned client details.
PinnedClientChainContains the certificate chain of the pinned client.
PortA port to listen for connections on.
ReadOnlyControls whether the server works in read-only mode.
SessionTimeoutSpecifies the default session timeout value in milliseconds.
SocketSettingsManages network connection settings.
StorageFileNameA path to the KMIP object database.
TLSServerChainThe server's TLS certificates.
TLSSettingsManages TLS layer settings.
UseChunkedTransferEnables chunked transfer.
UseCompressionEnables or disables server-side compression.
UseHTTPSpecifies whether the server should use HTTP instead of KMIP-over-TCP/TLS.
UsersA database of registered users.

Method List


The following is the full list of the methods of the component with short descriptions. Click on the links for further details.

CleanupCleans up the server environment by purging expired sessions and cleaning caches.
ConfigSets or retrieves a configuration setting.
DoActionPerforms an additional action.
DropClientTerminates a client connection.
GetClientCertPopulates the per-connection certificate object.
GetClientKeyPopulates the per-connection key object.
GetRequestHeaderReturns a request header value.
GetResponseHeaderReturns a response header value.
ListClientsEnumerates the connected clients.
PinClientTakes a snapshot of the connection's properties.
ProcessGenericRequestProcesses a generic HTTP request.
ResetResets the component settings.
SetClientBytesCommits a data buffer to the connection.
SetClientCertCommits the per-connection certificate object to the connection context.
SetClientKeyCommits the per-connection key object to the connection context.
SetResponseHeaderSets a response header.
StartStart the KMIP server.
StopStops the KMIP server.

Event List


The following is the full list of the events fired by the component with short descriptions. Click on the links for further details.

AcceptReports an incoming connection.
ActivateObjectNotifies the application about the object activation request.
AddPasses the certificate import request to the application.
AddKeyExpects the application to handle the key import request.
AfterAddNotifies the application about completion of the certificate import operation.
AfterAddKeyReports the completion of the key import procedure.
AfterBrowseKMIP server uses this event to notify the application about the completion of the browsing (attribute request) operation.
AfterDecryptNotifies the application about completion of the decryption call.
AfterDeriveKeyNotifies the application about completion of the key derivation request.
AfterEditNotifies the application of completion of the object editing operation.
AfterEncryptNotifies the application about the completion of the encryption call.
AfterGenerateSignifies completion of certificate generation.
AfterGenerateKeyNotifies the application of the completion of key generation procedure.
AfterGenerateKeyPairNotifies the application of the completion of keypair generation.
AfterHashNotifies the application about completion of the hashing call.
AfterListNotifies the application about completion of the list command.
AfterObtainLeaseReports the completion of lease allocation operation.
AfterReadObjectNotifies the application of the completion of the read operation on the object.
AfterReCertifyNotifies the application about the completion of the re-certify operation.
AfterReKeyNotifies the application about the completion of the re-key operation.
AfterRekeyKeyPairNotifies the application about the completion of the re-key keypair operation.
AfterRemoveObjectNotifies the application about completion of the object removal request.
AfterSignNotifies the application of completion of a signing operation.
AfterVerifyNotifies the application about completion of the Verify operation.
AfterVerifyHashNotifies the application about completion of the hash verification.
ArchiveObjectNotifies the application about the received object archival request.
AuthAttemptFires when a connected client makes an authentication attempt.
BeforeAddFires when a certificate import request is received from a client.
BeforeAddKeyFires when a key import request is received from the client.
BeforeBrowseNotifies the application about the browse request being received.
BeforeDecryptNotifies the application about the initiation of the decryption operation.
BeforeDeriveKeyFires when a derive key request is received.
BeforeEditNotifies the application about the start of the object editing operation.
BeforeEncryptNotifies the application about the initiation of an encryption operation.
BeforeGenerateFires when a certificate generation request is received.
BeforeGenerateKeyFires when a key generation request is received.
BeforeGenerateKeyPairFires when a key generation request is received.
BeforeHashNotifies the application about the initiation of the hashing operation.
BeforeListNotifies the application about the initiation of the list operation.
BeforeObtainLeaseNotifies the application about the client requesting an object lease.
BeforeReadObjectNotifies the application about the start of the object reading request.
BeforeReCertifyNotifies the application about a re-certification request.
BeforeReKeyNotifies the application about a re-key request received.
BeforeRekeyKeyPairNotifies the application about a keypair re-key request received.
BeforeRemoveObjectNotifies the application about an incoming Remove Object request.
BeforeSignNotifies the application about the initiation of a signing operation.
BeforeVerifyNotifies the application about the initiation of the verify operation.
BeforeVerifyHashNotifies the application about the initiation of the hash verification operation.
CancelReports a cancellation request received from the client.
CheckNotifies the application about a Check request received.
ConnectReports an accepted connection.
DecryptInstructs the application to decrypt a chunk of data.
DeleteAttributeInstructs the application to delete an object attribute.
DeriveKeyNotifies the application of key derivation request.
DisconnectFires to report a disconnected client.
EncryptInstructs the application to encrypt a chunk of data.
ErrorInformation about errors during data delivery.
ExternalSignHandles remote or external signing initiated by the server protocol.
GenerateNotifies the application about an incoming Generate request.
GenerateKeyNotifies the application about an incoming Generate request.
GenerateKeyPairNotifies the application about an incoming Generate request.
GetUsageAllocationNotifies the application about an incoming Get Usage Allocation request.
HashInstructs the application to update the current hashing operation.
HeadersPreparedFires when the response headers have been formed and are ready to be sent to the server.
KMIPAuthAttemptFires when a connected client makes an authentication attempt.
ListInstructs the application to return the list of objects that match the specified criteria.
ListAttributesRequests a list of object attribute names from the application.
NotificationThis event notifies the application about an underlying control flow event.
ObtainLeaseLets the application handle the lease request.
OperationAttemptFires when a request is received from the client.
PollNotifies the application about the received Poll request.
ReadAttributeRequests an object attribute value from the application.
ReadObjectRequests the details of the object from the application.
ReCertifyNotifies the application about an incoming re-certification request.
RecoverObjectNotifies the application about an incoming Recover Object request.
ReKeyNotifies the application about an incoming re-key request.
RekeyKeyPairNotifies the application about an incoming re-key request.
RemoveObjectNotifies the application about the object deletion request.
RequestNotifies the application about KMIP requests being received.
ResponseNotifies the application about KMIP responses being sent back.
RevokeObjectInstructs the application to revoke an object.
RNGGenerateAsks the application for another block of random numbers.
RNGSeedTells the application to seed the random number generator.
SetAttributePasses a set-attribute request to the application.
SignInstructs the application to sign data with a private key.
TLSCertValidateFires when a client certificate needs to be validated.
TLSEstablishedReports the setup of a TLS session.
TLSHandshakeFires when a newly established client connection initiates a TLS handshake.
TLSPSKRequests a pre-shared key for TLS-PSK.
TLSShutdownReports closure of a TLS session.
ValidateChainPasses the chain validation request to the application.
VerifyKMIPServer fires this event to notify the application about a verification operation request, and expects the application to perform it.
VerifyHashDelegates the hash verification operation to a custom handler.

Config Settings


The following is a list of config settings for the component with short descriptions. Click on the links for further details.

AllowKeepAliveEnables or disables keep-alive mode.
AllowOptionsResponseWithoutAuthEnables unauthenticated responses to OPTIONS requests.
AuthBasicTurns on/off the basic authentication.
AuthDigestTurns on/off the digest authentication.
AuthDigestExpireSpecifies digest expiration time for digest authentication.
AuthRealmSpecifies authentication realm for digest and NTLM authentication.
CompressionLevelThe default compression level to use.
DualStackAllows the use of ip4 and ip6 simultaneously.
HomePageSpecifies the home page resource name.
MajorProtocolVersionMajor protocol version on the KMIP server.
MinorProtocolVersionMinor protocol version on the KMIP server.
RequestFilterThe request string modifier.
SSLModeWhether to establish a TLS-secured connection.
UseChunkedTransferWhether to use chunked encoding of the data.
UseChunkedTransferEnables chunked transfer.
UseCompressionWhether to use GZip compression.
UseCompressionEnables or disables server-side compression.
ASN1UseGlobalTagCacheControls whether ASN.1 module should use a global object cache.
AssignSystemSmartCardPinsSpecifies whether CSP-level PINs should be assigned to CNG keys.
CheckKeyIntegrityBeforeUseEnables or disable private key integrity check before use.
CookieCachingSpecifies whether a cookie cache should be used for HTTP(S) transports.
CookiesGets or sets local cookies for the component.
DefDeriveKeyIterationsSpecifies the default key derivation algorithm iteration count.
DNSLocalSuffixThe suffix to assign for TLD names.
EnableClientSideSSLFFDHEEnables or disables finite field DHE key exchange support in TLS clients.
GlobalCookiesGets or sets global cookies for all the HTTP transports.
HardwareCryptoUsePolicyThe hardware crypto usage policy.
HttpUserAgentSpecifies the user agent name to be used by all HTTP clients.
HttpVersionThe HTTP version to use in any inner HTTP client components created.
IgnoreExpiredMSCTLSigningCertWhether to tolerate the expired Windows Update signing certificate.
ListDelimiterThe delimiter character for multi-element lists.
LogDestinationSpecifies the debug log destination.
LogDetailsSpecifies the debug log details to dump.
LogFileSpecifies the debug log filename.
LogFiltersSpecifies the debug log filters.
LogFlushModeSpecifies the log flush mode.
LogLevelSpecifies the debug log level.
LogMaxEventCountSpecifies the maximum number of events to cache before further action is taken.
LogRotationModeSpecifies the log rotation mode.
MaxASN1BufferLengthSpecifies the maximal allowed length for ASN.1 primitive tag data.
MaxASN1TreeDepthSpecifies the maximal depth for processed ASN.1 trees.
OCSPHashAlgorithmSpecifies the hash algorithm to be used to identify certificates in OCSP requests.
OldClientSideRSAFallbackSpecifies whether the SSH client should use a SHA1 fallback.
ProductVersionReturns the version of the SecureBlackbox library.
ServerSSLDHKeyLengthSets the size of the TLS DHE key exchange group.
StaticDNSSpecifies whether static DNS rules should be used.
StaticIPAddress[domain]Gets or sets an IP address for the specified domain name.
StaticIPAddressesGets or sets all the static DNS rules.
TagAllows to store any custom data.
TLSSessionGroupSpecifies the group name of TLS sessions to be used for session resumption.
TLSSessionLifetimeSpecifies lifetime in seconds of the cached TLS session.
TLSSessionPurgeIntervalSpecifies how often the session cache should remove the expired TLS sessions.
UseInternalRandomSwitches between SecureBlackbox-own and platform PRNGs.
UseLegacyAdESValidationEnables legacy AdES validation mode.
UseOwnDNSResolverSpecifies whether the client components should use own DNS resolver.
UseSharedSystemStoragesSpecifies whether the validation engine should use a global per-process copy of the system certificate stores.
UseSystemNativeSizeCalculationAn internal CryptoAPI access tweak.
UseSystemOAEPAndPSSEnforces or disables the use of system-driven RSA OAEP and PSS computations.
UseSystemRandomEnables or disables the use of the OS PRNG.

Active Property (KMIPServer Component)

Indicates if the KMIP server is active and listening to incoming connections.

Syntax

public bool Active { get; }
Public ReadOnly Property Active As Boolean

Default Value

False

Remarks

Check this property to find out if the KMIP server is in an active state. Use Start and Stop methods to launch and stop the server.

This property is read-only and not available at design time.

AllowKeepAlive Property (KMIPServer Component)

Enables or disables keep-alive mode.

Syntax

public bool AllowKeepAlive { get; set; }
Public Property AllowKeepAlive As Boolean

Default Value

True

Remarks

Use this property to enable or disable the keep-alive connection mode. If keep-alive is enabled, clients that choose to use it may stay connected for a while.

AuthRealm Property (KMIPServer Component)

Specifies authentication realm for digest and NTLM authentication.

Syntax

public string AuthRealm { get; set; }
Public Property AuthRealm As String

Default Value

"SecureBlackbox"

Remarks

Specifies authentication realm for digest and NTLM authentication types.

AuthTypes Property (KMIPServer Component)

Defines allowed HTTP authentication types.

Syntax

public int AuthTypes { get; set; }
Public Property AuthTypes As Integer

Default Value

0

Remarks

Use this property to define which authentication types the component should support or attempt to use by enabling the relevant bitmask flags:

haBasic0x01Basic authentication

haDigest0x02Digest authentication (RFC 2617)

haNTLM0x04Windows NTLM authentication

haKerberos0x08Kerberos (Negotiate) authentication

haOAuth20x10OAuth2 authentication

BoundPort Property (KMIPServer Component)

Indicates the bound listening port.

Syntax

public int BoundPort { get; }
Public ReadOnly Property BoundPort As Integer

Default Value

0

Remarks

Check this property to find out the port that has been allocated to the server by the system. The bound port always equals Port if it is provided, or is allocated dynamically if configured to fall in the range between PortRangeFrom and PortRangeTo constraints.

This property is read-only and not available at design time.

CACertificate Property (KMIPServer Component)

The default CA certificate.

Syntax

public Certificate CACertificate { get; set; }
Public Property CACertificate As Certificate

Remarks

KMIP server uses this certificate to sign incoming certificate requests. All certificates generated by the KMIP server will be signed by this CA.

This property is not available at design time.

Please refer to the Certificate type for a complete list of fields.

Certificate Property (KMIPServer Component)

Contains the certificate that has just been generated or added.

Syntax

public Certificate Certificate { get; set; }
Public Property Certificate As Certificate

Remarks

Use this property to access the certificate that has just been generated or added.

This property is not available at design time.

Please refer to the Certificate type for a complete list of fields.

CompressionLevel Property (KMIPServer Component)

The default compression level to use.

Syntax

public int CompressionLevel { get; set; }
Public Property CompressionLevel As Integer

Default Value

6

Remarks

Assign this property with the compression level (1 to 9) to apply for gzipped responses. 1 stands for the lightest but fastest compression, and 9 for the best but the slowest.

ExternalCrypto Property (KMIPServer Component)

Provides access to external signing and DC parameters.

Syntax

public ExternalCrypto ExternalCrypto { get; }
Public ReadOnly Property ExternalCrypto As ExternalCrypto

Remarks

Use this property to tune-up remote cryptography settings. SecureBlackbox supports two independent types of external cryptography: synchronous (based on the ExternalSign event) and asynchronous (based on the DC protocol and the DCAuth signing component).

This property is read-only.

Please refer to the ExternalCrypto type for a complete list of fields.

FIPSMode Property (KMIPServer Component)

Reserved.

Syntax

public bool FIPSMode { get; set; }
Public Property FIPSMode As Boolean

Default Value

False

Remarks

This property is reserved for future use.

HandshakeTimeout Property (KMIPServer Component)

Specifies the handshake timeout in milliseconds.

Syntax

public int HandshakeTimeout { get; set; }
Public Property HandshakeTimeout As Integer

Default Value

20000

Remarks

Use this property to set the TLS handshake timeout.

Host Property (KMIPServer Component)

Specifies the host name of the KMIP server.

Syntax

public string Host { get; set; }
Public Property Host As String

Default Value

""

Remarks

Use this property to specify the address of the KMIP server.

Key Property (KMIPServer Component)

Contains the key that has just been generated or added.

Syntax

public CryptoKey Key { get; set; }
Public Property Key As CryptoKey

Remarks

Use this property to access the key that has just been generated or added.

This property is not available at design time.

Please refer to the CryptoKey type for a complete list of fields.

PinnedClient Property (KMIPServer Component)

Populates the pinned client details.

Syntax

public TLSConnectionInfo PinnedClient { get; }
Public ReadOnly Property PinnedClient As TLSConnectionInfo

Remarks

Use this property to access the details of the client connection previously pinned with PinClient method.

This property is read-only and not available at design time.

Please refer to the TLSConnectionInfo type for a complete list of fields.

PinnedClientChain Property (KMIPServer Component)

Contains the certificate chain of the pinned client.

Syntax

public CertificateList PinnedClientChain { get; }
Public ReadOnly Property PinnedClientChain As CertificateList

Remarks

Use this property to access the certificate chain of the client connection pinned previously with a PinClient call.

This property is read-only and not available at design time.

Please refer to the Certificate type for a complete list of fields.

Port Property (KMIPServer Component)

A port to listen for connections on.

Syntax

public int Port { get; set; }
Public Property Port As Integer

Default Value

5696

Remarks

Use this property to specify the listening port.

ReadOnly Property (KMIPServer Component)

Controls whether the server works in read-only mode.

Syntax

public bool ReadOnly { get; set; }
Public Property ReadOnly As Boolean

Default Value

False

Remarks

Use this property to enable or disable read-only mode on the server. It is an easy way to prevent connecting users from adding or removing objects managed by the server.

This property is not available at design time.

SessionTimeout Property (KMIPServer Component)

Specifies the default session timeout value in milliseconds.

Syntax

public int SessionTimeout { get; set; }
Public Property SessionTimeout As Integer

Default Value

360000

Remarks

Specifies the period of inactivity (in milliseconds) after which the connection will be terminated by the server.

SocketSettings Property (KMIPServer Component)

Manages network connection settings.

Syntax

public SocketSettings SocketSettings { get; }
Public ReadOnly Property SocketSettings As SocketSettings

Remarks

Use this property to tune up network connection parameters.

This property is read-only.

Please refer to the SocketSettings type for a complete list of fields.

StorageFileName Property (KMIPServer Component)

A path to the KMIP object database.

Syntax

public string StorageFileName { get; set; }
Public Property StorageFileName As String

Default Value

""

Remarks

Assign the path to the database of objects managed by the KMIP server to this property.

TLSServerChain Property (KMIPServer Component)

The server's TLS certificates.

Syntax

public CertificateList TLSServerChain { get; }
Public Property TLSServerChain As CertificateList

Remarks

Use this property to provide a list of TLS certificates for the server endpoint.

A TLS endpoint needs a certificate to be able to accept TLS connections. At least one of the certificates in the collection - the endpoint certificate - must have a private key associated with it.

The collection may include more than one endpoint certificate, and more than one chain. A typical usage scenario is to include two chains (ECDSA and RSA), to cater for clients with different cipher suite preferences.

This property is not available at design time.

Please refer to the Certificate type for a complete list of fields.

TLSSettings Property (KMIPServer Component)

Manages TLS layer settings.

Syntax

public TLSSettings TLSSettings { get; }
Public ReadOnly Property TLSSettings As TLSSettings

Remarks

Use this property to tune up the TLS layer parameters.

This property is read-only.

Please refer to the TLSSettings type for a complete list of fields.

UseChunkedTransfer Property (KMIPServer Component)

Enables chunked transfer.

Syntax

public bool UseChunkedTransfer { get; set; }
Public Property UseChunkedTransfer As Boolean

Default Value

False

Remarks

Use this property to enable chunked content encoding.

UseCompression Property (KMIPServer Component)

Enables or disables server-side compression.

Syntax

public bool UseCompression { get; set; }
Public Property UseCompression As Boolean

Default Value

False

Remarks

Use this property to enable or disable server-side content compression.

UseHTTP Property (KMIPServer Component)

Specifies whether the server should use HTTP instead of KMIP-over-TCP/TLS.

Syntax

public bool UseHTTP { get; set; }
Public Property UseHTTP As Boolean

Default Value

False

Remarks

Set this property to true to tell the server to expect HTTP(S) connections instead of TCP-based KMIP requests.

This property is not available at design time.

Users Property (KMIPServer Component)

A database of registered users.

Syntax

public UserAccountList Users { get; }
Public Property Users As UserAccountList

Remarks

Use this property to configure user authentication on the KMIP server.

This property is not available at design time.

Please refer to the UserAccount type for a complete list of fields.

Cleanup Method (KMIPServer Component)

Cleans up the server environment by purging expired sessions and cleaning caches.

Syntax

public void Cleanup();
Public Sub Cleanup()

Remarks

Call this method while the server is active to clean up the environment allocated for the server by releasing unused resources and cleaning caches.

Config Method (KMIPServer Component)

Sets or retrieves a configuration setting.

Syntax

public string Config(string configurationString);
Public Function Config(ByVal ConfigurationString As String) As String

Remarks

Config is a generic method available in every component. It is used to set and retrieve configuration settings for the component.

These settings are similar in functionality to properties, but they are rarely used. In order to avoid "polluting" the property namespace of the component, access to these internal properties is provided through the Config method.

To set a configuration setting named PROPERTY, you must call Config("PROPERTY=VALUE"), where VALUE is the value of the setting expressed as a string. For boolean values, use the strings "True", "False", "0", "1", "Yes", or "No" (case does not matter).

To read (query) the value of a configuration setting, you must call Config("PROPERTY"). The value will be returned as a string.

DoAction Method (KMIPServer Component)

Performs an additional action.

Syntax

public string DoAction(string actionID, string actionParams);
Public Function DoAction(ByVal ActionID As String, ByVal ActionParams As String) As String

Remarks

DoAction is a generic method available in every component. It is used to perform an additional action introduced after the product major release. The list of actions is not fixed, and may be flexibly extended over time.

The unique identifier (case insensitive) of the action is provided in the ActionID parameter.

ActionParams contains the value of a single parameter, or a list of multiple parameters for the action in the form of PARAM1=VALUE1;PARAM2=VALUE2;....

DropClient Method (KMIPServer Component)

Terminates a client connection.

Syntax

public void DropClient(long connectionId, bool forced);
Public Sub DropClient(ByVal ConnectionId As Long, ByVal Forced As Boolean)

Remarks

Call this method to shut down a connected client. Forced indicates whether the connection should be closed in a graceful manner.

GetClientCert Method (KMIPServer Component)

Populates the per-connection certificate object.

Syntax

public void GetClientCert(long connectionID);
Public Sub GetClientCert(ByVal ConnectionID As Long)

Remarks

This method populates the certificate template/object received with the certificate generation request in Certificate property.

Call this method from your BeforeGenerate event handler to populate the certificate template, as received in the request. It is still not late to alter the details of the certificate on this stage.

Call it from your AfterGenerate event handler to populate the certificate that has been generated.

GetClientKey Method (KMIPServer Component)

Populates the per-connection key object.

Syntax

public void GetClientKey(long connectionID);
Public Sub GetClientKey(ByVal ConnectionID As Long)

Remarks

This method populates the key template/object received with the key generation request in Key property.

Call this method from your BeforeGenerateKey event handler to populate the key template, as received in the request. It is still not late to alter the details of the key on this stage.

Call it from your AfterGenerateKey event handler to populate the key that has been generated.

GetRequestHeader Method (KMIPServer Component)

Returns a request header value.

Syntax

public string GetRequestHeader(long connectionId, string headerName);
Public Function GetRequestHeader(ByVal ConnectionId As Long, ByVal HeaderName As String) As String

Remarks

Use this method to get the value of a request header. A good place to call this method is a request-marking event, such as GetRequest or PostRequest.

GetResponseHeader Method (KMIPServer Component)

Returns a response header value.

Syntax

public string GetResponseHeader(long connectionId, string headerName);
Public Function GetResponseHeader(ByVal ConnectionId As Long, ByVal HeaderName As String) As String

Remarks

Use this method to get the value of a response header. A good place to call this method is HeadersPrepared event. Call the method with empty HeaderName to get the whole response header.

ListClients Method (KMIPServer Component)

Enumerates the connected clients.

Syntax

public string ListClients();
Public Function ListClients() As String

Remarks

This method enumerates the connected clients. It returns a list of strings, with each string being of 'ConnectionID|Address|Port' format, and representing a single connection.

PinClient Method (KMIPServer Component)

Takes a snapshot of the connection's properties.

Syntax

public void PinClient(long connectionId);
Public Sub PinClient(ByVal ConnectionId As Long)

Remarks

Use this method to take a snapshot of a connected client. The captured properties are populated in PinnedClient and PinnedClientChain properties.

ProcessGenericRequest Method (KMIPServer Component)

Processes a generic HTTP request.

Syntax

public byte[] ProcessGenericRequest(long connectionId, byte[] requestBytes);
Public Function ProcessGenericRequest(ByVal ConnectionId As Long, ByVal RequestBytes As Byte()) As Byte()

Remarks

This method processes a generic HTTP request and produces a response. Use it to generate HTTP responses for requests obtained externally, out of the default HTTP channel.

This method respects all current settings of the server object, and invokes the corresponding events to consult about the request and response details with the application. ConnectionId allows to identify the request in the events.

The method returns the complete HTTP response including HTTP headers.

Reset Method (KMIPServer Component)

Resets the component settings.

Syntax

public void Reset();
Public Sub Reset()

Remarks

Reset is a generic method available in every component.

SetClientBytes Method (KMIPServer Component)

Commits a data buffer to the connection.

Syntax

public void SetClientBytes(long connectionID, byte[] value);
Public Sub SetClientBytes(ByVal ConnectionID As Long, ByVal Value As Byte())

Remarks

Use this method from your Response Encrypt AfterEncrypt Decrypt AfterDecrypt Sign AfterSign events handler to commit a new data to the server component.

SetClientCert Method (KMIPServer Component)

Commits the per-connection certificate object to the connection context.

Syntax

public void SetClientCert(long connectionID);
Public Sub SetClientCert(ByVal ConnectionID As Long)

Remarks

This method commits the certificate object stored in Certificate to the connection context.

SetClientKey Method (KMIPServer Component)

Commits the per-connection key object to the connection context.

Syntax

public void SetClientKey(long connectionID);
Public Sub SetClientKey(ByVal ConnectionID As Long)

Remarks

This method commits the key object stored in Key to the connection context.

SetResponseHeader Method (KMIPServer Component)

Sets a response header.

Syntax

public void SetResponseHeader(long connectionId, string headerName, string value);
Public Sub SetResponseHeader(ByVal ConnectionId As Long, ByVal HeaderName As String, ByVal Value As String)

Remarks

Use this method to set a response header. A good place to call this method is a request-marking event, such as GetRequest or PostRequest.

Start Method (KMIPServer Component)

Start the KMIP server.

Syntax

public void Start();
Public Sub Start()

Remarks

Call this method to activate the KMIP server and start listening to incoming connections.

Stop Method (KMIPServer Component)

Stops the KMIP server.

Syntax

public void Stop();
Public Sub Stop()

Remarks

Call this method to stop the KMIP server.

Accept Event (KMIPServer Component)

Reports an incoming connection.

Syntax

public event OnAcceptHandler OnAccept;

public delegate void OnAcceptHandler(object sender, KMIPServerAcceptEventArgs e);

public class KMIPServerAcceptEventArgs : EventArgs {
  public string RemoteAddress { get; }
  public int RemotePort { get; }
  public bool Accept { get; set; }
}
Public Event OnAccept As OnAcceptHandler

Public Delegate Sub OnAcceptHandler(sender As Object, e As KMIPServerAcceptEventArgs)

Public Class KMIPServerAcceptEventArgs Inherits EventArgs
  Public ReadOnly Property RemoteAddress As String
  Public ReadOnly Property RemotePort As Integer
  Public Property Accept As Boolean
End Class

Remarks

This event is fired when a new connection from RemoteAddress:RemotePort is ready to be accepted. Use the Accept parameter to accept or decline it.

Subscribe to Connect event to be notified of every connection that has been set up.

ActivateObject Event (KMIPServer Component)

Notifies the application about the object activation request.

Syntax

public event OnActivateObjectHandler OnActivateObject;

public delegate void OnActivateObjectHandler(object sender, KMIPServerActivateObjectEventArgs e);

public class KMIPServerActivateObjectEventArgs : EventArgs {
  public long ConnectionId { get; }
  public string ObjectId { get; }
  public int OperationStatus { get; set; }
}
Public Event OnActivateObject As OnActivateObjectHandler

Public Delegate Sub OnActivateObjectHandler(sender As Object, e As KMIPServerActivateObjectEventArgs)

Public Class KMIPServerActivateObjectEventArgs Inherits EventArgs
  Public ReadOnly Property ConnectionId As Long
  Public ReadOnly Property ObjectId As String
  Public Property OperationStatus As Integer
End Class

Remarks

Subscribe to this event to get notified about object activation requests. The ObjectId parameter contain the unique identifier of the object being activated.

Object activation requests are handled in a simplified way, without using the three-step virtualization approach.

ostOk1
ostNoSuchFile2
ostAccessDenied3
ostWriteProtect4
ostUnsupported5
ostInvalidParameter6
ostEOF7

Add Event (KMIPServer Component)

Passes the certificate import request to the application.

Syntax

public event OnAddHandler OnAdd;

public delegate void OnAddHandler(object sender, KMIPServerAddEventArgs e);

public class KMIPServerAddEventArgs : EventArgs {
  public long ConnectionId { get; }
  public string Group { get; set; }
  public string CertId { get; set; }
  public int OperationStatus { get; set; }
}
Public Event OnAdd As OnAddHandler

Public Delegate Sub OnAddHandler(sender As Object, e As KMIPServerAddEventArgs)

Public Class KMIPServerAddEventArgs Inherits EventArgs
  Public ReadOnly Property ConnectionId As Long
  Public Property Group As String
  Public Property CertId As String
  Public Property OperationStatus As Integer
End Class

Remarks

The server uses this event to allow the application to customize a certificate import request. This request fires after BeforeAdd if the Action parameter passed back to it was set to fraCustom.

The Group parameter indicates the shared name for the certificate elements (public key, private key, certificate). The CertId provides a unique identifier for the certificate object. Both can be adjusted by the application as required. Use the Certificate object to access the certificate parameters.

Upon completion of the processing, set the value of OperationStatus to match the result of the operation.

ostOk1
ostNoSuchFile2
ostAccessDenied3
ostWriteProtect4
ostUnsupported5
ostInvalidParameter6
ostEOF7

AddKey Event (KMIPServer Component)

Expects the application to handle the key import request.

Syntax

public event OnAddKeyHandler OnAddKey;

public delegate void OnAddKeyHandler(object sender, KMIPServerAddKeyEventArgs e);

public class KMIPServerAddKeyEventArgs : EventArgs {
  public long ConnectionId { get; }
  public string Group { get; set; }
  public string KeyId { get; set; }
  public int OperationStatus { get; set; }
}
Public Event OnAddKey As OnAddKeyHandler

Public Delegate Sub OnAddKeyHandler(sender As Object, e As KMIPServerAddKeyEventArgs)

Public Class KMIPServerAddKeyEventArgs Inherits EventArgs
  Public ReadOnly Property ConnectionId As Long
  Public Property Group As String
  Public Property KeyId As String
  Public Property OperationStatus As Integer
End Class

Remarks

Application uses this event to wiretap into the key import procedure. For this event to be invoked, the fraCustom action needs to be previously returned from the BeforeAddKey event.

The handler of this event should process the key data provided via the Key property, typically by storing the key object in a local database. The handler also should set the KeyId and, optionally, Group parameters to match the properties of the new key object. The result of the operation should be returned via the OperationStatus parameter.

See the

Handling and overriding server operations using the Three-Step Virtualization

Most of the server components shipped with SecureBlackbox are highly customizable, allowing the user to override or alter the way the clients' requests are handled by default. The customization feature paves the way for creation of bespoke or virtualized server solutions that work over standardized protocols.

The possibility of customization is typically offered through a three-step virtualization model. Every customizable operation or request that can be handled by the server - say, RenameFile - is represented with a triple of events:

  • BeforeRenameFile
  • RenameFile
  • AfterRenameFile

The first event fires right after the respective request has been received from a client. It provides the details of the operation, such as the original and target file names, and, importantly, a by-reference (writable) Action parameter. The event handler can set the Action parameter to one of the three settings given below. The setting chosen defines the further operation flow:

  • fraAuto: the operation shall be handled automatically by the server: in this case, a file will be searched in the provided local directory and renamed.
  • fraCustom: indicates that the user wants to take care of the operation by themselves. If this setting is chosen, the server takes no action, and instead fires the RenameFile event shortly after BeforeRenameFile completes. The user is expected to handle RenameFile and perform the requested action - that is, rename the file - manually.
  • fraAbort: the operation should be aborted as not supported/allowed. Neither the server nor the user are expected to perform it.

The second event (RenameFile) only fires if Action was set to fraCustom in the earlier call to BeforeRenameFile. It lets the user handle the requested operation in the way they want. The user code must fulfil the operation (for example, rename a database entry, if building a virtualized server), and return the operation result as the event's OperationResult parameter.

If the Action parameter was set to fraAuto, RenameFile is not called. The server performs the operation automatically.

The third event, AfterRenameFile, fires upon completion of the operation, either in automatic or custom mode. The user code can check and/or adjust the result to be returned to the client.

To summarize:

  • If Action is set to fraAuto, the next call about this operation will be to AfterRenameFile.
  • If Action is set to fraCustom, the next call about the operation will be to RenameFile, and after that to AfterRenameFile.
  • If Action is set to fraAbort, the operation is rejected and no further calls about it are performed.
notes for more details about handling and virtualizing requests in SecureBlackbox servers.

ostOk1
ostNoSuchFile2
ostAccessDenied3
ostWriteProtect4
ostUnsupported5
ostInvalidParameter6
ostEOF7

AfterAdd Event (KMIPServer Component)

Notifies the application about completion of the certificate import operation.

Syntax

public event OnAfterAddHandler OnAfterAdd;

public delegate void OnAfterAddHandler(object sender, KMIPServerAfterAddEventArgs e);

public class KMIPServerAfterAddEventArgs : EventArgs {
  public long ConnectionId { get; }
  public string Group { get; set; }
  public string CertId { get; set; }
  public int OperationStatus { get; set; }
}
Public Event OnAfterAdd As OnAfterAddHandler

Public Delegate Sub OnAfterAddHandler(sender As Object, e As KMIPServerAfterAddEventArgs)

Public Class KMIPServerAfterAddEventArgs Inherits EventArgs
  Public ReadOnly Property ConnectionId As Long
  Public Property Group As String
  Public Property CertId As String
  Public Property OperationStatus As Integer
End Class

Remarks

The component fires this event upon completion of certificate import routine. The certificate object that has been generated can be read from the Certificate property.

The Group and CertId parameters contain the name of the group and the unique identifier assigned to the new certificate. The OperationStatus parameter contains the result of the operation. The application can adjust them as required.

ostOk1
ostNoSuchFile2
ostAccessDenied3
ostWriteProtect4
ostUnsupported5
ostInvalidParameter6
ostEOF7

AfterAddKey Event (KMIPServer Component)

Reports the completion of the key import procedure.

Syntax

public event OnAfterAddKeyHandler OnAfterAddKey;

public delegate void OnAfterAddKeyHandler(object sender, KMIPServerAfterAddKeyEventArgs e);

public class KMIPServerAfterAddKeyEventArgs : EventArgs {
  public long ConnectionId { get; }
  public string Group { get; set; }
  public string KeyId { get; set; }
  public int OperationStatus { get; set; }
}
Public Event OnAfterAddKey As OnAfterAddKeyHandler

Public Delegate Sub OnAfterAddKeyHandler(sender As Object, e As KMIPServerAfterAddKeyEventArgs)

Public Class KMIPServerAfterAddKeyEventArgs Inherits EventArgs
  Public ReadOnly Property ConnectionId As Long
  Public Property Group As String
  Public Property KeyId As String
  Public Property OperationStatus As Integer
End Class

Remarks

The component uses the AfterAddKey event to notify the application about completion of the key import processing. The OperationStatus parameter returns the operation result. The KeyId and Group parameters are set to match the properties of the newly created key. The application can change them if required.

This event fires both for "normal" and "virtualized" requests, independently of the value of the Action parameter returned from the BeforeAddKey event. See the

Handling and overriding server operations using the Three-Step Virtualization

Most of the server components shipped with SecureBlackbox are highly customizable, allowing the user to override or alter the way the clients' requests are handled by default. The customization feature paves the way for creation of bespoke or virtualized server solutions that work over standardized protocols.

The possibility of customization is typically offered through a three-step virtualization model. Every customizable operation or request that can be handled by the server - say, RenameFile - is represented with a triple of events:

  • BeforeRenameFile
  • RenameFile
  • AfterRenameFile

The first event fires right after the respective request has been received from a client. It provides the details of the operation, such as the original and target file names, and, importantly, a by-reference (writable) Action parameter. The event handler can set the Action parameter to one of the three settings given below. The setting chosen defines the further operation flow:

  • fraAuto: the operation shall be handled automatically by the server: in this case, a file will be searched in the provided local directory and renamed.
  • fraCustom: indicates that the user wants to take care of the operation by themselves. If this setting is chosen, the server takes no action, and instead fires the RenameFile event shortly after BeforeRenameFile completes. The user is expected to handle RenameFile and perform the requested action - that is, rename the file - manually.
  • fraAbort: the operation should be aborted as not supported/allowed. Neither the server nor the user are expected to perform it.

The second event (RenameFile) only fires if Action was set to fraCustom in the earlier call to BeforeRenameFile. It lets the user handle the requested operation in the way they want. The user code must fulfil the operation (for example, rename a database entry, if building a virtualized server), and return the operation result as the event's OperationResult parameter.

If the Action parameter was set to fraAuto, RenameFile is not called. The server performs the operation automatically.

The third event, AfterRenameFile, fires upon completion of the operation, either in automatic or custom mode. The user code can check and/or adjust the result to be returned to the client.

To summarize:

  • If Action is set to fraAuto, the next call about this operation will be to AfterRenameFile.
  • If Action is set to fraCustom, the next call about the operation will be to RenameFile, and after that to AfterRenameFile.
  • If Action is set to fraAbort, the operation is rejected and no further calls about it are performed.
notes for more details about handling and virtualizing requests in SecureBlackbox servers.

ostOk1
ostNoSuchFile2
ostAccessDenied3
ostWriteProtect4
ostUnsupported5
ostInvalidParameter6
ostEOF7

AfterBrowse Event (KMIPServer Component)

KMIP server uses this event to notify the application about the completion of the browsing (attribute request) operation.

Syntax

public event OnAfterBrowseHandler OnAfterBrowse;

public delegate void OnAfterBrowseHandler(object sender, KMIPServerAfterBrowseEventArgs e);

public class KMIPServerAfterBrowseEventArgs : EventArgs {
  public long ConnectionID { get; }
  public string ObjectId { get; }
  public int OperationStatus { get; set; }
}
Public Event OnAfterBrowse As OnAfterBrowseHandler

Public Delegate Sub OnAfterBrowseHandler(sender As Object, e As KMIPServerAfterBrowseEventArgs)

Public Class KMIPServerAfterBrowseEventArgs Inherits EventArgs
  Public ReadOnly Property ConnectionID As Long
  Public ReadOnly Property ObjectId As String
  Public Property OperationStatus As Integer
End Class

Remarks

The ConnectionID parameter identifies the client connection, and the ObjectId parameter specifies the unique ID of the object the attributes of which are being requested.

This event follows the three-step virtualization approach, and fires after the preceding BeforeBrowse and ReadAttribute events.

Check the operation status, and alter it, if needed, through the OperationStatus parameter:

ostOk1
ostNoSuchFile2
ostAccessDenied3
ostWriteProtect4
ostUnsupported5
ostInvalidParameter6
ostEOF7

See the

Handling and overriding server operations using the Three-Step Virtualization

Most of the server components shipped with SecureBlackbox are highly customizable, allowing the user to override or alter the way the clients' requests are handled by default. The customization feature paves the way for creation of bespoke or virtualized server solutions that work over standardized protocols.

The possibility of customization is typically offered through a three-step virtualization model. Every customizable operation or request that can be handled by the server - say, RenameFile - is represented with a triple of events:

  • BeforeRenameFile
  • RenameFile
  • AfterRenameFile

The first event fires right after the respective request has been received from a client. It provides the details of the operation, such as the original and target file names, and, importantly, a by-reference (writable) Action parameter. The event handler can set the Action parameter to one of the three settings given below. The setting chosen defines the further operation flow:

  • fraAuto: the operation shall be handled automatically by the server: in this case, a file will be searched in the provided local directory and renamed.
  • fraCustom: indicates that the user wants to take care of the operation by themselves. If this setting is chosen, the server takes no action, and instead fires the RenameFile event shortly after BeforeRenameFile completes. The user is expected to handle RenameFile and perform the requested action - that is, rename the file - manually.
  • fraAbort: the operation should be aborted as not supported/allowed. Neither the server nor the user are expected to perform it.

The second event (RenameFile) only fires if Action was set to fraCustom in the earlier call to BeforeRenameFile. It lets the user handle the requested operation in the way they want. The user code must fulfil the operation (for example, rename a database entry, if building a virtualized server), and return the operation result as the event's OperationResult parameter.

If the Action parameter was set to fraAuto, RenameFile is not called. The server performs the operation automatically.

The third event, AfterRenameFile, fires upon completion of the operation, either in automatic or custom mode. The user code can check and/or adjust the result to be returned to the client.

To summarize:

  • If Action is set to fraAuto, the next call about this operation will be to AfterRenameFile.
  • If Action is set to fraCustom, the next call about the operation will be to RenameFile, and after that to AfterRenameFile.
  • If Action is set to fraAbort, the operation is rejected and no further calls about it are performed.
notes for more details about handling and virtualizing requests in SecureBlackbox servers.

ostOk1
ostNoSuchFile2
ostAccessDenied3
ostWriteProtect4
ostUnsupported5
ostInvalidParameter6
ostEOF7

AfterDecrypt Event (KMIPServer Component)

Notifies the application about completion of the decryption call.

Syntax

public event OnAfterDecryptHandler OnAfterDecrypt;

public delegate void OnAfterDecryptHandler(object sender, KMIPServerAfterDecryptEventArgs e);

public class KMIPServerAfterDecryptEventArgs : EventArgs {
  public long ConnectionId { get; }
  public string ObjectId { get; }
  public byte[] DecryptedData { get; }
  public string CorrelationValue { get; set; }
  public int OperationStatus { get; set; }
}
Public Event OnAfterDecrypt As OnAfterDecryptHandler

Public Delegate Sub OnAfterDecryptHandler(sender As Object, e As KMIPServerAfterDecryptEventArgs)

Public Class KMIPServerAfterDecryptEventArgs Inherits EventArgs
  Public ReadOnly Property ConnectionId As Long
  Public ReadOnly Property ObjectId As String
  Public ReadOnly Property DecryptedData As Byte()
  Public Property CorrelationValue As String
  Public Property OperationStatus As Integer
End Class

Remarks

The component uses this event to notify the application about completion of the decrypt request. The event parameters provide the details of the decryption operation. This event fires independently of whether the build-in or virtualized decryption is used.

The ObjectId parameter contains the unique identifier of the decryption key. DecryptedData contains the decryption result. The CorrelationValue string is a linking token that allows to associate several pieces of a multi-step decryption operation together. The OperationStatus contains the result of the operation.

See the

Handling and overriding server operations using the Three-Step Virtualization

Most of the server components shipped with SecureBlackbox are highly customizable, allowing the user to override or alter the way the clients' requests are handled by default. The customization feature paves the way for creation of bespoke or virtualized server solutions that work over standardized protocols.

The possibility of customization is typically offered through a three-step virtualization model. Every customizable operation or request that can be handled by the server - say, RenameFile - is represented with a triple of events:

  • BeforeRenameFile
  • RenameFile
  • AfterRenameFile

The first event fires right after the respective request has been received from a client. It provides the details of the operation, such as the original and target file names, and, importantly, a by-reference (writable) Action parameter. The event handler can set the Action parameter to one of the three settings given below. The setting chosen defines the further operation flow:

  • fraAuto: the operation shall be handled automatically by the server: in this case, a file will be searched in the provided local directory and renamed.
  • fraCustom: indicates that the user wants to take care of the operation by themselves. If this setting is chosen, the server takes no action, and instead fires the RenameFile event shortly after BeforeRenameFile completes. The user is expected to handle RenameFile and perform the requested action - that is, rename the file - manually.
  • fraAbort: the operation should be aborted as not supported/allowed. Neither the server nor the user are expected to perform it.

The second event (RenameFile) only fires if Action was set to fraCustom in the earlier call to BeforeRenameFile. It lets the user handle the requested operation in the way they want. The user code must fulfil the operation (for example, rename a database entry, if building a virtualized server), and return the operation result as the event's OperationResult parameter.

If the Action parameter was set to fraAuto, RenameFile is not called. The server performs the operation automatically.

The third event, AfterRenameFile, fires upon completion of the operation, either in automatic or custom mode. The user code can check and/or adjust the result to be returned to the client.

To summarize:

  • If Action is set to fraAuto, the next call about this operation will be to AfterRenameFile.
  • If Action is set to fraCustom, the next call about the operation will be to RenameFile, and after that to AfterRenameFile.
  • If Action is set to fraAbort, the operation is rejected and no further calls about it are performed.
notes for more details about handling and virtualizing requests in SecureBlackbox servers.

ostOk1
ostNoSuchFile2
ostAccessDenied3
ostWriteProtect4
ostUnsupported5
ostInvalidParameter6
ostEOF7

AfterDeriveKey Event (KMIPServer Component)

Notifies the application about completion of the key derivation request.

Syntax

public event OnAfterDeriveKeyHandler OnAfterDeriveKey;

public delegate void OnAfterDeriveKeyHandler(object sender, KMIPServerAfterDeriveKeyEventArgs e);

public class KMIPServerAfterDeriveKeyEventArgs : EventArgs {
  public long ConnectionId { get; }
  public string NewKeyId { get; set; }
  public int OperationStatus { get; set; }
}
Public Event OnAfterDeriveKey As OnAfterDeriveKeyHandler

Public Delegate Sub OnAfterDeriveKeyHandler(sender As Object, e As KMIPServerAfterDeriveKeyEventArgs)

Public Class KMIPServerAfterDeriveKeyEventArgs Inherits EventArgs
  Public ReadOnly Property ConnectionId As Long
  Public Property NewKeyId As String
  Public Property OperationStatus As Integer
End Class

Remarks

Use this event to get notified about completion of key derivation requests. The OperationStatus parameter specifies the result of the key derivation operation. The NewKeyId contains the unique identifier of the new key. You can change both parameters if required.

See the

Handling and overriding server operations using the Three-Step Virtualization

Most of the server components shipped with SecureBlackbox are highly customizable, allowing the user to override or alter the way the clients' requests are handled by default. The customization feature paves the way for creation of bespoke or virtualized server solutions that work over standardized protocols.

The possibility of customization is typically offered through a three-step virtualization model. Every customizable operation or request that can be handled by the server - say, RenameFile - is represented with a triple of events:

  • BeforeRenameFile
  • RenameFile
  • AfterRenameFile

The first event fires right after the respective request has been received from a client. It provides the details of the operation, such as the original and target file names, and, importantly, a by-reference (writable) Action parameter. The event handler can set the Action parameter to one of the three settings given below. The setting chosen defines the further operation flow:

  • fraAuto: the operation shall be handled automatically by the server: in this case, a file will be searched in the provided local directory and renamed.
  • fraCustom: indicates that the user wants to take care of the operation by themselves. If this setting is chosen, the server takes no action, and instead fires the RenameFile event shortly after BeforeRenameFile completes. The user is expected to handle RenameFile and perform the requested action - that is, rename the file - manually.
  • fraAbort: the operation should be aborted as not supported/allowed. Neither the server nor the user are expected to perform it.

The second event (RenameFile) only fires if Action was set to fraCustom in the earlier call to BeforeRenameFile. It lets the user handle the requested operation in the way they want. The user code must fulfil the operation (for example, rename a database entry, if building a virtualized server), and return the operation result as the event's OperationResult parameter.

If the Action parameter was set to fraAuto, RenameFile is not called. The server performs the operation automatically.

The third event, AfterRenameFile, fires upon completion of the operation, either in automatic or custom mode. The user code can check and/or adjust the result to be returned to the client.

To summarize:

  • If Action is set to fraAuto, the next call about this operation will be to AfterRenameFile.
  • If Action is set to fraCustom, the next call about the operation will be to RenameFile, and after that to AfterRenameFile.
  • If Action is set to fraAbort, the operation is rejected and no further calls about it are performed.
notes for more details about handling and virtualizing requests in SecureBlackbox servers.

ostOk1
ostNoSuchFile2
ostAccessDenied3
ostWriteProtect4
ostUnsupported5
ostInvalidParameter6
ostEOF7

AfterEdit Event (KMIPServer Component)

Notifies the application of completion of the object editing operation.

Syntax

public event OnAfterEditHandler OnAfterEdit;

public delegate void OnAfterEditHandler(object sender, KMIPServerAfterEditEventArgs e);

public class KMIPServerAfterEditEventArgs : EventArgs {
  public long ConnectionID { get; }
  public string ObjectId { get; }
  public int OperationStatus { get; set; }
}
Public Event OnAfterEdit As OnAfterEditHandler

Public Delegate Sub OnAfterEditHandler(sender As Object, e As KMIPServerAfterEditEventArgs)

Public Class KMIPServerAfterEditEventArgs Inherits EventArgs
  Public ReadOnly Property ConnectionID As Long
  Public ReadOnly Property ObjectId As String
  Public Property OperationStatus As Integer
End Class

Remarks

The component fires this event to notify the application about completion of an edit operation. An edit operation consists of a number of individual attribute update requests.

The ObjectId parameter contains the unique identifier of the object that was edited. Use the OperationStatus parameter to check or update the result of the operation.

ostOk1
ostNoSuchFile2
ostAccessDenied3
ostWriteProtect4
ostUnsupported5
ostInvalidParameter6
ostEOF7

AfterEncrypt Event (KMIPServer Component)

Notifies the application about the completion of the encryption call.

Syntax

public event OnAfterEncryptHandler OnAfterEncrypt;

public delegate void OnAfterEncryptHandler(object sender, KMIPServerAfterEncryptEventArgs e);

public class KMIPServerAfterEncryptEventArgs : EventArgs {
  public long ConnectionId { get; }
  public string ObjectId { get; }
  public byte[] EncryptedData { get; }
  public string CorrelationValue { get; set; }
  public int OperationStatus { get; set; }
}
Public Event OnAfterEncrypt As OnAfterEncryptHandler

Public Delegate Sub OnAfterEncryptHandler(sender As Object, e As KMIPServerAfterEncryptEventArgs)

Public Class KMIPServerAfterEncryptEventArgs Inherits EventArgs
  Public ReadOnly Property ConnectionId As Long
  Public ReadOnly Property ObjectId As String
  Public ReadOnly Property EncryptedData As Byte()
  Public Property CorrelationValue As String
  Public Property OperationStatus As Integer
End Class

Remarks

The component uses this event to notify the application about completion of the encrypt request. The event parameters provide the details of the encryption operation. This event fires independently of whether the build-in or virtualized decryption is used.

The ObjectId parameter contains the unique identifier of the encryption key. EncryptedData contains the encryption result. The CorrelationValue string is a linking token that allows to associate several pieces of a multi-step encryption operation together. The OperationStatus contains the result of the operation.

See the

Handling and overriding server operations using the Three-Step Virtualization

Most of the server components shipped with SecureBlackbox are highly customizable, allowing the user to override or alter the way the clients' requests are handled by default. The customization feature paves the way for creation of bespoke or virtualized server solutions that work over standardized protocols.

The possibility of customization is typically offered through a three-step virtualization model. Every customizable operation or request that can be handled by the server - say, RenameFile - is represented with a triple of events:

  • BeforeRenameFile
  • RenameFile
  • AfterRenameFile

The first event fires right after the respective request has been received from a client. It provides the details of the operation, such as the original and target file names, and, importantly, a by-reference (writable) Action parameter. The event handler can set the Action parameter to one of the three settings given below. The setting chosen defines the further operation flow:

  • fraAuto: the operation shall be handled automatically by the server: in this case, a file will be searched in the provided local directory and renamed.
  • fraCustom: indicates that the user wants to take care of the operation by themselves. If this setting is chosen, the server takes no action, and instead fires the RenameFile event shortly after BeforeRenameFile completes. The user is expected to handle RenameFile and perform the requested action - that is, rename the file - manually.
  • fraAbort: the operation should be aborted as not supported/allowed. Neither the server nor the user are expected to perform it.

The second event (RenameFile) only fires if Action was set to fraCustom in the earlier call to BeforeRenameFile. It lets the user handle the requested operation in the way they want. The user code must fulfil the operation (for example, rename a database entry, if building a virtualized server), and return the operation result as the event's OperationResult parameter.

If the Action parameter was set to fraAuto, RenameFile is not called. The server performs the operation automatically.

The third event, AfterRenameFile, fires upon completion of the operation, either in automatic or custom mode. The user code can check and/or adjust the result to be returned to the client.

To summarize:

  • If Action is set to fraAuto, the next call about this operation will be to AfterRenameFile.
  • If Action is set to fraCustom, the next call about the operation will be to RenameFile, and after that to AfterRenameFile.
  • If Action is set to fraAbort, the operation is rejected and no further calls about it are performed.
notes for more details about handling and virtualizing requests in SecureBlackbox servers.

ostOk1
ostNoSuchFile2
ostAccessDenied3
ostWriteProtect4
ostUnsupported5
ostInvalidParameter6
ostEOF7

AfterGenerate Event (KMIPServer Component)

Signifies completion of certificate generation.

Syntax

public event OnAfterGenerateHandler OnAfterGenerate;

public delegate void OnAfterGenerateHandler(object sender, KMIPServerAfterGenerateEventArgs e);

public class KMIPServerAfterGenerateEventArgs : EventArgs {
  public long ConnectionId { get; }
  public string CertId { get; set; }
  public int OperationStatus { get; set; }
}
Public Event OnAfterGenerate As OnAfterGenerateHandler

Public Delegate Sub OnAfterGenerateHandler(sender As Object, e As KMIPServerAfterGenerateEventArgs)

Public Class KMIPServerAfterGenerateEventArgs Inherits EventArgs
  Public ReadOnly Property ConnectionId As Long
  Public Property CertId As String
  Public Property OperationStatus As Integer
End Class

Remarks

The component fires this event upon completion of certificate generation routine. The generated certificate can be read from Certificate.

ostOk1
ostNoSuchFile2
ostAccessDenied3
ostWriteProtect4
ostUnsupported5
ostInvalidParameter6
ostEOF7

AfterGenerateKey Event (KMIPServer Component)

Notifies the application of the completion of key generation procedure.

Syntax

public event OnAfterGenerateKeyHandler OnAfterGenerateKey;

public delegate void OnAfterGenerateKeyHandler(object sender, KMIPServerAfterGenerateKeyEventArgs e);

public class KMIPServerAfterGenerateKeyEventArgs : EventArgs {
  public long ConnectionId { get; }
  public string KeyId { get; set; }
  public int OperationStatus { get; set; }
}
Public Event OnAfterGenerateKey As OnAfterGenerateKeyHandler

Public Delegate Sub OnAfterGenerateKeyHandler(sender As Object, e As KMIPServerAfterGenerateKeyEventArgs)

Public Class KMIPServerAfterGenerateKeyEventArgs Inherits EventArgs
  Public ReadOnly Property ConnectionId As Long
  Public Property KeyId As String
  Public Property OperationStatus As Integer
End Class

Remarks

The component uses this event to notify the application about the completion of the key generation procedure. The KeyId parameter contains the ID of the new key object (and can be changed by the user code if required). The OperationStatus parameter reports the result of the operation.

This event is the third and conclusive in the sequence of BeforeGenerateKey, GenerateKey, and the AfterGenerateKey events. See the

Handling and overriding server operations using the Three-Step Virtualization

Most of the server components shipped with SecureBlackbox are highly customizable, allowing the user to override or alter the way the clients' requests are handled by default. The customization feature paves the way for creation of bespoke or virtualized server solutions that work over standardized protocols.

The possibility of customization is typically offered through a three-step virtualization model. Every customizable operation or request that can be handled by the server - say, RenameFile - is represented with a triple of events:

  • BeforeRenameFile
  • RenameFile
  • AfterRenameFile

The first event fires right after the respective request has been received from a client. It provides the details of the operation, such as the original and target file names, and, importantly, a by-reference (writable) Action parameter. The event handler can set the Action parameter to one of the three settings given below. The setting chosen defines the further operation flow:

  • fraAuto: the operation shall be handled automatically by the server: in this case, a file will be searched in the provided local directory and renamed.
  • fraCustom: indicates that the user wants to take care of the operation by themselves. If this setting is chosen, the server takes no action, and instead fires the RenameFile event shortly after BeforeRenameFile completes. The user is expected to handle RenameFile and perform the requested action - that is, rename the file - manually.
  • fraAbort: the operation should be aborted as not supported/allowed. Neither the server nor the user are expected to perform it.

The second event (RenameFile) only fires if Action was set to fraCustom in the earlier call to BeforeRenameFile. It lets the user handle the requested operation in the way they want. The user code must fulfil the operation (for example, rename a database entry, if building a virtualized server), and return the operation result as the event's OperationResult parameter.

If the Action parameter was set to fraAuto, RenameFile is not called. The server performs the operation automatically.

The third event, AfterRenameFile, fires upon completion of the operation, either in automatic or custom mode. The user code can check and/or adjust the result to be returned to the client.

To summarize:

  • If Action is set to fraAuto, the next call about this operation will be to AfterRenameFile.
  • If Action is set to fraCustom, the next call about the operation will be to RenameFile, and after that to AfterRenameFile.
  • If Action is set to fraAbort, the operation is rejected and no further calls about it are performed.
notes for more details about handling and virtualizing requests in SecureBlackbox servers.

ostOk1
ostNoSuchFile2
ostAccessDenied3
ostWriteProtect4
ostUnsupported5
ostInvalidParameter6
ostEOF7

AfterGenerateKeyPair Event (KMIPServer Component)

Notifies the application of the completion of keypair generation.

Syntax

public event OnAfterGenerateKeyPairHandler OnAfterGenerateKeyPair;

public delegate void OnAfterGenerateKeyPairHandler(object sender, KMIPServerAfterGenerateKeyPairEventArgs e);

public class KMIPServerAfterGenerateKeyPairEventArgs : EventArgs {
  public long ConnectionId { get; }
  public string PrivateKeyId { get; set; }
  public string PublicKeyId { get; set; }
  public int OperationStatus { get; set; }
}
Public Event OnAfterGenerateKeyPair As OnAfterGenerateKeyPairHandler

Public Delegate Sub OnAfterGenerateKeyPairHandler(sender As Object, e As KMIPServerAfterGenerateKeyPairEventArgs)

Public Class KMIPServerAfterGenerateKeyPairEventArgs Inherits EventArgs
  Public ReadOnly Property ConnectionId As Long
  Public Property PrivateKeyId As String
  Public Property PublicKeyId As String
  Public Property OperationStatus As Integer
End Class

Remarks

The component uses this event to notify the application about the completion of the keypair generation operation. The PrivateKeyId and PublicKeyId parameters contain the IDs of the new private and public keys respectively. The OperationStatus parameter returns the result of the operation.

See the

Handling and overriding server operations using the Three-Step Virtualization

Most of the server components shipped with SecureBlackbox are highly customizable, allowing the user to override or alter the way the clients' requests are handled by default. The customization feature paves the way for creation of bespoke or virtualized server solutions that work over standardized protocols.

The possibility of customization is typically offered through a three-step virtualization model. Every customizable operation or request that can be handled by the server - say, RenameFile - is represented with a triple of events:

  • BeforeRenameFile
  • RenameFile
  • AfterRenameFile

The first event fires right after the respective request has been received from a client. It provides the details of the operation, such as the original and target file names, and, importantly, a by-reference (writable) Action parameter. The event handler can set the Action parameter to one of the three settings given below. The setting chosen defines the further operation flow:

  • fraAuto: the operation shall be handled automatically by the server: in this case, a file will be searched in the provided local directory and renamed.
  • fraCustom: indicates that the user wants to take care of the operation by themselves. If this setting is chosen, the server takes no action, and instead fires the RenameFile event shortly after BeforeRenameFile completes. The user is expected to handle RenameFile and perform the requested action - that is, rename the file - manually.
  • fraAbort: the operation should be aborted as not supported/allowed. Neither the server nor the user are expected to perform it.

The second event (RenameFile) only fires if Action was set to fraCustom in the earlier call to BeforeRenameFile. It lets the user handle the requested operation in the way they want. The user code must fulfil the operation (for example, rename a database entry, if building a virtualized server), and return the operation result as the event's OperationResult parameter.

If the Action parameter was set to fraAuto, RenameFile is not called. The server performs the operation automatically.

The third event, AfterRenameFile, fires upon completion of the operation, either in automatic or custom mode. The user code can check and/or adjust the result to be returned to the client.

To summarize:

  • If Action is set to fraAuto, the next call about this operation will be to AfterRenameFile.
  • If Action is set to fraCustom, the next call about the operation will be to RenameFile, and after that to AfterRenameFile.
  • If Action is set to fraAbort, the operation is rejected and no further calls about it are performed.
notes for more details about handling and virtualizing requests in SecureBlackbox servers.

ostOk1
ostNoSuchFile2
ostAccessDenied3
ostWriteProtect4
ostUnsupported5
ostInvalidParameter6
ostEOF7

AfterHash Event (KMIPServer Component)

Notifies the application about completion of the hashing call.

Syntax

public event OnAfterHashHandler OnAfterHash;

public delegate void OnAfterHashHandler(object sender, KMIPServerAfterHashEventArgs e);

public class KMIPServerAfterHashEventArgs : EventArgs {
  public long ConnectionId { get; }
  public string ObjectId { get; }
  public byte[] HashData { get; }
  public string CorrelationValue { get; set; }
  public int OperationStatus { get; set; }
}
Public Event OnAfterHash As OnAfterHashHandler

Public Delegate Sub OnAfterHashHandler(sender As Object, e As KMIPServerAfterHashEventArgs)

Public Class KMIPServerAfterHashEventArgs Inherits EventArgs
  Public ReadOnly Property ConnectionId As Long
  Public ReadOnly Property ObjectId As String
  Public ReadOnly Property HashData As Byte()
  Public Property CorrelationValue As String
  Public Property OperationStatus As Integer
End Class

Remarks

Subscribe to this event to be notified about completion of the hashing request processing. The DataHash parameter contains the hash that has been calculated. The OperationStatus parameter contains the operation result. If the hashing operation was a MAC (keyed) operation, the ID of the key is passed to the ObjectId parameter.

See the

Handling and overriding server operations using the Three-Step Virtualization

Most of the server components shipped with SecureBlackbox are highly customizable, allowing the user to override or alter the way the clients' requests are handled by default. The customization feature paves the way for creation of bespoke or virtualized server solutions that work over standardized protocols.

The possibility of customization is typically offered through a three-step virtualization model. Every customizable operation or request that can be handled by the server - say, RenameFile - is represented with a triple of events:

  • BeforeRenameFile
  • RenameFile
  • AfterRenameFile

The first event fires right after the respective request has been received from a client. It provides the details of the operation, such as the original and target file names, and, importantly, a by-reference (writable) Action parameter. The event handler can set the Action parameter to one of the three settings given below. The setting chosen defines the further operation flow:

  • fraAuto: the operation shall be handled automatically by the server: in this case, a file will be searched in the provided local directory and renamed.
  • fraCustom: indicates that the user wants to take care of the operation by themselves. If this setting is chosen, the server takes no action, and instead fires the RenameFile event shortly after BeforeRenameFile completes. The user is expected to handle RenameFile and perform the requested action - that is, rename the file - manually.
  • fraAbort: the operation should be aborted as not supported/allowed. Neither the server nor the user are expected to perform it.

The second event (RenameFile) only fires if Action was set to fraCustom in the earlier call to BeforeRenameFile. It lets the user handle the requested operation in the way they want. The user code must fulfil the operation (for example, rename a database entry, if building a virtualized server), and return the operation result as the event's OperationResult parameter.

If the Action parameter was set to fraAuto, RenameFile is not called. The server performs the operation automatically.

The third event, AfterRenameFile, fires upon completion of the operation, either in automatic or custom mode. The user code can check and/or adjust the result to be returned to the client.

To summarize:

  • If Action is set to fraAuto, the next call about this operation will be to AfterRenameFile.
  • If Action is set to fraCustom, the next call about the operation will be to RenameFile, and after that to AfterRenameFile.
  • If Action is set to fraAbort, the operation is rejected and no further calls about it are performed.
notes for more details about handling and virtualizing requests in SecureBlackbox servers.

ostOk1
ostNoSuchFile2
ostAccessDenied3
ostWriteProtect4
ostUnsupported5
ostInvalidParameter6
ostEOF7

AfterList Event (KMIPServer Component)

Notifies the application about completion of the list command.

Syntax

public event OnAfterListHandler OnAfterList;

public delegate void OnAfterListHandler(object sender, KMIPServerAfterListEventArgs e);

public class KMIPServerAfterListEventArgs : EventArgs {
  public long ConnectionId { get; }
  public int ObjectType { get; }
  public int ObjectStatus { get; }
  public bool OnlyFreshObjects { get; }
  public string ObjectIds { get; set; }
  public int OperationStatus { get; set; }
}
Public Event OnAfterList As OnAfterListHandler

Public Delegate Sub OnAfterListHandler(sender As Object, e As KMIPServerAfterListEventArgs)

Public Class KMIPServerAfterListEventArgs Inherits EventArgs
  Public ReadOnly Property ConnectionId As Long
  Public ReadOnly Property ObjectType As Integer
  Public ReadOnly Property ObjectStatus As Integer
  Public ReadOnly Property OnlyFreshObjects As Boolean
  Public Property ObjectIds As String
  Public Property OperationStatus As Integer
End Class

Remarks

The component uses this event to notify the application about the completion of the list command. The ObjectType, ObjectStatus, and OnlyFreshObjects contain the listing criteria. The ObjectIds contains a list of object unique identifiers, separated by newlines.

See the

Handling and overriding server operations using the Three-Step Virtualization

Most of the server components shipped with SecureBlackbox are highly customizable, allowing the user to override or alter the way the clients' requests are handled by default. The customization feature paves the way for creation of bespoke or virtualized server solutions that work over standardized protocols.

The possibility of customization is typically offered through a three-step virtualization model. Every customizable operation or request that can be handled by the server - say, RenameFile - is represented with a triple of events:

  • BeforeRenameFile
  • RenameFile
  • AfterRenameFile

The first event fires right after the respective request has been received from a client. It provides the details of the operation, such as the original and target file names, and, importantly, a by-reference (writable) Action parameter. The event handler can set the Action parameter to one of the three settings given below. The setting chosen defines the further operation flow:

  • fraAuto: the operation shall be handled automatically by the server: in this case, a file will be searched in the provided local directory and renamed.
  • fraCustom: indicates that the user wants to take care of the operation by themselves. If this setting is chosen, the server takes no action, and instead fires the RenameFile event shortly after BeforeRenameFile completes. The user is expected to handle RenameFile and perform the requested action - that is, rename the file - manually.
  • fraAbort: the operation should be aborted as not supported/allowed. Neither the server nor the user are expected to perform it.

The second event (RenameFile) only fires if Action was set to fraCustom in the earlier call to BeforeRenameFile. It lets the user handle the requested operation in the way they want. The user code must fulfil the operation (for example, rename a database entry, if building a virtualized server), and return the operation result as the event's OperationResult parameter.

If the Action parameter was set to fraAuto, RenameFile is not called. The server performs the operation automatically.

The third event, AfterRenameFile, fires upon completion of the operation, either in automatic or custom mode. The user code can check and/or adjust the result to be returned to the client.

To summarize:

  • If Action is set to fraAuto, the next call about this operation will be to AfterRenameFile.
  • If Action is set to fraCustom, the next call about the operation will be to RenameFile, and after that to AfterRenameFile.
  • If Action is set to fraAbort, the operation is rejected and no further calls about it are performed.
notes for more details about handling and virtualizing requests in SecureBlackbox servers.

ostOk1
ostNoSuchFile2
ostAccessDenied3
ostWriteProtect4
ostUnsupported5
ostInvalidParameter6
ostEOF7

AfterObtainLease Event (KMIPServer Component)

Reports the completion of lease allocation operation.

Syntax

public event OnAfterObtainLeaseHandler OnAfterObtainLease;

public delegate void OnAfterObtainLeaseHandler(object sender, KMIPServerAfterObtainLeaseEventArgs e);

public class KMIPServerAfterObtainLeaseEventArgs : EventArgs {
  public long ConnectionId { get; }
  public string ObjectId { get; }
  public int LeaseTime { get; set; }
  public string LastChangeDate { get; set; }
  public int OperationStatus { get; set; }
}
Public Event OnAfterObtainLease As OnAfterObtainLeaseHandler

Public Delegate Sub OnAfterObtainLeaseHandler(sender As Object, e As KMIPServerAfterObtainLeaseEventArgs)

Public Class KMIPServerAfterObtainLeaseEventArgs Inherits EventArgs
  Public ReadOnly Property ConnectionId As Long
  Public ReadOnly Property ObjectId As String
  Public Property LeaseTime As Integer
  Public Property LastChangeDate As String
  Public Property OperationStatus As Integer
End Class

Remarks

The component uses this event to notify the application about the completion of lease allocation operation. The ObjectId parameter specifies the identifier of the object a lease for each is allocated. The LeaseTime and LastChangeDate parameters specify parameters of the lease.

See the

Handling and overriding server operations using the Three-Step Virtualization

Most of the server components shipped with SecureBlackbox are highly customizable, allowing the user to override or alter the way the clients' requests are handled by default. The customization feature paves the way for creation of bespoke or virtualized server solutions that work over standardized protocols.

The possibility of customization is typically offered through a three-step virtualization model. Every customizable operation or request that can be handled by the server - say, RenameFile - is represented with a triple of events:

  • BeforeRenameFile
  • RenameFile
  • AfterRenameFile

The first event fires right after the respective request has been received from a client. It provides the details of the operation, such as the original and target file names, and, importantly, a by-reference (writable) Action parameter. The event handler can set the Action parameter to one of the three settings given below. The setting chosen defines the further operation flow:

  • fraAuto: the operation shall be handled automatically by the server: in this case, a file will be searched in the provided local directory and renamed.
  • fraCustom: indicates that the user wants to take care of the operation by themselves. If this setting is chosen, the server takes no action, and instead fires the RenameFile event shortly after BeforeRenameFile completes. The user is expected to handle RenameFile and perform the requested action - that is, rename the file - manually.
  • fraAbort: the operation should be aborted as not supported/allowed. Neither the server nor the user are expected to perform it.

The second event (RenameFile) only fires if Action was set to fraCustom in the earlier call to BeforeRenameFile. It lets the user handle the requested operation in the way they want. The user code must fulfil the operation (for example, rename a database entry, if building a virtualized server), and return the operation result as the event's OperationResult parameter.

If the Action parameter was set to fraAuto, RenameFile is not called. The server performs the operation automatically.

The third event, AfterRenameFile, fires upon completion of the operation, either in automatic or custom mode. The user code can check and/or adjust the result to be returned to the client.

To summarize:

  • If Action is set to fraAuto, the next call about this operation will be to AfterRenameFile.
  • If Action is set to fraCustom, the next call about the operation will be to RenameFile, and after that to AfterRenameFile.
  • If Action is set to fraAbort, the operation is rejected and no further calls about it are performed.
notes for more details about handling and virtualizing requests in SecureBlackbox servers.

ostOk1
ostNoSuchFile2
ostAccessDenied3
ostWriteProtect4
ostUnsupported5
ostInvalidParameter6
ostEOF7

AfterReadObject Event (KMIPServer Component)

Notifies the application of the completion of the read operation on the object.

Syntax

public event OnAfterReadObjectHandler OnAfterReadObject;

public delegate void OnAfterReadObjectHandler(object sender, KMIPServerAfterReadObjectEventArgs e);

public class KMIPServerAfterReadObjectEventArgs : EventArgs {
  public long ConnectionId { get; }
  public string ObjectId { get; }
  public int ObjectType { get; }
  public int OperationStatus { get; set; }
}
Public Event OnAfterReadObject As OnAfterReadObjectHandler

Public Delegate Sub OnAfterReadObjectHandler(sender As Object, e As KMIPServerAfterReadObjectEventArgs)

Public Class KMIPServerAfterReadObjectEventArgs Inherits EventArgs
  Public ReadOnly Property ConnectionId As Long
  Public ReadOnly Property ObjectId As String
  Public ReadOnly Property ObjectType As Integer
  Public Property OperationStatus As Integer
End Class

Remarks

Use this event to be notified about completion of the read operation.

See the

Handling and overriding server operations using the Three-Step Virtualization

Most of the server components shipped with SecureBlackbox are highly customizable, allowing the user to override or alter the way the clients' requests are handled by default. The customization feature paves the way for creation of bespoke or virtualized server solutions that work over standardized protocols.

The possibility of customization is typically offered through a three-step virtualization model. Every customizable operation or request that can be handled by the server - say, RenameFile - is represented with a triple of events:

  • BeforeRenameFile
  • RenameFile
  • AfterRenameFile

The first event fires right after the respective request has been received from a client. It provides the details of the operation, such as the original and target file names, and, importantly, a by-reference (writable) Action parameter. The event handler can set the Action parameter to one of the three settings given below. The setting chosen defines the further operation flow:

  • fraAuto: the operation shall be handled automatically by the server: in this case, a file will be searched in the provided local directory and renamed.
  • fraCustom: indicates that the user wants to take care of the operation by themselves. If this setting is chosen, the server takes no action, and instead fires the RenameFile event shortly after BeforeRenameFile completes. The user is expected to handle RenameFile and perform the requested action - that is, rename the file - manually.
  • fraAbort: the operation should be aborted as not supported/allowed. Neither the server nor the user are expected to perform it.

The second event (RenameFile) only fires if Action was set to fraCustom in the earlier call to BeforeRenameFile. It lets the user handle the requested operation in the way they want. The user code must fulfil the operation (for example, rename a database entry, if building a virtualized server), and return the operation result as the event's OperationResult parameter.

If the Action parameter was set to fraAuto, RenameFile is not called. The server performs the operation automatically.

The third event, AfterRenameFile, fires upon completion of the operation, either in automatic or custom mode. The user code can check and/or adjust the result to be returned to the client.

To summarize:

  • If Action is set to fraAuto, the next call about this operation will be to AfterRenameFile.
  • If Action is set to fraCustom, the next call about the operation will be to RenameFile, and after that to AfterRenameFile.
  • If Action is set to fraAbort, the operation is rejected and no further calls about it are performed.
notes for more details about handling and virtualizing requests in SecureBlackbox servers.

ostOk1
ostNoSuchFile2
ostAccessDenied3
ostWriteProtect4
ostUnsupported5
ostInvalidParameter6
ostEOF7

AfterReCertify Event (KMIPServer Component)

Notifies the application about the completion of the re-certify operation.

Syntax

public event OnAfterReCertifyHandler OnAfterReCertify;

public delegate void OnAfterReCertifyHandler(object sender, KMIPServerAfterReCertifyEventArgs e);

public class KMIPServerAfterReCertifyEventArgs : EventArgs {
  public long ConnectionId { get; }
  public string NewCertId { get; set; }
  public int OperationStatus { get; set; }
}
Public Event OnAfterReCertify As OnAfterReCertifyHandler

Public Delegate Sub OnAfterReCertifyHandler(sender As Object, e As KMIPServerAfterReCertifyEventArgs)

Public Class KMIPServerAfterReCertifyEventArgs Inherits EventArgs
  Public ReadOnly Property ConnectionId As Long
  Public Property NewCertId As String
  Public Property OperationStatus As Integer
End Class

Remarks

The server component uses this event to notify the application about the completion of the re-certification (certificate renewal) operation. The NewCertId contains the unique ID of the new certificate object. You can adjust it if required.

ostOk1
ostNoSuchFile2
ostAccessDenied3
ostWriteProtect4
ostUnsupported5
ostInvalidParameter6
ostEOF7

AfterReKey Event (KMIPServer Component)

Notifies the application about the completion of the re-key operation.

Syntax

public event OnAfterReKeyHandler OnAfterReKey;

public delegate void OnAfterReKeyHandler(object sender, KMIPServerAfterReKeyEventArgs e);

public class KMIPServerAfterReKeyEventArgs : EventArgs {
  public long ConnectionId { get; }
  public string NewKeyId { get; set; }
  public int OperationStatus { get; set; }
}
Public Event OnAfterReKey As OnAfterReKeyHandler

Public Delegate Sub OnAfterReKeyHandler(sender As Object, e As KMIPServerAfterReKeyEventArgs)

Public Class KMIPServerAfterReKeyEventArgs Inherits EventArgs
  Public ReadOnly Property ConnectionId As Long
  Public Property NewKeyId As String
  Public Property OperationStatus As Integer
End Class

Remarks

The server component uses this event to notify the application about the completion of the re-key (key renewal) operation. The NewKeyId contains the unique ID of the new key object. You can adjust it if required.

ostOk1
ostNoSuchFile2
ostAccessDenied3
ostWriteProtect4
ostUnsupported5
ostInvalidParameter6
ostEOF7

AfterRekeyKeyPair Event (KMIPServer Component)

Notifies the application about the completion of the re-key keypair operation.

Syntax

public event OnAfterRekeyKeyPairHandler OnAfterRekeyKeyPair;

public delegate void OnAfterRekeyKeyPairHandler(object sender, KMIPServerAfterRekeyKeyPairEventArgs e);

public class KMIPServerAfterRekeyKeyPairEventArgs : EventArgs {
  public long ConnectionId { get; }
  public string NewPrivateKeyId { get; set; }
  public string NewPublicKeyId { get; set; }
  public int OperationStatus { get; set; }
}
Public Event OnAfterRekeyKeyPair As OnAfterRekeyKeyPairHandler

Public Delegate Sub OnAfterRekeyKeyPairHandler(sender As Object, e As KMIPServerAfterRekeyKeyPairEventArgs)

Public Class KMIPServerAfterRekeyKeyPairEventArgs Inherits EventArgs
  Public ReadOnly Property ConnectionId As Long
  Public Property NewPrivateKeyId As String
  Public Property NewPublicKeyId As String
  Public Property OperationStatus As Integer
End Class

Remarks

The server component uses this event to notify the application about the completion of the re-key (asymmetric key renewal) operation. The NewPrivateKeyId and NewPublicKeyId parameters contains the unique ID of the new key objects. You can adjust them if required.

ostOk1
ostNoSuchFile2
ostAccessDenied3
ostWriteProtect4
ostUnsupported5
ostInvalidParameter6
ostEOF7

AfterRemoveObject Event (KMIPServer Component)

Notifies the application about completion of the object removal request.

Syntax

public event OnAfterRemoveObjectHandler OnAfterRemoveObject;

public delegate void OnAfterRemoveObjectHandler(object sender, KMIPServerAfterRemoveObjectEventArgs e);

public class KMIPServerAfterRemoveObjectEventArgs : EventArgs {
  public long ConnectionId { get; }
  public string ObjectId { get; }
  public int OperationStatus { get; set; }
}
Public Event OnAfterRemoveObject As OnAfterRemoveObjectHandler

Public Delegate Sub OnAfterRemoveObjectHandler(sender As Object, e As KMIPServerAfterRemoveObjectEventArgs)

Public Class KMIPServerAfterRemoveObjectEventArgs Inherits EventArgs
  Public ReadOnly Property ConnectionId As Long
  Public ReadOnly Property ObjectId As String
  Public Property OperationStatus As Integer
End Class

Remarks

Subscribe to this event to be notified about completion of an object removal request. The OperationStatus parameter contains the result of the operation.

See the

Handling and overriding server operations using the Three-Step Virtualization

Most of the server components shipped with SecureBlackbox are highly customizable, allowing the user to override or alter the way the clients' requests are handled by default. The customization feature paves the way for creation of bespoke or virtualized server solutions that work over standardized protocols.

The possibility of customization is typically offered through a three-step virtualization model. Every customizable operation or request that can be handled by the server - say, RenameFile - is represented with a triple of events:

  • BeforeRenameFile
  • RenameFile
  • AfterRenameFile

The first event fires right after the respective request has been received from a client. It provides the details of the operation, such as the original and target file names, and, importantly, a by-reference (writable) Action parameter. The event handler can set the Action parameter to one of the three settings given below. The setting chosen defines the further operation flow:

  • fraAuto: the operation shall be handled automatically by the server: in this case, a file will be searched in the provided local directory and renamed.
  • fraCustom: indicates that the user wants to take care of the operation by themselves. If this setting is chosen, the server takes no action, and instead fires the RenameFile event shortly after BeforeRenameFile completes. The user is expected to handle RenameFile and perform the requested action - that is, rename the file - manually.
  • fraAbort: the operation should be aborted as not supported/allowed. Neither the server nor the user are expected to perform it.

The second event (RenameFile) only fires if Action was set to fraCustom in the earlier call to BeforeRenameFile. It lets the user handle the requested operation in the way they want. The user code must fulfil the operation (for example, rename a database entry, if building a virtualized server), and return the operation result as the event's OperationResult parameter.

If the Action parameter was set to fraAuto, RenameFile is not called. The server performs the operation automatically.

The third event, AfterRenameFile, fires upon completion of the operation, either in automatic or custom mode. The user code can check and/or adjust the result to be returned to the client.

To summarize:

  • If Action is set to fraAuto, the next call about this operation will be to AfterRenameFile.
  • If Action is set to fraCustom, the next call about the operation will be to RenameFile, and after that to AfterRenameFile.
  • If Action is set to fraAbort, the operation is rejected and no further calls about it are performed.
notes for more details about handling and virtualizing requests in SecureBlackbox servers.

ostOk1
ostNoSuchFile2
ostAccessDenied3
ostWriteProtect4
ostUnsupported5
ostInvalidParameter6
ostEOF7

AfterSign Event (KMIPServer Component)

Notifies the application of completion of a signing operation.

Syntax

public event OnAfterSignHandler OnAfterSign;

public delegate void OnAfterSignHandler(object sender, KMIPServerAfterSignEventArgs e);

public class KMIPServerAfterSignEventArgs : EventArgs {
  public long ConnectionId { get; }
  public string ObjectId { get; }
  public bool InputIsHash { get; }
  public byte[] SignatureData { get; }
  public string CorrelationValue { get; set; }
  public int OperationStatus { get; set; }
}
Public Event OnAfterSign As OnAfterSignHandler

Public Delegate Sub OnAfterSignHandler(sender As Object, e As KMIPServerAfterSignEventArgs)

Public Class KMIPServerAfterSignEventArgs Inherits EventArgs
  Public ReadOnly Property ConnectionId As Long
  Public ReadOnly Property ObjectId As String
  Public ReadOnly Property InputIsHash As Boolean
  Public ReadOnly Property SignatureData As Byte()
  Public Property CorrelationValue As String
  Public Property OperationStatus As Integer
End Class

Remarks

The component uses this event to notify the application about the completion of a signing operation.

The ObjectId parameter contains the unique identifier of the signing key. SignatureData contains the signing result. The CorrelationValue string is a linking token that allows to associate several pieces of a multi-step signing operation together. The OperationStatus contains the result of the operation.

See the

Handling and overriding server operations using the Three-Step Virtualization

Most of the server components shipped with SecureBlackbox are highly customizable, allowing the user to override or alter the way the clients' requests are handled by default. The customization feature paves the way for creation of bespoke or virtualized server solutions that work over standardized protocols.

The possibility of customization is typically offered through a three-step virtualization model. Every customizable operation or request that can be handled by the server - say, RenameFile - is represented with a triple of events:

  • BeforeRenameFile
  • RenameFile
  • AfterRenameFile

The first event fires right after the respective request has been received from a client. It provides the details of the operation, such as the original and target file names, and, importantly, a by-reference (writable) Action parameter. The event handler can set the Action parameter to one of the three settings given below. The setting chosen defines the further operation flow:

  • fraAuto: the operation shall be handled automatically by the server: in this case, a file will be searched in the provided local directory and renamed.
  • fraCustom: indicates that the user wants to take care of the operation by themselves. If this setting is chosen, the server takes no action, and instead fires the RenameFile event shortly after BeforeRenameFile completes. The user is expected to handle RenameFile and perform the requested action - that is, rename the file - manually.
  • fraAbort: the operation should be aborted as not supported/allowed. Neither the server nor the user are expected to perform it.

The second event (RenameFile) only fires if Action was set to fraCustom in the earlier call to BeforeRenameFile. It lets the user handle the requested operation in the way they want. The user code must fulfil the operation (for example, rename a database entry, if building a virtualized server), and return the operation result as the event's OperationResult parameter.

If the Action parameter was set to fraAuto, RenameFile is not called. The server performs the operation automatically.

The third event, AfterRenameFile, fires upon completion of the operation, either in automatic or custom mode. The user code can check and/or adjust the result to be returned to the client.

To summarize:

  • If Action is set to fraAuto, the next call about this operation will be to AfterRenameFile.
  • If Action is set to fraCustom, the next call about the operation will be to RenameFile, and after that to AfterRenameFile.
  • If Action is set to fraAbort, the operation is rejected and no further calls about it are performed.
notes for more details about handling and virtualizing requests in SecureBlackbox servers.

ostOk1
ostNoSuchFile2
ostAccessDenied3
ostWriteProtect4
ostUnsupported5
ostInvalidParameter6
ostEOF7

AfterVerify Event (KMIPServer Component)

Notifies the application about completion of the Verify operation.

Syntax

public event OnAfterVerifyHandler OnAfterVerify;

public delegate void OnAfterVerifyHandler(object sender, KMIPServerAfterVerifyEventArgs e);

public class KMIPServerAfterVerifyEventArgs : EventArgs {
  public long ConnectionId { get; }
  public string ObjectId { get; }
  public bool InputIsHash { get; }
  public int ValidationResult { get; set; }
  public string CorrelationValue { get; set; }
  public int OperationStatus { get; set; }
}
Public Event OnAfterVerify As OnAfterVerifyHandler

Public Delegate Sub OnAfterVerifyHandler(sender As Object, e As KMIPServerAfterVerifyEventArgs)

Public Class KMIPServerAfterVerifyEventArgs Inherits EventArgs
  Public ReadOnly Property ConnectionId As Long
  Public ReadOnly Property ObjectId As String
  Public ReadOnly Property InputIsHash As Boolean
  Public Property ValidationResult As Integer
  Public Property CorrelationValue As String
  Public Property OperationStatus As Integer
End Class

Remarks

The component fires this event to notify the application of a completion of a verification operation. The ValidationResult parameter contains the validity status of the signature.

The ObjectId parameter contains the unique identifier of the verifying key. The OperationStatus parameter contains the result of the operation.

See the

Handling and overriding server operations using the Three-Step Virtualization

Most of the server components shipped with SecureBlackbox are highly customizable, allowing the user to override or alter the way the clients' requests are handled by default. The customization feature paves the way for creation of bespoke or virtualized server solutions that work over standardized protocols.

The possibility of customization is typically offered through a three-step virtualization model. Every customizable operation or request that can be handled by the server - say, RenameFile - is represented with a triple of events:

  • BeforeRenameFile
  • RenameFile
  • AfterRenameFile

The first event fires right after the respective request has been received from a client. It provides the details of the operation, such as the original and target file names, and, importantly, a by-reference (writable) Action parameter. The event handler can set the Action parameter to one of the three settings given below. The setting chosen defines the further operation flow:

  • fraAuto: the operation shall be handled automatically by the server: in this case, a file will be searched in the provided local directory and renamed.
  • fraCustom: indicates that the user wants to take care of the operation by themselves. If this setting is chosen, the server takes no action, and instead fires the RenameFile event shortly after BeforeRenameFile completes. The user is expected to handle RenameFile and perform the requested action - that is, rename the file - manually.
  • fraAbort: the operation should be aborted as not supported/allowed. Neither the server nor the user are expected to perform it.

The second event (RenameFile) only fires if Action was set to fraCustom in the earlier call to BeforeRenameFile. It lets the user handle the requested operation in the way they want. The user code must fulfil the operation (for example, rename a database entry, if building a virtualized server), and return the operation result as the event's OperationResult parameter.

If the Action parameter was set to fraAuto, RenameFile is not called. The server performs the operation automatically.

The third event, AfterRenameFile, fires upon completion of the operation, either in automatic or custom mode. The user code can check and/or adjust the result to be returned to the client.

To summarize:

  • If Action is set to fraAuto, the next call about this operation will be to AfterRenameFile.
  • If Action is set to fraCustom, the next call about the operation will be to RenameFile, and after that to AfterRenameFile.
  • If Action is set to fraAbort, the operation is rejected and no further calls about it are performed.
notes for more details about handling and virtualizing requests in SecureBlackbox servers.

ostOk1
ostNoSuchFile2
ostAccessDenied3
ostWriteProtect4
ostUnsupported5
ostInvalidParameter6
ostEOF7

AfterVerifyHash Event (KMIPServer Component)

Notifies the application about completion of the hash verification.

Syntax

public event OnAfterVerifyHashHandler OnAfterVerifyHash;

public delegate void OnAfterVerifyHashHandler(object sender, KMIPServerAfterVerifyHashEventArgs e);

public class KMIPServerAfterVerifyHashEventArgs : EventArgs {
  public long ConnectionId { get; }
  public string ObjectId { get; }
  public bool IsValid { get; set; }
  public string CorrelationValue { get; set; }
  public int OperationStatus { get; set; }
}
Public Event OnAfterVerifyHash As OnAfterVerifyHashHandler

Public Delegate Sub OnAfterVerifyHashHandler(sender As Object, e As KMIPServerAfterVerifyHashEventArgs)

Public Class KMIPServerAfterVerifyHashEventArgs Inherits EventArgs
  Public ReadOnly Property ConnectionId As Long
  Public ReadOnly Property ObjectId As String
  Public Property IsValid As Boolean
  Public Property CorrelationValue As String
  Public Property OperationStatus As Integer
End Class

Remarks

The component uses this event to notify the application about hash verification result. The optional ObjectId parameter contains the unique identifier of the key object if HMAC algorithm is used.

The IsValid parameter contains the validity factor of the hash.

See the

Handling and overriding server operations using the Three-Step Virtualization

Most of the server components shipped with SecureBlackbox are highly customizable, allowing the user to override or alter the way the clients' requests are handled by default. The customization feature paves the way for creation of bespoke or virtualized server solutions that work over standardized protocols.

The possibility of customization is typically offered through a three-step virtualization model. Every customizable operation or request that can be handled by the server - say, RenameFile - is represented with a triple of events:

  • BeforeRenameFile
  • RenameFile
  • AfterRenameFile

The first event fires right after the respective request has been received from a client. It provides the details of the operation, such as the original and target file names, and, importantly, a by-reference (writable) Action parameter. The event handler can set the Action parameter to one of the three settings given below. The setting chosen defines the further operation flow:

  • fraAuto: the operation shall be handled automatically by the server: in this case, a file will be searched in the provided local directory and renamed.
  • fraCustom: indicates that the user wants to take care of the operation by themselves. If this setting is chosen, the server takes no action, and instead fires the RenameFile event shortly after BeforeRenameFile completes. The user is expected to handle RenameFile and perform the requested action - that is, rename the file - manually.
  • fraAbort: the operation should be aborted as not supported/allowed. Neither the server nor the user are expected to perform it.

The second event (RenameFile) only fires if Action was set to fraCustom in the earlier call to BeforeRenameFile. It lets the user handle the requested operation in the way they want. The user code must fulfil the operation (for example, rename a database entry, if building a virtualized server), and return the operation result as the event's OperationResult parameter.

If the Action parameter was set to fraAuto, RenameFile is not called. The server performs the operation automatically.

The third event, AfterRenameFile, fires upon completion of the operation, either in automatic or custom mode. The user code can check and/or adjust the result to be returned to the client.

To summarize:

  • If Action is set to fraAuto, the next call about this operation will be to AfterRenameFile.
  • If Action is set to fraCustom, the next call about the operation will be to RenameFile, and after that to AfterRenameFile.
  • If Action is set to fraAbort, the operation is rejected and no further calls about it are performed.
notes for more details about handling and virtualizing requests in SecureBlackbox servers.

ostOk1
ostNoSuchFile2
ostAccessDenied3
ostWriteProtect4
ostUnsupported5
ostInvalidParameter6
ostEOF7

ArchiveObject Event (KMIPServer Component)

Notifies the application about the received object archival request.

Syntax

public event OnArchiveObjectHandler OnArchiveObject;

public delegate void OnArchiveObjectHandler(object sender, KMIPServerArchiveObjectEventArgs e);

public class KMIPServerArchiveObjectEventArgs : EventArgs {
  public long ConnectionId { get; }
  public string ObjectId { get; }
  public int OperationStatus { get; set; }
}
Public Event OnArchiveObject As OnArchiveObjectHandler

Public Delegate Sub OnArchiveObjectHandler(sender As Object, e As KMIPServerArchiveObjectEventArgs)

Public Class KMIPServerArchiveObjectEventArgs Inherits EventArgs
  Public ReadOnly Property ConnectionId As Long
  Public ReadOnly Property ObjectId As String
  Public Property OperationStatus As Integer
End Class

Remarks

The component fires this event when it receives an object archival request from a connected client. The archival procedure go through a simplified handling route, without the three-step flow.

ostOk1
ostNoSuchFile2
ostAccessDenied3
ostWriteProtect4
ostUnsupported5
ostInvalidParameter6
ostEOF7

AuthAttempt Event (KMIPServer Component)

Fires when a connected client makes an authentication attempt.

Syntax

public event OnAuthAttemptHandler OnAuthAttempt;

public delegate void OnAuthAttemptHandler(object sender, KMIPServerAuthAttemptEventArgs e);

public class KMIPServerAuthAttemptEventArgs : EventArgs {
  public long ConnectionID { get; }
  public string HTTPMethod { get; }
  public string URI { get; }
  public string AuthMethod { get; }
  public string Username { get; }
  public string Password { get; }
  public bool Allow { get; set; }
}
Public Event OnAuthAttempt As OnAuthAttemptHandler

Public Delegate Sub OnAuthAttemptHandler(sender As Object, e As KMIPServerAuthAttemptEventArgs)

Public Class KMIPServerAuthAttemptEventArgs Inherits EventArgs
  Public ReadOnly Property ConnectionID As Long
  Public ReadOnly Property HTTPMethod As String
  Public ReadOnly Property URI As String
  Public ReadOnly Property AuthMethod As String
  Public ReadOnly Property Username As String
  Public ReadOnly Property Password As String
  Public Property Allow As Boolean
End Class

Remarks

The component fires this event whenever a client attempts to authenticate itself. Use the Allow parameter to let the client through.

ConnectionID contains the unique session identifier for that client, HTTPMethod specifies the HTTP method (GET, POST, etc.) used to access the URI resource, AuthMethod specifies the authentication method, and Username and Password contain the professed credentials.

BeforeAdd Event (KMIPServer Component)

Fires when a certificate import request is received from a client.

Syntax

public event OnBeforeAddHandler OnBeforeAdd;

public delegate void OnBeforeAddHandler(object sender, KMIPServerBeforeAddEventArgs e);

public class KMIPServerBeforeAddEventArgs : EventArgs {
  public long ConnectionId { get; }
  public string Group { get; set; }
  public int Action { get; set; }
}
Public Event OnBeforeAdd As OnBeforeAddHandler

Public Delegate Sub OnBeforeAddHandler(sender As Object, e As KMIPServerBeforeAddEventArgs)

Public Class KMIPServerBeforeAddEventArgs Inherits EventArgs
  Public ReadOnly Property ConnectionId As Long
  Public Property Group As String
  Public Property Action As Integer
End Class

Remarks

The component fires this event when it receives a request from the client to import a certificate on to the server. The supplied certificate is available in Certificate object.

The Group parameter specifies a common identifier for objects related to the certificate being imported: the certificate, its public key, and its private key.

BeforeAddKey Event (KMIPServer Component)

Fires when a key import request is received from the client.

Syntax

public event OnBeforeAddKeyHandler OnBeforeAddKey;

public delegate void OnBeforeAddKeyHandler(object sender, KMIPServerBeforeAddKeyEventArgs e);

public class KMIPServerBeforeAddKeyEventArgs : EventArgs {
  public long ConnectionId { get; }
  public string Group { get; set; }
  public int Action { get; set; }
}
Public Event OnBeforeAddKey As OnBeforeAddKeyHandler

Public Delegate Sub OnBeforeAddKeyHandler(sender As Object, e As KMIPServerBeforeAddKeyEventArgs)

Public Class KMIPServerBeforeAddKeyEventArgs Inherits EventArgs
  Public ReadOnly Property ConnectionId As Long
  Public Property Group As String
  Public Property Action As Integer
End Class

Remarks

The component fires this event when it receives a request from the client to import a key on to the server. The supplied key is available in the Key parameter.

For keypairs, the Group parameter contains a common label that will be applied to both parts of that keypair (the public key object and the private key object).

BeforeBrowse Event (KMIPServer Component)

Notifies the application about the browse request being received.

Syntax

public event OnBeforeBrowseHandler OnBeforeBrowse;

public delegate void OnBeforeBrowseHandler(object sender, KMIPServerBeforeBrowseEventArgs e);

public class KMIPServerBeforeBrowseEventArgs : EventArgs {
  public long ConnectionID { get; }
  public string ObjectId { get; }
  public int Action { get; set; }
}
Public Event OnBeforeBrowse As OnBeforeBrowseHandler

Public Delegate Sub OnBeforeBrowseHandler(sender As Object, e As KMIPServerBeforeBrowseEventArgs)

Public Class KMIPServerBeforeBrowseEventArgs Inherits EventArgs
  Public ReadOnly Property ConnectionID As Long
  Public ReadOnly Property ObjectId As String
  Public Property Action As Integer
End Class

Remarks

The component uses this event to notify the application about a browse request received for an object ObjectId.

BeforeDecrypt Event (KMIPServer Component)

Notifies the application about the initiation of the decryption operation.

Syntax

public event OnBeforeDecryptHandler OnBeforeDecrypt;

public delegate void OnBeforeDecryptHandler(object sender, KMIPServerBeforeDecryptEventArgs e);

public class KMIPServerBeforeDecryptEventArgs : EventArgs {
  public long ConnectionId { get; }
  public string ObjectId { get; }
  public string CorrelationValue { get; set; }
  public int Action { get; set; }
}
Public Event OnBeforeDecrypt As OnBeforeDecryptHandler

Public Delegate Sub OnBeforeDecryptHandler(sender As Object, e As KMIPServerBeforeDecryptEventArgs)

Public Class KMIPServerBeforeDecryptEventArgs Inherits EventArgs
  Public ReadOnly Property ConnectionId As Long
  Public ReadOnly Property ObjectId As String
  Public Property CorrelationValue As String
  Public Property Action As Integer
End Class

Remarks

The component fires this event to notify the application about the initiation of the decryption operation. The ObjectId parameter contains a reference to the decryption key. The optional CorrelationValue parameter can be used to link consecutive steps of multi-part decryption operation together.

Use the Action parameter to indicate the procedure you want to use for this request. See the

Handling and overriding server operations using the Three-Step Virtualization

Most of the server components shipped with SecureBlackbox are highly customizable, allowing the user to override or alter the way the clients' requests are handled by default. The customization feature paves the way for creation of bespoke or virtualized server solutions that work over standardized protocols.

The possibility of customization is typically offered through a three-step virtualization model. Every customizable operation or request that can be handled by the server - say, RenameFile - is represented with a triple of events:

  • BeforeRenameFile
  • RenameFile
  • AfterRenameFile

The first event fires right after the respective request has been received from a client. It provides the details of the operation, such as the original and target file names, and, importantly, a by-reference (writable) Action parameter. The event handler can set the Action parameter to one of the three settings given below. The setting chosen defines the further operation flow:

  • fraAuto: the operation shall be handled automatically by the server: in this case, a file will be searched in the provided local directory and renamed.
  • fraCustom: indicates that the user wants to take care of the operation by themselves. If this setting is chosen, the server takes no action, and instead fires the RenameFile event shortly after BeforeRenameFile completes. The user is expected to handle RenameFile and perform the requested action - that is, rename the file - manually.
  • fraAbort: the operation should be aborted as not supported/allowed. Neither the server nor the user are expected to perform it.

The second event (RenameFile) only fires if Action was set to fraCustom in the earlier call to BeforeRenameFile. It lets the user handle the requested operation in the way they want. The user code must fulfil the operation (for example, rename a database entry, if building a virtualized server), and return the operation result as the event's OperationResult parameter.

If the Action parameter was set to fraAuto, RenameFile is not called. The server performs the operation automatically.

The third event, AfterRenameFile, fires upon completion of the operation, either in automatic or custom mode. The user code can check and/or adjust the result to be returned to the client.

To summarize:

  • If Action is set to fraAuto, the next call about this operation will be to AfterRenameFile.
  • If Action is set to fraCustom, the next call about the operation will be to RenameFile, and after that to AfterRenameFile.
  • If Action is set to fraAbort, the operation is rejected and no further calls about it are performed.
notes for more details about handling and virtualizing requests in SecureBlackbox servers.

BeforeDeriveKey Event (KMIPServer Component)

Fires when a derive key request is received.

Syntax

public event OnBeforeDeriveKeyHandler OnBeforeDeriveKey;

public delegate void OnBeforeDeriveKeyHandler(object sender, KMIPServerBeforeDeriveKeyEventArgs e);

public class KMIPServerBeforeDeriveKeyEventArgs : EventArgs {
  public long ConnectionId { get; }
  public int ObjectType { get; }
  public string ObjectIds { get; }
  public string DerivationMethod { get; }
  public int Action { get; set; }
}
Public Event OnBeforeDeriveKey As OnBeforeDeriveKeyHandler

Public Delegate Sub OnBeforeDeriveKeyHandler(sender As Object, e As KMIPServerBeforeDeriveKeyEventArgs)

Public Class KMIPServerBeforeDeriveKeyEventArgs Inherits EventArgs
  Public ReadOnly Property ConnectionId As Long
  Public ReadOnly Property ObjectType As Integer
  Public ReadOnly Property ObjectIds As String
  Public ReadOnly Property DerivationMethod As String
  Public Property Action As Integer
End Class

Remarks

The component fires this event when it receives a request from the client to derive a key. The supplied certificate is available in Key.

BeforeEdit Event (KMIPServer Component)

Notifies the application about the start of the object editing operation.

Syntax

public event OnBeforeEditHandler OnBeforeEdit;

public delegate void OnBeforeEditHandler(object sender, KMIPServerBeforeEditEventArgs e);

public class KMIPServerBeforeEditEventArgs : EventArgs {
  public long ConnectionID { get; }
  public string ObjectId { get; }
  public int Action { get; set; }
}
Public Event OnBeforeEdit As OnBeforeEditHandler

Public Delegate Sub OnBeforeEditHandler(sender As Object, e As KMIPServerBeforeEditEventArgs)

Public Class KMIPServerBeforeEditEventArgs Inherits EventArgs
  Public ReadOnly Property ConnectionID As Long
  Public ReadOnly Property ObjectId As String
  Public Property Action As Integer
End Class

Remarks

The editing operation consists of a sequence of attribute update requests. Each attribute is provided to the application via an individual SetAttribute call. When the list of supplied attributes has been exhausted, the AfterEdit event call follows.

The ObjectId parameter specifies the identifier of the object being edited.

BeforeEncrypt Event (KMIPServer Component)

Notifies the application about the initiation of an encryption operation.

Syntax

public event OnBeforeEncryptHandler OnBeforeEncrypt;

public delegate void OnBeforeEncryptHandler(object sender, KMIPServerBeforeEncryptEventArgs e);

public class KMIPServerBeforeEncryptEventArgs : EventArgs {
  public long ConnectionId { get; }
  public string ObjectId { get; }
  public string CorrelationValue { get; set; }
  public int Action { get; set; }
}
Public Event OnBeforeEncrypt As OnBeforeEncryptHandler

Public Delegate Sub OnBeforeEncryptHandler(sender As Object, e As KMIPServerBeforeEncryptEventArgs)

Public Class KMIPServerBeforeEncryptEventArgs Inherits EventArgs
  Public ReadOnly Property ConnectionId As Long
  Public ReadOnly Property ObjectId As String
  Public Property CorrelationValue As String
  Public Property Action As Integer
End Class

Remarks

The component fires this event to notify the application about the initiation of an encryption operation. The ObjectId parameter contains a reference to the encryption key. The optional CorrelationValue parameter can be used to link consecutive steps of multi-part encryption operation together.

Use the Action parameter to indicate the procedure you want to use for this request. See the

Handling and overriding server operations using the Three-Step Virtualization

Most of the server components shipped with SecureBlackbox are highly customizable, allowing the user to override or alter the way the clients' requests are handled by default. The customization feature paves the way for creation of bespoke or virtualized server solutions that work over standardized protocols.

The possibility of customization is typically offered through a three-step virtualization model. Every customizable operation or request that can be handled by the server - say, RenameFile - is represented with a triple of events:

  • BeforeRenameFile
  • RenameFile
  • AfterRenameFile

The first event fires right after the respective request has been received from a client. It provides the details of the operation, such as the original and target file names, and, importantly, a by-reference (writable) Action parameter. The event handler can set the Action parameter to one of the three settings given below. The setting chosen defines the further operation flow:

  • fraAuto: the operation shall be handled automatically by the server: in this case, a file will be searched in the provided local directory and renamed.
  • fraCustom: indicates that the user wants to take care of the operation by themselves. If this setting is chosen, the server takes no action, and instead fires the RenameFile event shortly after BeforeRenameFile completes. The user is expected to handle RenameFile and perform the requested action - that is, rename the file - manually.
  • fraAbort: the operation should be aborted as not supported/allowed. Neither the server nor the user are expected to perform it.

The second event (RenameFile) only fires if Action was set to fraCustom in the earlier call to BeforeRenameFile. It lets the user handle the requested operation in the way they want. The user code must fulfil the operation (for example, rename a database entry, if building a virtualized server), and return the operation result as the event's OperationResult parameter.

If the Action parameter was set to fraAuto, RenameFile is not called. The server performs the operation automatically.

The third event, AfterRenameFile, fires upon completion of the operation, either in automatic or custom mode. The user code can check and/or adjust the result to be returned to the client.

To summarize:

  • If Action is set to fraAuto, the next call about this operation will be to AfterRenameFile.
  • If Action is set to fraCustom, the next call about the operation will be to RenameFile, and after that to AfterRenameFile.
  • If Action is set to fraAbort, the operation is rejected and no further calls about it are performed.
notes for more details about handling and virtualizing requests in SecureBlackbox servers.

BeforeGenerate Event (KMIPServer Component)

Fires when a certificate generation request is received.

Syntax

public event OnBeforeGenerateHandler OnBeforeGenerate;

public delegate void OnBeforeGenerateHandler(object sender, KMIPServerBeforeGenerateEventArgs e);

public class KMIPServerBeforeGenerateEventArgs : EventArgs {
  public long ConnectionId { get; }
  public string PublicKeyId { get; }
  public int Action { get; set; }
}
Public Event OnBeforeGenerate As OnBeforeGenerateHandler

Public Delegate Sub OnBeforeGenerateHandler(sender As Object, e As KMIPServerBeforeGenerateEventArgs)

Public Class KMIPServerBeforeGenerateEventArgs Inherits EventArgs
  Public ReadOnly Property ConnectionId As Long
  Public ReadOnly Property PublicKeyId As String
  Public Property Action As Integer
End Class

Remarks

The component fires this event when it receives a request from the client to generate a certificate. The supplied certificate template is available in Certificate.

BeforeGenerateKey Event (KMIPServer Component)

Fires when a key generation request is received.

Syntax

public event OnBeforeGenerateKeyHandler OnBeforeGenerateKey;

public delegate void OnBeforeGenerateKeyHandler(object sender, KMIPServerBeforeGenerateKeyEventArgs e);

public class KMIPServerBeforeGenerateKeyEventArgs : EventArgs {
  public long ConnectionId { get; }
  public string KeyAlgorithm { get; set; }
  public int KeyLength { get; set; }
  public int Action { get; set; }
}
Public Event OnBeforeGenerateKey As OnBeforeGenerateKeyHandler

Public Delegate Sub OnBeforeGenerateKeyHandler(sender As Object, e As KMIPServerBeforeGenerateKeyEventArgs)

Public Class KMIPServerBeforeGenerateKeyEventArgs Inherits EventArgs
  Public ReadOnly Property ConnectionId As Long
  Public Property KeyAlgorithm As String
  Public Property KeyLength As Integer
  Public Property Action As Integer
End Class

Remarks

The component fires this event when it receives a request from the client to generate a key. KeyAlgorithm and KeyLength parameters specify the requested key properties.

BeforeGenerateKeyPair Event (KMIPServer Component)

Fires when a key generation request is received.

Syntax

public event OnBeforeGenerateKeyPairHandler OnBeforeGenerateKeyPair;

public delegate void OnBeforeGenerateKeyPairHandler(object sender, KMIPServerBeforeGenerateKeyPairEventArgs e);

public class KMIPServerBeforeGenerateKeyPairEventArgs : EventArgs {
  public long ConnectionId { get; }
  public string KeyAlgorithm { get; set; }
  public int KeyLength { get; set; }
  public string Scheme { get; set; }
  public string SchemeParams { get; set; }
  public int Action { get; set; }
}
Public Event OnBeforeGenerateKeyPair As OnBeforeGenerateKeyPairHandler

Public Delegate Sub OnBeforeGenerateKeyPairHandler(sender As Object, e As KMIPServerBeforeGenerateKeyPairEventArgs)

Public Class KMIPServerBeforeGenerateKeyPairEventArgs Inherits EventArgs
  Public ReadOnly Property ConnectionId As Long
  Public Property KeyAlgorithm As String
  Public Property KeyLength As Integer
  Public Property Scheme As String
  Public Property SchemeParams As String
  Public Property Action As Integer
End Class

Remarks

The component fires this event when it receives a request from the client to generate a keypair. KeyAlgorithm, KeyLength, Scheme and SchemeParams parameters specify the requested key properties.

BeforeHash Event (KMIPServer Component)

Notifies the application about the initiation of the hashing operation.

Syntax

public event OnBeforeHashHandler OnBeforeHash;

public delegate void OnBeforeHashHandler(object sender, KMIPServerBeforeHashEventArgs e);

public class KMIPServerBeforeHashEventArgs : EventArgs {
  public long ConnectionId { get; }
  public string ObjectId { get; }
  public string HashAlgorithm { get; }
  public string CorrelationValue { get; set; }
  public int Action { get; set; }
}
Public Event OnBeforeHash As OnBeforeHashHandler

Public Delegate Sub OnBeforeHashHandler(sender As Object, e As KMIPServerBeforeHashEventArgs)

Public Class KMIPServerBeforeHashEventArgs Inherits EventArgs
  Public ReadOnly Property ConnectionId As Long
  Public ReadOnly Property ObjectId As String
  Public ReadOnly Property HashAlgorithm As String
  Public Property CorrelationValue As String
  Public Property Action As Integer
End Class

Remarks

The component fires this event to notify the application about the initiation of a hashing operation. The optional ObjectId parameter contains a reference to the hashing key if HMAC-based hashing is used. The optional CorrelationValue parameter can be used to link consecutive steps of multi-part hash operation together.

Use the Action parameter to indicate the procedure you want to use for this request. See the

Handling and overriding server operations using the Three-Step Virtualization

Most of the server components shipped with SecureBlackbox are highly customizable, allowing the user to override or alter the way the clients' requests are handled by default. The customization feature paves the way for creation of bespoke or virtualized server solutions that work over standardized protocols.

The possibility of customization is typically offered through a three-step virtualization model. Every customizable operation or request that can be handled by the server - say, RenameFile - is represented with a triple of events:

  • BeforeRenameFile
  • RenameFile
  • AfterRenameFile

The first event fires right after the respective request has been received from a client. It provides the details of the operation, such as the original and target file names, and, importantly, a by-reference (writable) Action parameter. The event handler can set the Action parameter to one of the three settings given below. The setting chosen defines the further operation flow:

  • fraAuto: the operation shall be handled automatically by the server: in this case, a file will be searched in the provided local directory and renamed.
  • fraCustom: indicates that the user wants to take care of the operation by themselves. If this setting is chosen, the server takes no action, and instead fires the RenameFile event shortly after BeforeRenameFile completes. The user is expected to handle RenameFile and perform the requested action - that is, rename the file - manually.
  • fraAbort: the operation should be aborted as not supported/allowed. Neither the server nor the user are expected to perform it.

The second event (RenameFile) only fires if Action was set to fraCustom in the earlier call to BeforeRenameFile. It lets the user handle the requested operation in the way they want. The user code must fulfil the operation (for example, rename a database entry, if building a virtualized server), and return the operation result as the event's OperationResult parameter.

If the Action parameter was set to fraAuto, RenameFile is not called. The server performs the operation automatically.

The third event, AfterRenameFile, fires upon completion of the operation, either in automatic or custom mode. The user code can check and/or adjust the result to be returned to the client.

To summarize:

  • If Action is set to fraAuto, the next call about this operation will be to AfterRenameFile.
  • If Action is set to fraCustom, the next call about the operation will be to RenameFile, and after that to AfterRenameFile.
  • If Action is set to fraAbort, the operation is rejected and no further calls about it are performed.
notes for more details about handling and virtualizing requests in SecureBlackbox servers.

BeforeList Event (KMIPServer Component)

Notifies the application about the initiation of the list operation.

Syntax

public event OnBeforeListHandler OnBeforeList;

public delegate void OnBeforeListHandler(object sender, KMIPServerBeforeListEventArgs e);

public class KMIPServerBeforeListEventArgs : EventArgs {
  public long ConnectionId { get; }
  public int ObjectType { get; }
  public int ObjectStatus { get; }
  public bool OnlyFreshObjects { get; }
  public int Action { get; set; }
}
Public Event OnBeforeList As OnBeforeListHandler

Public Delegate Sub OnBeforeListHandler(sender As Object, e As KMIPServerBeforeListEventArgs)

Public Class KMIPServerBeforeListEventArgs Inherits EventArgs
  Public ReadOnly Property ConnectionId As Long
  Public ReadOnly Property ObjectType As Integer
  Public ReadOnly Property ObjectStatus As Integer
  Public ReadOnly Property OnlyFreshObjects As Boolean
  Public Property Action As Integer
End Class

Remarks

The component uses this event to notify the application of the received list call. The ObjectType, ObjectStatus, and OnlyFreshObjects parameters provide the listing criteria.

BeforeObtainLease Event (KMIPServer Component)

Notifies the application about the client requesting an object lease.

Syntax

public event OnBeforeObtainLeaseHandler OnBeforeObtainLease;

public delegate void OnBeforeObtainLeaseHandler(object sender, KMIPServerBeforeObtainLeaseEventArgs e);

public class KMIPServerBeforeObtainLeaseEventArgs : EventArgs {
  public long ConnectionId { get; }
  public string ObjectId { get; }
  public int Action { get; set; }
}
Public Event OnBeforeObtainLease As OnBeforeObtainLeaseHandler

Public Delegate Sub OnBeforeObtainLeaseHandler(sender As Object, e As KMIPServerBeforeObtainLeaseEventArgs)

Public Class KMIPServerBeforeObtainLeaseEventArgs Inherits EventArgs
  Public ReadOnly Property ConnectionId As Long
  Public ReadOnly Property ObjectId As String
  Public Property Action As Integer
End Class

Remarks

Use this event to get notified about the connected client requesting an object lease.

BeforeReadObject Event (KMIPServer Component)

Notifies the application about the start of the object reading request.

Syntax

public event OnBeforeReadObjectHandler OnBeforeReadObject;

public delegate void OnBeforeReadObjectHandler(object sender, KMIPServerBeforeReadObjectEventArgs e);

public class KMIPServerBeforeReadObjectEventArgs : EventArgs {
  public long ConnectionId { get; }
  public string ObjectId { get; }
  public int Action { get; set; }
}
Public Event OnBeforeReadObject As OnBeforeReadObjectHandler

Public Delegate Sub OnBeforeReadObjectHandler(sender As Object, e As KMIPServerBeforeReadObjectEventArgs)

Public Class KMIPServerBeforeReadObjectEventArgs Inherits EventArgs
  Public ReadOnly Property ConnectionId As Long
  Public ReadOnly Property ObjectId As String
  Public Property Action As Integer
End Class

Remarks

Object "reading" consists of a number of individual attribute requests. If fraCustom action is returned from this event handler, the component will fire ReadObject and ReadAttribute events repeatedly to request information about the object from your code.

BeforeReCertify Event (KMIPServer Component)

Notifies the application about a re-certification request.

Syntax

public event OnBeforeReCertifyHandler OnBeforeReCertify;

public delegate void OnBeforeReCertifyHandler(object sender, KMIPServerBeforeReCertifyEventArgs e);

public class KMIPServerBeforeReCertifyEventArgs : EventArgs {
  public long ConnectionId { get; }
  public string OldCertId { get; }
  public int Action { get; set; }
}
Public Event OnBeforeReCertify As OnBeforeReCertifyHandler

Public Delegate Sub OnBeforeReCertifyHandler(sender As Object, e As KMIPServerBeforeReCertifyEventArgs)

Public Class KMIPServerBeforeReCertifyEventArgs Inherits EventArgs
  Public ReadOnly Property ConnectionId As Long
  Public ReadOnly Property OldCertId As String
  Public Property Action As Integer
End Class

Remarks

The component uses this event to notify the application about a re-certification request (a request to re-issue an existing certificate).

The OldCertId parameter indicates the unique identifier of the certificate object that needs to be re-issued.

This event provides a pre-notification for the operation. If your code sets the Action parameter to fraCustom, this event will be followed by a ReCertify call that will let you handle the actual request as required.

BeforeReKey Event (KMIPServer Component)

Notifies the application about a re-key request received.

Syntax

public event OnBeforeReKeyHandler OnBeforeReKey;

public delegate void OnBeforeReKeyHandler(object sender, KMIPServerBeforeReKeyEventArgs e);

public class KMIPServerBeforeReKeyEventArgs : EventArgs {
  public long ConnectionId { get; }
  public string OldKeyId { get; }
  public int Action { get; set; }
}
Public Event OnBeforeReKey As OnBeforeReKeyHandler

Public Delegate Sub OnBeforeReKeyHandler(sender As Object, e As KMIPServerBeforeReKeyEventArgs)

Public Class KMIPServerBeforeReKeyEventArgs Inherits EventArgs
  Public ReadOnly Property ConnectionId As Long
  Public ReadOnly Property OldKeyId As String
  Public Property Action As Integer
End Class

Remarks

The component uses this event to notify the application about a key re-issue request received from the client. The OldKeyId parameter contains the unique identifier of the old key object.

BeforeRekeyKeyPair Event (KMIPServer Component)

Notifies the application about a keypair re-key request received.

Syntax

public event OnBeforeRekeyKeyPairHandler OnBeforeRekeyKeyPair;

public delegate void OnBeforeRekeyKeyPairHandler(object sender, KMIPServerBeforeRekeyKeyPairEventArgs e);

public class KMIPServerBeforeRekeyKeyPairEventArgs : EventArgs {
  public long ConnectionId { get; }
  public string OldPrivateKeyId { get; }
  public int Action { get; set; }
}
Public Event OnBeforeRekeyKeyPair As OnBeforeRekeyKeyPairHandler

Public Delegate Sub OnBeforeRekeyKeyPairHandler(sender As Object, e As KMIPServerBeforeRekeyKeyPairEventArgs)

Public Class KMIPServerBeforeRekeyKeyPairEventArgs Inherits EventArgs
  Public ReadOnly Property ConnectionId As Long
  Public ReadOnly Property OldPrivateKeyId As String
  Public Property Action As Integer
End Class

Remarks

The component uses this event to notify the application about a keypair re-issue request received from the client. The OldPrivateKeyId parameter contains the unique identifier of the old private key object.

BeforeRemoveObject Event (KMIPServer Component)

Notifies the application about an incoming Remove Object request.

Syntax

public event OnBeforeRemoveObjectHandler OnBeforeRemoveObject;

public delegate void OnBeforeRemoveObjectHandler(object sender, KMIPServerBeforeRemoveObjectEventArgs e);

public class KMIPServerBeforeRemoveObjectEventArgs : EventArgs {
  public long ConnectionId { get; }
  public string ObjectId { get; }
  public int Action { get; set; }
}
Public Event OnBeforeRemoveObject As OnBeforeRemoveObjectHandler

Public Delegate Sub OnBeforeRemoveObjectHandler(sender As Object, e As KMIPServerBeforeRemoveObjectEventArgs)

Public Class KMIPServerBeforeRemoveObjectEventArgs Inherits EventArgs
  Public ReadOnly Property ConnectionId As Long
  Public ReadOnly Property ObjectId As String
  Public Property Action As Integer
End Class

Remarks

Subscribe to this event to choose the operation flow (automated/custom) for the object removal operation.

BeforeSign Event (KMIPServer Component)

Notifies the application about the initiation of a signing operation.

Syntax

public event OnBeforeSignHandler OnBeforeSign;

public delegate void OnBeforeSignHandler(object sender, KMIPServerBeforeSignEventArgs e);

public class KMIPServerBeforeSignEventArgs : EventArgs {
  public long ConnectionId { get; }
  public string ObjectId { get; }
  public string Algorithm { get; }
  public string HashAlgorithm { get; }
  public bool InputIsHash { get; }
  public string CorrelationValue { get; set; }
  public int Action { get; set; }
}
Public Event OnBeforeSign As OnBeforeSignHandler

Public Delegate Sub OnBeforeSignHandler(sender As Object, e As KMIPServerBeforeSignEventArgs)

Public Class KMIPServerBeforeSignEventArgs Inherits EventArgs
  Public ReadOnly Property ConnectionId As Long
  Public ReadOnly Property ObjectId As String
  Public ReadOnly Property Algorithm As String
  Public ReadOnly Property HashAlgorithm As String
  Public ReadOnly Property InputIsHash As Boolean
  Public Property CorrelationValue As String
  Public Property Action As Integer
End Class

Remarks

The component fires this event to notify the application about the initiation of the signing operation. The ObjectId parameter contains a reference to the signing key. The optional CorrelationValue parameter can be used to link consecutive steps of multi-part signing operation together.

Use the Action parameter to indicate the procedure you want to use for this request. See the

Handling and overriding server operations using the Three-Step Virtualization

Most of the server components shipped with SecureBlackbox are highly customizable, allowing the user to override or alter the way the clients' requests are handled by default. The customization feature paves the way for creation of bespoke or virtualized server solutions that work over standardized protocols.

The possibility of customization is typically offered through a three-step virtualization model. Every customizable operation or request that can be handled by the server - say, RenameFile - is represented with a triple of events:

  • BeforeRenameFile
  • RenameFile
  • AfterRenameFile

The first event fires right after the respective request has been received from a client. It provides the details of the operation, such as the original and target file names, and, importantly, a by-reference (writable) Action parameter. The event handler can set the Action parameter to one of the three settings given below. The setting chosen defines the further operation flow:

  • fraAuto: the operation shall be handled automatically by the server: in this case, a file will be searched in the provided local directory and renamed.
  • fraCustom: indicates that the user wants to take care of the operation by themselves. If this setting is chosen, the server takes no action, and instead fires the RenameFile event shortly after BeforeRenameFile completes. The user is expected to handle RenameFile and perform the requested action - that is, rename the file - manually.
  • fraAbort: the operation should be aborted as not supported/allowed. Neither the server nor the user are expected to perform it.

The second event (RenameFile) only fires if Action was set to fraCustom in the earlier call to BeforeRenameFile. It lets the user handle the requested operation in the way they want. The user code must fulfil the operation (for example, rename a database entry, if building a virtualized server), and return the operation result as the event's OperationResult parameter.

If the Action parameter was set to fraAuto, RenameFile is not called. The server performs the operation automatically.

The third event, AfterRenameFile, fires upon completion of the operation, either in automatic or custom mode. The user code can check and/or adjust the result to be returned to the client.

To summarize:

  • If Action is set to fraAuto, the next call about this operation will be to AfterRenameFile.
  • If Action is set to fraCustom, the next call about the operation will be to RenameFile, and after that to AfterRenameFile.
  • If Action is set to fraAbort, the operation is rejected and no further calls about it are performed.
notes for more details about handling and virtualizing requests in SecureBlackbox servers.

BeforeVerify Event (KMIPServer Component)

Notifies the application about the initiation of the verify operation.

Syntax

public event OnBeforeVerifyHandler OnBeforeVerify;

public delegate void OnBeforeVerifyHandler(object sender, KMIPServerBeforeVerifyEventArgs e);

public class KMIPServerBeforeVerifyEventArgs : EventArgs {
  public long ConnectionId { get; }
  public string ObjectId { get; }
  public string HashAlgorithm { get; }
  public bool InputIsHash { get; }
  public string CorrelationValue { get; set; }
  public int Action { get; set; }
}
Public Event OnBeforeVerify As OnBeforeVerifyHandler

Public Delegate Sub OnBeforeVerifyHandler(sender As Object, e As KMIPServerBeforeVerifyEventArgs)

Public Class KMIPServerBeforeVerifyEventArgs Inherits EventArgs
  Public ReadOnly Property ConnectionId As Long
  Public ReadOnly Property ObjectId As String
  Public ReadOnly Property HashAlgorithm As String
  Public ReadOnly Property InputIsHash As Boolean
  Public Property CorrelationValue As String
  Public Property Action As Integer
End Class

Remarks

The component fires this event to notify the application about the initiation of the verification operation. The ObjectId parameter contains a reference to the verification key.

Use the Action parameter to indicate the procedure you want to use for this request. See the

Handling and overriding server operations using the Three-Step Virtualization

Most of the server components shipped with SecureBlackbox are highly customizable, allowing the user to override or alter the way the clients' requests are handled by default. The customization feature paves the way for creation of bespoke or virtualized server solutions that work over standardized protocols.

The possibility of customization is typically offered through a three-step virtualization model. Every customizable operation or request that can be handled by the server - say, RenameFile - is represented with a triple of events:

  • BeforeRenameFile
  • RenameFile
  • AfterRenameFile

The first event fires right after the respective request has been received from a client. It provides the details of the operation, such as the original and target file names, and, importantly, a by-reference (writable) Action parameter. The event handler can set the Action parameter to one of the three settings given below. The setting chosen defines the further operation flow:

  • fraAuto: the operation shall be handled automatically by the server: in this case, a file will be searched in the provided local directory and renamed.
  • fraCustom: indicates that the user wants to take care of the operation by themselves. If this setting is chosen, the server takes no action, and instead fires the RenameFile event shortly after BeforeRenameFile completes. The user is expected to handle RenameFile and perform the requested action - that is, rename the file - manually.
  • fraAbort: the operation should be aborted as not supported/allowed. Neither the server nor the user are expected to perform it.

The second event (RenameFile) only fires if Action was set to fraCustom in the earlier call to BeforeRenameFile. It lets the user handle the requested operation in the way they want. The user code must fulfil the operation (for example, rename a database entry, if building a virtualized server), and return the operation result as the event's OperationResult parameter.

If the Action parameter was set to fraAuto, RenameFile is not called. The server performs the operation automatically.

The third event, AfterRenameFile, fires upon completion of the operation, either in automatic or custom mode. The user code can check and/or adjust the result to be returned to the client.

To summarize:

  • If Action is set to fraAuto, the next call about this operation will be to AfterRenameFile.
  • If Action is set to fraCustom, the next call about the operation will be to RenameFile, and after that to AfterRenameFile.
  • If Action is set to fraAbort, the operation is rejected and no further calls about it are performed.
notes for more details about handling and virtualizing requests in SecureBlackbox servers.

BeforeVerifyHash Event (KMIPServer Component)

Notifies the application about the initiation of the hash verification operation.

Syntax

public event OnBeforeVerifyHashHandler OnBeforeVerifyHash;

public delegate void OnBeforeVerifyHashHandler(object sender, KMIPServerBeforeVerifyHashEventArgs e);

public class KMIPServerBeforeVerifyHashEventArgs : EventArgs {
  public long ConnectionId { get; }
  public string ObjectId { get; }
  public string HashAlgorithm { get; }
  public string CorrelationValue { get; set; }
  public int Action { get; set; }
}
Public Event OnBeforeVerifyHash As OnBeforeVerifyHashHandler

Public Delegate Sub OnBeforeVerifyHashHandler(sender As Object, e As KMIPServerBeforeVerifyHashEventArgs)

Public Class KMIPServerBeforeVerifyHashEventArgs Inherits EventArgs
  Public ReadOnly Property ConnectionId As Long
  Public ReadOnly Property ObjectId As String
  Public ReadOnly Property HashAlgorithm As String
  Public Property CorrelationValue As String
  Public Property Action As Integer
End Class

Remarks

The component fires this event to notify the application about the initiation of the hash verification operation. The ObjectId parameter contains a reference to the HMAC key, if MAC algorithm is used.

Use the Action parameter to indicate the procedure you want to use for this request. See the

Handling and overriding server operations using the Three-Step Virtualization

Most of the server components shipped with SecureBlackbox are highly customizable, allowing the user to override or alter the way the clients' requests are handled by default. The customization feature paves the way for creation of bespoke or virtualized server solutions that work over standardized protocols.

The possibility of customization is typically offered through a three-step virtualization model. Every customizable operation or request that can be handled by the server - say, RenameFile - is represented with a triple of events:

  • BeforeRenameFile
  • RenameFile
  • AfterRenameFile

The first event fires right after the respective request has been received from a client. It provides the details of the operation, such as the original and target file names, and, importantly, a by-reference (writable) Action parameter. The event handler can set the Action parameter to one of the three settings given below. The setting chosen defines the further operation flow:

  • fraAuto: the operation shall be handled automatically by the server: in this case, a file will be searched in the provided local directory and renamed.
  • fraCustom: indicates that the user wants to take care of the operation by themselves. If this setting is chosen, the server takes no action, and instead fires the RenameFile event shortly after BeforeRenameFile completes. The user is expected to handle RenameFile and perform the requested action - that is, rename the file - manually.
  • fraAbort: the operation should be aborted as not supported/allowed. Neither the server nor the user are expected to perform it.

The second event (RenameFile) only fires if Action was set to fraCustom in the earlier call to BeforeRenameFile. It lets the user handle the requested operation in the way they want. The user code must fulfil the operation (for example, rename a database entry, if building a virtualized server), and return the operation result as the event's OperationResult parameter.

If the Action parameter was set to fraAuto, RenameFile is not called. The server performs the operation automatically.

The third event, AfterRenameFile, fires upon completion of the operation, either in automatic or custom mode. The user code can check and/or adjust the result to be returned to the client.

To summarize:

  • If Action is set to fraAuto, the next call about this operation will be to AfterRenameFile.
  • If Action is set to fraCustom, the next call about the operation will be to RenameFile, and after that to AfterRenameFile.
  • If Action is set to fraAbort, the operation is rejected and no further calls about it are performed.
notes for more details about handling and virtualizing requests in SecureBlackbox servers.

Cancel Event (KMIPServer Component)

Reports a cancellation request received from the client.

Syntax

public event OnCancelHandler OnCancel;

public delegate void OnCancelHandler(object sender, KMIPServerCancelEventArgs e);

public class KMIPServerCancelEventArgs : EventArgs {
  public long ConnectionId { get; }
  public string AsyncCorrelationValue { get; }
  public int CancellationResult { get; set; }
  public int OperationStatus { get; set; }
}
Public Event OnCancel As OnCancelHandler

Public Delegate Sub OnCancelHandler(sender As Object, e As KMIPServerCancelEventArgs)

Public Class KMIPServerCancelEventArgs Inherits EventArgs
  Public ReadOnly Property ConnectionId As Long
  Public ReadOnly Property AsyncCorrelationValue As String
  Public Property CancellationResult As Integer
  Public Property OperationStatus As Integer
End Class

Remarks

The component uses this event to notify the application about the cancellation request received. The application should handle the cancellation request and set CancellationResult and OperationStatus to one of the following values:

kccCancelled0x01
kccUnableToCancel0x02
kccCompleted0x03
kccFailed0x04
kccUnavailable0x05

ostOk1
ostNoSuchFile2
ostAccessDenied3
ostWriteProtect4
ostUnsupported5
ostInvalidParameter6
ostEOF7

Check Event (KMIPServer Component)

Notifies the application about a Check request received.

Syntax

public event OnCheckHandler OnCheck;

public delegate void OnCheckHandler(object sender, KMIPServerCheckEventArgs e);

public class KMIPServerCheckEventArgs : EventArgs {
  public long ConnectionId { get; }
  public string ObjectId { get; }
  public long UsageLimitsCount { get; set; }
  public int CryptographicUsageMask { get; set; }
  public int LeaseTime { get; set; }
  public int OperationStatus { get; set; }
}
Public Event OnCheck As OnCheckHandler

Public Delegate Sub OnCheckHandler(sender As Object, e As KMIPServerCheckEventArgs)

Public Class KMIPServerCheckEventArgs Inherits EventArgs
  Public ReadOnly Property ConnectionId As Long
  Public ReadOnly Property ObjectId As String
  Public Property UsageLimitsCount As Long
  Public Property CryptographicUsageMask As Integer
  Public Property LeaseTime As Integer
  Public Property OperationStatus As Integer
End Class

Remarks

The component fires this event to notify the application about the Check request received from the client side. Applications working in virtual mode should implement the relevant logic in their event handlers.

ostOk1
ostNoSuchFile2
ostAccessDenied3
ostWriteProtect4
ostUnsupported5
ostInvalidParameter6
ostEOF7

Connect Event (KMIPServer Component)

Reports an accepted connection.

Syntax

public event OnConnectHandler OnConnect;

public delegate void OnConnectHandler(object sender, KMIPServerConnectEventArgs e);

public class KMIPServerConnectEventArgs : EventArgs {
  public long ConnectionID { get; }
  public string RemoteAddress { get; }
  public int RemotePort { get; }
}
Public Event OnConnect As OnConnectHandler

Public Delegate Sub OnConnectHandler(sender As Object, e As KMIPServerConnectEventArgs)

Public Class KMIPServerConnectEventArgs Inherits EventArgs
  Public ReadOnly Property ConnectionID As Long
  Public ReadOnly Property RemoteAddress As String
  Public ReadOnly Property RemotePort As Integer
End Class

Remarks

The component fires this event to report that a new connection has been established. ConnectionId indicates the unique ID assigned to this connection. The same ID will be supplied to any other events related to this connection, such as GetRequest or AuthAttempt.

Decrypt Event (KMIPServer Component)

Instructs the application to decrypt a chunk of data.

Syntax

public event OnDecryptHandler OnDecrypt;

public delegate void OnDecryptHandler(object sender, KMIPServerDecryptEventArgs e);

public class KMIPServerDecryptEventArgs : EventArgs {
  public long ConnectionId { get; }
  public string ObjectId { get; }
  public byte[] Data { get; }
  public string IV { get; }
  public bool InitIndicator { get; }
  public bool FinalIndicator { get; }
  public string BlockCipherMode { get; }
  public int TagLength { get; }
  public string PaddingMethod { get; }
  public string CorrelationValue { get; set; }
  public int OperationStatus { get; set; }
}
Public Event OnDecrypt As OnDecryptHandler

Public Delegate Sub OnDecryptHandler(sender As Object, e As KMIPServerDecryptEventArgs)

Public Class KMIPServerDecryptEventArgs Inherits EventArgs
  Public ReadOnly Property ConnectionId As Long
  Public ReadOnly Property ObjectId As String
  Public ReadOnly Property Data As Byte()
  Public ReadOnly Property IV As String
  Public ReadOnly Property InitIndicator As Boolean
  Public ReadOnly Property FinalIndicator As Boolean
  Public ReadOnly Property BlockCipherMode As String
  Public ReadOnly Property TagLength As Integer
  Public ReadOnly Property PaddingMethod As String
  Public Property CorrelationValue As String
  Public Property OperationStatus As Integer
End Class

Remarks

The server uses this event to inform the application of a decryption request submitted by the client and, optionally, request the application to decrypt the data block with the provided set of parameters. The decryption logic only needs to be implemented if the application uses the virtual storage mode.

In the event handler, use the parameters provided to decrypt Data with the key identified with ObjectId. The InitIndicator and FinalIndicator tell whether the provided block is first and/or last in a sequence of blocks forming a multi-step decryption operation. If the block is not the last one, set CorrelationValue to a random string to preserve continuity between consecutive block decryptions.

ostOk1
ostNoSuchFile2
ostAccessDenied3
ostWriteProtect4
ostUnsupported5
ostInvalidParameter6
ostEOF7

DeleteAttribute Event (KMIPServer Component)

Instructs the application to delete an object attribute.

Syntax

public event OnDeleteAttributeHandler OnDeleteAttribute;

public delegate void OnDeleteAttributeHandler(object sender, KMIPServerDeleteAttributeEventArgs e);

public class KMIPServerDeleteAttributeEventArgs : EventArgs {
  public long ConnectionId { get; }
  public string ObjectId { get; }
  public string AttributeName { get; }
  public string AttributeValue { get; set; }
  public int OperationStatus { get; set; }
}
Public Event OnDeleteAttribute As OnDeleteAttributeHandler

Public Delegate Sub OnDeleteAttributeHandler(sender As Object, e As KMIPServerDeleteAttributeEventArgs)

Public Class KMIPServerDeleteAttributeEventArgs Inherits EventArgs
  Public ReadOnly Property ConnectionId As Long
  Public ReadOnly Property ObjectId As String
  Public ReadOnly Property AttributeName As String
  Public Property AttributeValue As String
  Public Property OperationStatus As Integer
End Class

Remarks

The server fires this event to relay the KMIP client's Delete Attribute request to the application if the application chose to use custom flow in the preceding BeforeEdit event.

The event handler is expected to delete the AttributeName from the ObjectId's attribute set, and return the (now deleted) AttributeValue and the OperationStatus back to the server.

ostOk1
ostNoSuchFile2
ostAccessDenied3
ostWriteProtect4
ostUnsupported5
ostInvalidParameter6
ostEOF7

DeriveKey Event (KMIPServer Component)

Notifies the application of key derivation request.

Syntax

public event OnDeriveKeyHandler OnDeriveKey;

public delegate void OnDeriveKeyHandler(object sender, KMIPServerDeriveKeyEventArgs e);

public class KMIPServerDeriveKeyEventArgs : EventArgs {
  public long ConnectionId { get; }
  public int ObjectType { get; }
  public string ObjectIds { get; }
  public string DerivationMethod { get; }
  public byte[] InitializationVector { get; }
  public byte[] DerivationData { get; }
  public string NewKeyId { get; set; }
  public int OperationStatus { get; set; }
}
Public Event OnDeriveKey As OnDeriveKeyHandler

Public Delegate Sub OnDeriveKeyHandler(sender As Object, e As KMIPServerDeriveKeyEventArgs)

Public Class KMIPServerDeriveKeyEventArgs Inherits EventArgs
  Public ReadOnly Property ConnectionId As Long
  Public ReadOnly Property ObjectType As Integer
  Public ReadOnly Property ObjectIds As String
  Public ReadOnly Property DerivationMethod As String
  Public ReadOnly Property InitializationVector As Byte()
  Public ReadOnly Property DerivationData As Byte()
  Public Property NewKeyId As String
  Public Property OperationStatus As Integer
End Class

Remarks

The server fires this event to notify the application of a received key derivation request. Applications working in virtual mode should react to this event by performing the requested operation and returning the ID of the new key via the NewKeyId parameter.

ostOk1
ostNoSuchFile2
ostAccessDenied3
ostWriteProtect4
ostUnsupported5
ostInvalidParameter6
ostEOF7

Disconnect Event (KMIPServer Component)

Fires to report a disconnected client.

Syntax

public event OnDisconnectHandler OnDisconnect;

public delegate void OnDisconnectHandler(object sender, KMIPServerDisconnectEventArgs e);

public class KMIPServerDisconnectEventArgs : EventArgs {
  public long ConnectionID { get; }
}
Public Event OnDisconnect As OnDisconnectHandler

Public Delegate Sub OnDisconnectHandler(sender As Object, e As KMIPServerDisconnectEventArgs)

Public Class KMIPServerDisconnectEventArgs Inherits EventArgs
  Public ReadOnly Property ConnectionID As Long
End Class

Remarks

The component fires this event when a connected client disconnects.

Encrypt Event (KMIPServer Component)

Instructs the application to encrypt a chunk of data.

Syntax

public event OnEncryptHandler OnEncrypt;

public delegate void OnEncryptHandler(object sender, KMIPServerEncryptEventArgs e);

public class KMIPServerEncryptEventArgs : EventArgs {
  public long ConnectionId { get; }
  public string ObjectId { get; }
  public byte[] Data { get; }
  public bool InitIndicator { get; }
  public bool FinalIndicator { get; }
  public string BlockCipherMode { get; }
  public int TagLength { get; }
  public string PaddingMethod { get; }
  public bool RandomIV { get; }
  public string IV { get; set; }
  public string CorrelationValue { get; set; }
  public int OperationStatus { get; set; }
}
Public Event OnEncrypt As OnEncryptHandler

Public Delegate Sub OnEncryptHandler(sender As Object, e As KMIPServerEncryptEventArgs)

Public Class KMIPServerEncryptEventArgs Inherits EventArgs
  Public ReadOnly Property ConnectionId As Long
  Public ReadOnly Property ObjectId As String
  Public ReadOnly Property Data As Byte()
  Public ReadOnly Property InitIndicator As Boolean
  Public ReadOnly Property FinalIndicator As Boolean
  Public ReadOnly Property BlockCipherMode As String
  Public ReadOnly Property TagLength As Integer
  Public ReadOnly Property PaddingMethod As String
  Public ReadOnly Property RandomIV As Boolean
  Public Property IV As String
  Public Property CorrelationValue As String
  Public Property OperationStatus As Integer
End Class

Remarks

The server uses this event to request the application to encrypt a data block with the provided set of parameters. This event is only fired if the application chose to use a custom encryption flow in the preceding BeforeEncrypt call.

In the event handler, use the parameters provided to encrypt Data with the key identified with ObjectId. The InitIndicator and FinalIndicator tell whether the provided block is first and/or last in a sequence of blocks forming a multi-step encryption operation. If the block is not last, set CorrelationValue to a random string to preserve continuity between consecutive block encryptions.

ostOk1
ostNoSuchFile2
ostAccessDenied3
ostWriteProtect4
ostUnsupported5
ostInvalidParameter6
ostEOF7

Error Event (KMIPServer Component)

Information about errors during data delivery.

Syntax

public event OnErrorHandler OnError;

public delegate void OnErrorHandler(object sender, KMIPServerErrorEventArgs e);

public class KMIPServerErrorEventArgs : EventArgs {
  public long ConnectionID { get; }
  public int ErrorCode { get; }
  public bool Fatal { get; }
  public bool Remote { get; }
  public string Description { get; }
}
Public Event OnError As OnErrorHandler

Public Delegate Sub OnErrorHandler(sender As Object, e As KMIPServerErrorEventArgs)

Public Class KMIPServerErrorEventArgs Inherits EventArgs
  Public ReadOnly Property ConnectionID As Long
  Public ReadOnly Property ErrorCode As Integer
  Public ReadOnly Property Fatal As Boolean
  Public ReadOnly Property Remote As Boolean
  Public ReadOnly Property Description As String
End Class

Remarks

The event is fired in case of exceptional conditions during message processing.

ErrorCode contains an error code and Description contains a textual description of the error. For a list of valid error codes and their descriptions, please refer to the HTTPS section.

ExternalSign Event (KMIPServer Component)

Handles remote or external signing initiated by the server protocol.

Syntax

public event OnExternalSignHandler OnExternalSign;

public delegate void OnExternalSignHandler(object sender, KMIPServerExternalSignEventArgs e);

public class KMIPServerExternalSignEventArgs : EventArgs {
  public long ConnectionID { get; }
  public string OperationId { get; }
  public string HashAlgorithm { get; }
  public string Pars { get; }
  public string Data { get; }
  public string SignedData { get; set; }
}
Public Event OnExternalSign As OnExternalSignHandler

Public Delegate Sub OnExternalSignHandler(sender As Object, e As KMIPServerExternalSignEventArgs)

Public Class KMIPServerExternalSignEventArgs Inherits EventArgs
  Public ReadOnly Property ConnectionID As Long
  Public ReadOnly Property OperationId As String
  Public ReadOnly Property HashAlgorithm As String
  Public ReadOnly Property Pars As String
  Public ReadOnly Property Data As String
  Public Property SignedData As String
End Class

Remarks

Assign a handler to this event if you need to delegate a low-level signing operation to an external, remote, or custom signing engine. Depending on the settings, the handler will receive a hashed or unhashed value to be signed.

The event handler must pass the value of Data to the signer, obtain the signature, and pass it back to the component via the SignedData parameter.

OperationId provides a comment about the operation and its origin. It depends on the exact component being used, and may be empty. HashAlgorithm specifies the hash algorithm being used for the operation, and Pars contains algorithm-dependent parameters.

The component uses base16 (hex) encoding for the Data, SignedData, and Pars parameters. If your signing engine uses a different input and output encoding, you may need to decode and/or encode the data before and/or after the signing.

A sample MD5 hash encoded in base16: a0dee2a0382afbb09120ffa7ccd8a152 - lower case base16 A0DEE2A0382AFBB09120FFA7CCD8A152 - upper case base16

A sample event handler that uses the .NET RSACryptoServiceProvider class may look like the following: signer.OnExternalSign += (s, e) => { var cert = new X509Certificate2("cert.pfx", "", X509KeyStorageFlags.Exportable); var key = (RSACryptoServiceProvider)cert.PrivateKey; var dataToSign = e.Data.FromBase16String(); var signedData = key.SignHash(dataToSign, "2.16.840.1.101.3.4.2.1"); e.SignedData = signedData.ToBase16String(); };

Generate Event (KMIPServer Component)

Notifies the application about an incoming Generate request.

Syntax

public event OnGenerateHandler OnGenerate;

public delegate void OnGenerateHandler(object sender, KMIPServerGenerateEventArgs e);

public class KMIPServerGenerateEventArgs : EventArgs {
  public long ConnectionId { get; }
  public string PublicKeyId { get; }
  public string CertId { get; set; }
  public int OperationStatus { get; set; }
}
Public Event OnGenerate As OnGenerateHandler

Public Delegate Sub OnGenerateHandler(sender As Object, e As KMIPServerGenerateEventArgs)

Public Class KMIPServerGenerateEventArgs Inherits EventArgs
  Public ReadOnly Property ConnectionId As Long
  Public ReadOnly Property PublicKeyId As String
  Public Property CertId As String
  Public Property OperationStatus As Integer
End Class

Remarks

Subscribe to this event to get notified about incoming certificate generate requests. The PublicKeyId parameter specifies the public key that the new certificate should be generated over.

Applications using the server in virtual storage mode should implement the generation logic in the event handler and return the new CertId back along with OperationStatus.

ostOk1
ostNoSuchFile2
ostAccessDenied3
ostWriteProtect4
ostUnsupported5
ostInvalidParameter6
ostEOF7

GenerateKey Event (KMIPServer Component)

Notifies the application about an incoming Generate request.

Syntax

public event OnGenerateKeyHandler OnGenerateKey;

public delegate void OnGenerateKeyHandler(object sender, KMIPServerGenerateKeyEventArgs e);

public class KMIPServerGenerateKeyEventArgs : EventArgs {
  public long ConnectionId { get; }
  public string KeyAlgorithm { get; }
  public int KeyLength { get; }
  public string Group { get; }
  public string KeyId { get; set; }
  public int OperationStatus { get; set; }
}
Public Event OnGenerateKey As OnGenerateKeyHandler

Public Delegate Sub OnGenerateKeyHandler(sender As Object, e As KMIPServerGenerateKeyEventArgs)

Public Class KMIPServerGenerateKeyEventArgs Inherits EventArgs
  Public ReadOnly Property ConnectionId As Long
  Public ReadOnly Property KeyAlgorithm As String
  Public ReadOnly Property KeyLength As Integer
  Public ReadOnly Property Group As String
  Public Property KeyId As String
  Public Property OperationStatus As Integer
End Class

Remarks

Subscribe to this event to get notified about incoming key generation requests. The KeyAlgorithm and KeyLength parameters specify the parameters of the key to be generated. Use the Group parameter to arrange together keys belonging to the same set, such as private and public parts of a keypair.

Applications using the server in virtual storage mode should implement the generation logic in the event handler and return the new KeyId back along with OperationStatus.

ostOk1
ostNoSuchFile2
ostAccessDenied3
ostWriteProtect4
ostUnsupported5
ostInvalidParameter6
ostEOF7

GenerateKeyPair Event (KMIPServer Component)

Notifies the application about an incoming Generate request.

Syntax

public event OnGenerateKeyPairHandler OnGenerateKeyPair;

public delegate void OnGenerateKeyPairHandler(object sender, KMIPServerGenerateKeyPairEventArgs e);

public class KMIPServerGenerateKeyPairEventArgs : EventArgs {
  public long ConnectionId { get; }
  public string KeyAlgorithm { get; }
  public int KeyLength { get; }
  public string Scheme { get; }
  public string SchemeParams { get; }
  public string Group { get; }
  public string PrivateKeyId { get; set; }
  public string PublicKeyId { get; set; }
  public int OperationStatus { get; set; }
}
Public Event OnGenerateKeyPair As OnGenerateKeyPairHandler

Public Delegate Sub OnGenerateKeyPairHandler(sender As Object, e As KMIPServerGenerateKeyPairEventArgs)

Public Class KMIPServerGenerateKeyPairEventArgs Inherits EventArgs
  Public ReadOnly Property ConnectionId As Long
  Public ReadOnly Property KeyAlgorithm As String
  Public ReadOnly Property KeyLength As Integer
  Public ReadOnly Property Scheme As String
  Public ReadOnly Property SchemeParams As String
  Public ReadOnly Property Group As String
  Public Property PrivateKeyId As String
  Public Property PublicKeyId As String
  Public Property OperationStatus As Integer
End Class

Remarks

Subscribe to this event to get notified about incoming keypair generation requests. The KeyAlgorithm, KeyLength, Scheme and SchemeParams parameters specify the parameters of the keypair to be generated. Use the Group parameter to put together keys belonging to the same set, such as private and public parts of a keypair.

Applications using the server in virtual storage mode should implement the generation logic in the event handler and return the new PrivateKeyId and PublicKeyId back along with OperationStatus.

ostOk1
ostNoSuchFile2
ostAccessDenied3
ostWriteProtect4
ostUnsupported5
ostInvalidParameter6
ostEOF7

GetUsageAllocation Event (KMIPServer Component)

Notifies the application about an incoming Get Usage Allocation request.

Syntax

public event OnGetUsageAllocationHandler OnGetUsageAllocation;

public delegate void OnGetUsageAllocationHandler(object sender, KMIPServerGetUsageAllocationEventArgs e);

public class KMIPServerGetUsageAllocationEventArgs : EventArgs {
  public long ConnectionId { get; }
  public string ObjectId { get; }
  public int UsageLimitsCount { get; }
  public int OperationStatus { get; set; }
}
Public Event OnGetUsageAllocation As OnGetUsageAllocationHandler

Public Delegate Sub OnGetUsageAllocationHandler(sender As Object, e As KMIPServerGetUsageAllocationEventArgs)

Public Class KMIPServerGetUsageAllocationEventArgs Inherits EventArgs
  Public ReadOnly Property ConnectionId As Long
  Public ReadOnly Property ObjectId As String
  Public ReadOnly Property UsageLimitsCount As Integer
  Public Property OperationStatus As Integer
End Class

Remarks

The component uses this event to tell the application about a Get Usage Allocation request received.

ostOk1
ostNoSuchFile2
ostAccessDenied3
ostWriteProtect4
ostUnsupported5
ostInvalidParameter6
ostEOF7

Hash Event (KMIPServer Component)

Instructs the application to update the current hashing operation.

Syntax

public event OnHashHandler OnHash;

public delegate void OnHashHandler(object sender, KMIPServerHashEventArgs e);

public class KMIPServerHashEventArgs : EventArgs {
  public long ConnectionId { get; }
  public string ObjectId { get; }
  public string HashAlgorithm { get; }
  public byte[] Data { get; }
  public bool InitIndicator { get; }
  public bool FinalIndicator { get; }
  public string CorrelationValue { get; set; }
  public int OperationStatus { get; set; }
}
Public Event OnHash As OnHashHandler

Public Delegate Sub OnHashHandler(sender As Object, e As KMIPServerHashEventArgs)

Public Class KMIPServerHashEventArgs Inherits EventArgs
  Public ReadOnly Property ConnectionId As Long
  Public ReadOnly Property ObjectId As String
  Public ReadOnly Property HashAlgorithm As String
  Public ReadOnly Property Data As Byte()
  Public ReadOnly Property InitIndicator As Boolean
  Public ReadOnly Property FinalIndicator As Boolean
  Public Property CorrelationValue As String
  Public Property OperationStatus As Integer
End Class

Remarks

The server fires this event to pass a new chunk of data to the application for inclusion in the hash. This event is only fired if the application chose to process the hashing operation manually in the preceding BeforeHash event.

The ObjectId specifies the key object for Hash+MAC operations. The Data parameters contains the data buffer that needs to be added to the hash, with InitIndicator and FinalIndicator specifying the very first and very last data blocks respectively.

Return a unique CorrelationValue to chain pieces of a multi-block hashing operation together.

ostOk1
ostNoSuchFile2
ostAccessDenied3
ostWriteProtect4
ostUnsupported5
ostInvalidParameter6
ostEOF7

HeadersPrepared Event (KMIPServer Component)

Fires when the response headers have been formed and are ready to be sent to the server.

Syntax

public event OnHeadersPreparedHandler OnHeadersPrepared;

public delegate void OnHeadersPreparedHandler(object sender,