static void BuildCompact(JSON control, KeySet keys) { // Encrypted or Signed? if (control.ContainsKey("signing")) { JOSE.SignMessage sign = new JOSE.SignMessage(); JOSE.Signer signer = new JOSE.Signer(keys[0]); sign.SetContent(control["input"]["payload"].AsString()); sign.AddSigner(signer); JSON xx = control["signing"]["protected"]; foreach (string key in xx.Keys) { signer.AddProtected(key, xx[key]); } string output = sign.EncodeCompact(); Message msg = Message.DecodeFromString(output); CheckMessage(msg, keys[0], control["input"]); } else if (control.ContainsKey("encrypting_key")) { JOSE.EncryptMessage enc = new EncryptMessage(); JSON xx = control["encrypting_content"]["protected"]; foreach (string key in xx.Keys) { enc.AddProtected(key, xx[key]); } JOSE.Recipient recip = new Recipient(keys[0], control["input"]["alg"].AsString(), enc); enc.AddRecipient(recip); enc.SetContent(control["input"]["plaintext"].AsString()); string output = enc.EncodeCompact(); Message msg = Message.DecodeFromString(output); CheckMessage(msg, keys[0], control["input"]); } }