예제 #1
0
        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"]);
            }
        }