Теперь понял вашу задачу.
К сожалению модель доступа к объектам pkcs#11 не дает возможность создавать объекты, которые
1. могут читаться без PIN-кода.
2. модифицироваться после получения PIN-кода.
Вы или создаете объект, который может видеть (+ возможно изменять) только авторизованный пользователь, или все пользователи.
К счастью, это ограничение можно обойти с помощью криптографии, причем используя криптопровайдер внутри Рутокена.
1. Попробуйте сгенерировать ключевую пару на токене
pkcs11-tool --module ./librtpkcs11ecp.so --key-type RSA:2048 --keypairgen --id 45 -l --pin 12345678
2. Подпишите на ней данные, которые вы хотите использовать:
pkcs11-tool --module /usr/lib/librtpkcs11ecp.so -s --id 45 -l --pin 12345678 -i data.txt -o sign.txt
3. Загрузите подпись и данные в качестве CKO_DATA объектов на токен
pkcs11-tool --module /usr/lib/librtpkcs11ecp.so --write-object data.txt --application-label "app-data" --type data
pkcs11-tool --module /usr/lib/librtpkcs11ecp.so --write-object sign.txt --application-label "app-sign" --type data
Дальше, если вы захотите проверить, что объект не изменялся, просто проверьте его подпись:
pkcs11-tool --module /usr/lib/librtpkcs11ecp.so --read-object --type data --application-label "app-sign" -o sign.txt
pkcs11-tool --module /usr/lib/librtpkcs11ecp.so --read-object --type data --application-label "app-data" -o data.txt
pkcs11-tool --module /usr/lib/librtpkcs11ecp.so --verify --id 45 -i data.txt --signature-file sign.txt
Таким образом вы защитите данные подписью, которую можно создать только зная PIN-код токена, в то же время проверить данные может кто угодно.
Проблему того, что пользователь может создавать несколько объектов с одинаковым CKA_LABEL и CKA_ID обойти нельзя: стандарт не запрещает это. В то же время, если вы выгрузили данные и подпись для них сошлась, то этим данным точно можно доверять.