UniMate API Reference for Objective-C Language: Difference between revisions

From SecuTech Wiki
Jump to navigationJump to search
Joseph (talk | contribs)
No edit summary
Joseph (talk | contribs)
No edit summary
Line 51: Line 51:
==== Third Party Encrypt Library ====
==== Third Party Encrypt Library ====


If using encrypt library, please use OpenSSL (openssl1.0.0e) library file compiled by SecuTech.
If using the encrypt library, please use the OpenSSL (openssl1.0.0e) library file compiled by SecuTech.


==== Relative Development ====
==== Relative Development ====
Line 68: Line 68:
=== Interface Definition ===
=== Interface Definition ===


==== Check a Device Connection Status ====
==== Check Device Connection Status ====


<code>-(long ) isConnected:(bool *) pConnected;</code>
<code>-(long ) isConnected:(bool *) pConnected;</code>
Line 81: Line 81:
<tr>
<tr>
<td>pConnected</td>
<td>pConnected</td>
<td>[out] If device is connected or not.</td>
<td>[out] Device connection status</td>
</tr>
</tr>
</table>
</table>
Line 105: Line 105:
</table>
</table>


==== Generate a Key-pair ====
==== Generate RSA Key Pair ====


<code>-(long ) createRSAKey:(NSString *) pPassword publicKeyLength:( NSInteger)publicKeyLength ppPublicKey:(NSData **) ppPublicKey</code>
<code>-(long ) createRSAKey:(NSString *) pPassword publicKeyLength:( NSInteger)publicKeyLength ppPublicKey:(NSData **) ppPublicKey</code>
Line 122: Line 122:
<tr>
<tr>
<td>publicKeyLength</td>
<td>publicKeyLength</td>
<td>[in] Length of public key (bit), 1024 or 2048</td>
<td>[in] Length of public key: 1024 or 2048 bits</td>
</tr>
</tr>
<tr>
<tr>
<td>ppPublicKey</td>
<td>ppPublicKey</td>
<td>[out] Public key of the generated key-pair (format comply with the coding specification described in this document)</td>
<td>[out] Public key of the generated key-pair (format complies with the coding specification described in this document)</td>
</tr>
</tr>
</table>
</table>
Line 150: Line 150:
</table>
</table>


==== Import a Public Key Certificate ====
==== Import Public Key Certificate ====


<code>-(long )importX509Certificate:(NSData *) pCertificate;</code>
<code>-(long )importX509Certificate:(NSData *) pCertificate;</code>
Line 203: Line 203:
<tr>
<tr>
<td>pCertificate</td>
<td>pCertificate</td>
<td>[in] Public key certificate corresponding to the private key, which is the decrypting certificate</td>
<td>[in] Public key certificate corresponding to the private key; the decrypting certificate</td>
</tr>
</tr>
<tr>
<tr>
Line 239: Line 239:
</table>
</table>


==== Digital Sign (including explicit key signature, ordinary signature, SSL handling, and P10 signature) ====
==== Sign Data ====
 
Includes explicit key signature, ordinary signature, SSL handling, and P10 signature.


<code>-(long ) signData: (NSData *) pCertificate
<code>-(long ) signData: (NSData *) pCertificate
Line 256: Line 258:
<tr>
<tr>
<td>pCertificate</td>
<td>pCertificate</td>
<td>[in] Public key certificate corresponding to private key, and if RSA key pairs are just generated, use the public key value returned from createRSAkey function.</td>
<td>[in] Public key certificate corresponding to the private key. If using generated RSA key pairs, use the public key value returned from the createRSAkey function.</td>
</tr>
</tr>
<tr>
<tr>
Line 296: Line 298:
</table>
</table>


==== Change a Device Password ====
==== Change Password ====


<code>-(long ) changePassword:(NSData *)pCertificate oldPwd:(NSString *) oldPwd newPwd:(NSString*)newPwd;</code>
<code>-(long ) changePassword:(NSData *)pCertificate oldPwd:(NSString *) oldPwd newPwd:(NSString*)newPwd;</code>
Line 309: Line 311:
<tr>
<tr>
<td>pCertificate</td>
<td>pCertificate</td>
<td>[in] Public key certificate, and if it’s device password, ignore this parmeters.</td>
<td>[in] Public key certificate. If inputting device password, ignore this parmeter</td>
</tr>
</tr>
<tr>
<tr>
Line 342: Line 344:


