Source code
Revision control
Copy as Markdown
Other Tools
(mozilla-projects-nss-reference-fc-getinfo)=
# FC_GetInfo
## [Name](#name)
:::{container}
FC_GetInfo - return general information about the PKCS #11 library.
:::
## [Syntax](#syntax)
:::{container}
```{code}
CK_RV FC_GetInfo(CK_INFO_PTR pInfo);
```
:::
## [Parameters](#parameters)
:::{container}
`FC_GetInfo` has one parameter:
`pInfo`
: points to a [CK_INFO](/en-US/CK_INFO) structure
:::
## [Description](#description)
:::{container}
`FC_GetInfo` returns general information about the PKCS #11 library. On return, the `CK_INFO`
structure that `pInfo` points to has the following information:
- `cryptokiVersion`: PKCS #11 interface version number implemented by the PKCS #11 library.
The version is 2.20 (`major=0x02, minor=0x14`).
- `manufacturerID`: the PKCS #11 library manufacturer, "Mozilla Foundation", padded with
spaces to 32 characters and not null-terminated.
- `flags`: should be 0.
- `libraryDescription`: description of the library, "NSS Internal Crypto Services", padded
with spaces to 32 characters and not null-terminated.
- `libraryVersion`: PKCS #11 library version number, for example, 3.11
(`major=0x03, minor=0x0b`).
A user may call `FC_GetInfo` without logging into the token (to assume the NSS User role).
:::
## [Return value](#return_value)
::::{container}
`FC_GetInfo` always returns `CKR_OK`.
:::{note}
`FC_GetInfo` should return `CKR_ARGUMENTS_BAD` if `pInfo` is `NULL`.
`FC_GetInfo` should return `CKR_CRYPTOKI_NOT_INITIALIZED` if the library is not
initialized.
:::
::::
## [Examples](#examples)
:::{container}
Note the use of the `%.32s` format string to print the `manufacturerID` and
`libraryDescription` members of the `CK_INFO` structure.
```{code}
#include <assert.h>
#include <stdio.h>
CK_FUNCTION_LIST_PTR pFunctionList;
CK_RV crv;
CK_INFO info;
crv = FC_GetFunctionList(&pFunctionList);
assert(crv == CKR_OK);
...
/* invoke FC_GetInfo as pFunctionList->C_GetInfo */
crv = pFunctionList->C_GetInfo(&info);
assert(crv == CKR_OK);
printf("General information about the PKCS #11 library:\n");
printf(" PKCS #11 version: %d.%d\n",
(int)info.cryptokiVersion.major, (int)info.cryptokiVersion.minor);
printf(" manufacturer ID: %.32s\n", info.manufacturerID);
printf(" flags: 0x%08lx\n", info.flags);
printf(" library description: %.32s\n", info.libraryDescription);
printf(" library version: %d.%d\n",
(int)info.libraryVersion.major, (int)info.libraryVersion.minor);
printf("\n");
```
:::
## [See also](#see_also)
:::{container}
- [NSC_GetInfo](/en-US/NSC_GetInfo)
:::