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); }
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); }