==== Get DER Code of Public Key Certificate ====
==== Get DER Code of Public Key Certificate ====
<code>-(long ) getX509Certificates:(NSArray **) ppCertificates;</code>
<code>-(long ) getX509Certificates:(NSArray **) ppCertificates;</code>


Line 377: Line 380:
</table>
</table>


==== Get the Remaining Number of Password Attempts ====
==== Get the Remaining Number of Password Login Attempts ====


<code>-(long ) getPwdCanRetries: (NSData *) pCertificate pRemaining :(int *) pRemaining;</code>
<code>-(long ) getPwdCanRetries: (NSData *) pCertificate pRemaining :(int *) pRemaining;</code>
Line 390: Line 393:
<tr>
<tr>
<td>pCertificate</td>
<td>pCertificate</td>
<td>[in] Public key certificate, and if it’s the device password, ignore this parameter.</td>
<td>[in] Public key certificate. If inputting the device password, ignore this parameter</td>
</tr>
</tr>
<tr>
<tr>
<td>pRremaining</td>
<td>pRremaining</td>
<td>[out] The remaining number of password attempts</td>
<td>[out] Remaining number of password attempts</td>
</tr>
</tr>
</table>
</table>
Line 418: Line 421:
</table>
</table>


==== Get a Device ID (the unique ID of a device) ====
==== Get a Device Serial Number ====
 
The serial number is the device's unique ID.


<code>-(long ) getDeviceSerialNumber:(NSString **)ppDeviceSN;</code>
<code>-(long ) getDeviceSerialNumber:(NSString **)ppDeviceSN;</code>
Line 431: Line 436:
<tr>
<tr>
<td>ppDeviceSN</td>
<td>ppDeviceSN</td>
<td>[out] Device ID</td>
<td>[out] Device serial number</td>
</tr>
</tr>
</table>
</table>

Revision as of 16:37, 28 August 2012


UniMate Mobile Certificate API Reference

Relative Convention

Character Coding

All string parameters use the UTF-8 coding standard.

Return Value

All return values from functions are of type long.

0 refers to success, whereas < 0 indicates an error code.

Public Key Format

pPublicKey is compatible with RFC 3447 specification.

RSAPublicKey ::= SEQUENCE {
    modulus 		INTEGER -- n
    publicExponent 	INTEGER -- e
}

Hash Algorithm Identification

pHashOID is the identification string of each hash algorithm, and the specific algorithm ID are as the following table.

ID Specification
1.3.14.3.2.26 SHA1 Algorithm
2.16.840.1.101.3.4.2.1 SHA256 Algorithm

Ease of Use Convention

As the speed of reading a certificate is low, an initiation mechanism shall be established, that is after the content of a public key is read at the first time of inserting a key, the public key and the information of the corresponding private key, such as container name, container ID and etc, shall be stored together in a configure file (the configure file will be created automatically: such as "company name.config") to ensure that at the next time, the public key and private key-pair can be established by just reading the private ID in the key. Through this method, the speed of certificate reading will be improved, and meanwhile the private key can be found very fast when signing or decrypting digital envelope.

Third Party Encrypt Library

If using the encrypt library, please use the OpenSSL (openssl1.0.0e) library file compiled by SecuTech.

Relative Development

Add "Company_product ID" into the name of code file in OC; add "Company_product ID" into the name of C and C++ source code file, function, and global variable to avoid conflict with other companies’ products in the upper compiled.

Realize the main function of the protocol function, and if it has a return value which is released automatically (not alloc), retain must be added.

Development Tools

  • XCODE tools version 4.0 or higher.
  • System default LLVM compiler 3.0.
  • Support iOS SDK version 4.2 or higher (iOS deployment Target: iOS 4.2).
  • Active Architecture: ARM v6.

Interface Definition

Check Device Connection Status

-(long ) isConnected:(bool *) pConnected;

