PKCS11 Keystore
Sample code uses ES6 language features such as arrow functions and promises. For compatibility with IE11, code written with these features must be either transpiled using tools like Babel or refactored accordingly using callbacks.
Interface
interface AbstractPkcs11Generic {
uploadConfig(config: string, callback?: (error: T1CLibException, data: Pkcs11UploadConfigResponse) => void): Promise<Pkcs11UploadConfigResponse>;
getConfig(callback?: (error: T1CLibException, data: Pkcs11GetConfigResponse) => void): Promise<Pkcs11GetConfigResponse>;
clearConfig(callback?: (error: T1CLibException, data: Pkcs11ClearConfigResponse) => void): Promise<Pkcs11ClearConfigResponse>;
os(callback?: (error: T1CLibException, data: OsResponse) => void): Promise<OsResponse>;
info(callback?: (error: T1CLibException, data: Pkcs11InfoResponse) => void): Promise<Pkcs11InfoResponse>;
slots(callback?: (error: T1CLibException, data: Pkcs11SlotsResponse) => void): Promise<Pkcs11SlotsResponse>;
slotsWithTokenPresent(callback?: (error: T1CLibException, data: Pkcs11SlotsResponse) => void): Promise<Pkcs11SlotsResponse>;
slotInfo(slotId: string, callback?: (error: T1CLibException, data: Pkcs11SlotInfoResponse) => void): Promise<Pkcs11SlotInfoResponse>;
token(slotId: string, callback?: (error: T1CLibException, data: Pkcs11TokenResponse) => void): Promise<Pkcs11TokenResponse>;
getAliases(slotId: string, data: Pkcs11VerifyPinRequest, callback?: (error: T1CLibException, data: AliasesResponse) => void): Promise<AliasesResponse>;
getPrivateKeyType(slotId: string, alias: string, data: Pkcs11VerifyPinRequest, callback?: (error: T1CLibException, data: PrivateKeyTypeResponse) => void): Promise<PrivateKeyTypeResponse>;
getCertificates(slotId: string, alias: string, data: Pkcs11VerifyPinRequest, callback?: (error: T1CLibException, data: Pkcs11CertificatesResponse) => void): Promise<Pkcs11CertificatesResponse>;
sign(slotId: string, alias: string, data: Pkcs11SignRequest, callback?: (error: T1CLibException, data: DataResponse) => void): Promise<DataResponse>;
verifyPin(slotId: string, alias: string, data: Pkcs11VerifyPinRequest, callback?: (error: T1CLibException, data: BoolDataResponse) => void): Promise<BoolDataResponse>;
}Models
Initialising the SDK
Before you are able to use the SDK's methods you need to initialise the trust1connector javascript SDK. Below you can find an example of how to do this. You can also check the integration in web applications page.
In this example you can see when the connector is initialised we try to fetch the pkcs11 configuration already loaded in (if present), if this is not loaded you still need to upload the configuration. (line 30)
we store the client data for later use (line 27)
After initialising the configuration we can fetch all available slots to display on the screen. (line 31)
Configuration
Example
Example config contents
The most important config values are the name and the library (location of the PKCS11 dylib or DLL).
Base64 ecoding the config contents described in the codeblock above and sending them via the uploadConfig method of the JS sdk will enable you to upload and use that pkcs11 configuration.
Upload configuration
To be able to use the PKCS11 generic you need to upload a correct configuration file, which includes the name and library to be used. We use a html file chooser to fetch a file and use the FilereaderAPI to retrieve the contents of the selected file, then we convert it to a base64 string which we send to the uploadConfig method
Get configuration
Clear configuration
This method is used to clear a currently active configuration
Os information
Via the following endpoint your're able to retrieve OS information if required
Info
Retrieve the library information of the loaded configuration. When the loaded config is not present it will throw a configuration exception
Requirements: loaded configuration
slots
Retrieve all available slots
Requirements: loaded configuration
The same endpoint can be triggered but only showing the slots present;
Slot information
Retrieve relevant slot information
Requirements: loaded configuration, slotId
Token information
Retrieve information about the selected token
Requirements: loaded configuration, slotId
Retrieve aliasses
Retrieve all aliasses for a specific token.
Requirements: loaded configuration, slotId, verifyPin object
Retrieve the Private key type
Returns the name of the algorithm associated with this key
Requirements: loaded configuration, slotId, Alias, verifyPin object
Retrieve the certificates
Retrieve all certificates present for a specific token.
Requirements: loaded configuration, slotId, Alias, verifyPin object
Sign
Sign base64 data object.
Requirements: loaded configuration, slotId, Alias, signData object
Verify pin
Verify the pin of a specific token.
Requirements: loaded configuration, slotId, Alias, VerifyPin object
Status/error codes
TBD
Last updated
Was this helpful?
