<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>http://sdkwiki.wizarpos.com/index.php?action=history&amp;feed=atom&amp;title=Object_storage_manager.h</id>
	<title>Object storage manager.h - Revision history</title>
	<link rel="self" type="application/atom+xml" href="http://sdkwiki.wizarpos.com/index.php?action=history&amp;feed=atom&amp;title=Object_storage_manager.h"/>
	<link rel="alternate" type="text/html" href="http://sdkwiki.wizarpos.com/index.php?title=Object_storage_manager.h&amp;action=history"/>
	<updated>2026-05-23T19:48:38Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.39.5</generator>
	<entry>
		<id>http://sdkwiki.wizarpos.com/index.php?title=Object_storage_manager.h&amp;diff=129&amp;oldid=prev</id>
		<title>Mahong at 03:28, 9 April 2018</title>
		<link rel="alternate" type="text/html" href="http://sdkwiki.wizarpos.com/index.php?title=Object_storage_manager.h&amp;diff=129&amp;oldid=prev"/>
		<updated>2018-04-09T03:28:39Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revision as of 03:28, 9 April 2018&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l1&quot;&gt;Line 1:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 1:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;  &amp;lt;syntaxhighlight lang=&quot;c&quot;&gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;   #ifndef OBJECT_STORAGE_MANAGER_H&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;   #ifndef OBJECT_STORAGE_MANAGER_H&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;   #define OBJECT_STORAGE_MANAGER_H&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;   #define OBJECT_STORAGE_MANAGER_H&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l119&quot;&gt;Line 119:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 120:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;    * BIT3: DRS3&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;    * BIT3: DRS3&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;    * return value : = 0 : success&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;    * return value : = 0 : success&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;    *                  &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;�&lt;/del&gt;= 0 :  fail&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;    *                  = 0 :  fail&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;    */&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;    */&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;   typedef int (*HSM_OSM_ENABLE_SENSOR)(unsigned int nSensorMask);&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;   typedef int (*HSM_OSM_ENABLE_SENSOR)(unsigned int nSensorMask);&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l251&quot;&gt;Line 251:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 252:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;    &lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;    &lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;   #endif&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;   #endif&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;  &amp;lt;/syntaxhighlight&gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;