Parameters

Parameter Description
pConnected [out] Device connection status

Return values

Result Value Description
0 S_OK Success
< 0 Error code See error code description

Generate RSA Key Pair

-(long ) createRSAKey:(NSString *) pPassword publicKeyLength:( NSInteger)publicKeyLength ppPublicKey:(NSData **) ppPublicKey

Parameters

Parameter Description
pPassword [in] Device password
publicKeyLength [in] Length of public key: 1024 or 2048 bits
ppPublicKey [out] Public key of the generated key-pair (format complies with the coding specification described in this document)

Return values

Result Value Description
0 S_OK Success
< 0 Error code See error code description

Import Public Key Certificate

-(long )importX509Certificate:(NSData *) pCertificate;

Parameters

Parameter Description
pCertificate [in] Der coded X509 public key certificate

Return values

Result Value Description
0 S_OK Success
< 0 Error code See error code description

Decrypt Digital Envelope

-(long ) decryptEnvelopeData: (NSData *) pCertificate pPassword:(NSString *) pPassword inData:( NSData *) inData ppOutData:(NSData**) ppOutData;

Parameters

Parameter Description
pCertificate [in] Public key certificate corresponding to the private key; the decrypting certificate
pPassword [in] Device password
inData [in] Cipher text of digital envelope
ppOutData [out] Original text of digital envelope

Return values

Result Value Description
0 S_OK Success
< 0 Error code See error code description

Sign Data

Includes explicit key signature, ordinary signature, SSL handling, and P10 signature.

-(long ) signData: (NSData *) pCertificate pPassword:(NSString *) pPassword srcData:( NSData *) srcData pHashOID:( NSString *) pHashOID ppOutData:(NSData**) ppOutData;

Parameters

Parameter Description
pCertificate [in] Public key certificate corresponding to the private key. If using generated RSA key pairs, use the public key value returned from the createRSAkey function.
pPassword [in] Device password
srcData [in] Source data to be signed
pHashOID [in] Hash algorithm identification
ppOutData [out] Signed data (PKCS1 format, without adding complementing bits)

Return values

Result Value Description
0 S_OK Success
< 0 Error code See error code description

Change Password

-(long ) changePassword:(NSData *)pCertificate oldPwd:(NSString *) oldPwd newPwd:(NSString*)newPwd;

Parameters

Parameter Description
pCertificate [in] Public key certificate. If inputting device password, ignore this parmeter
oldPwd [in] Old password
newPwd [in] New password

Return values

Result Value Description
0 S_OK Success
< 0 Error code See error code description

Get DER Code of Public Key Certificate

-(long ) getX509Certificates:(NSArray **) ppCertificates;

Parameters

Parameter Description
ppCertificates [out] Public key certificate DER coded NSData array

Return values

Result Value Description
0 S_OK Success
< 0 Error code See error code description

Get the Remaining Number of Password Login Attempts

-(long ) getPwdCanRetries: (NSData *) pCertificate pRemaining :(int *) pRemaining;

Parameters

Parameter Description
pCertificate [in] Public key certificate. If inputting the device password, ignore this parameter
pRremaining [out] Remaining number of password attempts

Return values

Result Value Description
0 S_OK Success
< 0 Error code See error code description

Get a Device Serial Number

The serial number is the device's unique ID.

-(long ) getDeviceSerialNumber:(NSString **)ppDeviceSN;

Parameters

Parameter Description
ppDeviceSN [out] Device serial number

Return values

Result Value Description
0 S_OK Success
< 0 Error code See error code description

Error Code Table

Error Code Macro Definition Description
0 S_OK Success
-1 S_DEVICE_FAILURE No connection
-2 S_INVALID_PASSWORD Verify password failed
-3 S_DEVICE_LOCK Device Locked
-4 S_NOT_ENOUGH_MEMORY Insufficient memory
-5 S_INVALID_CERTIFICATE Invalid format of Certificate
-6 S_INVALID_ALGORITHM Invalid algorithm
-7 S_INVALID_PARAMETER Invalid parameter
-8 S_UNKOWN_ERROR Unknown error
-9 S_USER_CANCEL Canceled by user