static void GenerateKeys(string fileName) { if (fileName == null) { fileName = "ServerKeys.cbor"; } KeySet keys = new KeySet(); OneKey key; for (int i = 0; i < 4; i++) { key = new OneKey(); key.Add(CoseKeyKeys.KeyType, GeneralValues.KeyType_Octet); if (i == 3) { key.Add(CoseKeyKeys.KeyIdentifier, CBORObject.FromObject(Encoding.UTF8.GetBytes("Key#2"))); } else { key.Add(CoseKeyKeys.KeyIdentifier, CBORObject.FromObject(Encoding.UTF8.GetBytes("Key#" + i.ToString()))); } if (i == 3) { key.Add(CoseKeyKeys.Algorithm, AlgorithmValues.AES_CCM_64_128_128); } else { key.Add(CoseKeyKeys.Algorithm, AlgorithmValues.AES_CCM_64_64_128); } key.Add(CBORObject.FromObject("KDF"), AlgorithmValues.dir_kdf); key.Add(CBORObject.FromObject("SenderID"), CBORObject.FromObject(Encoding.UTF8.GetBytes("client"))); key.Add(CBORObject.FromObject("RecipID"), CBORObject.FromObject(Encoding.UTF8.GetBytes("server"))); byte[] keyValue = new byte[35]; for (int j = 0; j < keyValue.Length; j++) { keyValue[j] = (byte)(((i + 1) * (j + 1))); } key.Add(CoseKeyParameterKeys.Octet_k, CBORObject.FromObject(keyValue)); keys.AddKey(key); } FileStream fs = new FileStream(fileName, FileMode.Create); using (BinaryWriter writer = new BinaryWriter(fs)) { writer.Write(keys.EncodeToBytes()); writer.Close(); } Environment.Exit(0); }