Return-Path: <Jonathan.Hammell@cyber.gc.ca>
X-Original-To: spasm@ietfa.amsl.com
Delivered-To: spasm@ietfa.amsl.com
Received: from localhost (localhost [127.0.0.1])
 by ietfa.amsl.com (Postfix) with ESMTP id B5B3312015F
 for <spasm@ietfa.amsl.com>; Mon, 27 May 2019 06:31:31 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -1.9
X-Spam-Level: 
X-Spam-Status: No, score=-1.9 tagged_above=-999 required=5
 tests=[BAYES_00=-1.9, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001,
 SPF_PASS=-0.001] autolearn=ham autolearn_force=no
Received: from mail.ietf.org ([4.31.198.44])
 by localhost (ietfa.amsl.com [127.0.0.1]) (amavisd-new, port 10024)
 with ESMTP id R2lVLVkv_8QS for <spasm@ietfa.amsl.com>;
 Mon, 27 May 2019 06:31:29 -0700 (PDT)
Received: from beechnut.cse-cst.gc.ca (beechnut.cse-cst.gc.ca [205.193.218.37])
 (using TLSv1.2 with cipher RC4-SHA (128/128 bits))
 (No client certificate requested)
 by ietfa.amsl.com (Postfix) with ESMTPS id 7B27312001A
 for <spasm@ietf.org>; Mon, 27 May 2019 06:31:29 -0700 (PDT)
From: "Hammell, Jonathan F" <Jonathan.Hammell@cyber.gc.ca>
To: "'spasm@ietf.org'" <spasm@ietf.org>
Thread-Topic: Re: [lamps] WG Last Call for draft-ietf-lamps-cms-mix-with-psk
Thread-Index: AdUUjUhsTWU98srlTk2AlTzaw5oH1A==
Date: Mon, 27 May 2019 13:31:24 +0000
Accept-Language: en-US
Content-Language: en-US
X-MS-Has-Attach: yes
X-MS-TNEF-Correlator: 
x-classification: UNCLASSIFIED
Content-Type: multipart/mixed;
 boundary="_002_ba3c46ac49d84bf892c04051f5fea3c5cybergcca_"
MIME-Version: 1.0
Message-Id: <20190527133129.7B27312001A@ietfa.amsl.com>
Archived-At: <https://mailarchive.ietf.org/arch/msg/spasm/_6d_4jp3sOprAnbU2fp_yp_-6-k>
Subject: Re: [lamps] WG Last Call for draft-ietf-lamps-cms-mix-with-psk
X-BeenThere: spasm@ietf.org
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: "This is a venue for discussion of doing Some Pkix And SMime
 \(spasm\) work." <spasm.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/spasm>,
 <mailto:spasm-request@ietf.org?subject=unsubscribe>
List-Archive: <https://mailarchive.ietf.org/arch/browse/spasm/>
List-Post: <mailto:spasm@ietf.org>
List-Help: <mailto:spasm-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/spasm>,
 <mailto:spasm-request@ietf.org?subject=subscribe>
X-List-Received-Date: Mon, 27 May 2019 13:31:32 -0000

--_002_ba3c46ac49d84bf892c04051f5fea3c5cybergcca_
Content-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: quoted-printable

Classification: UNCLASSIFIED

Sorry for the late comment.  My colleagues and I did review the draft and w=
e have no suggestions for text changes.  We also produced a ProVerif model =
(attached) in an attempt to verify some of the cryptographic properties.  D=
etails are below.  Let me know if you have any questions or issues.

# Assumptions/limitations
The model is limited to the Key Agreement algorithm and is bounded with two=
 hardwired originators and hardwired recipients.=20
=20
We assume the DH key exchange is broken using a quantum computer such that =
the recipient private keys are known at the outset. We have modeled this by=
 revealing the recipient's DH private key on the channel.

All recipients have DH certificates signed by a trusted CA. These are share=
d with all at beginning of the protocol.=20

In an effort to model configuration choices of key encryption and kdf algor=
ithms, we included settings for using strong or weak algorithms (in the qua=
ntum perspective). The model allows the attacker to modify the settings to =
both the originator and the receivers' algorithm configuration to use quant=
um-vulnerable algorithms.

# Security queries
Our interpretation of the draft is that it is attempting to solve the probl=
em of maintaining the confidentiality of an encrypted cek from an opponent =
with the ability to break the DH public keys with a quantum computer. There=
fore our model is limited to proving confidentiality of the cek in the face=
 of such an attacker.

The model contains two types of queries:

1. Sanity - Whenever a sender s sends an encrypted version of cek to an int=
ended recipient r then recipient r receives the same cek from sender s .

2. Confidentiality-  An attacker cannot learn the cek during a protocol run=
 unless the sender uses weak crypto (in the quantum perspective).

# Running the model
proverif -graph . Using_PSK_in_CMS_Keyagree.pv

ProVerif spits out a lot of info, but the important statements about the qu=
eries are prefixed by the string "RESULT".



---
Re: [lamps] WG Last Call for draft-ietf-lamps-cms-mix-with-psk
Russ Housley <housley@vigilsec.com> Fri, 10 May 2019 15:00 UTChttps://maila=
rchive.ietf.org/arch/browse/spasm/?q=3Dmix-with-psk=20
The only comment that I received is to add <CODE BEGINS> at the top of the =
ASN.1 module and <CODE ENDS> at the bottom of the ASN.1 module.  I will do =
that now.

Russ


