Beispiel #1
0
        public void _HL_12_02_Digest_Gost3411_12_512_Test()
        {
            using (var pkcs11 = Settings.Factories.RutokenPkcs11LibraryFactory.LoadRutokenPkcs11Library(Settings.Factories, Settings.Pkcs11LibraryPath, Settings.AppType))
            {
                // Find firsst slot with token present
                IRutokenSlot slot = Helpers.GetUsableSlot(pkcs11);

                // Open RO session
                using (ISession session = slot.OpenSession(SessionType.ReadOnly))
                {
                    // Specify digesting mechanism
                    var mechanism = Settings.Factories.MechanismFactory.Create((CKM)Extended_CKM.CKM_GOSTR3411_12_512);

                    byte[] sourceData = TestData.Digest_Gost3411_SourceData;

                    // Digest data
                    byte[] digest = session.Digest(mechanism, sourceData);

                    byte[] targetData = TestData.Digest_Gost3411_12_512_TargetData;

                    // Do something interesting with digest value
                    Assert.IsTrue(Convert.ToBase64String(digest) == Convert.ToBase64String(targetData));
                }
            }
        }
Beispiel #2
0
        public static void Block(IRutokenSlot slot, RutokenType tokenType)
        {
            using var session = slot.OpenSession(SessionType.ReadWrite);

            var wrongPin  = tokenType == RutokenType.RUTOKEN ? _wrongPin1_RutokenS : _wrongPin1;
            var wrongPin2 = tokenType == RutokenType.RUTOKEN ? _wrongPin2_RutokenS : _wrongPin2;

            while (true)
            {
                try
                {
                    session.Login(CKU.CKU_SO, wrongPin);
                    session.Logout();

                    // Если успешно залогинились, то логинимся еще с другим паролем
                    try
                    {
                        session.Login(CKU.CKU_SO, wrongPin2);
                        session.Logout();
                    }
                    catch (Pkcs11Exception ex) when(ex.RV == CKR.CKR_PIN_LOCKED)
                    {
                        return;
                    }
                }
                catch (Pkcs11Exception ex) when(ex.RV == CKR.CKR_PIN_LOCKED)
                {
                    return;
                }
                catch
                {
                    // ignored
                }
            }
        }
Beispiel #3
0
        public static string Generate(IRutokenSlot slot, RutokenType tokenType, uint pinLength)
        {
            using var session = slot.OpenSession(SessionType.ReadOnly);

            var pin = new byte[pinLength];

            for (var i = 0; i < pinLength; i++)
            {
                var random = session.GenerateRandom(2);

                if (tokenType == RutokenType.PINPAD_FAMILY)
                {
                    pin[i] = (byte)(random[1] % 10 + 0x30);
                }
                else
                {
                    pin[i] = oneByteLetters[random[1] % oneByteLetters.Length];
                }
            }

            return(Encoding.ASCII.GetString(pin));
        }
Beispiel #4
0
        public void _HL_12_01_Digest_SHA1_Test()
        {
            using (var pkcs11 = Settings.Factories.RutokenPkcs11LibraryFactory.LoadRutokenPkcs11Library(Settings.Factories, Settings.Pkcs11LibraryPath, Settings.AppType))
            {
                // Find first slot with token present
                IRutokenSlot slot = Helpers.GetUsableSlot(pkcs11);

                // Open RO session
                using (ISession session = slot.OpenSession(SessionType.ReadOnly))
                {
                    // Specify digesting mechanism
                    var mechanism = Settings.Factories.MechanismFactory.Create(CKM.CKM_SHA_1);

                    byte[] sourceData = ConvertUtils.Utf8StringToBytes("Hello world");

                    // Digest data
                    byte[] digest = session.Digest(mechanism, sourceData);

                    // Do something interesting with digest value
                    Assert.IsTrue(Convert.ToBase64String(digest) == "e1AsOh9IyGCa4hLN+2Od7jlnP14=");
                }
            }
        }