&lt;!-- diff cache key media_wiki-wk:diff::1.12:old-106:rev-129 --&gt;
&lt;/table&gt;</summary>
		<author><name>Mahong</name></author>
	</entry>
	<entry>
		<id>http://sdkwiki.wizarpos.com/index.php?title=Object_storage_manager.h&amp;diff=106&amp;oldid=prev</id>
		<title>Mahong: Created page with &quot;  #ifndef OBJECT_STORAGE_MANAGER_H   #define OBJECT_STORAGE_MANAGER_H      #include &quot;hsm_object_property.h&quot;      #ifdef __cplusplus   extern &quot;C&quot;   {   #endif         /*    * o...&quot;</title>
		<link rel="alternate" type="text/html" href="http://sdkwiki.wizarpos.com/index.php?title=Object_storage_manager.h&amp;diff=106&amp;oldid=prev"/>
		<updated>2018-04-08T09:08:58Z</updated>

		<summary type="html">&lt;p&gt;Created page with &amp;quot;  #ifndef OBJECT_STORAGE_MANAGER_H   #define OBJECT_STORAGE_MANAGER_H      #include &amp;quot;hsm_object_property.h&amp;quot;      #ifdef __cplusplus   extern &amp;quot;C&amp;quot;   {   #endif         /*    * o...&amp;quot;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;  #ifndef OBJECT_STORAGE_MANAGER_H&lt;br /&gt;
  #define OBJECT_STORAGE_MANAGER_H&lt;br /&gt;
  &lt;br /&gt;
  #include &amp;quot;hsm_object_property.h&amp;quot;&lt;br /&gt;
  &lt;br /&gt;
  #ifdef __cplusplus&lt;br /&gt;
  extern &amp;quot;C&amp;quot;&lt;br /&gt;
  {&lt;br /&gt;
  #endif&lt;br /&gt;
  &lt;br /&gt;
  &lt;br /&gt;
  /*&lt;br /&gt;
   * open the hsm device(Hardware security module device)&lt;br /&gt;
   * return value : 0 : success&lt;br /&gt;
   * 				  &amp;lt; 0 : error code&lt;br /&gt;
   */&lt;br /&gt;
  typedef int (*HSM_OSM_OPEN)();&lt;br /&gt;
  /*&lt;br /&gt;
   * close the hsm device(Hardware security module device)&lt;br /&gt;
   * return value : 0 : success&lt;br /&gt;
   *                &amp;lt; 0 : error code&lt;br /&gt;
   */&lt;br /&gt;
  typedef int (*HSM_OSM_CLOSE)();&lt;br /&gt;
  &lt;br /&gt;
  /**&lt;br /&gt;
   * add new method for bank&lt;br /&gt;
   * */&lt;br /&gt;
  /*&lt;br /&gt;
   * query the hardware security module device status&lt;br /&gt;
   * return value : 0 : success&lt;br /&gt;
   *                  &amp;lt; 0 : error code, is tampered&lt;br /&gt;
   *                  hsm_osm_query_status&lt;br /&gt;
   */&lt;br /&gt;
  typedef int (*HSM_OSM_QUERY_STATUS)();&lt;br /&gt;
  /*&lt;br /&gt;
  * generate the rsa key pair&lt;br /&gt;
  * @param[in]: HSM_OBJECT_PROPERTY* pObjectProperty: object property, include label and id&lt;br /&gt;
  * @param[in]: unsigned int nKeyBitsLength:key length by bit, usually is 2048bits&lt;br /&gt;
  * return value : = 0: success&lt;br /&gt;
                        &amp;lt; 0: error code&lt;br /&gt;
  */&lt;br /&gt;
  typedef int(*HSM_OSM_GENERATE_KEYPAIR)(char* label, unsigned int nKeyBitsLength);&lt;br /&gt;
  /*&lt;br /&gt;
   * save pubkey cert&lt;br /&gt;
   * @param[in] : char* pCertLabel: cert label&lt;br /&gt;
   * @param[in] : char* pPriKeyLabel: the correspond private key label&lt;br /&gt;
   * @param[in] : unsigned char* pObjectData : data&lt;br /&gt;
   * @param[in] : unsigned int nDataLength : data length&lt;br /&gt;
   * @param[in] : object data format : currently, we only support PEM format&lt;br /&gt;
   * return value : 0 : success&lt;br /&gt;
   *                &amp;lt; 0 : error code&lt;br /&gt;
   */&lt;br /&gt;
  typedef int(*HSM_OSM_STORE_PUBKEY_CERT)(char* pCertLabel, char* pPriKeyLabel, unsigned char* pObjectData, unsigned int nDataLength, HSM_OBJECT_DATA_TYPE nDataType);&lt;br /&gt;
  /*&lt;br /&gt;
   * save root certs&lt;br /&gt;
   * return value : 0 : success&lt;br /&gt;
   *                &amp;lt; 0 : error code&lt;br /&gt;
   */&lt;br /&gt;
  typedef int(*HSM_OSM_STORE_ROOT_CERT)(unsigned int nProperty, char* pCertLabel, unsigned char* pObjectData, unsigned int nDataLength, HSM_OBJECT_DATA_TYPE nDataType);&lt;br /&gt;
  &lt;br /&gt;
  &lt;br /&gt;
  /*&lt;br /&gt;
  * private key do encrypt or decrypt&lt;br /&gt;
  *@param[in]:HSM_OBJECT_PROPERTY* pObjectProperty:object property&lt;br /&gt;
  *@param[in]:nEncDecFlag: process flag  0: encrypt  1:decrypt&lt;br /&gt;
  *@param[in][out]:unsigned char* pData: input data buffer, and save the output data&lt;br /&gt;
  *@param[in]:unsigned int nDataLength: intput data length&lt;br /&gt;
  *return vale: &amp;lt;= 0: error&lt;br /&gt;
                        &amp;gt; 0: output data length&lt;br /&gt;
  */&lt;br /&gt;
  typedef int(*HSM_OSM_PRIVATE_KEY_ENCRYPT_DECRYPT)(char* privKeyLabel, unsigned int nEncDecFlag, unsigned char* pData, unsigned int nDataLength,unsigned char* pResultData, unsigned int nResultDataLength);&lt;br /&gt;
  &lt;br /&gt;
  /*&lt;br /&gt;
   * query the lable of specific type certificate  in the hardware secure module, every label separated by &amp;#039;:&amp;#039;&lt;br /&gt;
   * @param[in] : unsigned int nProperty: cert property&lt;br /&gt;
   * @param[in][out]: data buffer&lt;br /&gt;
   * @param[in] : length of data buffer&lt;br /&gt;
   * return value :&amp;lt;= 0 : error code&lt;br /&gt;
   *                &amp;gt; 0 : data length&lt;br /&gt;
   */&lt;br /&gt;
  typedef int(*HSM_OSM_QUERY_CERT_LABELS)(unsigned int nProperty, unsigned char *pBuffer, unsigned int nBufferLength);&lt;br /&gt;
  &lt;br /&gt;
  &lt;br /&gt;
  /*&lt;br /&gt;
   * delete all objects in hardware  security module&lt;br /&gt;
   * @param[in] : char* pPIN : PIN, reserved for future&lt;br /&gt;
   * @param[in] : unsigned int nPINLength : length of PIN, reserved for future&lt;br /&gt;
   * return value : 0 : success&lt;br /&gt;
   * 		      &amp;lt; 0 : error code&lt;br /&gt;
   */&lt;br /&gt;
  typedef int(*HSM_OSM_RESET)(char* pPIN, unsigned int nPINLength);&lt;br /&gt;
  &lt;br /&gt;
  typedef int(*HSM_OSM_QUERY_CERT_COUNT)(unsigned int nProperty);&lt;br /&gt;
  &lt;br /&gt;
  typedef int(*HSM_OSM_QUERY_PRIVATE_KEY_LABELS)(unsigned char *pBuffer, unsigned int nBufferLength);&lt;br /&gt;
  &lt;br /&gt;
  typedef int(*HSM_OSM_QUERY_PRIVATE_KEY_COUNT)();&lt;br /&gt;
  &lt;br /&gt;
  typedef int(*HSM_OSM_DELETE_CERT)(unsigned int nProperty,char* label);&lt;br /&gt;
  &lt;br /&gt;
  typedef int(*HSM_OSM_DELETE_PRIVATE_KEY)(char* label);&lt;br /&gt;
  &lt;br /&gt;
  typedef int(*HSM_OSM_GET_CERT)(unsigned int nProperty, char* label, unsigned char* pDataBuffer, unsigned int nDataBufferLength, HSM_OBJECT_DATA_TYPE nDataType);&lt;br /&gt;
  &lt;br /&gt;
  typedef int(*HSM_OSM_GET_PUBLIC_KEY)(char* label, unsigned char* pDataBuffer, unsigned int nDataBufferLength, HSM_OBJECT_DATA_TYPE nDataType);&lt;br /&gt;
  &lt;br /&gt;
  typedef int(*HSM_OSM_GET_RANDOM)(unsigned char *pBuffer, unsigned int nBufferLength);&lt;br /&gt;
  //hsm_osm_generate_csr&lt;br /&gt;
  typedef int(*HSM_OSM_GENERATE_CSR)(char* pPriKeyLabel, char* pCommonName, unsigned char* pDataBuffer, unsigned int nDataBufferLength);&lt;br /&gt;
  &lt;br /&gt;
  //hsm_osm_generate_pinpad_csr&lt;br /&gt;
  typedef int(*HSM_OSM_GENERATE_PINPAD_CSR)(unsigned char* pDataBuffer, unsigned int nDataBufferLength);&lt;br /&gt;
  /*&lt;br /&gt;
   * enable external sensor&lt;br /&gt;
   * @param[in]: unsigned int nSensorMask: indicate to enable which sensor, value must from 1 to 15.&lt;br /&gt;
   * BIT0: DRS0&lt;br /&gt;
   * BIT1: DRS1&lt;br /&gt;
   * BIT2: DRS2&lt;br /&gt;
   * BIT3: DRS3&lt;br /&gt;
   * return value : = 0 : success&lt;br /&gt;
   *                  �= 0 :  fail&lt;br /&gt;
   */&lt;br /&gt;
  typedef int (*HSM_OSM_ENABLE_SENSOR)(unsigned int nSensorMask);&lt;br /&gt;
  &lt;br /&gt;
  /*&lt;br /&gt;
   * delete object from hardware security module&lt;br /&gt;
   * @param[in] : HSM_OBJECT_PROPERTY* pObjectProperty : object property&lt;br /&gt;
   * @param[in] : char* pPIN : PIN&lt;br /&gt;
   * @param[in] : unsigned int nPINLength : length of PIN&lt;br /&gt;
   * return value : 0 : success&lt;br /&gt;
   * 				  &amp;lt; 0 : error code&lt;br /&gt;
   */&lt;br /&gt;
  typedef int (*HSM_OSM_DELETE_OBJECT)(HSM_OBJECT_PROPERTY* pObjectProperty, char* pPIN, unsigned int nPINLength);&lt;br /&gt;
  &lt;br /&gt;
  /*&lt;br /&gt;
   * save object&lt;br /&gt;
   * @param[in] : HSM_OBJECT_PROPERTY* pObjectProperty : object property&lt;br /&gt;
   * @param[in] : unsigned char* pObjectData : data&lt;br /&gt;
   * @param[in] : unsigned int nDataLength : data length&lt;br /&gt;
   * @param[in] : object data format : currently, we only support PEM format&lt;br /&gt;
   * return value : 0 : success&lt;br /&gt;
   *                &amp;lt; 0 : error code&lt;br /&gt;
   */&lt;br /&gt;
  typedef int (*HSM_OSM_SAVE_OBJECT)(HSM_OBJECT_PROPERTY* pObjectProperty, unsigned char* pObjectData, unsigned int nDataLength, HSM_OBJECT_DATA_TYPE nDataType);&lt;br /&gt;
  &lt;br /&gt;
  /*&lt;br /&gt;
   * Update key&lt;br /&gt;
   * @param[in]: unsigned int nKeyID: key index, from 0 to 9.&lt;br /&gt;
   * @param[in]: KEY_TYPE nKeyType: indicate the key type:SM4, DES,3DES or AES.&lt;br /&gt;
   * @param[in]: unsigned char* pKeyBuffer: key data.&lt;br /&gt;
   * @param[in]: unsigned int nBufferLength: key data length.&lt;br /&gt;
   * return value : &amp;gt;= 0 : success&lt;br /&gt;
   *               &amp;lt;  0 : fail&lt;br /&gt;
   */&lt;br /&gt;
  typedef int (*HSM_OSM_UPDATE_KEY)(unsigned int nKeyID, unsigned int nProperty, unsigned char* pKeyBuffer, unsigned int nBufferLength);&lt;br /&gt;
  &lt;br /&gt;
  /*&lt;br /&gt;
   *  Key encrypt&lt;br /&gt;
   * @param[in]: unsigned int nKeyID: key index, from 0 to 9.&lt;br /&gt;
   * @param[in]: KEY_TYPE nKeyType: indicate the key type:SM4, DES, 3DES or AES.&lt;br /&gt;
   * @param[in]: unsigned int nMode: 0: ECB 1: CBC 2:CFB 3:OFB&lt;br /&gt;
   * @param[in][out]: unsigned char* pData: plain text to be encryt.&lt;br /&gt;
   * @param[in]: unsigned int nDataLength: plain text length.&lt;br /&gt;
   * @param[in]: unsigned char* pIV: initialize vector.&lt;br /&gt;
   * @param[in]: unsigned int nIVLength: initialize vector length.&lt;br /&gt;
   * return value : &amp;gt;= 0 : cipher text length&lt;br /&gt;
   *               &amp;lt;  0 : fail&lt;br /&gt;
   */&lt;br /&gt;
  typedef int (*HSM_OSM_KEY_ENCRYPT)(unsigned int nKeyID, unsigned int nProperty, unsigned int nMode, unsigned char* pData, unsigned int nDataLength, unsigned char* pIV, unsigned int nIVLength);&lt;br /&gt;
  &lt;br /&gt;
  /*&lt;br /&gt;
   *  Key decrypt&lt;br /&gt;
   * @param[in]: unsigned int nKeyID: key index, from 0 to 9.&lt;br /&gt;
   * @param[in]: KEY_TYPE nKeyType: indicate the key type:SM4, DES, 3DES or AES.&lt;br /&gt;
   * @param[in]: unsigned int nMode: 0: ECB 1: CBC 2:CFB 3:OFB&lt;br /&gt;
   * @param[in][out]: unsigned char* pData: plain text to be encryt.&lt;br /&gt;
   * @param[in]: unsigned int nDataLength: plain text length.&lt;br /&gt;
   * @param[in]: unsigned char* pIV: initialize vector.&lt;br /&gt;
   * @param[in]: unsigned int nIVLength: initialize vector length.&lt;br /&gt;
   * return value : &amp;gt;= 0 : cipher text length&lt;br /&gt;
   *               &amp;lt;  0 : fail&lt;br /&gt;
   */&lt;br /&gt;
  typedef int (*HSM_OSM_KEY_DECRYPT)(unsigned int nKeyID, unsigned int nProperty, unsigned int nMode, unsigned char* pData, unsigned int nDataLength, unsigned char* pIV, unsigned int nIVLength);&lt;br /&gt;
  &lt;br /&gt;
  &lt;br /&gt;
  /*&lt;br /&gt;
   *  Query key whether exist or not&lt;br /&gt;
   * @param[in]: unsigned int nKeyID: key index, from 0 to 9.&lt;br /&gt;
   * @param[in]: KEY_TYPE nKeyType: indicate the key type:SM4, DES, 3DES or AES.&lt;br /&gt;
   * return value : false : not exist&lt;br /&gt;
   *                     true : exist&lt;br /&gt;
   */&lt;br /&gt;
  typedef bool (*HSM_OSM_IS_KEY_EXIST)(unsigned int nKeyID, unsigned int nProperty);&lt;br /&gt;
  &lt;br /&gt;
  &lt;br /&gt;
  /*&lt;br /&gt;
   *  get flash id&lt;br /&gt;
   * @param[in][out]: unsigned char* pBuffer: data buffer&lt;br /&gt;
   * @param[int] : unsigned int nBufferLength : length of data buffer&lt;br /&gt;
   * return value : &amp;gt;= 0 : flash id length&lt;br /&gt;
   *               &amp;lt;  0 : fail&lt;br /&gt;
   */&lt;br /&gt;
  typedef int(*HSM_OSM_GET_FLASH_ID)(unsigned char* pBuffer, unsigned int nBufferLength);&lt;br /&gt;
  &lt;br /&gt;
  &lt;br /&gt;
  /*&lt;br /&gt;
   * Update sm4 key&lt;br /&gt;
   * @param[in]: unsigned int nKeyID: key index, from 0 to 2.&lt;br /&gt;
   * @param[in]: unsigned char* pKeyBuffer: key data.&lt;br /&gt;
   * @param[in]: unsigned int nBufferLength: key data length.&lt;br /&gt;
   * @param[in]: unsigned char* pSignature,: signature data.&lt;br /&gt;
   * @param[in]: unsigned int nSignatureLen: signature data length.&lt;br /&gt;
   * return value : &amp;gt;= 0 : success&lt;br /&gt;
   *               &amp;lt;  0 : fail&lt;br /&gt;
   */&lt;br /&gt;
  typedef int(*HSM_OSM_UPDATE_SM4)(unsigned int nKeyID, unsigned char* pKeyBuffer, unsigned int nBufferLength, unsigned char* pSignature, unsigned int nSignatureLen);&lt;br /&gt;
  &lt;br /&gt;
  /*&lt;br /&gt;
   *  Save x509 crl&lt;br /&gt;
   * @param[in]: char* pLabel: the label of crl&lt;br /&gt;
   * @param[in]: unsigned char* pData: crl data&lt;br /&gt;
   * @param[in]: unsigned int nDataLength: crl data length&lt;br /&gt;
   * @param[in] : nDataType : data type, currently only support PEM format&lt;br /&gt;
   * return value : &amp;gt;= : success&lt;br /&gt;
   *                     &amp;lt; 0 : fail&lt;br /&gt;
   */&lt;br /&gt;
  typedef int(*HSM_OSM_SAVE_CRL)(char* pLabel, unsigned char* pData, unsigned int nDataLength, int nDataType);&lt;br /&gt;
  &lt;br /&gt;
  /*&lt;br /&gt;
   *  Get x509 crl&lt;br /&gt;
   * @param[in]: char* pLabel: the label of crl&lt;br /&gt;
   * @param[in][out]: unsigned char* pBuffer: buffer to save crl data&lt;br /&gt;
   * @param[in]: unsigned int nBufferLength: buffer length&lt;br /&gt;
   * @param[in] : nDataType : data type, currently only support PEM format&lt;br /&gt;
   * return value : &amp;gt; 0 : success, return crl data length&lt;br /&gt;
   *                     &amp;lt;= 0 : fail&lt;br /&gt;
   */&lt;br /&gt;
  typedef int(*HSM_OSM_GET_CRL)(char* pLabel, unsigned char* pBuffer, unsigned int nBufferLength, int nDataType);&lt;br /&gt;
  &lt;br /&gt;
  /*&lt;br /&gt;
   * query the lable of crl  in the hardware secure module, every label separated by &amp;#039;:&amp;#039;&lt;br /&gt;
   * @param[in][out]: data buffer&lt;br /&gt;
   * @param[in] : length of data buffer&lt;br /&gt;
   * return value :&amp;lt; 0 : error code&lt;br /&gt;
   *                  &amp;gt;= 0 : data length&lt;br /&gt;
   */&lt;br /&gt;
  typedef int(*HSM_OSM_QUERY_CRL_LABELS)(unsigned char *pBuffer, unsigned int nBufferLength);&lt;br /&gt;
  #ifdef __cplusplus&lt;br /&gt;
  }&lt;br /&gt;
  #endif&lt;br /&gt;
  &lt;br /&gt;
  #endif&lt;/div&gt;</summary>
		<author><name>Mahong</name></author>
	</entry>
</feed>