Esempio n. 1
0
        private void YubikeyStateChange()
        {
            // Piv Manager find only CCID enabled  Yubikeys
            List <string> listDevices = YubikeyPivManager.Instance.ListDevices().ToList();
            string        devName     = listDevices.FirstOrDefault();
            bool          hasDevice   = !string.IsNullOrEmpty(devName);

            YubmanUtil yu = new YubmanUtil();

            btnEnableCCID.Enabled   = false;
            btnExportCert.Enabled   = false;
            btnViewCert.Enabled     = false;
            btnResetYubiKey.Enabled = false;



            if (hasDevice)
            {
                using (YubikeyPivDevice dev = YubikeyPivManager.Instance.OpenDevice(devName))
                {
                    int  serialNumber    = (int)dev.GetSerialNumber(); // uint
                    bool success         = yu.GetYubikeyMode(serialNumber.ToString(), out bool HasOtp, out bool HasCcid, out bool HasFido, out string mode);
                    bool have2enableCcid = !HasCcid;
                    btnEnableCCID.Enabled   = HasCcid;
                    btnExportCert.Enabled   = !have2enableCcid;
                    btnViewCert.Enabled     = !have2enableCcid;
                    btnResetYubiKey.Enabled = !have2enableCcid;
                }
            }

            RefreshInsertedKey();
        }
Esempio n. 2
0
        private void cmdChange_Click(object sender, EventArgs e)
        {
            SetStatus(Color.Orange, "DO NOT REMOVE THE YUBIKEY");

            string devName   = YubikeyPivManager.Instance.ListDevices().FirstOrDefault();
            bool   hasDevice = !string.IsNullOrEmpty(devName);

            if (!hasDevice)
            {
                SetStatus(Color.Yellow, "Insert a Yubikey");
                return;
            }

            YubmanUtil yu = new YubmanUtil();

            using (YubikeyPivDevice dev = YubikeyPivManager.Instance.OpenDevice(devName))
            {
                try
                {
                    string serialNumber = dev.GetSerialNumber().ToString();  // uint
                    bool   success      = yu.SetYubikeyMode(serialNumber, _currentModeHasOTP, _currentModeHasCCID, _currentModeHasFIDO);
                    if (success)
                    {
                        SetStatus(Color.GreenYellow, "The mode was set. Please remove the Yubikey from the system.");
                    }
                    else
                    {
                        SetStatus(Color.Red, "Was unable to set the mode, please remove the Yubikey.");
                    }
                }
                catch (Exception ex)
                {
                    SetStatus(Color.Red, "Was unable to set the mode, please remove the Yubikey. Details: " + ex.Message);
                }

                _stateWaitingToRemove = true;
                foreach (Control control in grpChangeMode.Controls)
                {
                    control.Enabled = false;
                }
            }
        }
Esempio n. 3
0
        private void UpdateCurrentView()
        {
            if (_stateWaitingToRemove)
            {
                // Don't update the UI - wait for the user to remove the current Yubikey
                return;
            }

            // using (YubikeyDetector.Instance.GetExclusiveLock())
            {
                string devName   = YubikeyPivManager.Instance.ListDevices().FirstOrDefault();
                bool   hasDevice = !string.IsNullOrEmpty(devName);

                foreach (Control control in grpChangeMode.Controls)
                {
                    control.Enabled = hasDevice;
                }

                if (!hasDevice)
                {
                    SetStatus(Color.Yellow, "Insert a Yubikey");
                    return;
                }
                YubmanUtil yu = new YubmanUtil();
                using (YubikeyPivDevice dev = YubikeyPivManager.Instance.OpenDevice(devName))
                {
                    int  serialNumber = (int)dev.GetSerialNumber(); // uint
                    bool success      = yu.GetYubikeyMode(serialNumber.ToString(), out _currentModeHasOTP, out _currentModeHasCCID, out _currentModeHasFIDO, out _currentMode);

                    _deferCheckboxEvents = true;
                    chkOTP.Checked       = _currentModeHasOTP;
                    chkCCID.Checked      = _currentModeHasCCID;
                    chkU2f.Checked       = _currentModeHasFIDO;
                    _deferCheckboxEvents = false;
                    SetStatus(Color.GreenYellow, "Currently set to " + _currentMode);
                }
            }
        }
Esempio n. 4
0
        static void Main(string[] args)
        {
            // PIV
            List <string> devices = YubikeyPivManager.Instance.ListDevices(false).ToList();

            Console.WriteLine($"[PIV] Found {devices.Count:N0} devices");

            foreach (string device in devices)
            {
                PrintPiv(device);
            }

            bool   success;
            bool   ccid, otp, fido;
            string errmsg;
            string serial;
            string mode;

            YubmanConsole.setYKManPath(@"E:\proj\EnrollmentStation-master\EnrollmentStation\bin\Release\Binaries\YubikeyManager\ykman.exe", @"E:\proj\EnrollmentStation-master\EnrollmentStation\bin\Release\Binaries\YubikeyManager");

            // Using XKMAN Tool
            Console.WriteLine($"[YKMAN] Cmdline {YubmanConsole.Cmdline}");
            Console.WriteLine($"[YKMAN] CmdWorkDir {YubmanConsole.Workdir}");

            var y = new YubmanUtil();

            int ybdevcount = y.CheckYubikeyPresent();

            Console.WriteLine($"[YKMAN] Yubikey present: {ybdevcount}");

            if (ybdevcount >= 1)
            {
                if (y.GetFirstorDefaultYubikeySerial(out serial))
                {
                    Console.WriteLine($"[YKMAN] First Serial is: {serial}");
                }
            }

            bool present = y.CheckOneYubikeyPresent(out errmsg);

            Console.WriteLine($"[YKMAN] One Yubikey present: {present} {errmsg}");

            if (present)
            {
                success = y.GetYubikeySerial(out serial);
                Console.WriteLine($"[YKMAN] Serial : {serial}");
                mode = y.GetYubikeyMode(serial);
                Console.WriteLine($"[YKMAN] Current Mode : {mode}");
                success = y.GetYubikeyMode(serial, out otp, out ccid, out fido, out mode);
                Console.WriteLine($"[YKMAN] Current Mode : {mode} OTP:{otp} CCID {ccid} FIDO:{fido}");
            }
            else
            {
                if (!(string.IsNullOrEmpty(errmsg)) && (errmsg.Contains("Multiple Yubikeys found")))
                {
                    Console.WriteLine("Multiple Yubikeys found");
                    success = y.ListYubikey(out string info);
                    success = y.GetYubikeySerial(out serial);
                    StringReader strReader1 = new StringReader(info);
                    StringReader strReader2 = new StringReader(serial);
                    string       devtype, devserial = null;
                    int          devnr = 0;
                    while (true)
                    {
                        devtype   = strReader1.ReadLine();
                        devserial = strReader2.ReadLine();
                        if ((devtype != null) && (devserial != null))
                        {
                            devnr++;
                            Console.WriteLine($"Device: {devnr}");
                            Console.WriteLine($"Type  : {devtype}");
                            Console.WriteLine($"Serial: {devserial}");
                            Console.WriteLine($"Mode  : {y.GetYubikeyMode(devserial)}\r\n");
                        }
                        else
                        {
                            break;
                        }
                    }
                }
            }
            string[] serialnumbers;

            success = y.GetYubikeySerial(out serialnumbers);
            if (success)
            {
                foreach (string s in serialnumbers)
                {
                    var yi = new YubikeyInfo();
                    yi.GetYubikeyInfo(s);
                    yi.print();
                    Console.WriteLine();
                }
            }
        }