public static void ClassSetup(TestContext ctx) { byte[] cert = Base64.Decode("MIIBHDCBz6ADAgECAhRzRMjlxi8nPr0B6DoN7e4sxwyb6jAFBgMrZXAwGDEWMBQGA1UEAwwNQ09TRSBDQSBUaHJlZTAeFw0xOTA3MDgwMTAyMjBaFw0yNzA5MjQwMTAyMjBaMBYxFDASBgNVBAMMC0NPU0UgRUUgU2l4MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEo0gYfGOYqcwGVra0OEiE0XXST/W4pTJ/HdTXZ7Ek/ycJZZn0jkHNQ9UCP7NJ16LOcZLUofev7OMHxct5DvuaPjAFBgMrZXADQQAqm5No83WC9W7tOkicP9wGu1HSdGCOR0CVjjzHfCfzRQkuSW2tRLBlstxzpqY6yrIuccMifhcrCdMe3fsPPS8G"); CBORObject objKey = CBORObject.NewMap(); objKey[CoseKeyKeys.KeyType] = GeneralValues.KeyType_EC; objKey[CoseKeyKeys.Algorithm] = AlgorithmValues.ECDSA_256; objKey[CoseKeyParameterKeys.EC_Curve] = GeneralValues.P256; objKey[CoseKeyParameterKeys.EC_D] = CBORObject.FromObject(Hex.Decode("7D29C4C7CDCBB2209CAD01F3BB4C9009782F66C2E1A6C592DF838A0795A6D87B")); objKey[CoseKeyParameterKeys.EC_X] = CBORObject.FromObject(Hex.Decode("A348187C6398A9CC0656B6B4384884D175D24FF5B8A5327F1DD4D767B124FF27")); objKey[CoseKeyParameterKeys.EC_Y] = CBORObject.FromObject(Hex.Decode("096599F48E41CD43D5023FB349D7A2CE7192D4A1F7AFECE307C5CB790EFB9A3E")); OneKey key = new OneKey(objKey); X509Key = new TlsKeyPair(cert, key); cert = Hex.Decode("3082011D3081D0A00302010202147344C8E5C62F273EBD01E83A0DEDEE2CC70C9BE9300506032B657030183116301406035504030C0D434F5345204341205468726565301E170D3139303730383031303231395A170D3237303932343031303231395A30173115301306035504030C0C434F534520454520466976653059301306072A8648CE3D020106082A8648CE3D03010703420004E8D9873804129C0A11238675C144CF00A7AF0E1A8ACF54A87BE76B9A0F2DBADF5384966EFD9C05B3DCEB3C074CF32410F033D962620C41F3892C0B94E3955D77300506032B65700341007BB0A5201998E6FC120364B96DD88211DD1FC907888C380E5A186BCD2F6A4CB238853EC22E5537CBCE5C157E59B4AEE71383372345932D0D40260857053FA608"); objKey = CBORObject.NewMap(); objKey[CoseKeyKeys.KeyType] = GeneralValues.KeyType_EC; objKey[CoseKeyKeys.Algorithm] = AlgorithmValues.ECDSA_256; objKey[CoseKeyParameterKeys.EC_Curve] = GeneralValues.P256; objKey[CoseKeyParameterKeys.EC_D] = CBORObject.FromObject(Hex.Decode("019F4FD19429DE078B2A013F5218CD64C24FABA1F6F0BE924E628E63BC67A8AC")); objKey[CoseKeyParameterKeys.EC_X] = CBORObject.FromObject(Hex.Decode("E8D9873804129C0A11238675C144CF00A7AF0E1A8ACF54A87BE76B9A0F2DBADF")); objKey[CoseKeyParameterKeys.EC_Y] = CBORObject.FromObject(Hex.Decode("5384966EFD9C05B3DCEB3C074CF32410F033D962620C41F3892C0B94E3955D77")); X509Client = new TlsKeyPair(cert, new OneKey(objKey)); }
private static void SetUserKey(string[] cmds) { if (cmds.Length < 2 || 3 < cmds.Length) { Console.WriteLine("Incorrect number of args"); } else { if (Program._TlsKeys.ContainsKey(cmds[1])) { ClientKey = Program._TlsKeys[cmds[1]]; } else { Console.WriteLine("Can't find TLS key {0}", cmds[1]); } if (cmds.Length == 3) { switch (cmds[2].ToLower()) { case "kid": ClientKeyType = 1; break; case "key": ClientKeyType = 2; break; default: Console.WriteLine("Unrecognized cnf key type"); break; } } } }
/// <summary> /// Create a client only channel and use a given endpoint /// </summary> /// <param name="tlsKey">Authentication information</param> /// <param name="ep">client side endpoint</param> public TLSClientChannel(TlsKeyPair tlsKey, System.Net.EndPoint ep) { _localEndPoint = ep; _tlsKey = tlsKey ?? throw new ArgumentNullException(nameof(tlsKey)); }
/// <summary> /// Create a client only channel and use a given point /// </summary> /// <param name="tlsKey">Authentication information</param> /// <param name="port">client side UDP port</param> public TLSClientChannel(TlsKeyPair tlsKey, int port) { _port = port; _tlsKey = tlsKey ?? throw new ArgumentNullException(nameof(tlsKey)); }
public void TestRpk() { TlsKeyPair tlsKey = new TlsKeyPair(RpkOneKey.PublicKey(), RpkOneKey); TLSClientEndPoint ep = new TLSClientEndPoint(RpkOneKey); }
public TLSClientEndPoint(TlsKeyPair userKey, System.Net.EndPoint localEndPoint, ICoapConfig config) : this(new TLSClientChannel(userKey, localEndPoint), config) { }
public TLSClientEndPoint(TlsKeyPair userKey, System.Net.EndPoint localEndPoint) : this(userKey, localEndPoint, CoapConfig.Default) { }
public TLSClientEndPoint(TlsKeyPair userKey, int port, ICoapConfig config) : this(new TLSClientChannel(userKey, port), config) { }
public TLSClientEndPoint(TlsKeyPair userKey, ICoapConfig config) : this(userKey, 0, config) { }
public TLSClientEndPoint(TlsKeyPair userKey, int port = 0) : this(userKey, port, CoapConfig.Default) { }
internal TLSClient(TlsSession session, TlsKeyPair tlsKey, KeySet cwtTrustKeys) : base(session, tlsKey, cwtTrustKeys) { }
internal TLSClient(TlsSession session, TlsKeyPair userKey) : base(session, userKey) { }
public static void KdcToken(string[] cmds) { if (cmds.Length != 7) { Console.WriteLine("Incorrect argument Count: KdcToken <AS> <Audience> <Scope> <OscoreKeys> <Kdc> <Store>"); return; } Request request = new Request(Method.POST) { URI = new Uri(cmds[1]) }; Oauth.Request oRequest = new Oauth.Request(Oauth.Request.GrantType_ClientToken) { Audience = cmds[2], Scope = CBORObject.FromObject(cmds[3]) }; request.Payload = oRequest.EncodeToBytes(); request.ContentType = MediaType.ApplicationAceCbor; request.OscoreContext = Program._OscoreKeys[cmds[4]]; request.Send(); Response response = request.WaitForResponse(); if (response.StatusCode != StatusCode.Created) { Console.WriteLine($"Error with response from the AS - Code is {response.StatusCode}"); return; } Oauth.Response oResponse = Oauth.Response.FromCBOR(response.Payload); Confirmation cnf = oResponse.Confirmation; byte[][] oscoreSalts = new byte[2][]; request = new Request(Method.POST) { URI = new Uri(cmds[5]) }; CBORObject kdcRequest = CBORObject.NewMap(); kdcRequest.Add(Oauth_Parameter.Access_Token.Key, oResponse.Token); if (cnf.AsCBOR.ContainsKey(CBORObject.FromObject(Confirmation.ConfirmationIds.COSE_OSCORE))) { oscoreSalts[0] = SecureRandom.GetNextBytes(new SecureRandom(), 8); kdcRequest.Add(Oauth_Parameter.CNonce.Key, CBORObject.FromObject(oscoreSalts[0])); request.ContentFormat = MediaType.ApplicationAceCbor; } request.Payload = kdcRequest.EncodeToBytes(); request.Send(); response = request.WaitForResponse(); if (response.StatusCode != StatusCode.Created) { Console.WriteLine("Failure"); return; } Console.WriteLine("Successfully posted to KDC"); CBORObject cborResponse = CBORObject.DecodeFromBytes(response.Payload); GroupData groupData = new GroupData(); if (cborResponse.ContainsKey(Oauth_Parameter.CNonce.Key)) { groupData.ServerNonce = cborResponse[Oauth_Parameter.CNonce.Key].GetByteString(); } if (cborResponse.ContainsKey("sign_info")) { groupData.SignInfo = CBORObject.DecodeFromBytes(cborResponse["sign_info"].GetByteString()); } else { groupData.SignInfo = CBORObject.DecodeFromBytes(new byte[] { 0x83, 0x27, 0x06, 0x82, 0x01, 0x06 }); } if (cborResponse.ContainsKey("pub_key_enc")) { groupData.PubKeyEnc = cborResponse["pub_key_enc"].GetByteString(); } groupData.SignNonce = cborResponse["SignNonce"].GetByteString(); if (cnf.AsCBOR.ContainsKey(CBORObject.FromObject(Confirmation.ConfirmationIds.COSE_OSCORE))) { CBORObject oscoreContext = cnf.AsCBOR[CBORObject.FromObject(Confirmation.ConfirmationIds.COSE_OSCORE)]; byte[] salt = new byte[0]; if (oscoreContext.ContainsKey(CBORObject.FromObject(6))) { salt = oscoreContext[CBORObject.FromObject(CBORObject.FromObject(6))].GetByteString(); } CBORObject alg = null; if (oscoreContext.ContainsKey(CBORObject.FromObject(5))) { alg = oscoreContext[CBORObject.FromObject(5)]; } CBORObject kdf = null; if (oscoreContext.ContainsKey(CBORObject.FromObject(4))) { kdf = oscoreContext[CBORObject.FromObject(4)]; } byte[] keyContext = null; if (oscoreContext.ContainsKey(CBORObject.FromObject(7))) { keyContext = oscoreContext[CBORObject.FromObject(7)].GetByteString(); } oscoreSalts[1] = cborResponse[Oauth_Parameter.CNonce.Key].GetByteString(); byte[] newSalt = new byte[salt.Length + oscoreSalts[0].Length + oscoreSalts[1].Length]; Array.Copy(salt, newSalt, salt.Length); Array.Copy(oscoreSalts[0], 0, newSalt, salt.Length, oscoreSalts[0].Length); Array.Copy(oscoreSalts[1], 0, newSalt, salt.Length + oscoreSalts[0].Length, oscoreSalts[1].Length); SecurityContext oscoapContext = SecurityContext.DeriveContext( oscoreContext[CBORObject.FromObject(1)].GetByteString(), keyContext, oscoreContext[CBORObject.FromObject(2)].GetByteString(), oscoreContext[CBORObject.FromObject(3)].GetByteString(), newSalt, alg, kdf); oscoapContext.UserData = groupData; Program._OscoreKeys.Add(cmds[6], oscoapContext); } else if (cnf.AsCBOR.ContainsKey(CBORObject.FromObject(Confirmation.ConfirmationIds.COSE_Key))) { TlsKeyPair tlsKey = new TlsKeyPair(cnf.Key); tlsKey.PrivateKey.UserData = groupData; Program._TlsKeys.Add(cmds[5], new TlsKeyPair(cnf.Key)); } else { Console.WriteLine("Don't know how to get the key"); } }
public TLSSession(IPEndPoint ipEndPoint, QueueItem toSend, TlsKeyPair tlsKey) { _ipEndPoint = ipEndPoint; _toSend = toSend; _userKey = tlsKey; }