...
Кроме атрибутов стандарта PKCS#11, объект также может обладать определяемыми производителем атрибутами, смысл и значения которых не описаны в PKCS#11.
Создание и изменение объектов
Все функции, которые создают, изменяют или копируют объекты, используют в качестве одного из своих аргументов шаблон, который специфицирует значения атрибутов. Криптографические функции, которые создают объекты, также могут сами вносить значения некоторых дополнительных атрибутов; какие именно атрибуты будут задаваться вызовом криптографической функции зависит от того, какой используется механизм. В любом случае все требуемые атрибуты, поддерживаемые классом объектов и не имеющие значений по умолчанию, должны быть указаны при создании объекта в шаблоне или самой функцией.
Создание объектов
Объекты могут быть созданы с помощью функций стандарта PKCS#11 C_CreateObject, C_GenerateKey, C_GenerateKeyPair, C_UnwrapKey и C_DeriveKey. Кроме того, копирование уже существующих объектов (с помощью функции C_CopyObject) также создает новый объект, но этот тип создания объектов на данный момент не поддерживается устройствами Рутокен.
...
Если при попытке создать объект возникает несколько перечисленных ситуаций одновременно, то возвращаемый код ошибки может быть любым из вышеперечисленных.
Изменение объектов
Объекты могут изменяться с помощью функции C_SetAttributeValue стандарта PKCS#11. Шаблон, предоставляемый для функции C_SetAttributeValue, может содержать новые значения для атрибутов, которыми объект уже обладает; значения для атрибутов, которыми объект еще не обладает; или и те и другие сразу.
...
Все сценарии, описанные в части «Создание объектов», включая коды возвращаемых ошибок, применимы для изменения объектов с помощью функции C_SetAttributeValue, кроме ситуации с неполным шаблоном.