> On May 10, 2019, at 10:52 AM, Tim Hollebeek <mailto:tim.hollebeek@digicer=
t.com&gt; wrote:
>=20
> It appears no one has any further comments on this document, and it is re=
ady to proceed.
> =20
> -Tim
> =20
> From: Spasm <mailto:spasm-bounces@ietf.org <mailto:spasm-bounces@ietf.org=
>> On Behalf Of Tim Hollebeek
> Sent: Friday, April 19, 2019 10:45 AM
> To: SPASM <mailto:spasm@ietf.org <mailto:spasm@ietf.org>>
> Subject: [lamps] WG Last Call for draft-ietf-lamps-cms-mix-with-psk
> =20
> This is the LAMPS WG Last Call for "Using Pre-Shared Key (PSK) in the Cry=
ptographic Message Syntax (CMS)" <draft-ietf-lamps-cms-mix-with-psk>.  Plea=
se review the document and send your comments to the list by 6 May 2019.
> =20
> The datatracker page for the document is https://datatracker.ietf.org/doc=
/draft-ietf-lamps-cms-mix-with-psk/ <https://datatracker.ietf.org/doc/draft=
-ietf-lamps-cms-mix-with-psk/%3E
> =20
> Thanks,
> =20
> Tim



--_002_ba3c46ac49d84bf892c04051f5fea3c5cybergcca_
Content-Type: application/octet-stream; name="Using_PSK_in_CMS_Keyagree.pv"
Content-Description: Using_PSK_in_CMS_Keyagree.pv
Content-Disposition: attachment; filename="Using_PSK_in_CMS_Keyagree.pv";
 size=11632; creation-date="Mon, 27 May 2019 13:28:07 GMT";
 modification-date="Fri, 24 May 2019 18:46:36 GMT"
Content-Transfer-Encoding: base64

