public static Akep2Message3 FromString(string str, byte[] longTermKey) { var contentBytes = PemParser.GetMessageContentBytes(str); var contentObjectsList = (List <object>)SksAsn1Parser.Parse(contentBytes); var iv = (byte[])contentObjectsList[0]; var encryptedPart = (byte[])contentObjectsList[1]; var hmacPart = (byte[])contentObjectsList[2]; var myHmac = SksHmac.Hash(longTermKey, encryptedPart); if (!Utils.CompareByteArrays(hmacPart, myHmac)) { Logger.Log("AKEP2MESSAGE2:", "Hmac doesn't match"); return(null); } var decryptedSequence = SksAes.DecryptBytesFromBytes_Aes(encryptedPart, longTermKey, iv); contentObjectsList = (List <object>)SksAsn1Parser.Parse(decryptedSequence); var a = (string)contentObjectsList[0]; var nonceB = (byte[])contentObjectsList[1]; return(new Akep2Message3(a, nonceB, longTermKey)); }
public void ParseCertificate_WithSampleCertificate_ReturnsCertificates(string certificate, string serialNumber) { var parser = new PemParser(); var result = parser.ParseCertificate(certificate); Assert.NotNull(result); Assert.AreEqual(serialNumber, Convert.ToBase64String(result.GetSerialNumber())); }
public static Akep2Message1 FromString(string str) { var contentBytes = PemParser.GetMessageContentBytes(str); var contentObjectsList = (List <object>)SksAsn1Parser.Parse(contentBytes); var nonceA = (byte[])contentObjectsList[0]; return(new Akep2Message1(nonceA)); }
public void GetMessageBytesTest() { // todo: refactor var expectedSequence = new byte[] { (byte)SksAsn1Type.Sequence, 0x0E, (byte)SksAsn1Type.Printablestring, 0x03, 65, 66, 67, (byte)SksAsn1Type.OctetString, 0x05, 0x00, 0x01, 0x02, 0x03, 0x04, }; var expectedSequenceBase64 = Convert.ToBase64String(expectedSequence); var expected = $"-----BEGIN INITIAL MESSAGE 1-----{expectedSequenceBase64}-----END INITIAL MESSAGE 1"; var messageBytes = PemParser.GetMessageContentBytes(expected); CollectionAssert.AreEqual(expectedSequence, messageBytes); }
public static ChatMessage FromString(string str) { var contentBytes = PemParser.GetMessageContentBytes(str); var contentObjectsList = (List <object>)SksAsn1Parser.Parse(contentBytes); var iv = (byte[])contentObjectsList[0]; var encryptedmessageBytes = (byte[])contentObjectsList[1]; var hmacBytes = (byte[])contentObjectsList[2]; return(new ChatMessage(iv, encryptedmessageBytes, hmacBytes)); }
public static HandshakeMessage2 FromString(string str) { var contentBytes = PemParser.GetMessageContentBytes(str); var contentObjectsList = (List <object>)SksAsn1Parser.Parse(contentBytes); var protocolId = (ProtocolType)(int)contentObjectsList[0]; //var ttps = (List<string>) contentObjectsList[1]; // todo: add TTPs return(new HandshakeMessage2(protocolId, null)); }
public static HandshakeMessage1 FromString(string str) { var contentBytes = PemParser.GetMessageContentBytes(str); var contentObjectsList = (List <object>)SksAsn1Parser.Parse(contentBytes); var a = (string)contentObjectsList[0]; var b = (string)contentObjectsList[1]; var keyId = (byte[])contentObjectsList[2]; var passwordId = (byte[])contentObjectsList[3]; // todo: add TTPs return(new HandshakeMessage1(a, b, keyId, passwordId, null)); }
public void Parse_WithSampleFile_ReturnsCertificates() { var fileData = string.Join(Environment.NewLine, VeriSignClass1, VeriSignClass3PublicPrimaryCA_G2, VeriSignClass3PublicPrimaryCA_G2, VeriSignClass3PrimaryCA_G5, ThawtePrimaryRootCA, ThawtePremiumServerCA, ThawteServerCA); var parser = new PemParser(); var certificates = parser.ParseCertificates(fileData).ToList(); Assert.AreEqual(7, certificates.Count); }
public static KdcHelloResponse FromString(string message, byte[] kdcKey) { var contentBytes = PemParser.GetMessageContentBytes(message); var contentObjectsList = (List <object>)SksAsn1Parser.Parse(contentBytes); var iv = (byte[])contentObjectsList[0]; var encryptedPart = (byte[])contentObjectsList[1]; var decryptedSequence = SksAes.DecryptBytesFromBytes_Aes(encryptedPart, kdcKey, iv); contentObjectsList = (List <object>)SksAsn1Parser.Parse(decryptedSequence); var users = new List <User>(); foreach (var sequenceObj in contentObjectsList) { var sequence = (List <object>)sequenceObj; var ip = (string)sequence[0]; var port = (string)sequence[1]; var name = (string)sequence[2]; var key = (byte[])sequence[3]; var pass = (string)sequence[4]; var user = new User { Password = pass, Key = key, Name = name, IpAddress = ip, Port = port, }; users.Add(user); } return(new KdcHelloResponse { Users = users, }); }
public static void HandleMessage(SksMessageReceivedEventArgs sksMessageReceivedEventArgs) { var messageType = PemParser.GetMessageType(sksMessageReceivedEventArgs.Message); // todo: doriesit otway reese switch (messageType) { case PemMessageType.LongTermKey: break; case PemMessageType.InitialMessage1: break; case PemMessageType.InitialMessage2: break; case PemMessageType.ErrorMessage: break; case PemMessageType.ChatMessage: HandleChatMessage(sksMessageReceivedEventArgs); break; case PemMessageType.Akep2Message1: HandleAkep2Message1(sksMessageReceivedEventArgs); break; case PemMessageType.Akep2Message2: HandleAkep2Message2(sksMessageReceivedEventArgs); break; case PemMessageType.Akep2Message3: HandleAkep2Message3(sksMessageReceivedEventArgs); break; case PemMessageType.OtwayReesMessage1: break; case PemMessageType.OtwayReesMessage2: //HandleOtwayReeseMessage2(sksMessageReceivedEventArgs); break; case PemMessageType.OtwayReesMessage3: break; case PemMessageType.OtwayReesMessage4: //HandleOtwayReeseMessage4(sksMessageReceivedEventArgs); break; case PemMessageType.HandshakeMessage1: HandleHandshakeMessage1(sksMessageReceivedEventArgs); break; case PemMessageType.HandshakeMessage2: HandleHandshakeMessage2(sksMessageReceivedEventArgs); break; case PemMessageType.HandshakeMessage3: HandleHandshakeMessage3(sksMessageReceivedEventArgs); break; case PemMessageType.HandshakeMessage4: HandleHandshakeMessage4(sksMessageReceivedEventArgs); break; case PemMessageType.SshTlsMessage1: break; case PemMessageType.SshTlsMessage2: break; case PemMessageType.SshTlsMessage3: break; default: throw new ArgumentOutOfRangeException(); } }