public byte[] GenerateActivationPassword(
            ActivationPasswordNumber passwordNumber, ActivationPasswordCharacterSet characterSet)
        {
            if (this._disposed)
            {
                throw new ObjectDisposedException(this.GetType().FullName);
            }

            // Получение длины пароля активации
            NativeULong passwordLength = 0;
            CKR         rv             = ((LowLevelAPI81.RutokenPkcs11Library)_pkcs11Library).C_EX_GenerateActivationPassword(
                _sessionId, (NativeULong)passwordNumber, null, ref passwordLength, (NativeULong)characterSet);

            if (rv != CKR.CKR_OK)
            {
                throw new Pkcs11Exception("C_EX_GenerateActivationPassword", rv);
            }

            if (passwordLength <= 0)
            {
                throw new InvalidOperationException(
                          "C_EX_GenerateActivationPassword: invalid password length");
            }

            // Генерация пароля активации
            byte[] password = new byte[passwordLength];
            rv = ((LowLevelAPI81.RutokenPkcs11Library)_pkcs11Library).C_EX_GenerateActivationPassword(
                _sessionId, (NativeULong)passwordNumber, password, ref passwordLength, (NativeULong)characterSet);
            if (rv != CKR.CKR_OK)
            {
                throw new Pkcs11Exception("C_EX_GenerateActivationPassword", rv);
            }

            return(password);
        }
示例#2
0
        public static IEnumerable <byte[]> Generate(IRutokenSlot slot, string adminPin,
                                                    ActivationPasswordCharacterSet characterSet, uint smMode)
        {
            var operationParams = new GenerateActivationPasswordsOperationParams
            {
                LoginType    = CKU.CKU_SO,
                LoginPin     = adminPin,
                CharacterSet = characterSet,
                SmMode       = smMode
            };

            new GenerateActivationPasswordsOperation().Invoke(slot, operationParams);

            return(operationParams.ActivationPasswords);
        }