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