KCpQcm9WZXJpZiBtb2RlbCBmb3IgdGhlICJVc2luZyBQU0sgaW4gdGhlIENNUyIgZHJhZnQgKikK
KCpUaGlzIG1vZGVsIGlzIGFuIHVwZGF0ZSBvZiB0aGUga2V5IGFncmVlbWVudCBtZXRob2QgdG8g
bWVldCB0aGUgbmV3IGRyYWZ0IHZlcnNpb24gMDMgKE1hcmNoIDIwMTggKSAqKQoKCigqIFByb3Rv
Y29sIHZhcmlhYmxlIGRlZmluaXRpb25zICopCgooKiBEZWZpbmUgc3Ryb25nIG9yIHdlYWsgS0RG
IGFuZCBLZW5jcnlwdGlvbiBpZHMgKikKdHlwZSBLREZJRC4KY29uc3QgSEtERjogS0RGSUQuCmNv
bnN0IFdLREY6IEtERklELgp0eXBlIEtFbmNJRC4KY29uc3QgQUVTMjU2OktFbmNJRC4KY29uc3Qg
QUVTMTI4OktFbmNJRC4KCnR5cGUgS0VLLgp0eXBlIEtESy4KKCpQU0sgc3R1ZmYgaW5jbHVkaW5n
IHRoZSBzdHJ1Y3R1cmUgZm9yIHRoZSBQU0tPdGhlckluZm8gKikKdHlwZSBQU0tJRC4KdHlwZSBQ
U0suCgoKKCpUaGVzZSBhcmUgdmFsdWVzIGZvciB0aGUgbmV3IENNU09SSWZvclBTS090aGVySW5m
byB0eXBlICopCmNvbnN0ICBwc2tsZW46Yml0c3RyaW5nLgpjb25zdCAga2RrbGVuOmJpdHN0cmlu
Zy4KY29uc3QgIHBza2xlbjI6Yml0c3RyaW5nLgpjb25zdCAga2RrbGVuMjpiaXRzdHJpbmcuCgoo
KmtleU1nbXRhbGdUeXBlKikKY29uc3QgIGtleUFncmVlOmJpdHN0cmluZy4KY29uc3QgIGtleVRy
YW5zOmJpdHN0cmluZy4KdHlwZSBJRC4KCigqZGVmaW5lIHRoZSBzdHJlbmd0aCBvZiB0aGUgY3J5
cHRvICopCmNvbnN0IFNJR05fTUFOREFUT1JZOiBib29sLgpjb25zdCBXRUFLX0NSWVBUTzogYm9v
bC4KY29uc3QgV0VBS19LREY6Ym9vbC4KCnR5cGUgSERSLgp0eXBlIENNU1ZlcnNpb24uCmNvbnN0
IENNU1ZlcnNpb25fMDpDTVNWZXJzaW9uLgoKCmNvbnN0IHNob3J0a2V5OmJpdHN0cmluZy4KY29u
c3QgbG9uZ2tleTpiaXRzdHJpbmcuCmNvbnN0IFNBTFQ6Yml0c3RyaW5nLgoKCigqQ3J5cHRvIEZ1
bmN0aW9uIGRlZmluaXRpb25zICopCgooKiBBc3ltbWV0cmljIEVuY3J5cHRpb24gKikKdHlwZSBw
cml2a2V5LgpmdW4gcHJpdmtleTJiaXRzKHByaXZrZXkpOiBiaXRzdHJpbmcgW3R5cGVDb252ZXJ0
ZXJdLgoKdHlwZSBwdWJrZXkuCmZ1biBwdWJrZXkyYml0cyhwdWJrZXkpOiBiaXRzdHJpbmcgW3R5
cGVDb252ZXJ0ZXJdLgpmdW4gYml0czJwdWJrZXkoYml0c3RyaW5nKTogcHVia2V5IFt0eXBlQ29u
dmVydGVyXS4KCmZ1biBwayhwcml2a2V5KTogcHVia2V5LgpmdW4gcHViZW5jKHB1YmtleSxiaXRz
dHJpbmcpOmJpdHN0cmluZy4KZnVuIHNpZ24ocHJpdmtleSwgYml0c3RyaW5nKTogYml0c3RyaW5n
LgpyZWR1YyBmb3JhbGwgazogcHJpdmtleSwgeDogYml0c3RyaW5nOyB2ZXJpZnkocGsoayksIHgs
IHNpZ24oaywgeCkpID0gdHJ1ZS4KcmVkdWMgZm9yYWxsIG06IGJpdHN0cmluZywgazpwcml2a2V5
OyBwdWJkZWMoaywgcHViZW5jKHBrKGspLG0pKSA9IG0uCgpmdW4gcHVid2Vha19lbmMocHVia2V5
LGJpdHN0cmluZyk6Yml0c3RyaW5nLgpyZWR1YyBmb3JhbGwgbTpiaXRzdHJpbmcsIGs6cHJpdmtl
eTsgcHVid2Vha19kZWMocHVid2Vha19lbmMocGsoayksIG0pKSA9IG0uCgooKiBTeW1tZXRyaWMg
ZW5jcnlwdGlvbiAqKQp0eXBlIGtleS4KZnVuIHNlbmMoa2V5LCBiaXRzdHJpbmcpOiBiaXRzdHJp
bmcuCnJlZHVjIGZvcmFsbCBrOmtleSwgbTpiaXRzdHJpbmc7IHNkZWMoaywgc2VuYyhrLG0pKSA9
IG0uCgpmdW4gc2VuY3dlYWsoa2V5LCBiaXRzdHJpbmcpOiBiaXRzdHJpbmcgW2RhdGFdLgpyZWR1
YyBmb3JhbGwgbTogYml0c3RyaW5nLCBrOmtleSA7IHNkZWN3ZWFrKHNlbmN3ZWFrKGssbSkpID0g
bS4KCmZ1biBrZXkyYml0cyhrZXkpOiBiaXRzdHJpbmcgW3R5cGVDb252ZXJ0ZXJdLgpmdW4gYml0
czJrZXkoYml0c3RyaW5nKToga2V5IFt0eXBlQ29udmVydGVyXS4KCigqIERpZmZpZSBIZWxsbWFu
ICopCnR5cGUgZWxlbWVudC4KICBjb25zdCBHOiBlbGVtZW50LgogIGZ1biBkaF9leHAoZWxlbWVu
dCwgYml0c3RyaW5nKTogZWxlbWVudC4KICBlcXVhdGlvbiBmb3JhbGwgeDogYml0c3RyaW5nLCB5
OiBiaXRzdHJpbmc7CiAgICAgZGhfZXhwKGRoX2V4cChHLCB4KSwgeSkgPSBkaF9leHAoZGhfZXhw
KEcseSkseCkuCgogIGZ1biBlMmJpdHMoZWxlbWVudCk6IGJpdHN0cmluZyBbdHlwZUNvbnZlcnRl
cl0uCiAgZnVuIGIyZWxlbWVudChiaXRzdHJpbmcpOiBlbGVtZW50IFt0eXBlQ29udmVydGVyXS4K
CgooKmtkZiBkZWZpbml0aW9ucyBpbmNsdWRpbmcgYSB3ZWFrIG9uZSB0aGF0IG5lZWRzIG9ubHkg
dGhlIGtleSBhbmQgbm90IHRoZSBpbmZvKikKZnVuIGhrZGZfd2VhayhrZXkpOmtleS4KZnVuIGhr
ZGYoa2V5LGJpdHN0cmluZyk6a2V5LgoKKCpDZXJ0aWZpY2F0ZSBzdHVmZiAqKQp0eXBlIGNlcnQu
CmZ1biBiaXRzMmNlcnQoYml0c3RyaW5nKTogY2VydCBbdHlwZUNvbnZlcnRlcixkYXRhXS4KZnVu
IGNlcnQyYml0cyhjZXJ0KTogYml0c3RyaW5nIFt0eXBlQ29udmVydGVyLGRhdGFdLgpjb25zdCBu
b0NlcnQ6IGNlcnQuCgpmdW4gaW50ZXJuYWxfY2VydChJRCwgYml0c3RyaW5nLCBiaXRzdHJpbmcp
OiBjZXJ0IFtkYXRhXS4KcmVkdWMgZm9yYWxsIGlkOklELCBuOmJpdHN0cmluZywgczpiaXRzdHJp
bmc7IGNlcnRfcHVia2V5KGludGVybmFsX2NlcnQoaWQsIG4sIHMpKSA9IG4uCmxldGZ1biBta0Nl
cnQoaTogSUQsIE46IGJpdHN0cmluZywgY2Ffa2V5OiBwcml2a2V5KSA9ICgKICAgICAgIGxldCBz
aWduYXR1cmUgPSBzaWduKGNhX2tleSwgKGksIE4pKSBpbgogICAgICAgaW50ZXJuYWxfY2VydChp
LCBOLCBzaWduYXR1cmUpCikuCgpsZXRmdW4gdmVyaWZ5X2NlcnQoS2NhOiBwdWJrZXksIGk6IElE
LCBjOiBjZXJ0KSA9ICgKICAgICBsZXQgaW50ZXJuYWxfY2VydChqOiBJRCwgTjpiaXRzdHJpbmcs
IHNpZzogYml0c3RyaW5nKSA9IGMgaW4KICAgICAgIChpID0gaiAmJiB2ZXJpZnkoS2NhLCAoaiwg
TiksIHNpZykpCikuCgoKKCpUaGlzIGlzIHRoZSBnbG9iYWwgY2VrIHRoYXQgd2Ugd2FudCB0byBw
cm90ZWN0ICopCigqbm90IGlkZWFsIHVzaW5nIGdsb2JhbCBidXQgaXQgaGVscHMgd2l0aCBjaGVj
a3MgKikKY29uc3QgY2VrOmJpdHN0cmluZ1twcml2YXRlXS4KY29uc3QgY2VrMjpiaXRzdHJpbmdb
cHJpdmF0ZV0uICgqIGFsdGVybmF0ZSBrZXkgcHJvdGVjdGVkIHdpdGggd2VhayBjcnlwdG8gKikK
Cgp0YWJsZSByZWNpcGllbnRfdGFibGUoSUQsY2VydCkuCnRhYmxlIHJlY0VuY0tleV90YWJsZShJ
RCxjZXJ0LGJpdHN0cmluZykuCnRhYmxlIFBTS19UQUJMRShQU0tJRCwgUFNLKS4KCgpmdW4gaWQy
Yml0cyhJRCk6IGJpdHN0cmluZyBbdHlwZUNvbnZlcnRlcl0uCnJlZHVjIGZvcmFsbCB4OklEOyBi
aXRzMmlkKGlkMmJpdHMoeCkpID0geC4KCmZ1biBwc2tpZDJiaXRzKFBTS0lEKTogYml0c3RyaW5n
IFt0eXBlQ29udmVydGVyXS4KCgooKiBFdmVudHMgKikKZXZlbnQgU2VudENFSyhJRCxJRCwgSUQs
IGJpdHN0cmluZykuCmV2ZW50IE9idGFpbmVkQ0VLKElELElELGJpdHN0cmluZykuCmV2ZW50IFJF
Q0lQSUVOVEtERlNUUkVOR1RIKGJvb2wpLgpldmVudCBSRUNJUElFTlRDUllQVE9TVFJFTkdUSChi
b29sKS4KZXZlbnQgU0VOREVSQ1JZUFRPU1RSRU5HVEgoYm9vbCkuCmV2ZW50IFNFTkRFUktERlNU
UkVOR1RIKGJvb2wpLgoKCmZyZWUgaW86IGNoYW5uZWwuCmNvbnN0IEEsQixDLEQsRSxGLEgsSSxK
LE0sUzpJRC4KY29uc3QgWkVSTzpiaXRzdHJpbmcuCgoKKCogTW9kZWwgc3VwcG9ydHMga2V5IHRy
YW5zcG9ydCBhbGdvcml0aG1zICopCgpsZXQgU2VuZGVyKENFSzpiaXRzdHJpbmcscHNraWQ6UFNL
SUQsIHNlbmRlcklEOklELCAgIHN0cm9uZ19jcnlwdG86Ym9vbCwgc3Ryb25nX2tkZjpib29sLGtl
eW1nbXRhbGd0eXBlOmJpdHN0cmluZykgPSAoCiAgCiAgbmV3ICB4czpiaXRzdHJpbmc7ICAoKkRI
IHByaXZhdGUga2V5IGZvciBzZW5kZXIqKQoKICBsZXQgU2VuZGVycHViID0gZGhfZXhwKEcsIHhz
KSBpbgoKICAoKiBsZWFraW5nIHRoZSBvcmlnaW5hdG9yJ3MgcHJpdmF0ZSBrZXkgKikKICBvdXQo
aW8sIHhzKTsKICAKICAoKiB0aGVzZSBhcmUgY29udmVydGVkIHRvIGFsZ29yaXRobSBpZHMgYW5k
IHRoZSBlbmNyeXB0ZWQga2V5IGxlbmd0aCAqKQogIGxldCBrZGZpZCA9IGlmIHN0cm9uZ19rZGYg
dGhlbiBIS0RGIGVsc2UgV0tERiBpbgogIGxldCBrZW5jaWQgPSBpZiBzdHJvbmdfY3J5cHRvIHRo
ZW4gQUVTMjU2IGVsc2UgQUVTMTI4IGluCiAgbGV0IEwgPSBpZiBzdHJvbmdfY3J5cHRvIHRoZW4g
bG9uZ2tleSBlbHNlIHNob3J0a2V5IGluCiAgCiAgKCogZ2V0IHRoZSBQU0sgYXNzaWduZWQgdG8g
dGhlIHBza2lkICopCiAgZ2V0IFBTS19UQUJMRSg9cHNraWQscHNrKSBpbgoKICAoKiBMb29rIHVw
IHRoZSB0d28gaW50ZW5kZWQgcmVjaXBpZW50cyAoYWx3YXlzIEEgYW5kIEIpICopCiAgZ2V0IHJl
Y2lwaWVudF90YWJsZSg9QSxjZXJ0QSkgaW4KICBnZXQgcmVjaXBpZW50X3RhYmxlKD1CLGNlcnRC
KSBpbgogIAogICgqIEltcGxlbWVudCB0aGUgbmV3IEFTTjEgc3RydWN0dXJlIGZvciBrZXkgZGVy
aXZhdGlvbiBkZXNjcmliZWQgb24gcGFnZSA5ICopCiAgCiAgbGV0IHBza290aGVyaW5mbyA9IChw
c2ssIGtleW1nbXRhbGd0eXBlLCBrZW5jaWQsIHBza2xlbiwga2RrbGVuKSBpbgoKICAoKiBrZXkg
ZGVyaXZhdGlvbiBmb3IgZWFjaCByZWNpcGllbnQuIERlc2NyaWJlZCBvbiBwYWdlIDggKikKICAo
KiBIS0RGKElLTSAsICggc2FsdCwgTCwgQ01TT1JJZm9yUFNLT3RoZXJJbmZvKSApKikKICBsZXQg
c2FsdCA9IFpFUk8gaW4KICAoKiBJS00gaXMgdGhlIERIIHNoYXJlZCBzZWNyZXQgKikKICAoKiBS
ZWNpcGllbnQgQSAqKQogIGxldCBHQSA9IGIyZWxlbWVudChjZXJ0X3B1YmtleShjZXJ0QSkpIGlu
CiAgbGV0IGtlazFBID0gZTJiaXRzKGRoX2V4cChHQSwgeHMpKSBpbgoKICAoKiBoa2RmIGRlcml2
ZXMgdGhlIGtleSBlbmNyeXB0aW9uIGtleSAgKikKICBsZXQga2VrMkEgPSBpZiBzdHJvbmdfa2Rm
IHRoZW4gaGtkZihiaXRzMmtleShrZWsxQSksIChzYWx0LCBMLHBza290aGVyaW5mbykpIGVsc2Ug
aGtkZl93ZWFrKGJpdHMya2V5KGtlazFBKSkgaW4KICAKICAoKiBSZWNpcGllbnQgQiAqKQogIGxl
dCBHQiA9IGIyZWxlbWVudChjZXJ0X3B1YmtleShjZXJ0QikpIGluCiAgbGV0IGtlazFCID0gZTJi
aXRzKGRoX2V4cChHQiwgeHMpKSBpbgogIGxldCBrZWsyQiA9IGlmIHN0cm9uZ19rZGYgdGhlbiBo
a2RmKGJpdHMya2V5KGtlazFCKSwgKHNhbHQsIEwscHNrb3RoZXJpbmZvKSkgZWxzZSBoa2RmX3dl
YWsoYml0czJrZXkoa2VrMUIpKSBpbgoKICAoKiBXZSBjYW4gbm93IGJ1aWxkIHRoZSAgQ01TIGRh
dGEgc3RydWN0dXJlIHJlY2lwaWVudCBpbmZvKikKICAoKiB2ZXJzaW9uKiwgcHNraWQsIG9yaWdp
bmF0b3IsIHVrbSosIGtkZmFsZywga2V5ZW5jYWxnLCByZWNlbmNrZXlzICAqKQoKICBsZXQgZW5j
Y2VrQSA9IGlmIHN0cm9uZ19jcnlwdG8gdGhlbiBzZW5jKGtlazJBLCBDRUspIGVsc2Ugc2VuY3dl
YWsoa2VrMkEsQ0VLKSBpbgogIGxldCBlbmNjZWtCID0gaWYgc3Ryb25nX2NyeXB0byB0aGVuIHNl
bmMoa2VrMkIsIENFSykgZWxzZSBzZW5jd2VhayhrZWsyQixDRUspIGluCiAgCiAgbGV0IG9yaWdp
bmF0b3IgPSAoc2VuZGVySUQsIFNlbmRlcnB1YikgaW4KCiAgKCogdGhpcyBpcyBob3cgd2UgaW50
ZXJwcmV0IHRoZSByZWNpcGllbnQgZW5jcnlwdGVkIGtleSB2YWx1ZSBmb3Iga2V5IGFncmVlbWVu
dCAqKQogIGxldCByZWNpcGllbnRlbmNrZXlzQSA9IChpZDJiaXRzKEEpLGNlcnQyYml0cyhjZXJ0
QSksZW5jY2VrQSAgKSBpbgogIGxldCByZWNpcGllbnRlbmNrZXlzQiA9IChpZDJiaXRzKEIpLGNl
cnQyYml0cyhjZXJ0QiksZW5jY2VrQiAgKSBpbgogIAogIAogICBsZXQgS2V5QWdyZWVQU0tSZWNJ
bmZvPSAoQ01TVmVyc2lvbl8wLCBwc2tpZCxvcmlnaW5hdG9yLGtkZmlkLCBrZW5jaWQsIHJlY2lw
aWVudGVuY2tleXNBLHJlY2lwaWVudGVuY2tleXNCICApIGluCiAgCiAgb3V0KGlvLCBLZXlBZ3Jl
ZVBTS1JlY0luZm8pOwoKICBldmVudCBTZW50Q0VLKHNlbmRlcklELCBBLEIsIENFSykKKS4KCmxl
dCBzZW5kZXJzKENFSzpiaXRzdHJpbmcsIHBza2lkOlBTS0lELCBzZW5kZXJJRDpJRCwgc2NyeXB0
bzpib29sLCBza2RmOmJvb2wsa2V5bWdtdGFsZ3R5cGU6Yml0c3RyaW5nKSA9ICgKICAgIG5ldyBs
dGs6IHByaXZrZXk7CiAgICAKICAgIFNlbmRlcihDRUssIHBza2lkLCBzZW5kZXJJRCwgc2NyeXB0
byxza2RmLCBrZXltZ210YWxndHlwZSkKKS4KCgoKCgoKbGV0IHJlY2lwaWVudHMocmVjaWQ6SUQs
IHByaXZyOmJpdHN0cmluZywgS2NhOnB1YmtleSwga2V5bWdtdGFsZ3R5cGU6Yml0c3RyaW5nKSA9
ICgKCiAgCiAgICgqIGF0dGFja2VyIGNhbiBtb2RpZnkgc29tZSBvZiB0aGUgcmVjaXBpZW50J3Mg
Y29uZmlndXJhdGlvbiB2YWx1ZXMgKikKICAgaW4oaW8sIHN0cm9uZ19jcnlwdG86Ym9vbCk7CiAg
IGluKGlvLCBzdHJvbmdfa2RmOmJvb2wpOwoKICAgZXZlbnQgUkVDSVBJRU5UQ1JZUFRPU1RSRU5H
VEgoc3Ryb25nX2NyeXB0byk7IAogICBldmVudCBSRUNJUElFTlRLREZTVFJFTkdUSChzdHJvbmdf
a2RmKTsKICAKICAgaW4oaW8sICg9Q01TVmVyc2lvbl8wLHBza2lkOlBTS0lELG9yaWdpbmF0b3I6
Yml0c3RyaW5nLCBrZGZpZDpLREZJRCwga2VuY2lkOktFbmNJRCwgcmVjRW5jS2V5czE6Yml0c3Ry
aW5nLCByZWNFbmNLZXlzMjpiaXRzdHJpbmcpKTsKCgogICBsZXQgKGlkYjE6Yml0c3RyaW5nLCBj
ZXJ0YjE6Yml0c3RyaW5nLCBlbmNjZWsxOmJpdHN0cmluZykgPSByZWNFbmNLZXlzMSBpbgogICBs
ZXQgaWQxID0gYml0czJpZChpZGIxKSBpbgogICBsZXQgY2VydDEgPSBiaXRzMmNlcnQoY2VydGIx
KSBpbgoKCiAgIGxldCAoaWRiMjpiaXRzdHJpbmcsIGNlcnRiMjpiaXRzdHJpbmcsIGVuY2NlazI6
Yml0c3RyaW5nKSA9IHJlY0VuY0tleXMyIGluCiAgIGxldCBpZDIgPSBiaXRzMmlkKGlkYjIpIGlu
CiAgIGxldCBjZXJ0MiA9IGJpdHMyY2VydChjZXJ0YjIpIGluCgogICAoKmRvIGEgYml0IG9mIGd5
bW5hc3RpY3MgdG8gZmluZCBvdXQgd2hpY2ggKGlmIGFueSApIGVuY3JlY2lwaWVudGtleXMgYXJl
IGZvciBtZSAqKQogICAKICAgaW5zZXJ0IHJlY0VuY0tleV90YWJsZShpZDEsIGNlcnQxLCBlbmNj
ZWsxKSA7CiAgIGluc2VydCByZWNFbmNLZXlfdGFibGUoaWQyLCBjZXJ0MiwgZW5jY2VrMikgOwog
ICBnZXQgcmVjRW5jS2V5X3RhYmxlKD1yZWNpZCwgY2VydHJlYzpjZXJ0LCBlbmNjZWs6Yml0c3Ry
aW5nKSBpbgogCiAgICgqIFZlcmlmeSB0aGUgcmVjZWl2ZWQgY2VydCwgd291bGQgdGhlIHJlY2lw
aWVudCBub3QgdXNlIGhpcyBvd24gPyAqKQoKIGlmIHZlcmlmeV9jZXJ0KEtjYSwgcmVjaWQsIGNl
cnRyZWMpIHRoZW4gKAogICAgCiAgKCpjaGVjayBpZiBjb25maWd1cmF0aW9uIG1ha2VzIHNlbnNl
IHdpdGggd2hhdCBpcyBhY3R1YWxseSBzZW50LCB0aGlzIGlzIG92ZXJseSBjb21wbGljYXRlZCop
CiAgaWYgKGtkZmlkID0gV0tERiAmJiBzdHJvbmdfa2RmIHx8IGtkZmlkID0gSEtERiAmJiBzdHJv
bmdfa2RmID0gZmFsc2UpIHRoZW4KICAgMAogIGVsc2UoCiAgIGlmIChrZW5jaWQgPSBBRVMxMjgg
JiYgc3Ryb25nX2NyeXB0byB8fCBrZW5jaWQgPSBBRVMyNTYgJiYgc3Ryb25nX2NyeXB0byA9IGZh
bHNlKSB0aGVuCiAgICAwCiAgZWxzZSgKICAgICAKICAgKCogdXNlIHRoZSBwc2tpZCBzbyBnbyBn
ZXQgdGhlIHBzayAqKSAgCiAgIGdldCBQU0tfVEFCTEUoPXBza2lkLCBwc2spIGluCiAgIAogICAo
KiBleHRyYWN0IHRoZSBvcmlnaW5hdG9yIHB1YmxpYyBrZXlzICopCiAgIGxldCAoc2VuZGVyaWQ6
SUQsR3M6ZWxlbWVudCkgPSBvcmlnaW5hdG9yIGluCgogICAoCiAgCiAgICAgKCpleHRyYWN0IHRo
ZSBzZW5kZXIgREggcHVibGljIGZyb20gdGhlIGNlcnRzIGFuZCBnZW5lcmF0ZSBzaGFyZWQgc2Vj
cmV0KikKICAgIAogICAgIGxldCBrZWsxID0gZTJiaXRzKGRoX2V4cChHcyxwcml2cikpIGluCgog
ICAgICgqIGtleSBkZXJpdmF0aW9uICopCiAgICAgbGV0IHBza290aGVyaW5mbyA9IChwc2ssa2V5
bWdtdGFsZ3R5cGUsIGtlbmNpZCwgcHNrbGVuLCBrZGtsZW4pIGluCiAgICAgbGV0IHNhbHQgPSBa
RVJPIGluCiAgICAgKCpzZXQgdGhlIGxlbmd0aCBvZiB0aGUgb3V0cHV0IGtleWluZyBtYXRlcmlh
bCBmb3Iga2V5IGRlcml2YXRpb24gYmFzZWQgb24ga2V5IGVuY3J5cHRpb24gYWxnbyopCiAgICAg
bGV0IEwgPSBpZiBzdHJvbmdfY3J5cHRvIHRoZW4gbG9uZ2tleSBlbHNlIHNob3J0a2V5IGluICAK
ICAgICBsZXQga2VrMiA9IGlmIHN0cm9uZ19rZGYgdGhlbiBoa2RmKGJpdHMya2V5KGtlazEpLCAo
c2FsdCxMLHBza290aGVyaW5mbykpIGVsc2UgaGtkZl93ZWFrKGJpdHMya2V5KGtlazEpKSBpbgog
ICAgIAogICAgICgqIGRlY3J5cHQgdGhlIGNlayBhbmQgY2hlY2sgaXQgaXMgY29ycmVjdCAqKQog
ICAgIGxldCBwdXRhdGl2ZV9jZWsgPSBpZiBzdHJvbmdfY3J5cHRvIHRoZW4gc2RlYyhrZWsyLCBl
bmNjZWspIGVsc2Ugc2RlY3dlYWsoZW5jY2VrKSBpbgogICAgIAogICAgIGlmIChwdXRhdGl2ZV9j
ZWsgPSBjZWsgKSB0aGVuCiAgICAgICAgCiAgICAgICAgZXZlbnQgT2J0YWluZWRDRUsoc2VuZGVy
aWQsIHJlY2lkLCBwdXRhdGl2ZV9jZWspCiAgICAgZWxzZQogICAgICAgIDAKICApICgqdmVyaWZ5
aW5nIHNlbmRlcidzIGNlcnQgKikKICkgKCp2ZXJpZnlpbmcgY29uZmlnKikKICkgKCp2ZXJpZnlp
bmcgY29uZmlnKikKKSAoKiB2ZXJpZnlpbmcgcmVjZWl2ZXIncyBjZXJ0ICopCiAKKS4KCnNldCBp
Z25vcmVUeXBlcyA9IGZhbHNlLgoKKCogZmlyc3QgcXVlcmllcyBhcmUgc2FuaXR5IGNoZWNrICop
CgpxdWVyeSBzZW5kZXJpZDpJRCwgcmVjaWQxOklELCByZWNpZDI6SUQ7CmV2ZW50IChPYnRhaW5l
ZENFSyhTLCByZWNpZDIsIGNlaykpID09PiBldmVudCAoU2VudENFSyhTLCByZWNpZDEscmVjaWQy
LCBjZWspKSAuCgpxdWVyeSBzZW5kZXJpZDpJRCwgcmVjaWQxOklELCByZWNpZDI6SUQ7CmV2ZW50
IChPYnRhaW5lZENFSyhTLCByZWNpZDEsIGNlaykpID09PiBldmVudCAoU2VudENFSyhTLCByZWNp
ZDEscmVjaWQyLCBjZWspKSAuCgooKnRoaXMgaXMgcmVhbGx5IHdoYXQgd2UgYXJlIGludGVyZXN0
ZWQgaW4gKikKCnF1ZXJ5IAogICBhdHRhY2tlcihjZWspID09PiBldmVudChTRU5ERVJDUllQVE9T
VFJFTkdUSChmYWxzZSkpIHx8IGV2ZW50KFNFTkRFUktERlNUUkVOR1RIKGZhbHNlKSkuCgoKCgpw
cm9jZXNzCiAgbmV3IGNhX2tleTogcHJpdmtleTsKICBuZXcgc2VuZGVyaWQ6SUQ7CiAgbmV3IHBz
a2lkOlBTS0lEOwogIG5ldyBwc2s6UFNLOwogIG5ldyBwc2tpZDI6UFNLSUQ7CiAgbmV3IHBzazI6
UFNLOyAKICAKCiAgKCpwZXIgcmVjaXBpZW50IHByaXZhdGUga2V5cyBvZiB0aGUgREggY29udHJp
YnV0aW9uIGFzc3VtZWQgdG8gYmUga25vd24gYnkgdGhlIFF1YW50dW0gYXJtZWQgYXR0YWNrZXIu
IFRoZSB3YXkgdGhleSBhcmUgZGVmaW5lZCBoZXJlLCB0aGV5IHdpbGwgYmUga25vd24gYnkgYWxs
IGxlZ2FsIHBhcnRpY2lwYW50cyopCgogICgqc2VuZGVycyopCiAgbmV3IHhDOmJpdHN0cmluZzsK
ICBuZXcgeEI6Yml0c3RyaW5nOwogIG5ldyB4QTpiaXRzdHJpbmc7CgoKICAKICAoKmJ1aWxkIGNl
cnRzIGNvbnRhaW5pbmcgc2lnbmVkIHZhbHVlcyBvZiB0aGUgcmVjaXBpZW50IERIIHB1YmxpYyBr
ZXlzICopCiAgbGV0IENlcnRBID0gbWtDZXJ0KEEsIGUyYml0cyhkaF9leHAoRyx4QSApKSwgY2Ff
a2V5KSBpbgogIGxldCBDZXJ0QiA9IG1rQ2VydChCLCBlMmJpdHMoZGhfZXhwKEcseEIgKSksIGNh
X2tleSkgaW4KICBsZXQgQ2VydEMgPSBta0NlcnQoQywgZTJiaXRzKGRoX2V4cChHLHhDICkpLCBj
YV9rZXkpIGluCgogIAogICgqIFB1Ymxpc2ggdGhlIGNlcnRpZmljYXRlcyAqKQogIG91dChpbyxD
ZXJ0QSk7CiAgb3V0KGlvLENlcnRCKTsKICBvdXQoaW8sQ2VydEMpOwogCiAKICAKICAoKiBsZWFr
IHRoZSBwZWVycycgcHJpdmF0ZSBrZXlzLCBjaGVhcCB3YXkgdG8gbWltaWNrIHRoZSBESCBwcml2
YXRlcyByZXZlYWxlZCB0aHJvdWdoIGEgcXVhbnR1bSBhdHRhY2suICopCiAgb3V0KGlvLHhBKTsK
ICBvdXQoaW8seEIpOwogIG91dChpbyx4Qyk7CiAgCiAKIAogICgqIEJ1aWxkIHRoZSBQU0sgdGFi
bGUgY29udGFpbmluZyB0d28gcHNrcyAqKQogIGluc2VydCBQU0tfVEFCTEUocHNraWQsIHBzayk7
CiAgaW5zZXJ0IFBTS19UQUJMRShwc2tpZDIsIHBzazIpOwoKICAoKkJ1aWxkIHRoZSByZWNpcGll
bnQgdGFibGUgKikKICBpbnNlcnQgcmVjaXBpZW50X3RhYmxlKEEsQ2VydEEpOwogIGluc2VydCBy
ZWNpcGllbnRfdGFibGUoQixDZXJ0Qik7CiAgaW5zZXJ0IHJlY2lwaWVudF90YWJsZShDLENlcnRD
KTsKCiAgKCpXZSBjYW4gcGxheSB3aXRoIHRoZSBjb25maWd1cmF0aW9uIG9mIHNlbmRlciBTJ3Mg
Y3J5cHRvIHN0cmVuZ3RoIHNldHRpbmdzLiAqKQogIAogCiAgKCogdGhpcyBzZXRzIHRoZSBlbmNy
eXB0aW9uIGFsZ29yaXRobSwgcXVhbnR1bS12dWxuZXJhYmxlIEFFUzEyOCBvciBzdHJvbmcgQUVT
MjU2ICopCiAgaW4oaW8sIHN0cm9uZ19jcnlwdG86Ym9vbCk7CiAgaW4oaW8sIHN0cm9uZ19rZGY6
Ym9vbCk7CiAKICBsZXQgd2Vha3NlbmRlcmNyeXB0byA9ICBpZiBzdHJvbmdfY3J5cHRvIHRoZW4g
dHJ1ZSBlbHNlIGZhbHNlIGluCiAgZXZlbnQgU0VOREVSQ1JZUFRPU1RSRU5HVEgod2Vha3NlbmRl
cmNyeXB0byk7IAogIGxldCB3ZWFrc2VuZGVya2RmID0gIGlmIHN0cm9uZ19rZGYgdGhlbiB0cnVl
IGVsc2UgZmFsc2UgaW4KICBldmVudCBTRU5ERVJLREZTVFJFTkdUSCh3ZWFrc2VuZGVya2RmKTsK
CiAgICgqdGhyZWUgcmVjaXBpZW50cyBzdGFydGVkIC4gQXR0YWNrZXIgY2FuIG1vZGlmeSB0aGVp
ciBjcnlwdG8gY29uZmlndXJhdGlvbiAqKQoKICAgICAgIXJlY2lwaWVudHMoQSwgeEEsICBwayhj
YV9rZXkpLCBrZXlBZ3JlZSkKICAgIHwgIXJlY2lwaWVudHMoQiwgeEIsICBwayhjYV9rZXkpLCBr
ZXlBZ3JlZSkKICAgIHwgIXJlY2lwaWVudHMoQywgeEMsICBwayhjYV9rZXkpLCBrZXlBZ3JlZSkK
CiAgICAoKiBTZW5kZXIgUyBzdGFydGVkLiBIYXMgQSBhbmQgQiBoYXJkd2lyZWQgYXMgcmVjaXBp
ZW50cyAqKQogICAgKCogU2VuZGVyIFMgdXNlcyBzdHJvbmcgY3J5cHRvIGFuZCBzZW5kcyBjZWsg
ICopCiAgICAoKiBOb3RlIC0gaGFyZHdpcmVkIGNlayAsIG5vdCBxdWl0ZSBjb3JyZWN0IGJ1dCBt
YWtlcyBjaGVja3Mgb24gY2VrIGEgbGl0dGxlIGVhc2llciAqKQogICAgKCogVGhlcmUgaXMgYSB3
ZWFrIHNlbmRlciBGIGJ1dCBsdWNraWx5IGhlIGlzIHNlbmRpbmcgY2VrMiBhbmQgbm90IGNlayB3
aXRoIGhpcyB3ZWFrIGNyeXB0byAqKQogICAgKCogV2FzIHRyeWluZyB0byBzZWUgaWYgYSB2dWxu
ZXJhYmxlIHNlbmRlciBjb3VsZCBiZSB3b3JrZWQgaW50byBhbiBhdHRhY2sgKikKCiAgICB8ICFz
ZW5kZXJzKGNlaywgcHNraWQsICBTLCAgc3Ryb25nX2NyeXB0bywgc3Ryb25nX2tkZixrZXlBZ3Jl
ZSkKCiAgICB8ICFzZW5kZXJzKGNlazIscHNraWQyLCBGLCAgZmFsc2UsIGZhbHNlLCBrZXlBZ3Jl
ZSkKCg==

--_002_ba3c46ac49d84bf892c04051f5fea3c5cybergcca_--

