idnits 2.17.1 draft-harkins-pkex-05.txt: Checking boilerplate required by RFC 5378 and the IETF Trust (see https://trustee.ietf.org/license-info): ---------------------------------------------------------------------------- No issues found here. Checking nits according to https://www.ietf.org/id-info/1id-guidelines.txt: ---------------------------------------------------------------------------- No issues found here. Checking nits according to https://www.ietf.org/id-info/checklist : ---------------------------------------------------------------------------- No issues found here. Miscellaneous warnings: ---------------------------------------------------------------------------- == The copyright year in the IETF Trust and authors Copyright Line does not match the current year == Using lowercase 'not' together with uppercase 'MUST', 'SHALL', 'SHOULD', or 'RECOMMENDED' is not an accepted usage according to RFC 2119. Please use uppercase 'NOT' together with RFC 2119 keywords (if that is what you mean). Found 'MUST not' in this paragraph: If fixed elements other than those in Appendix A.1 and Appendix A.2 are used, their discrete logarithm MUST not be known. Knowledge of of the discrete logarithm of either of the fixed elements voids the security of the exchange. -- The document date (January 24, 2018) is 2276 days in the past. Is this intentional? Checking references for intended status: Informational ---------------------------------------------------------------------------- -- Looks like a reference, but probably isn't: '0' on line 373 -- Looks like a reference, but probably isn't: '1' on line 383 -- Looks like a reference, but probably isn't: '32' on line 748 -- Looks like a reference, but probably isn't: '48' on line 780 -- Looks like a reference, but probably isn't: '66' on line 716 -- Looks like a reference, but probably isn't: '64' on line 820 -- Looks like a reference, but probably isn't: '256' on line 869 -- Looks like a reference, but probably isn't: '384' on line 956 -- Looks like a reference, but probably isn't: '512' on line 1075 -- Looks like a reference, but probably isn't: '1024' on line 1274 Summary: 0 errors (**), 0 flaws (~~), 2 warnings (==), 11 comments (--). Run idnits with the --verbose option for more detailed information about the items above. -------------------------------------------------------------------------------- 2 Internet Research Task Force D. Harkins 3 Internet-Draft HP Enterprise 4 Intended status: Informational January 24, 2018 5 Expires: July 28, 2018 7 Public Key Exchange 8 draft-harkins-pkex-05 10 Abstract 12 This memo describes a password-authenticated protocol to allow two 13 devices to exchange "raw" (uncertified) public keys and establish 14 trust that the keys belong to their respective identities. 16 Status of This Memo 18 This Internet-Draft is submitted in full conformance with the 19 provisions of BCP 78 and BCP 79. 21 Internet-Drafts are working documents of the Internet Engineering 22 Task Force (IETF). Note that other groups may also distribute 23 working documents as Internet-Drafts. The list of current Internet- 24 Drafts is at http://datatracker.ietf.org/drafts/current/. 26 Internet-Drafts are draft documents valid for a maximum of six months 27 and may be updated, replaced, or obsoleted by other documents at any 28 time. It is inappropriate to use Internet-Drafts as reference 29 material or to cite them other than as "work in progress." 31 This Internet-Draft will expire on July 28, 2018. 33 Copyright Notice 35 Copyright (c) 2018 IETF Trust and the persons identified as the 36 document authors. All rights reserved. 38 This document is subject to BCP 78 and the IETF Trust's Legal 39 Provisions Relating to IETF Documents 40 (http://trustee.ietf.org/license-info) in effect on the date of 41 publication of this document. Please review these documents 42 carefully, as they describe your rights and restrictions with respect 43 to this document. Code Components extracted from this document must 44 include Simplified BSD License text as described in Section 4.e of 45 the Trust Legal Provisions and are provided without warranty as 46 described in the Simplified BSD License. 48 Table of Contents 50 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 2 51 1.1. Requirements Language . . . . . . . . . . . . . . . . . . 3 52 1.2. Notation . . . . . . . . . . . . . . . . . . . . . . . . 3 53 2. Properties . . . . . . . . . . . . . . . . . . . . . . . . . 4 54 3. Assumptions . . . . . . . . . . . . . . . . . . . . . . . . . 5 55 4. Cryptographic Primitives . . . . . . . . . . . . . . . . . . 6 56 5. Protocol Definition . . . . . . . . . . . . . . . . . . . . . 6 57 5.1. Authentication Phase . . . . . . . . . . . . . . . . . . 7 58 5.2. Reveal Phase . . . . . . . . . . . . . . . . . . . . . . 8 59 6. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 9 60 7. Security Considerations . . . . . . . . . . . . . . . . . . . 10 61 8. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 10 62 9. Changes/Author Notes . . . . . . . . . . . . . . . . . . . . 11 63 10. References . . . . . . . . . . . . . . . . . . . . . . . . . 11 64 10.1. Normative References . . . . . . . . . . . . . . . . . . 11 65 10.2. Informative References . . . . . . . . . . . . . . . . . 12 66 Appendix A. Role-specific Elements . . . . . . . . . . . . . . . 13 67 A.1. ECC Role-specific Elements . . . . . . . . . . . . . . . 14 68 A.1.1. Role-specific Elements for NIST p256 . . . . . . . . 14 69 A.1.2. Role-specific Elements for NIST p384 . . . . . . . . 14 70 A.1.3. Role-specific Elements for NIST p521 . . . . . . . . 15 71 A.1.4. Role-specific Elements for brainpool p256r1 . . . . . 17 72 A.1.5. Role-specific Elements for brainpool p384r1 . . . . . 17 73 A.1.6. Role-specific Elements for brainpool p512r1 . . . . . 18 74 A.2. FFC Role-specific Elements . . . . . . . . . . . . . . . 19 75 A.2.1. Role-specific Elements for 2048-bit FFC group . . . . 19 76 A.2.2. Role-specific Elements for 3072-bit FFC group . . . . 21 77 A.2.3. Role-specific Elements for 4096-bit FFC group . . . . 23 78 A.2.4. Role-specific Elements for 8192-bit FFC group . . . . 26 79 Author's Address . . . . . . . . . . . . . . . . . . . . . . . . 31 81 1. Introduction 83 Many authenticated key exchange protocols allow for authentication 84 using uncertified, or "raw", public keys. Usually these 85 specifications-- e.g. [RFC7250] for TLS and [RFC7670] for IKEv2-- 86 assume keys are exchanged in some out-of-band mechanism. 88 [RFC7250] further states that "the main security challenge [to using 89 'raw' public keys] is how to associate the public key with a specific 90 entity. Without a secure binding between identifier and key, the 91 protocol will be vulnerable to man-in-the- middle attacks." 93 The Public Key Exchange (PKEX) is designed to fill that gap: it 94 establishs a secure binding between exchanged public keys and 95 identifiers, it provides proof-of-possession of the exchanged public 96 keys to each peer, and it enables the establishment of trust in 97 public keys that can subsequently be used to faccilitate 98 authentication in other authentication and key exchange protocols. 99 At the end of a successful run of PKEX the two peers will have trust 100 in each others exchanged public keys and also share an authenticated 101 symmetric key which may be discarded or used for another purpose. 103 1.1. Requirements Language 105 The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", 106 "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this 107 document are to be interpreted as described in RFC 2119 [RFC2119]. 109 1.2. Notation 111 This memo describes a cryptographic exchange using sets of elements 112 called groups. Groups can be based on elliptic curves (hereafter, 113 ECC groups) or on the multiplicative group of the field of integers 114 modulo an odd prime (hereafter FFC groups). The public keys 115 exchanged by PKEX are elements in a group. Elements in groups are 116 denoted in upper-case and scalar values are denoted with lower-case. 117 There is a distinguised generator of the group, denoted G. The order 118 of the sub-group formed by G is q which itself must be a large prime. 120 When both the initator and responder use a similar, but unique, datum 121 it is denoted by appending an "i" for initiator or "r" for responder, 122 e.g. if each side needs an element C then the initiator's is Ci and 123 the responder's is Cr. 125 During the exchange, one side will generate data and the other side 126 will attempt to reconstruct it. The reconstructed data is "primed". 127 That is, if the initiator generates C then when responder tries to 128 reconstruct it, the responder will refer to it as C'. Data that is 129 directly sent and received is not primed. 131 The following notation is used in this memo: 133 C = A + B 134 The "group operation" on two elements, A and B, that produces a 135 third element, C. For finite field cryptography this is the 136 modular multiplication, for elliptic curve cryptography this is 137 point addition. 139 C = A - B 140 The "group operation" on element A and the inverse of element B 141 to produce a third element, C. Inversion is defined such that 142 the group operation on an element and its inverse results in the 143 identity element, the value one (1) for finite field cryptography 144 and the "point at infinity" for elliptic curve cryptography. 146 C = a * B 147 This denotes repeated application of the group operation to B-- 148 i.e. B + B-- (a - 1) times. 150 a = H(b) 151 A cryptographic hash function that takes data b of indeterminate 152 length and returns a fixed sized digest a. 154 a = F(B) 155 A mapping function that takes an element and returns a scalar. 156 For elliptic curve cryptography, F() returns the x-coordinate of 157 the point B. For finite field cryptography, F() is the identity 158 function. 160 a = KDF-b(c, d) 161 A key derivation function that derives an output key a of length 162 b from an input key c and context d. 164 a = HMAC(b, c) 165 A keyed MAC function that produces a digest a using key b and 166 text c. 168 a | b 169 Concatentation of data a with data b. 171 {a}b[c] 172 Authenticated-encryption of data (a), with a key (b), and 173 associated data (c) that is authenticated but not encrypted. The 174 result of this is a ciphertext that includes authentication 175 information dependent on both a and c, whether c is actually 176 transmitted or is somehow reconstructed. The receipent can 177 decrypt a if it knows b and neither {a}b nor c have been altered 178 during transmission, otherwise an error will be flagged. 180 2. Properties 182 Subversion of PKEX involves an adversary being able to insert its own 183 public key into the exchange without the exchange failing, resulting 184 in one of the parties to the exchange believing the adversary's 185 public key actually belongs to the protocol peer. 187 PKEX has the following properties: 189 o An adversary is unable to subvert the exchange without knowing the 190 password. 192 o An adversary is unable to discover the password through passive 193 attack. 195 o The only information exposed by an active attack is whether a 196 single guess of the password is correct or not. 198 o Proof-of-possession of the private key is provided. 200 o At the end of the protocol, either trust is established in the 201 peer's public key and the public key is bound to the peer's 202 identity, or the exchange fails. 204 3. Assumptions 206 Due to the nature of the exchange, only DSA ([DSS]) and ECDSA 207 ([X9.62]) keys can be exchanged with PKEX. 209 PKEX requires fixed elements that are unique to the particular role 210 in the protocol, an initiator-specific element and a responder- 211 specific element. They need not be secret. It is assumed that both 212 parties know the role-specific elements for the particular group in 213 which their key pairs were derived. Techniques to generate role- 214 specific elements, and generated elements for popular groups, are 215 listed in Appendix A.1 and Appendix A.2. 217 The generator used in PKEX SHALL be obtained from the domain 218 parameter set defining the group, for example [DSS] for the NIST 219 elliptic curves and [RFC5639] for brainpool curves. 221 The authenticated-encryption algorithm provides deterministic "key 222 wrapping". To achieve this the AE scheme used in PKEX is AES-SIV as 223 defined in [RFC5297]. 225 The KDF provides for the generation of a cryptographically strong 226 secret key from an "imperfect" source of randomness. To achieve this 227 the KDF used in PKEX is the unsalted version of [RFC5869]. 229 The keyed MAC function is HMAC per [RFC2104]. 231 The following assumptions are made on PKEX: 233 o Only the peers involved in the exchange know the password. 235 o The peers' public keys are from the same group. 237 o The discrete logarithms of the public role-specific elements are 238 unknown, and determining them is computationally infeasible. 240 4. Cryptographic Primitives 242 HKDF and HMAC require an underlying hash function and AES-SIV 243 requires a key length. To provide for consistent security the hash 244 algorithm and key length depend on the group chosen to use with PKEX. 246 For ECC, the hash algorithm and key length depends on the size of the 247 prime defining the curve, p: 249 o SHA-256 and 256 bits: when len(p) <= 256 251 o SHA-384 and 384 bits: when 256 < len(p) <= 384 253 o SHA-512 and 512 bits: when 384 < len(p) 255 For FFC, the hash algorithm depends on the prime, p, defining the 256 finite field: 258 o SHA-256 and 256 bits: when len(p) <= 2048 260 o SHA-384 and 384 bits: when 2048 < len(p) <= 3072 262 o SHA-512 and 512 bits: when 3072 < len(p) 264 5. Protocol Definition 266 PKEX is a balanced PAKE. The identical version of the password is 267 used by both parties. 269 PKEX consists of two phases: authentication and reveal. It is 270 described using the popular protocol participants, Alice (an 271 initiator of PKEX), and Bob (a responder of PKEX). 273 We denote Alice's role-specific element a Pi and Bob's as Pr. The 274 password is pw. For simplicity, Alice's identity is "Alice" and 275 Bob's identity is "Bob". Alice's public key she wants to share with 276 Bob is A and her private key is a, while Bob's public key he wants to 277 share with Alice is B and his private key is b. 279 While both Alice and Bob expose their identities to passive 280 eavesdroppers, the public keys they exchange (and ultimately gain 281 trust in) are not. Once PKEX has finished, Alice and Bob can 282 identifiy each other using their trusted public keys and thereby 283 provide a level of anonymity to subsequent communications. 285 Implementations SHALL maintain a counter of unsuccessful exchanges 286 for each password in order to defend against repeated active attacks 287 to determine the password. This counter SHALL be set to zero when a 288 password is provisioned and incremented each time PKEX finishes 289 unsuccessfully for that password. When the counter reaches a value 290 of five (5) the password SHALL be irretrievably removed from the 291 implementation. 293 5.1. Authentication Phase 295 The Authenticaiton phase is essentially the SPAKE2 key exchange. The 296 peers derive ephemeral public keys, encrypt, and exchange them. Each 297 party hashes a concatentation of his or her identity and the password 298 and operates on the role-specific element to obtain a secret 299 encrypting element. The group operation is then performed with the 300 ephemeral key and the secret encrypting element to produce an 301 encrypted ephmeral key. The ephemeral private keys MUST be generated 302 with high quality (pseudo-)randomness and SHALL never be re-used. 304 Alice: Bob: 305 ------ ---- 306 x, X = x*G y, Y = y*G 307 Qa = H(Alice|pw)*Pi Qb = H(Bob|pw)*Pr 308 M = X + Qa 309 Alice, M ------> 310 Qa = H(Alice|pw)*Pi 311 X' = M - Qa 312 N = Y + Qb 313 z = KDF-n(F(y*X'), 314 Alice | Bob | 315 F(M) | F(N) | pw) 316 <------ Bob, N 317 Qb = H(Bob|pw)*Pr 318 Y' = N - Qb 319 z = KDF-n(F(x*Y'), 320 Alice | Bob | 321 F(M) | F(N) | pw) 323 where n is the key length and KDF uses the hash algorithm from 324 Section 4. 326 Both M and N MUST be verified to be valid elements in the selected 327 group. For ECC groups this means they MUST be valid points on the 328 curve, for FFC groups they MUST be between one and the prime minus 329 one, and the group operation on the element and the order of the sub- 330 group, q, MUST equal one. If either element is not valid the 331 protocol fails. 333 At this point the peers have exchanged ephemeral elements that will 334 be unknown except by someone with knowledge of the password. Given 335 our assumptions that means only Alice and Bob can know the elements X 336 and Y, and the secret key, z. 338 The secret encrypting elements Qa and Qb SHALL be irretrievably 339 deleted at this point. The password MAY be irretrievably deleted at 340 this time. 342 5.2. Reveal Phase 344 In the Reveal phase the peers commit to the particular public key 345 they wish to exchange and reveal it to the peer. Proof-of-possession 346 of the private key is accomplished by "signing" the public key, the 347 identity to which the public key is bound, the receipient's ephemeral 348 public key, and the sender's ephemeral public key. 350 The messages exchanged in the Reveal phase are encrypted and 351 authenticated with AES-SIV using a key derived from the SPAKE2 key 352 exchange in Section 5.1. Successful construction and validation of 353 these messages authenticates the SPAKE2 exchange by proving 354 possession of the SPAKE2 shared secret and therefore knowledge of the 355 password. A single octet of the value zero (0) is used as associated 356 data when encrypting Alice's message to Bob and a single octet of the 357 value one (1) is used as associated data when constructing Bob's 358 response. The associated data is not transferred as part of the 359 either message. 361 The received public keys MUST be verified to be valid elements in the 362 selected group using the same technique as above: for ECC groups they 363 MUST be valid points on the curve, for FFC groups they MUST be 364 between one and the prime minus one, and the group operation on the 365 element and the order of the group, q, MUST equal one. If a received 366 public key is not valid the protocol fails. 368 Alice: Bob: 369 ------ ---- 370 u = HMAC(F(a*Y'), Alice | F(A) | 371 F(Y') | F(X)) 373 {A, u}z[0] ------> 375 if (SIV-decrypt returns fail) fail 376 if (A not valid element) fail 377 u' = HMAC(F(y*A), Alice | F(A) | 378 F(Y) | F(X')) 379 if (u' != u) fail 380 v = HMAC(F(b*X'), Bob | F(B) | 381 F(X') | F(Y)) 383 <------ {B, v}z[1] 385 if (SIV-decrypt returns fail) fail 386 if (B not valid element) fail 387 v' = HMAC(F(x*B), Bob | F(B) | 388 F(X) | F(Y)) 389 if (v'!= v) fail 391 where 0 and 1 are single octets of the value zero and one, 392 respectively, and HMAC uses the hash algorithm from Section 4. 394 If the parties didn't fail they have each other's public key, 395 knowledge that the peer possesses the corresponding private key, and 396 trust that the public key belongs to the peer's identity that was 397 authenticated in the Authentication Phase. 399 If the parties fail, the counter that protects against active attack 400 (see Section 5) SHALL be incremented. If the value of the counter is 401 five (5) the password SHALL be irretrievably deleted. 403 All ephemeral state created during the PKEX exchange SHALL be 404 irretrievably deleted at this point. Once PKEX successfully 405 completes the password MAY be deleted (or even exposed, with no loss 406 of security). The authenticated and secret symmetric key, z, MAY be 407 used for further key derivation with a different context but if not 408 it SHOULD be irretrievably deleted. 410 6. IANA Considerations 412 This memo could create a registry of the fixed public elements for a 413 nice cross section of popular groups. Or not. Once published this 414 document will be a stable reference and a registry might not be 415 needed. 417 7. Security Considerations 419 The encrypted shares exchanged in the Authentication phase MUST be 420 ephemeral. Reuse of these keys, even with a different password, 421 voids the security of the exchange. 423 If fixed elements other than those in Appendix A.1 and Appendix A.2 424 are used, their discrete logarithm MUST not be known. Knowledge of 425 of the discrete logarithm of either of the fixed elements voids the 426 security of the exchange. 428 The public keys exchanged in PKEX are never disclosed to an attacker, 429 either passive or active. While they are, as the name implies, 430 public, PKEX provides for secrecy of the exchanged keys for any 431 protocol that might need such a capability. 433 PKEX has forward secrecy in the sense that exposure of the password 434 used in a previous run of the protocol will not affect the security 435 of that run. This also means that once PKEX has finished, the 436 password can be exposed to a third party with out loss of security-- 437 the public keys exchanged are still trusted and still bound to the 438 entities that performed the exchange originally. 440 The Authentication Phase of PKEX is SPAKE2. The SPAKE2 security 441 proof guarantees that if both sides bind the same password to each 442 other's identity they will derive the same secret. This means that 443 the public key sent in the Reveal phase is guaranteed to be sent by 444 the identified peer-- it is sent in a message that is integrity 445 protected and encrypted by a key, z, derived from the SPAKE2 shared 446 secret. This binds the peer's public key to its authenticated 447 identity. Proof-of-possession of the private key is provided by also 448 sending a digest keyed by the result of a function of the private key 449 and the peer's ephemeral share from the Authentication Phase. Since 450 the sender is not able to predict what random ephemeral share will be 451 received in the Authentication Phase, it is unable to generate a 452 keyed digest without knowing the private analog to the public key it 453 is sending. 455 There is no proof of security of PKEX at this time. 457 8. Acknowledgements 459 The author wishes to thank Liliya Ruslanovna Ahmetzyanova, Stanislav 460 Smyshlyaev, and Greg Rose for their detailed reviews, helpful 461 comments, and patience in answering questions. 463 9. Changes/Author Notes 465 [ RFC Editor: Please remove this section before publication ] 467 00-04 469 Initial version recorded is -04 471 04-05 473 Accepted comments from Liliya Ruslanovna Ahmetzyanova and 474 Stanislav Smyshlyaev. 476 Accepted comments from Greg Rose 478 Indicated G is from group definitions, added normative reference 479 to brainpool curves. 481 Added a counter to deal with repeated active attack. 483 Mention in introduction that the result of PKEX is trust in the 484 public key and an authenticated symmetric key 486 Make group description more formal and accurate. 488 Add some assumptions to the notational definition for 489 authenticated encryption. 491 Send identities during auth phase instead of asssuming identities 492 are somehow learned a priori. Add mention that public key is not 493 exposed to passive attackers. 495 Note that ephemeral private keys must be generated with high 496 quality randomness and never be reused. 498 Define what it means to verify M and N for both FFC and ECC. 500 Fix the technique used to generate the fixed elements for both FFC 501 and ECC. 503 10. References 505 10.1. Normative References 507 [DSS] U.S. Department of Commerce/National Institute of 508 Standards and Technology, "Digital Signature Standard 509 (DSS)", Federal Information Processing Standards FIPS PUB 510 186-4, July 2013. 512 [RFC2104] Krawczyk, H., Bellare, M., and R. Canetti, "HMAC: Keyed- 513 Hashing for Message Authentication", RFC 2104, DOI 514 10.17487/RFC2104, February 1997, 515 . 517 [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate 518 Requirement Levels", BCP 14, RFC 2119, March 1997. 520 [RFC3526] Kivinen, T. and M. Kojo, "More Modular Exponential (MODP) 521 Diffie-Hellman groups for Internet Key Exchange (IKE)", 522 RFC 3526, DOI 10.17487/RFC3526, May 2003, 523 . 525 [RFC5297] Harkins, D., "Synthetic Initialization Vector (SIV) 526 Authenticated Encryption Using the Advanced Encryption 527 Standard (AES)", RFC 5297, DOI 10.17487/RFC5297, October 528 2008, . 530 [RFC5639] Lochter, M. and J. Merkle, "Elliptic Curve Cryptography 531 (ECC) Brainpool Standard Curves and Curve Generation", RFC 532 5639, DOI 10.17487/RFC5639, March 2010, . 535 [RFC5869] Krawczyk, H. and P. Eronen, "HMAC-based Extract-and-Expand 536 Key Derivation Function (HKDF)", RFC 5869, DOI 10.17487/ 537 RFC5869, May 2010, 538 . 540 [X9.62] American National Standards Institute, "X9.62-2005", 541 Public Key Cryptography for the Financial Services 542 Industry (ECDSA), 2005. 544 10.2. Informative References 546 [RFC7250] Wouters, P., Ed., Tschofenig, H., Ed., Gilmore, J., 547 Weiler, S., and T. Kivinen, "Using Raw Public Keys in 548 Transport Layer Security (TLS) and Datagram Transport 549 Layer Security (DTLS)", RFC 7250, DOI 10.17487/RFC7250, 550 June 2014, . 552 [RFC7670] Kivinen, T., Wouters, P., and H. Tschofenig, "Generic Raw 553 Public-Key Support for IKEv2", RFC 7670, DOI 10.17487/ 554 RFC7670, January 2016, 555 . 557 Appendix A. Role-specific Elements 559 Role-specific elements for six popular elliptic curves and four 560 popular modp groups from [RFC3526] have been generated using the 561 following technique which guarantees that their discrete logarithm 562 will be unknown. 564 A loop is performed to generate role-specific elements by generating 565 a candidate, testing the candidate, and exiting the loop once the 566 test succeeds. A single octet counter is incremented each time 567 through the loop (first time through the loop, the counter is one). 569 To find a candidate, a hash of an identifier (the concatenation of 570 the ASN.1 of the OID of the curve or the name of the FFC group), a 571 constant string, and the counter is produced. If the length of the 572 hash's digest is less than the desired bits, the digest is pre-pended 573 to the inputs and the result is fed back into the hash (this time it 574 is a hash of a concatentation of the old digest, identifier, constant 575 string, counter) to produce the next length-of-digest bits. This is 576 repeated until the number of bits has been produced. Excess octets 577 are stripped off. The resulting string is interpreted as an integer 578 with the first octet of the (first) hash being the high-order octet 579 of the integer. If the prime defining the group (the modulo of all 580 operations in an FFC group or the prime defining the curve for ECC 581 groups) is not an integral number of octets, the bitstring is right- 582 shifted, pre-pending with zero bits, in order to make a big-endian 583 bitstring of the appropriate length. If that resulting big-endian 584 number is larger than the prime defining group, the counter is 585 incremented and the loop continues. Otherwise, the integer is 586 checked to see whether it is in the correct sub-group. This process 587 is different for ECC and FFC. 589 For ECC, the integer is treated as an x-coordinate and checked 590 whether it produces a valid point on the curve. If a solution to the 591 equation of the curve does not exist for that x-coordinate, the 592 counter is incremented and a new candidate integer is calculated. If 593 a solution to the equation of the curve exists for that x-coordinate, 594 the polarity of the counter is used to select a y-coordinate-- if the 595 counter is odd then use y-p, if the counter is even use y. This 596 point is in the correct sub-group and looping terminates. 598 For FFC, the co-factor is calculated as (p-1)/q, where p is the prime 599 modulus and q is the order of the sub-group. The integer is taken to 600 the power of the co-factor modulo p. If the result is equal to one, 601 the counter is increased and a new candidate integer is calculated. 602 If the result is not equal to one then the result is in the correct 603 sub-group and it becomes the element; looping terminates. 605 The hash algorithm used to generate candidates is determined using 606 the criteria in Section 4. 608 The loop is performed twice for each elliptic curve and FFC group to 609 produce initiator- and responder-specific elements. The string 610 passed for the initiator-specific element is "PKEX Initiator", the 611 string passed for the responder-specific element is "PKEX Responder". 613 For FFC groups, the identifier is "group X" (including the space 614 character and excluding the quotation marks) where X is the id 615 assigned to the group, e.g. the 2048-bit group is named "group 14". 616 For ECC groups, the identifier is the DER-encoded ASN.1 617 representation of the OID of the curve. 619 A.1. ECC Role-specific Elements 621 A.1.1. Role-specific Elements for NIST p256 623 unsigned char nist_p256_initiator_x_coord[32] = { 624 0x56, 0x26, 0x12, 0xcf, 0x36, 0x48, 0xfe, 0x0b, 625 0x07, 0x04, 0xbb, 0x12, 0x22, 0x50, 0xb2, 0x54, 626 0xb1, 0x94, 0x64, 0x7e, 0x54, 0xce, 0x08, 0x07, 627 0x2e, 0xec, 0xca, 0x74, 0x5b, 0x61, 0x2d, 0x25 628 }; 629 unsigned char nist_p256_initiator_y_coord[32] = { 630 0x3e, 0x44, 0xc7, 0xc9, 0x8c, 0x1c, 0xa1, 0x0b, 631 0x20, 0x09, 0x93, 0xb2, 0xfd, 0xe5, 0x69, 0xdc, 632 0x75, 0xbc, 0xad, 0x33, 0xc1, 0xe7, 0xc6, 0x45, 633 0x4d, 0x10, 0x1e, 0x6a, 0x3d, 0x84, 0x3c, 0xa4 634 }; 635 unsigned char nist_p256_responder_x_coord[32] = { 636 0x1e, 0xa4, 0x8a, 0xb1, 0xa4, 0xe8, 0x42, 0x39, 637 0xad, 0x73, 0x07, 0xf2, 0x34, 0xdf, 0x57, 0x4f, 638 0xc0, 0x9d, 0x54, 0xbe, 0x36, 0x1b, 0x31, 0x0f, 639 0x59, 0x91, 0x52, 0x33, 0xac, 0x19, 0x9d, 0x76 640 }; 641 unsigned char nist_p256_responder_y_coord[32] = { 642 0xd9, 0xfb, 0xf6, 0xb9, 0xf5, 0xfa, 0xdf, 0x19, 643 0x58, 0xd8, 0x3e, 0xc9, 0x89, 0x7a, 0x35, 0xc1, 644 0xbd, 0xe9, 0x0b, 0x77, 0x7a, 0xcb, 0x91, 0x2a, 645 0xe8, 0x21, 0x3f, 0x47, 0x52, 0x02, 0x4d, 0x67 646 }; 648 A.1.2. Role-specific Elements for NIST p384 649 unsigned char nist_p384_initiator_x_coord[48] = { 650 0x95, 0x3f, 0x42, 0x9e, 0x50, 0x7f, 0xf9, 0xaa, 651 0xac, 0x1a, 0xf2, 0x85, 0x2e, 0x64, 0x91, 0x68, 652 0x64, 0xc4, 0x3c, 0xb7, 0x5c, 0xf8, 0xc9, 0x53, 653 0x6e, 0x58, 0x4c, 0x7f, 0xc4, 0x64, 0x61, 0xac, 654 0x51, 0x8a, 0x6f, 0xfe, 0xab, 0x74, 0xe6, 0x12, 655 0x81, 0xac, 0x38, 0x5d, 0x41, 0xe6, 0xb9, 0xa3 656 }; 657 unsigned char nist_p384_initiator_y_coord[48] = { 658 0x76, 0x2f, 0x68, 0x84, 0xa6, 0xb0, 0x59, 0x29, 659 0x83, 0xa2, 0x6c, 0xa4, 0x6c, 0x3b, 0xf8, 0x56, 660 0x76, 0x11, 0x2a, 0x32, 0x90, 0xbd, 0x07, 0xc7, 661 0x37, 0x39, 0x9d, 0xdb, 0x96, 0xf3, 0x2b, 0xb6, 662 0x27, 0xbb, 0x29, 0x3c, 0x17, 0x33, 0x9d, 0x94, 663 0xc3, 0xda, 0xac, 0x46, 0xb0, 0x8e, 0x07, 0x18 664 }; 665 unsigned char nist_p384_responder_x_coord[48] = { 666 0xad, 0xbe, 0xd7, 0x1d, 0x3a, 0x71, 0x64, 0x98, 667 0x5f, 0xb4, 0xd6, 0x4b, 0x50, 0xd0, 0x84, 0x97, 668 0x4b, 0x7e, 0x57, 0x70, 0xd2, 0xd9, 0xf4, 0x92, 669 0x2a, 0x3f, 0xce, 0x99, 0xc5, 0x77, 0x33, 0x44, 670 0x14, 0x56, 0x92, 0xcb, 0xae, 0x46, 0x64, 0xdf, 671 0xe0, 0xbb, 0xd7, 0xb1, 0x29, 0x20, 0x72, 0xdf 672 }; 673 unsigned char nist_p384_responder_y_coord[48] = { 674 0xab, 0xa7, 0xdf, 0x52, 0xaa, 0xe2, 0x35, 0x0c, 675 0xe3, 0x75, 0x32, 0xe6, 0xbf, 0x06, 0xc8, 0x7c, 676 0x38, 0x29, 0x4c, 0xec, 0x82, 0xac, 0xd7, 0xa3, 677 0x09, 0xd2, 0x0e, 0x22, 0x5a, 0x74, 0x52, 0xa1, 678 0x7e, 0x54, 0x4e, 0xfe, 0xc6, 0x29, 0x33, 0x63, 679 0x15, 0xe1, 0x7b, 0xe3, 0x40, 0x1c, 0xca, 0x06 680 }; 682 A.1.3. Role-specific Elements for NIST p521 683 unsigned char nist_p521_initiator_x_coord[66] = { 684 0x00, 0x16, 0x20, 0x45, 0x19, 0x50, 0x95, 0x23, 685 0x0d, 0x24, 0xbe, 0x00, 0x87, 0xdc, 0xfa, 0xf0, 686 0x58, 0x9a, 0x01, 0x60, 0x07, 0x7a, 0xca, 0x76, 687 0x01, 0xab, 0x2d, 0x5a, 0x46, 0xcd, 0x2c, 0xb5, 688 0x11, 0x9a, 0xff, 0xaa, 0x48, 0x04, 0x91, 0x38, 689 0xcf, 0x86, 0xfc, 0xa4, 0xa5, 0x0f, 0x47, 0x01, 690 0x80, 0x1b, 0x30, 0xa3, 0xae, 0xe8, 0x1c, 0x2e, 691 0xea, 0xcc, 0xf0, 0x03, 0x9f, 0x77, 0x4c, 0x8d, 692 0x97, 0x76 693 }; 694 unsigned char nist_p521_initiator_y_coord[66] = { 695 0x00, 0xb3, 0x8e, 0x02, 0xe4, 0x2a, 0x63, 0x59, 696 0x12, 0xc6, 0x10, 0xba, 0x3a, 0xf9, 0x02, 0x99, 697 0x3f, 0x14, 0xf0, 0x40, 0xde, 0x5c, 0xc9, 0x8b, 698 0x02, 0x55, 0xfa, 0x91, 0xb1, 0xcc, 0x6a, 0xbd, 699 0xe5, 0x62, 0xc0, 0xc5, 0xe3, 0xa1, 0x57, 0x9f, 700 0x08, 0x1a, 0xa6, 0xe2, 0xf8, 0x55, 0x90, 0xbf, 701 0xf5, 0xa6, 0xc3, 0xd8, 0x52, 0x1f, 0xb7, 0x02, 702 0x2e, 0x7c, 0xc8, 0xb3, 0x20, 0x1e, 0x79, 0x8d, 703 0x03, 0xa8 704 }; 705 unsigned char nist_p521_responder_x_coord[66] = { 706 0x00, 0x79, 0xe4, 0x4d, 0x6b, 0x5e, 0x12, 0x0a, 707 0x18, 0x2c, 0xb3, 0x05, 0x77, 0x0f, 0xc3, 0x44, 708 0x1a, 0xcd, 0x78, 0x46, 0x14, 0xee, 0x46, 0x3f, 709 0xab, 0xc9, 0x59, 0x7c, 0x85, 0xa0, 0xc2, 0xfb, 710 0x02, 0x32, 0x99, 0xde, 0x5d, 0xe1, 0x0d, 0x48, 711 0x2d, 0x71, 0x7d, 0x8d, 0x3f, 0x61, 0x67, 0x9e, 712 0x2b, 0x8b, 0x12, 0xde, 0x10, 0x21, 0x55, 0x0a, 713 0x5b, 0x2d, 0xe8, 0x05, 0x09, 0xf6, 0x20, 0x97, 714 0x84, 0xb4 715 }; 716 unsigned char nist_p521_responder_y_coord[66] = { 717 0x00, 0x46, 0x63, 0x39, 0xbe, 0xcd, 0xa4, 0x2d, 718 0xca, 0x27, 0x74, 0xd4, 0x1b, 0x91, 0x33, 0x20, 719 0x83, 0xc7, 0x3b, 0xa4, 0x09, 0x8b, 0x8e, 0xa3, 720 0x88, 0xe9, 0x75, 0x7f, 0x56, 0x7b, 0x38, 0x84, 721 0x62, 0x02, 0x7c, 0x90, 0x51, 0x07, 0xdb, 0xe9, 722 0xd0, 0xde, 0xda, 0x9a, 0x5d, 0xe5, 0x94, 0xd2, 723 0xcf, 0x9d, 0x4c, 0x33, 0x91, 0xa6, 0xc3, 0x80, 724 0xa7, 0x6e, 0x7e, 0x8d, 0xf8, 0x73, 0x6e, 0x53, 725 0xce, 0xe1 726 }; 728 A.1.4. Role-specific Elements for brainpool p256r1 730 unsigned char brainpool_p256_initiator_x_coord[32] = { 731 0x46, 0x98, 0x18, 0x6c, 0x27, 0xcd, 0x4b, 0x10, 732 0x7d, 0x55, 0xa3, 0xdd, 0x89, 0x1f, 0x9f, 0xca, 733 0xc7, 0x42, 0x5b, 0x8a, 0x23, 0xed, 0xf8, 0x75, 734 0xac, 0xc7, 0xe9, 0x8d, 0xc2, 0x6f, 0xec, 0xd8 735 }; 736 unsigned char brainpool_p256_initiator_y_coord[32] = { 737 0x93, 0xca, 0xef, 0xa9, 0x66, 0x3e, 0x87, 0xcd, 738 0x52, 0x6e, 0x54, 0x13, 0xef, 0x31, 0x67, 0x30, 739 0x15, 0x13, 0x9d, 0x6d, 0xc0, 0x95, 0x32, 0xbe, 740 0x4f, 0xab, 0x5d, 0xf7, 0xbf, 0x5e, 0xaa, 0x0b 741 }; 742 unsigned char brainpool_p256_responder_x_coord[32] = { 743 0x90, 0x18, 0x84, 0xc9, 0xdc, 0xcc, 0xb5, 0x2f, 744 0x4a, 0x3f, 0x4f, 0x18, 0x0a, 0x22, 0x56, 0x6a, 745 0xa9, 0xef, 0xd4, 0xe6, 0xc3, 0x53, 0xc2, 0x1a, 746 0x23, 0x54, 0xdd, 0x08, 0x7e, 0x10, 0xd8, 0xe3 747 }; 748 unsigned char brainpool_p256_responder_y_coord[32] = { 749 0x2a, 0xfa, 0x98, 0x9b, 0xe3, 0xda, 0x30, 0xfd, 750 0x32, 0x28, 0xcb, 0x66, 0xfb, 0x40, 0x7f, 0xf2, 751 0xb2, 0x25, 0x80, 0x82, 0x44, 0x85, 0x13, 0x7e, 752 0x4b, 0xb5, 0x06, 0xc0, 0x03, 0x69, 0x23, 0x64 753 }; 755 A.1.5. Role-specific Elements for brainpool p384r1 756 unsigned char brainpool_p384_initiator_x_coord[48] = { 757 0x0a, 0x2c, 0xeb, 0x49, 0x5e, 0xb7, 0x23, 0xbd, 758 0x20, 0x5b, 0xe0, 0x49, 0xdf, 0xcf, 0xcf, 0x19, 759 0x37, 0x36, 0xe1, 0x2f, 0x59, 0xdb, 0x07, 0x06, 760 0xb5, 0xeb, 0x2d, 0xae, 0xc2, 0xb2, 0x38, 0x62, 761 0xa6, 0x73, 0x09, 0xa0, 0x6c, 0x0a, 0xa2, 0x30, 762 0x99, 0xeb, 0xf7, 0x1e, 0x47, 0xb9, 0x5e, 0xbe 763 }; 764 unsigned char brainpool_p384_initiator_y_coord[48] = { 765 0x54, 0x76, 0x61, 0x65, 0x75, 0x5a, 0x2f, 0x99, 766 0x39, 0x73, 0xca, 0x6c, 0xf9, 0xf7, 0x12, 0x86, 767 0x54, 0xd5, 0xd4, 0xad, 0x45, 0x7b, 0xbf, 0x32, 768 0xee, 0x62, 0x8b, 0x9f, 0x52, 0xe8, 0xa0, 0xc9, 769 0xb7, 0x9d, 0xd1, 0x09, 0xb4, 0x79, 0x1c, 0x3e, 770 0x1a, 0xbf, 0x21, 0x45, 0x66, 0x6b, 0x02, 0x52 771 }; 772 unsigned char brainpool_p384_responder_x_coord[48] = { 773 0x03, 0xa2, 0x57, 0xef, 0xe8, 0x51, 0x21, 0xa0, 774 0xc8, 0x9e, 0x21, 0x02, 0xb5, 0x9a, 0x36, 0x25, 775 0x74, 0x22, 0xd1, 0xf2, 0x1b, 0xa8, 0x9a, 0x9b, 776 0x97, 0xbc, 0x5a, 0xeb, 0x26, 0x15, 0x09, 0x71, 777 0x77, 0x59, 0xec, 0x8b, 0xb7, 0xe1, 0xe8, 0xce, 778 0x65, 0xb8, 0xaf, 0xf8, 0x80, 0xae, 0x74, 0x6c 779 }; 780 unsigned char brainpool_p384_responder_y_coord[48] = { 781 0x2f, 0xd9, 0x6a, 0xc7, 0x3e, 0xec, 0x76, 0x65, 782 0x2d, 0x38, 0x7f, 0xec, 0x63, 0x26, 0x3f, 0x04, 783 0xd8, 0x4e, 0xff, 0xe1, 0x0a, 0x51, 0x74, 0x70, 784 0xe5, 0x46, 0x63, 0x7f, 0x5c, 0xc0, 0xd1, 0x7c, 785 0xfb, 0x2f, 0xea, 0xe2, 0xd8, 0x0f, 0x84, 0xcb, 786 0xe9, 0x39, 0x5c, 0x64, 0xfe, 0xcb, 0x2f, 0xf1 787 }; 789 A.1.6. Role-specific Elements for brainpool p512r1 790 unsigned char brainpool_p512_initiator_x_coord[64] = { 791 0x4c, 0xe9, 0xb6, 0x1c, 0xe2, 0x00, 0x3c, 0x9c, 792 0xa9, 0xc8, 0x56, 0x52, 0xaf, 0x87, 0x3e, 0x51, 793 0x9c, 0xbb, 0x15, 0x31, 0x1e, 0xc1, 0x05, 0xfc, 794 0x7c, 0x77, 0xd7, 0x37, 0x61, 0x27, 0xd0, 0x95, 795 0x98, 0xee, 0x5d, 0xa4, 0x3d, 0x09, 0xdb, 0x3d, 796 0xfa, 0x89, 0x9e, 0x7f, 0xa6, 0xa6, 0x9c, 0xff, 797 0x83, 0x5c, 0x21, 0x6c, 0x3e, 0xf2, 0xfe, 0xdc, 798 0x63, 0xe4, 0xd1, 0x0e, 0x75, 0x45, 0x69, 0x0f 799 }; 800 unsigned char brainpool_p512_initiator_y_coord[64] = { 801 0x50, 0xb5, 0x9b, 0xfa, 0x45, 0x67, 0x75, 0x94, 802 0x44, 0xe7, 0x68, 0xb0, 0xeb, 0x3e, 0xb3, 0xb8, 803 0xf9, 0x99, 0x05, 0xef, 0xae, 0x6c, 0xbc, 0xe3, 804 0xe1, 0xd2, 0x51, 0x54, 0xdf, 0x59, 0xd4, 0x45, 805 0x41, 0x3a, 0xa8, 0x0b, 0x76, 0x32, 0x44, 0x0e, 806 0x07, 0x60, 0x3a, 0x6e, 0xbe, 0xfe, 0xe0, 0x58, 807 0x52, 0xa0, 0xaa, 0x8b, 0xd8, 0x5b, 0xf2, 0x71, 808 0x11, 0x9a, 0x9e, 0x8f, 0x1a, 0xd1, 0xc9, 0x99 809 }; 810 unsigned char brainpool_p512_responder_x_coord[64] = { 811 0x2a, 0x60, 0x32, 0x27, 0xa1, 0xe6, 0x94, 0x72, 812 0x1c, 0x48, 0xbe, 0xc5, 0x77, 0x14, 0x30, 0x76, 813 0xe4, 0xbf, 0xf7, 0x7b, 0xc5, 0xfd, 0xdf, 0x19, 814 0x1e, 0x0f, 0xdf, 0x1c, 0x40, 0xfa, 0x34, 0x9e, 815 0x1f, 0x42, 0x24, 0xa3, 0x2c, 0xd5, 0xc7, 0xc9, 816 0x7b, 0x47, 0x78, 0x96, 0xf1, 0x37, 0x0e, 0x88, 817 0xcb, 0xa6, 0x52, 0x29, 0xd7, 0xa8, 0x38, 0x29, 818 0x8e, 0x6e, 0x23, 0x47, 0xd4, 0x4b, 0x70, 0x3e 819 }; 820 unsigned char brainpool_p512_responder_y_coord[64] = { 821 0x80, 0x1f, 0x43, 0xd2, 0x17, 0x35, 0xec, 0x81, 822 0xd9, 0x4b, 0xdc, 0x81, 0x19, 0xd9, 0x5f, 0x68, 823 0x16, 0x84, 0xfe, 0x63, 0x4b, 0x8d, 0x5d, 0xaa, 824 0x88, 0x4a, 0x47, 0x48, 0xd4, 0xea, 0xab, 0x7d, 825 0x6a, 0xbf, 0xe1, 0x28, 0x99, 0x6a, 0x87, 0x1c, 826 0x30, 0xb4, 0x44, 0x2d, 0x75, 0xac, 0x35, 0x09, 827 0x73, 0x24, 0x3d, 0xb4, 0x43, 0xb1, 0xc1, 0x56, 828 0x56, 0xad, 0x30, 0x87, 0xf4, 0xc3, 0x00, 0xc7 829 }; 831 A.2. FFC Role-specific Elements 833 A.2.1. Role-specific Elements for 2048-bit FFC group 835 unsigned char group 14_initiator[256] = { 836 0x01, 0x1f, 0x33, 0x72, 0x90, 0x86, 0x76, 0x68, 837 0x9d, 0x29, 0x9c, 0x42, 0xd2, 0x43, 0x1b, 0xeb, 838 0x99, 0x53, 0x3e, 0x5c, 0x3e, 0xe5, 0x15, 0xa1, 839 0x06, 0x01, 0xb5, 0x8b, 0xac, 0x33, 0xd8, 0xc7, 840 0x30, 0x4d, 0xec, 0x84, 0x0d, 0xb1, 0x13, 0xd0, 841 0xb3, 0x44, 0xeb, 0xbe, 0x6f, 0x70, 0x21, 0x8b, 842 0xd7, 0xe2, 0x86, 0x9f, 0xfc, 0x03, 0xc6, 0x34, 843 0xd2, 0x08, 0xdb, 0x1d, 0x6e, 0x57, 0xe2, 0xe0, 844 0xa8, 0x0c, 0xbb, 0xb8, 0x37, 0xa5, 0x73, 0x75, 845 0x31, 0x48, 0x49, 0x43, 0x24, 0xdb, 0x96, 0x71, 846 0x40, 0xc6, 0xfa, 0xe7, 0x12, 0x13, 0xb4, 0x20, 847 0x89, 0x46, 0x63, 0xff, 0x38, 0xc3, 0x72, 0x82, 848 0xf6, 0xa1, 0x23, 0xd2, 0x2c, 0x25, 0xf9, 0x46, 849 0x80, 0x76, 0x82, 0xb7, 0xed, 0x6c, 0x21, 0x28, 850 0x79, 0xdb, 0xaa, 0xdd, 0x69, 0x84, 0xd7, 0x09, 851 0x20, 0xac, 0x5f, 0x94, 0xf4, 0x10, 0x86, 0x98, 852 0x0a, 0x69, 0xc4, 0x62, 0xb7, 0x48, 0xea, 0xa5, 853 0xdf, 0x41, 0xce, 0xfa, 0xb6, 0x00, 0x41, 0xbd, 854 0x9e, 0x35, 0xfa, 0x15, 0x41, 0x3e, 0xa8, 0x7f, 855 0x4f, 0x44, 0xae, 0x14, 0x48, 0x53, 0xf2, 0x7c, 856 0x4d, 0x69, 0xe4, 0xa0, 0x44, 0x32, 0x78, 0xbf, 857 0x7a, 0x59, 0xe3, 0xd9, 0x6a, 0x32, 0xb1, 0x5a, 858 0x63, 0xd7, 0x7d, 0x47, 0xb6, 0xe6, 0x00, 0x00, 859 0xea, 0x70, 0x91, 0x4b, 0xde, 0x0e, 0xf5, 0x76, 860 0x0b, 0x45, 0x1b, 0xa8, 0xee, 0x99, 0xb0, 0xd2, 861 0x34, 0x4e, 0x7a, 0x95, 0x46, 0xbb, 0xf6, 0x51, 862 0xba, 0xfa, 0x15, 0x90, 0xf9, 0x88, 0xc0, 0x49, 863 0x3f, 0x5d, 0x98, 0x4e, 0x36, 0xcb, 0x96, 0xa9, 864 0xcd, 0x47, 0x7f, 0x21, 0xff, 0x32, 0xde, 0xb3, 865 0x65, 0xc3, 0xe1, 0xe9, 0x88, 0x8e, 0xbd, 0x3e, 866 0xc1, 0x84, 0x63, 0x77, 0x26, 0xf9, 0x90, 0x64, 867 0x66, 0x3a, 0x5c, 0xfc, 0x44, 0xbd, 0x6f, 0xd0 868 }; 869 unsigned char group 14_responder[256] = { 870 0x7a, 0x9e, 0x5f, 0xa9, 0xcb, 0x6e, 0x36, 0xe1, 871 0x66, 0x75, 0x95, 0x42, 0xe8, 0x86, 0x44, 0xf0, 872 0xe5, 0xe5, 0x4e, 0x7f, 0xb0, 0x63, 0x5c, 0x38, 873 0xd3, 0x25, 0x02, 0xd3, 0x2a, 0x72, 0x92, 0xfa, 874 0x17, 0xa1, 0x93, 0xc2, 0x9a, 0x15, 0xf9, 0x81, 875 0xa6, 0x16, 0xfc, 0x72, 0xaf, 0xfa, 0xe6, 0x71, 876 0x08, 0x96, 0x26, 0x49, 0x7a, 0x4d, 0xc8, 0xc2, 877 0xc1, 0xdb, 0x63, 0x9d, 0xc3, 0x22, 0x3c, 0x9f, 878 0xb4, 0x00, 0x3e, 0xe7, 0x02, 0x89, 0x0c, 0xb1, 879 0x65, 0x97, 0x55, 0x0a, 0x74, 0x83, 0x0d, 0xe9, 880 0x77, 0x5f, 0xc4, 0x00, 0x1c, 0xaf, 0x24, 0xca, 881 0xb1, 0xcc, 0x31, 0x1c, 0x2d, 0x53, 0x8a, 0x79, 882 0x01, 0xe1, 0x00, 0x62, 0x61, 0x1c, 0xa8, 0xf7, 883 0x76, 0x73, 0x24, 0xad, 0x8b, 0xb0, 0x6f, 0xd6, 884 0x83, 0x3d, 0x06, 0x9f, 0x9d, 0xf0, 0x84, 0x64, 885 0xb2, 0xba, 0x11, 0xec, 0x1e, 0xfb, 0x21, 0x96, 886 0x0a, 0xab, 0x4c, 0x70, 0x79, 0x47, 0x7b, 0x6e, 887 0xce, 0x22, 0xd5, 0x22, 0x82, 0x06, 0xa8, 0x81, 888 0x0d, 0x39, 0x03, 0xca, 0x5f, 0x54, 0x67, 0x79, 889 0x20, 0xa7, 0xde, 0xd6, 0xba, 0x1e, 0x33, 0xe8, 890 0x85, 0xa0, 0x39, 0x5f, 0x8d, 0x8a, 0x91, 0x28, 891 0xb2, 0x63, 0xe6, 0x9b, 0xd1, 0x68, 0xff, 0xd8, 892 0x57, 0x7d, 0x85, 0x43, 0x70, 0xe1, 0xab, 0x55, 893 0x13, 0xc7, 0x02, 0x23, 0xfa, 0x8f, 0xf7, 0x9c, 894 0x25, 0x8e, 0xc1, 0x0e, 0xd4, 0xab, 0xf4, 0x81, 895 0x38, 0x86, 0x22, 0x16, 0x24, 0x06, 0x7f, 0x37, 896 0xbb, 0x2d, 0x16, 0x2b, 0xc7, 0x82, 0xe4, 0x93, 897 0xf6, 0x6b, 0x8f, 0x1f, 0xb6, 0x6f, 0x63, 0x66, 898 0x4d, 0xa4, 0x39, 0xd5, 0x57, 0x3b, 0x73, 0x69, 899 0x22, 0xf1, 0x62, 0xb3, 0xf4, 0x8c, 0x5c, 0x3f, 900 0xc8, 0xb1, 0x94, 0x76, 0x2b, 0x7f, 0x6b, 0x8d, 901 0xc6, 0xa5, 0x5f, 0xc6, 0x06, 0x74, 0x36, 0xea 902 }; 904 A.2.2. Role-specific Elements for 3072-bit FFC group 906 unsigned char group 15_initiator[384] = { 907 0x2a, 0xfc, 0x6e, 0xa4, 0x33, 0x54, 0xa1, 0xba, 908 0x34, 0x25, 0x84, 0x6c, 0xe3, 0x54, 0x2d, 0x52, 909 0xdd, 0x59, 0x9c, 0xef, 0xa6, 0x96, 0x2d, 0x1d, 910 0x53, 0xd4, 0xd4, 0x2e, 0xe9, 0x18, 0xb3, 0x2d, 911 0x75, 0x11, 0xeb, 0x3f, 0x1d, 0x3d, 0xac, 0x67, 912 0x62, 0x99, 0xa6, 0xe0, 0x22, 0xa1, 0xa5, 0xd6, 913 0x07, 0xfb, 0xe0, 0x76, 0x29, 0x8f, 0xf7, 0x3d, 914 0xa1, 0x99, 0x64, 0x44, 0xb5, 0xe4, 0xfa, 0x69, 915 0x00, 0x3c, 0x46, 0x56, 0x99, 0xf1, 0xb6, 0xc1, 916 0xa4, 0x2d, 0x54, 0xf4, 0x4e, 0x2c, 0xdc, 0x14, 917 0x27, 0xf5, 0xbb, 0x55, 0x61, 0xda, 0x36, 0x0d, 918 0x46, 0xa6, 0xd7, 0xe9, 0x9e, 0xcc, 0x7e, 0x35, 919 0x87, 0x32, 0xa1, 0xb9, 0x80, 0x07, 0x16, 0xaa, 920 0x74, 0xa5, 0x0f, 0xe0, 0x96, 0xb1, 0x25, 0x88, 921 0x6d, 0xda, 0x64, 0xc9, 0xa9, 0x5e, 0x6d, 0xb8, 922 0x7a, 0xf4, 0x42, 0xf3, 0xba, 0x37, 0xe8, 0xbd, 923 0x23, 0x36, 0x7b, 0xdc, 0x60, 0x93, 0x94, 0x5a, 924 0xb2, 0x99, 0x2a, 0x22, 0x1d, 0x50, 0xd6, 0x1d, 925 0xb7, 0xbc, 0xb9, 0xd1, 0x99, 0x3c, 0x06, 0x11, 926 0x79, 0x06, 0x21, 0x58, 0x60, 0x45, 0x3a, 0x00, 927 0xb6, 0x43, 0x0d, 0xcd, 0xa7, 0x60, 0x83, 0x3a, 928 0x7d, 0x9c, 0x35, 0x58, 0xc4, 0x0d, 0xcc, 0xef, 929 0x66, 0x55, 0xa9, 0xd2, 0xce, 0xe2, 0x80, 0x73, 930 0x26, 0xab, 0x7c, 0x8a, 0xf9, 0x1b, 0x3e, 0xf7, 931 0x75, 0x31, 0xea, 0x7f, 0x4a, 0x57, 0x15, 0x9a, 932 0x71, 0x92, 0xc3, 0x8f, 0xca, 0xab, 0x4b, 0x98, 933 0x11, 0xbe, 0x58, 0x8c, 0x20, 0x3d, 0x73, 0x4e, 934 0x39, 0xad, 0x17, 0x10, 0x99, 0x4f, 0x2e, 0x70, 935 0xae, 0xb6, 0xb8, 0x54, 0x2a, 0x37, 0x12, 0xf1, 936 0x85, 0x64, 0x9d, 0x97, 0x79, 0x8d, 0x69, 0x8c, 937 0x27, 0xd4, 0xf3, 0x65, 0x8a, 0xf3, 0x41, 0x42, 938 0x3e, 0x89, 0xf0, 0xa5, 0xbe, 0x71, 0x40, 0xb6, 939 0x56, 0x65, 0xb1, 0x62, 0x1f, 0x09, 0x76, 0xa3, 940 0xad, 0xb1, 0x16, 0x61, 0x87, 0x85, 0xfc, 0x1d, 941 0xa3, 0x1a, 0xf9, 0xa2, 0x4b, 0x25, 0x1c, 0x9f, 942 0x6d, 0x9b, 0xcd, 0x02, 0xc4, 0x0f, 0x64, 0x54, 943 0x97, 0x83, 0x2c, 0x41, 0xd6, 0x7b, 0x59, 0x0d, 944 0xcf, 0xdd, 0xa4, 0xd0, 0x75, 0xeb, 0xd9, 0x1c, 945 0xb8, 0xcb, 0x6c, 0x80, 0x00, 0x24, 0xf6, 0xf8, 946 0x62, 0x82, 0x97, 0x75, 0x0a, 0x4c, 0xfa, 0xbb, 947 0xbb, 0xe0, 0x87, 0x25, 0x86, 0x80, 0xc3, 0xb0, 948 0xc6, 0xb2, 0xfb, 0xe2, 0x8f, 0xb4, 0xd2, 0xc3, 949 0xbb, 0x78, 0xf4, 0xef, 0x9c, 0x1f, 0xd3, 0xa5, 950 0xab, 0xcf, 0xc2, 0xbd, 0x63, 0xc4, 0x5b, 0x2c, 951 0x9c, 0x3d, 0xa3, 0xed, 0xae, 0x97, 0xcc, 0x54, 952 0xdb, 0x3c, 0x04, 0x38, 0x1b, 0xaf, 0x22, 0x27, 953 0x53, 0xa4, 0xc1, 0xd6, 0x4a, 0x8f, 0xe9, 0x77, 954 0x13, 0x86, 0xf8, 0x0e, 0x1b, 0x2a, 0xdc, 0x6f 955 }; 956 unsigned char group 15_responder[384] = { 957 0xbe, 0xfa, 0x77, 0xff, 0x9c, 0xa4, 0x21, 0x86, 958 0x6f, 0x22, 0x42, 0xf2, 0x86, 0x12, 0x70, 0x57, 959 0x7b, 0x1e, 0x00, 0x82, 0x0a, 0x10, 0xad, 0x84, 960 0x52, 0xe6, 0x3c, 0x39, 0x5e, 0x0d, 0xcc, 0x13, 961 0xfc, 0x82, 0x32, 0x58, 0x1d, 0x74, 0xab, 0x6e, 962 0xfa, 0xf1, 0xc2, 0x2f, 0x80, 0x55, 0xd0, 0x1e, 963 0x8a, 0x6d, 0x75, 0x8e, 0x80, 0x24, 0x64, 0x0e, 964 0x66, 0xc2, 0xf5, 0xbf, 0x89, 0x1c, 0x6b, 0xee, 965 0x35, 0x4c, 0x44, 0x16, 0x12, 0xe9, 0x26, 0x44, 966 0x74, 0xdd, 0x24, 0x84, 0x36, 0xfe, 0x5a, 0x66, 967 0x8a, 0xb6, 0x7c, 0xab, 0xf2, 0x8c, 0xc3, 0x98, 968 0xe7, 0xb0, 0xd1, 0x45, 0x22, 0xbf, 0x49, 0xa4, 969 0x09, 0x0e, 0xf0, 0xdf, 0xb5, 0xc4, 0xf7, 0xc9, 970 0x2d, 0x9e, 0x65, 0x93, 0x5d, 0x84, 0x1b, 0x93, 971 0xec, 0x5e, 0xdc, 0xb6, 0x8b, 0xee, 0x84, 0x3e, 972 0x0d, 0xf8, 0x81, 0x00, 0x60, 0x55, 0x8d, 0xab, 973 0x51, 0x31, 0x2c, 0xf4, 0x85, 0xbe, 0x4b, 0xe0, 974 0x61, 0xc2, 0x9a, 0xd1, 0xdb, 0xb2, 0x32, 0x11, 975 0x01, 0xca, 0xa3, 0x23, 0x28, 0xf8, 0x5a, 0x40, 976 0xe2, 0xaf, 0x65, 0xd5, 0xa1, 0x4f, 0xae, 0xa2, 977 0x1e, 0x3c, 0x23, 0xd3, 0x53, 0xb7, 0x59, 0xe6, 978 0x02, 0x5f, 0xb1, 0x81, 0xd9, 0xd9, 0x41, 0x02, 979 0x2d, 0xf3, 0x7f, 0xbe, 0x08, 0x9c, 0xa8, 0x58, 980 0x4f, 0x72, 0x7a, 0x71, 0xc8, 0x34, 0xb4, 0xbe, 981 0xd6, 0x46, 0x55, 0x47, 0x15, 0x29, 0x95, 0x01, 982 0x19, 0x1f, 0xbb, 0xfe, 0x0d, 0xce, 0xb6, 0x41, 983 0xf7, 0x22, 0x19, 0x8b, 0x57, 0x2a, 0x42, 0x05, 984 0xbc, 0xba, 0x08, 0xb5, 0xd3, 0x5b, 0xab, 0xc5, 985 0x34, 0xb5, 0xe4, 0x2e, 0xf4, 0x23, 0x69, 0x63, 986 0x0c, 0x0e, 0xfd, 0x9d, 0xf1, 0x3f, 0xee, 0x14, 987 0xad, 0x9b, 0x2c, 0x61, 0x09, 0xb0, 0xea, 0x46, 988 0x3c, 0x16, 0xca, 0xcd, 0x72, 0x53, 0xe9, 0xf7, 989 0x87, 0x96, 0x6f, 0xec, 0xbf, 0x93, 0x36, 0x43, 990 0x66, 0x60, 0x48, 0xfe, 0x3f, 0xb0, 0x47, 0x26, 991 0x87, 0x86, 0x07, 0x08, 0xb4, 0x7d, 0xab, 0x60, 992 0xad, 0xf1, 0x84, 0xd9, 0x5a, 0xeb, 0xbb, 0xdb, 993 0x15, 0x69, 0x42, 0x62, 0x2c, 0x82, 0x6a, 0x24, 994 0xcb, 0xce, 0x7d, 0xd9, 0xd3, 0xcb, 0x10, 0x55, 995 0x73, 0x36, 0x15, 0xe2, 0x05, 0x91, 0xc9, 0x68, 996 0x09, 0x76, 0xcb, 0xcf, 0x6c, 0xd2, 0x06, 0x34, 997 0xcd, 0xb5, 0x69, 0x44, 0x66, 0x33, 0x37, 0xec, 998 0x24, 0x17, 0x73, 0x79, 0x74, 0xdd, 0xba, 0x04, 999 0xad, 0xb9, 0xd6, 0xef, 0x60, 0xcb, 0x58, 0xfd, 1000 0x71, 0xac, 0x6e, 0xb8, 0x78, 0xd7, 0x4d, 0x6e, 1001 0x72, 0xa1, 0x78, 0x68, 0xbd, 0x9c, 0x56, 0x81, 1002 0x94, 0x69, 0xc7, 0x63, 0xe3, 0x2b, 0xda, 0x76, 1003 0xe5, 0x2f, 0xf8, 0xaa, 0xb2, 0x4b, 0xf6, 0xa1, 1004 0xe5, 0xa7, 0xa2, 0xbc, 0xf9, 0x0a, 0xb9, 0x63 1005 }; 1007 A.2.3. Role-specific Elements for 4096-bit FFC group 1009 unsigned char group 16_initiator[512] = { 1010 0x2e, 0xf4, 0x19, 0xbc, 0x45, 0x4b, 0x5a, 0x16, 1011 0x05, 0x38, 0xc0, 0x82, 0x6e, 0xab, 0x66, 0xcc, 1012 0xe5, 0xd1, 0xd8, 0x64, 0xdc, 0x5a, 0x8d, 0xae, 1013 0x90, 0x00, 0x1a, 0x72, 0xb9, 0xd5, 0xbb, 0xfa, 1014 0xc1, 0x91, 0xe3, 0xde, 0x50, 0xed, 0x31, 0x31, 1015 0x4b, 0xf2, 0xb7, 0x2e, 0xbe, 0xa0, 0x31, 0x9b, 1016 0xce, 0xbf, 0x35, 0xd8, 0xde, 0xb6, 0x38, 0xd3, 1017 0x2c, 0xfc, 0xf5, 0x7b, 0x5f, 0x60, 0xef, 0x11, 1018 0x08, 0x44, 0x0a, 0x68, 0x6c, 0x07, 0x40, 0x3b, 1019 0xdc, 0xc8, 0x1d, 0xdd, 0xd0, 0xc3, 0x15, 0x19, 1020 0xcf, 0x85, 0x43, 0xc0, 0xab, 0x65, 0x75, 0x48, 1021 0x75, 0x54, 0x5d, 0x9d, 0x73, 0xd6, 0x57, 0x08, 1022 0x78, 0x0c, 0x3b, 0xfd, 0x22, 0x90, 0xdf, 0x5b, 1023 0x13, 0x90, 0x17, 0x61, 0xb3, 0x18, 0x67, 0x14, 1024 0x1e, 0xaa, 0x81, 0xea, 0x9e, 0xd0, 0xe7, 0x4e, 1025 0x8b, 0x69, 0xc8, 0xef, 0xe4, 0x58, 0x9e, 0xf5, 1026 0x86, 0xd1, 0x3b, 0xd2, 0x94, 0x7d, 0x8a, 0x95, 1027 0xca, 0xdc, 0x04, 0x80, 0x60, 0x66, 0x4f, 0x2c, 1028 0xf5, 0x69, 0xb4, 0xd6, 0x9e, 0xe6, 0xf9, 0x88, 1029 0x0a, 0x0b, 0x5e, 0x01, 0xc7, 0x50, 0xad, 0xe8, 1030 0x4f, 0x1d, 0x0c, 0xcd, 0x6c, 0x92, 0x46, 0x2e, 1031 0x06, 0x4f, 0x7d, 0x18, 0x1b, 0xb8, 0x03, 0xef, 1032 0xff, 0x85, 0x59, 0x16, 0x44, 0xd3, 0x28, 0x80, 1033 0x58, 0x91, 0xf0, 0x9c, 0x08, 0x83, 0x87, 0x63, 1034 0xf8, 0x6d, 0xc9, 0x3a, 0x17, 0x9d, 0xb0, 0x50, 1035 0x4f, 0x1f, 0xa5, 0x6a, 0x88, 0xda, 0xf2, 0xab, 1036 0x93, 0x36, 0x58, 0x9b, 0xf3, 0xe7, 0x93, 0xac, 1037 0x28, 0xd9, 0x62, 0xf3, 0xc5, 0xe0, 0x2c, 0xe1, 1038 0x23, 0x38, 0xb9, 0xd7, 0xfc, 0x54, 0x0e, 0x8e, 1039 0x28, 0xf3, 0x88, 0x32, 0x81, 0x8b, 0x45, 0x47, 1040 0xe9, 0x54, 0xff, 0x7f, 0x8b, 0x45, 0xc2, 0xc5, 1041 0xa1, 0xe3, 0x9a, 0x02, 0xd4, 0x8b, 0x91, 0x44, 1042 0x90, 0xfa, 0xb0, 0x86, 0x27, 0xac, 0x09, 0x7b, 1043 0x93, 0x75, 0x86, 0xfd, 0x46, 0x99, 0xbf, 0xd9, 1044 0xbd, 0xe2, 0xf2, 0x79, 0x24, 0x9a, 0x84, 0x5c, 1045 0x12, 0x67, 0xf8, 0xe1, 0xa8, 0xd6, 0x60, 0x31, 1046 0x0f, 0xd9, 0x7f, 0xb3, 0xba, 0x0c, 0x92, 0x55, 1047 0x6a, 0x5c, 0x8a, 0xca, 0x98, 0x78, 0xbc, 0x0d, 1048 0x9f, 0x6c, 0x26, 0xab, 0xfb, 0x80, 0xed, 0xa8, 1049 0xb3, 0x08, 0x15, 0xaa, 0x46, 0x09, 0x6a, 0x55, 1050 0x76, 0xd4, 0xbf, 0xc0, 0x84, 0xf6, 0xf0, 0x41, 1051 0xc0, 0xf8, 0xdb, 0xb7, 0x46, 0xe2, 0xa0, 0xf3, 1052 0xde, 0x6a, 0xdc, 0x44, 0x9c, 0x79, 0xb2, 0xff, 1053 0xc9, 0xaa, 0x42, 0x4d, 0x75, 0x53, 0x39, 0xaf, 1054 0x91, 0x84, 0x51, 0x9b, 0xc7, 0x5b, 0xbc, 0x36, 1055 0x5b, 0xbe, 0x47, 0xd4, 0x8b, 0x25, 0x4c, 0xa1, 1056 0xf6, 0x0f, 0x8a, 0x35, 0x45, 0x24, 0x23, 0x48, 1057 0x1a, 0xda, 0x84, 0xf9, 0x33, 0x67, 0x55, 0x24, 1058 0xf1, 0xff, 0xe0, 0x28, 0x5c, 0x8c, 0x85, 0x28, 1059 0xf1, 0xfc, 0x3d, 0x31, 0xb2, 0x38, 0x24, 0x79, 1060 0x1b, 0x80, 0x44, 0xca, 0xd9, 0x25, 0x87, 0xa1, 1061 0xba, 0x7f, 0xba, 0x40, 0x01, 0x1c, 0x7a, 0xc1, 1062 0x09, 0xe6, 0x37, 0xc0, 0xd3, 0x8d, 0xc5, 0xc4, 1063 0x81, 0xad, 0xc9, 0xa2, 0x86, 0x93, 0xb5, 0x50, 1064 0x29, 0xd8, 0x03, 0x8b, 0x76, 0xd7, 0x94, 0x65, 1065 0x7a, 0x8c, 0x85, 0xad, 0xd6, 0xf7, 0x83, 0x64, 1066 0x86, 0x5a, 0x53, 0xc4, 0xa8, 0x56, 0x87, 0xa1, 1067 0xb3, 0xd9, 0x8c, 0xed, 0xb8, 0x10, 0x91, 0xdf, 1068 0xbc, 0xb4, 0x64, 0xa8, 0x7c, 0x51, 0xf6, 0xaa, 1069 0x47, 0x62, 0xbe, 0x01, 0xa4, 0x10, 0x4d, 0x4a, 1070 0x9a, 0xf1, 0x0c, 0xb6, 0xd0, 0xde, 0xb2, 0x78, 1071 0x5b, 0xd8, 0x65, 0x6f, 0x6e, 0xf8, 0x12, 0x20, 1072 0xac, 0x3f, 0x1b, 0x6e, 0x3a, 0x0d, 0xed, 0x84, 1073 0xde, 0x5e, 0x23, 0x83, 0x9e, 0xd9, 0x6d, 0x05 1074 }; 1075 unsigned char group 16_responder[512] = { 1076 0xe1, 0x1e, 0x9b, 0x32, 0x93, 0x44, 0xc0, 0xac, 1077 0xc2, 0x27, 0x6c, 0x08, 0xdc, 0x7f, 0xe7, 0x7b, 1078 0xa5, 0x21, 0xaa, 0x31, 0xc3, 0xd5, 0x45, 0xe2, 1079 0x8c, 0xd5, 0x01, 0x4f, 0x1c, 0x33, 0xba, 0x5e, 1080 0x28, 0x4e, 0x85, 0xd8, 0x2a, 0x88, 0x2f, 0x93, 1081 0x1d, 0x5e, 0x00, 0x2f, 0xc1, 0x4a, 0xc2, 0x17, 1082 0x76, 0x0f, 0xfb, 0xfd, 0x8b, 0xf7, 0xbc, 0x52, 1083 0x3a, 0x04, 0x32, 0x9e, 0xd7, 0xdf, 0xf2, 0x32, 1084 0x57, 0x15, 0xe1, 0xd4, 0x36, 0xaf, 0xd0, 0xb7, 1085 0xfc, 0xb3, 0x00, 0x11, 0x57, 0xf4, 0x85, 0xed, 1086 0x85, 0x47, 0xc9, 0xe8, 0xca, 0x89, 0x67, 0x95, 1087 0x44, 0x7b, 0x98, 0x38, 0xed, 0x6e, 0xb8, 0xc6, 1088 0x8b, 0xb0, 0xf5, 0x15, 0xde, 0xaf, 0x5b, 0x19, 1089 0xe2, 0x8f, 0xde, 0x85, 0x47, 0xdd, 0x36, 0xd2, 1090 0xf4, 0x49, 0xbd, 0x06, 0x75, 0xaa, 0x74, 0x7c, 1091 0xc9, 0x0d, 0xc2, 0x10, 0x3c, 0xf6, 0x0d, 0xe1, 1092 0x7a, 0x3f, 0x06, 0x8d, 0x98, 0x98, 0x9b, 0x21, 1093 0xdf, 0x30, 0xf6, 0xa6, 0x3d, 0x72, 0x59, 0x69, 1094 0x3b, 0x9f, 0xad, 0x82, 0x60, 0x8e, 0xf0, 0xa6, 1095 0x2c, 0xa6, 0x3c, 0x94, 0x1e, 0x1c, 0xe6, 0x8a, 1096 0xf2, 0xef, 0x66, 0xa9, 0x89, 0x80, 0x82, 0x5e, 1097 0x41, 0x51, 0xf4, 0x6e, 0xdd, 0xeb, 0x23, 0x67, 1098 0x42, 0x80, 0x28, 0xab, 0x8a, 0xf5, 0x04, 0xa1, 1099 0xae, 0x63, 0xdf, 0xa7, 0x8f, 0xdf, 0x91, 0x50, 1100 0x1d, 0x38, 0x52, 0xb3, 0x8b, 0x45, 0x9d, 0x91, 1101 0x91, 0xba, 0x07, 0x0b, 0xce, 0xd6, 0xb2, 0xa2, 1102 0xfc, 0xca, 0x16, 0x43, 0xae, 0x63, 0xf6, 0xc2, 1103 0xb3, 0xac, 0x44, 0x78, 0x88, 0xbe, 0xd1, 0x69, 1104 0xbb, 0x93, 0x40, 0x6f, 0x11, 0x83, 0xfa, 0x33, 1105 0xc4, 0xb4, 0x4b, 0x66, 0xda, 0xa3, 0x30, 0x1b, 1106 0x5d, 0x21, 0xc8, 0x3f, 0xde, 0xc5, 0xce, 0x2b, 1107 0x01, 0xd1, 0x4e, 0xcb, 0xa5, 0xe5, 0x42, 0x12, 1108 0xea, 0x48, 0xd1, 0x5c, 0x27, 0xf9, 0x94, 0x82, 1109 0x52, 0x8d, 0xe6, 0xbf, 0x67, 0x3e, 0xbd, 0xbb, 1110 0xea, 0xe7, 0x3c, 0x85, 0xf3, 0xcf, 0x8a, 0xd8, 1111 0x1f, 0x5c, 0x33, 0x90, 0x9b, 0x2c, 0x2a, 0xf1, 1112 0x29, 0x89, 0x1e, 0x42, 0x39, 0xef, 0xc0, 0xca, 1113 0x96, 0x3a, 0x8e, 0xc9, 0x73, 0xb2, 0xa8, 0x95, 1114 0xcb, 0x61, 0xc7, 0xa6, 0xac, 0x55, 0xb4, 0xef, 1115 0x71, 0x3c, 0x6e, 0xfd, 0x40, 0xe8, 0x19, 0x5b, 1116 0x2d, 0x66, 0x90, 0x8b, 0xa0, 0x8c, 0x56, 0xe4, 1117 0xaa, 0x10, 0xd5, 0xca, 0xed, 0x5e, 0x41, 0x19, 1118 0x57, 0x2b, 0xbd, 0x93, 0xf4, 0xc5, 0xaf, 0x47, 1119 0xf1, 0x61, 0xd1, 0xdd, 0xef, 0x3a, 0x73, 0xdd, 1120 0x28, 0xd0, 0xa9, 0xf1, 0x3b, 0x59, 0x85, 0x34, 1121 0x4a, 0xda, 0x1d, 0xa4, 0xf6, 0x57, 0x76, 0x04, 1122 0x88, 0x75, 0x68, 0xb2, 0x1b, 0xc4, 0xef, 0x1a, 1123 0x2c, 0x2d, 0x72, 0xa4, 0xbf, 0xfc, 0x62, 0x6e, 1124 0xe8, 0x3f, 0x07, 0x6f, 0x49, 0x62, 0x2d, 0x3b, 1125 0xca, 0x61, 0xeb, 0x9a, 0x85, 0xb0, 0x1f, 0x2b, 1126 0x00, 0xb6, 0x59, 0x21, 0x9d, 0xc1, 0x91, 0xd8, 1127 0x20, 0x0d, 0x83, 0x2c, 0xfa, 0x67, 0xd5, 0x5a, 1128 0x1d, 0xa5, 0xdf, 0xc5, 0xae, 0x4b, 0x79, 0x41, 1129 0x34, 0x18, 0x5b, 0xff, 0xa9, 0x07, 0x3c, 0x35, 1130 0x92, 0x5a, 0x2b, 0x1a, 0x13, 0x5a, 0x2c, 0x88, 1131 0x4c, 0x5b, 0x87, 0xee, 0x19, 0xc5, 0xca, 0xf9, 1132 0x2b, 0x4c, 0x44, 0x59, 0x8b, 0x1f, 0x65, 0x48, 1133 0x49, 0xbc, 0xb5, 0xf0, 0x02, 0x96, 0xb5, 0x18, 1134 0xc5, 0x58, 0x01, 0x5c, 0xf3, 0x26, 0x39, 0x7b, 1135 0x35, 0x74, 0x20, 0x0c, 0xcb, 0x86, 0x8d, 0x70, 1136 0xfc, 0xce, 0xdf, 0x88, 0x7f, 0xe9, 0x6b, 0xc7, 1137 0x08, 0x2d, 0x17, 0xea, 0x72, 0x6e, 0xbc, 0xdd, 1138 0xc8, 0xfe, 0x62, 0x7c, 0x8f, 0x9a, 0x5e, 0xad, 1139 0x47, 0x60, 0xb6, 0xa1, 0x82, 0x1a, 0xf9, 0xcc 1140 }; 1142 A.2.4. Role-specific Elements for 8192-bit FFC group 1144 unsigned char group 18_initiator[1024] = { 1145 0x42, 0x5b, 0x57, 0x35, 0x57, 0xed, 0x1c, 0x14, 1146 0xcd, 0x91, 0x34, 0x61, 0x75, 0x67, 0x88, 0x52, 1147 0xf9, 0x10, 0x44, 0xad, 0x3c, 0xbf, 0x83, 0x2b, 1148 0xd7, 0x94, 0x70, 0x7e, 0xe2, 0x79, 0x72, 0xfd, 1149 0x44, 0xdb, 0xc2, 0xb5, 0x21, 0xae, 0x4a, 0x78, 1150 0xad, 0x45, 0x09, 0xa6, 0x3c, 0x79, 0x07, 0x09, 1151 0x65, 0x57, 0xf2, 0xac, 0x81, 0x90, 0xe9, 0x77, 1152 0x3e, 0x7a, 0xd4, 0xbf, 0x56, 0x81, 0x35, 0x41, 1153 0x31, 0x21, 0x8a, 0xfb, 0x03, 0xa2, 0xe0, 0x01, 1154 0x27, 0x9b, 0x07, 0x45, 0x35, 0xcc, 0x84, 0x7e, 1155 0xcc, 0x7b, 0x01, 0xb6, 0x80, 0xd9, 0x2e, 0x1e, 1156 0xa3, 0x09, 0xf3, 0x15, 0x47, 0xf5, 0x37, 0x0d, 1157 0xb0, 0x22, 0x39, 0x5a, 0xd1, 0xb3, 0xf5, 0x11, 1158 0x5c, 0x63, 0x08, 0x8e, 0x80, 0xde, 0x08, 0xe2, 1159 0xf5, 0xbc, 0xbb, 0xae, 0x21, 0xb5, 0xed, 0x2c, 1160 0x7b, 0xa9, 0xdf, 0x54, 0xf3, 0x3a, 0xd5, 0x0e, 1161 0x34, 0x33, 0x97, 0xae, 0x7f, 0x35, 0x67, 0x4e, 1162 0x29, 0xca, 0x1d, 0xe6, 0xea, 0x04, 0x23, 0xad, 1163 0x8f, 0x1e, 0xe3, 0xeb, 0xd2, 0x55, 0xc1, 0x02, 1164 0x2e, 0x95, 0x4f, 0xd9, 0x97, 0x17, 0xd9, 0x7f, 1165 0x31, 0xca, 0xf7, 0xa8, 0xa6, 0x59, 0x44, 0x44, 1166 0xd2, 0x3f, 0xbe, 0x71, 0xb6, 0x87, 0xe8, 0x07, 1167 0x84, 0x0d, 0x46, 0x7b, 0x24, 0x56, 0x74, 0x06, 1168 0xcd, 0x46, 0x34, 0x6a, 0x73, 0x18, 0xbc, 0xbb, 1169 0x57, 0x5e, 0xb1, 0x8d, 0xf5, 0xc7, 0xb6, 0x85, 1170 0xdd, 0x14, 0x8a, 0x74, 0x15, 0xf1, 0x23, 0xda, 1171 0xd3, 0xac, 0xfc, 0x59, 0x61, 0x0a, 0x78, 0x3b, 1172 0x5a, 0x93, 0x8e, 0x10, 0x59, 0x74, 0x7c, 0xa8, 1173 0x2c, 0x97, 0x50, 0xf0, 0x44, 0x73, 0x03, 0xad, 1174 0xb4, 0xb8, 0x1a, 0x2b, 0xa7, 0x54, 0xdb, 0x33, 1175 0xd3, 0x82, 0xda, 0x8b, 0x93, 0x39, 0x70, 0xe4, 1176 0x1a, 0x3a, 0x88, 0xc4, 0x9f, 0x62, 0x90, 0x3a, 1177 0xeb, 0x32, 0x07, 0x80, 0x64, 0x95, 0xf2, 0x9e, 1178 0xf1, 0xb5, 0xed, 0xcf, 0x78, 0x1a, 0x44, 0x96, 1179 0x48, 0xb5, 0x40, 0xc9, 0x0a, 0x46, 0xa6, 0xcb, 1180 0xb5, 0x85, 0xf2, 0x63, 0x5c, 0x0c, 0x4e, 0x77, 1181 0x06, 0xc1, 0x44, 0x5f, 0xd9, 0x0b, 0xeb, 0x14, 1182 0xa4, 0x74, 0x14, 0x57, 0x55, 0x5b, 0xad, 0xb2, 1183 0x92, 0x53, 0x0a, 0x10, 0x54, 0x61, 0xae, 0x95, 1184 0x2f, 0x54, 0x83, 0xfe, 0x22, 0x67, 0x3e, 0xe3, 1185 0x99, 0x06, 0x4e, 0x0c, 0x6a, 0x4d, 0xd0, 0xcb, 1186 0x82, 0xc1, 0x67, 0xfe, 0xb2, 0x9b, 0xde, 0xc4, 1187 0x0e, 0x19, 0x97, 0x59, 0xc8, 0xe3, 0x75, 0xc2, 1188 0xf1, 0xd6, 0xff, 0xf6, 0xca, 0x84, 0x4c, 0x40, 1189 0xa4, 0x41, 0xd0, 0xf6, 0x09, 0x99, 0x6d, 0x94, 1190 0x14, 0x80, 0xe2, 0x0a, 0x44, 0x5f, 0xf4, 0xce, 1191 0xe3, 0xc9, 0x3f, 0xff, 0x13, 0xdc, 0x90, 0xce, 1192 0x35, 0x21, 0xa9, 0x83, 0x59, 0xa3, 0x67, 0x3c, 1193 0xa4, 0x84, 0x3f, 0x82, 0x70, 0x19, 0xf1, 0x84, 1194 0x1a, 0x3f, 0xba, 0x71, 0xa3, 0x73, 0x0b, 0xa2, 1195 0x80, 0x1d, 0x45, 0xa9, 0xf0, 0xba, 0x4b, 0x72, 1196 0x7b, 0xc0, 0x16, 0x36, 0x37, 0x3e, 0x39, 0x2e, 1197 0xcb, 0x5e, 0x1b, 0x03, 0x6d, 0xab, 0xd1, 0xd0, 1198 0x24, 0x6f, 0x0f, 0x35, 0x83, 0x8f, 0xd1, 0x1b, 1199 0x0b, 0xb2, 0x69, 0xcf, 0x78, 0x50, 0xeb, 0x52, 1200 0xd6, 0x66, 0x01, 0xc9, 0x50, 0xa8, 0x11, 0x4d, 1201 0x2b, 0xf7, 0x95, 0x43, 0xe1, 0x44, 0x2c, 0x19, 1202 0xa3, 0x9e, 0xc6, 0x71, 0xdc, 0x76, 0x47, 0x1d, 1203 0xb8, 0x53, 0xab, 0xed, 0x28, 0x01, 0xdd, 0x6b, 1204 0x3b, 0xe2, 0x19, 0xce, 0xf9, 0x9b, 0xac, 0x9b, 1205 0xba, 0x50, 0x93, 0x6f, 0x90, 0xb3, 0x5a, 0x58, 1206 0xbf, 0x92, 0x2a, 0x30, 0x35, 0xe8, 0x0f, 0x23, 1207 0xc1, 0x8c, 0x86, 0x94, 0x89, 0xd2, 0x7c, 0x64, 1208 0x60, 0x32, 0xa6, 0x30, 0xdd, 0x50, 0xf3, 0x47, 1209 0xc2, 0x59, 0xb9, 0xa1, 0xf0, 0xa7, 0x7e, 0xb1, 1210 0x08, 0xea, 0xfb, 0x72, 0x7e, 0x24, 0xe0, 0x75, 1211 0x8e, 0x0e, 0xbf, 0xa0, 0x89, 0xa0, 0x73, 0x23, 1212 0x85, 0x37, 0xd6, 0xad, 0x67, 0x08, 0x8d, 0x4e, 1213 0x1c, 0x81, 0xdc, 0x3c, 0xd9, 0x69, 0x4a, 0x26, 1214 0x81, 0x4d, 0xb6, 0x4c, 0x70, 0x3b, 0xf9, 0x43, 1215 0xf9, 0x2e, 0xd7, 0xba, 0x24, 0x82, 0xc7, 0x67, 1216 0xac, 0xc4, 0xbe, 0x14, 0xf7, 0xdf, 0xd0, 0x6e, 1217 0xa0, 0x70, 0x0d, 0xff, 0x31, 0x59, 0xc7, 0xf6, 1218 0x43, 0x5f, 0x32, 0x94, 0xd1, 0xf5, 0x9c, 0x7c, 1219 0xff, 0x55, 0xc4, 0xf0, 0x43, 0x22, 0xe2, 0xb1, 1220 0x58, 0x83, 0xa7, 0x7e, 0x00, 0x15, 0xee, 0xe1, 1221 0xff, 0xe8, 0x81, 0xbc, 0xb1, 0xfc, 0x3d, 0xc6, 1222 0x5e, 0x12, 0xbe, 0xa2, 0x71, 0x82, 0x34, 0xbc, 1223 0xb9, 0x7a, 0xe5, 0x22, 0xc9, 0xe6, 0x13, 0x62, 1224 0x7a, 0xb3, 0x85, 0xec, 0xe3, 0x6d, 0xd0, 0xb6, 1225 0x44, 0x8c, 0x62, 0x3e, 0x06, 0x49, 0x77, 0x9d, 1226 0x90, 0x62, 0x19, 0x0f, 0x1e, 0xd3, 0x6a, 0x2b, 1227 0x9b, 0xe3, 0xf1, 0x9b, 0xc5, 0xc3, 0x81, 0x38, 1228 0x3f, 0x40, 0x26, 0x08, 0x0c, 0x4e, 0xfa, 0x0e, 1229 0x41, 0xb0, 0x4a, 0x6f, 0x85, 0x6f, 0x49, 0x94, 1230 0x01, 0x90, 0x8d, 0x02, 0x4b, 0x22, 0x54, 0x71, 1231 0xbb, 0x2b, 0xab, 0xb6, 0x95, 0xf7, 0x51, 0x53, 1232 0x27, 0x6c, 0x5a, 0x8e, 0x10, 0x03, 0x64, 0x63, 1233 0xf4, 0x2f, 0x40, 0x94, 0x66, 0xc7, 0x59, 0xa9, 1234 0xba, 0xd1, 0x4d, 0xa6, 0x8c, 0x55, 0x82, 0x25, 1235 0xa6, 0x3b, 0xb5, 0x92, 0xc1, 0x81, 0xf6, 0x2f, 1236 0x9d, 0x6d, 0xc0, 0x4c, 0x98, 0xd0, 0x82, 0x78, 1237 0xa5, 0xac, 0xba, 0xee, 0x33, 0x47, 0xa3, 0x49, 1238 0x00, 0xdd, 0x13, 0x09, 0x41, 0xaf, 0x52, 0xe3, 1239 0x5f, 0xe8, 0xc2, 0x66, 0x22, 0x53, 0x3c, 0xd9, 1240 0x17, 0xe6, 0x57, 0x0c, 0x49, 0xc0, 0xda, 0x45, 1241 0xc0, 0x61, 0x1c, 0x25, 0xd2, 0xa9, 0x90, 0x82, 1242 0x7e, 0x6b, 0x4a, 0xc1, 0xd2, 0xa3, 0x86, 0x0a, 1243 0x73, 0x8b, 0x42, 0x3f, 0xc9, 0x29, 0x70, 0xda, 1244 0xff, 0x29, 0x50, 0xa5, 0x25, 0x9f, 0xdd, 0xef, 1245 0x03, 0x2a, 0x79, 0x62, 0xf6, 0x55, 0xe8, 0x01, 1246 0xc0, 0x15, 0xb3, 0xb6, 0xb3, 0xad, 0x53, 0xd8, 1247 0x7e, 0xea, 0xef, 0xa5, 0x0e, 0xbd, 0x97, 0xfc, 1248 0xac, 0x15, 0xa5, 0x91, 0x4a, 0xc8, 0x9a, 0x4f, 1249 0x60, 0x0e, 0x64, 0xa4, 0x85, 0x8d, 0x85, 0x0a, 1250 0x6a, 0xd5, 0xe4, 0x67, 0x0a, 0x3a, 0x5b, 0x0e, 1251 0xe7, 0xc3, 0xf5, 0x76, 0x34, 0x8e, 0x47, 0x15, 1252 0x7b, 0x0f, 0xd0, 0x3b, 0xee, 0xd5, 0x9b, 0xa3, 1253 0x9a, 0x01, 0xb5, 0x90, 0x9d, 0xe1, 0xf2, 0xa2, 1254 0x35, 0xdd, 0x0b, 0xd8, 0x1d, 0xd7, 0xd6, 0x8f, 1255 0x34, 0x5d, 0x69, 0x9b, 0xc3, 0xae, 0x29, 0xcf, 1256 0x99, 0xf4, 0x94, 0x7f, 0x35, 0x92, 0x09, 0x21, 1257 0x93, 0x35, 0xba, 0x25, 0x97, 0x9a, 0xc5, 0x6c, 1258 0x64, 0xbe, 0xb1, 0x0a, 0x90, 0x4f, 0x3c, 0x16, 1259 0xe5, 0x59, 0x07, 0xb4, 0x6e, 0x4b, 0x50, 0x54, 1260 0x97, 0x53, 0xa5, 0x87, 0x9c, 0x4d, 0xb5, 0x96, 1261 0x76, 0xd1, 0x7e, 0x3d, 0xd1, 0x60, 0xb0, 0x14, 1262 0xc3, 0x43, 0xba, 0xdb, 0x2d, 0x16, 0x94, 0xdf, 1263 0xc0, 0x97, 0x84, 0x58, 0xb4, 0xdc, 0xd3, 0x02, 1264 0x83, 0xb8, 0x04, 0x94, 0xda, 0x66, 0x2f, 0x1e, 1265 0xf6, 0xe1, 0x82, 0x59, 0x1d, 0xfe, 0x93, 0xe6, 1266 0x92, 0xf7, 0x7d, 0xb9, 0x25, 0x97, 0xe2, 0x1c, 1267 0x2f, 0x3a, 0x42, 0xb6, 0xac, 0x46, 0x1a, 0x37, 1268 0xe8, 0xfd, 0x86, 0x51, 0xf2, 0x07, 0x46, 0xb3, 1269 0xb2, 0x71, 0xf6, 0xd0, 0x3d, 0x7e, 0x0a, 0x09, 1270 0x91, 0x96, 0xbb, 0xb6, 0x13, 0xa1, 0x04, 0xf4, 1271 0x5b, 0x82, 0xe9, 0x69, 0xf1, 0xfd, 0xab, 0x06, 1272 0x42, 0xda, 0xa9, 0x6a, 0xb7, 0x64, 0x30, 0x91 1273 }; 1274 unsigned char group 18_responder[1024] = { 1275 0xdc, 0x33, 0x0f, 0xaf, 0x4a, 0x8f, 0x0d, 0x35, 1276 0xad, 0x20, 0x14, 0xfb, 0x37, 0x88, 0xee, 0xeb, 1277 0xdb, 0x71, 0x4d, 0x4b, 0x2a, 0x1d, 0xff, 0x5e, 1278 0xe7, 0x78, 0x2c, 0xa4, 0xc7, 0x6d, 0x4d, 0xb0, 1279 0x39, 0xb3, 0xbf, 0xc4, 0x2e, 0xe6, 0x30, 0x66, 1280 0x3d, 0x52, 0x2d, 0xf1, 0xce, 0x44, 0x6e, 0x1e, 1281 0x89, 0x85, 0x97, 0x4b, 0xdc, 0x50, 0x0c, 0xaf, 1282 0x59, 0xc8, 0xaf, 0x7f, 0xbb, 0x67, 0xb3, 0x68, 1283 0xf3, 0xf9, 0x10, 0x30, 0xde, 0x27, 0x2d, 0x83, 1284 0xc5, 0x9a, 0xa9, 0xc1, 0x06, 0x36, 0xb0, 0xdd, 1285 0xe5, 0x55, 0x1b, 0xbf, 0x7c, 0xbf, 0x2d, 0xca, 1286 0x8d, 0x84, 0x4d, 0x55, 0x44, 0x28, 0xe4, 0xcc, 1287 0xb4, 0xb8, 0x26, 0xd5, 0x11, 0x91, 0xdb, 0xf8, 1288 0x1b, 0x57, 0x17, 0xad, 0x3e, 0x2b, 0xee, 0x7a, 1289 0x7a, 0xdc, 0xc5, 0x46, 0xc9, 0x88, 0xf1, 0x39, 1290 0x9e, 0xf3, 0xca, 0x6d, 0x09, 0x11, 0xe4, 0xcc, 1291 0x31, 0x03, 0x80, 0xd1, 0x7d, 0xc8, 0xf7, 0xc5, 1292 0x10, 0x78, 0x5d, 0x15, 0xa8, 0xe3, 0x55, 0xd2, 1293 0x01, 0x54, 0x96, 0x99, 0xaf, 0x18, 0x33, 0x8c, 1294 0x71, 0xf9, 0x25, 0x7a, 0xc0, 0xa5, 0xfd, 0x61, 1295 0xf1, 0x04, 0xc5, 0x22, 0xfa, 0xa6, 0xdd, 0xc1, 1296 0x13, 0xf4, 0x2b, 0x39, 0xa8, 0x17, 0x8d, 0x68, 1297 0xb0, 0xe9, 0x70, 0x12, 0xda, 0x60, 0x47, 0x2b, 1298 0x17, 0xf4, 0x14, 0x53, 0xad, 0x29, 0x1c, 0xa5, 1299 0x07, 0x43, 0x91, 0xe9, 0xfb, 0xf4, 0x5d, 0x4c, 1300 0xe5, 0xb8, 0x07, 0x27, 0x37, 0x03, 0x39, 0xf8, 1301 0x28, 0x2d, 0xab, 0x2f, 0x5a, 0x1d, 0x41, 0xa3, 1302 0x38, 0x2e, 0x42, 0xe6, 0xe2, 0x32, 0xf9, 0x75, 1303 0xca, 0x19, 0x80, 0x0d, 0xd1, 0x15, 0x73, 0x45, 1304 0xda, 0x8a, 0x67, 0x7a, 0x3c, 0xfd, 0x6b, 0x2d, 1305 0x46, 0xa4, 0xd0, 0xd2, 0x8d, 0x12, 0x2d, 0x54, 1306 0x5d, 0x1d, 0xa7, 0xc3, 0x44, 0x98, 0x4f, 0x6d, 1307 0x83, 0xbf, 0x33, 0xf8, 0x51, 0xf2, 0x29, 0xa3, 1308 0x48, 0x26, 0x43, 0x26, 0xfa, 0x3a, 0x4a, 0x48, 1309 0x6a, 0xac, 0x0d, 0x2c, 0xb5, 0x89, 0xec, 0xff, 1310 0xc3, 0x6f, 0x28, 0x54, 0xe6, 0x54, 0x35, 0x5f, 1311 0x93, 0xb7, 0x9e, 0xfa, 0x04, 0x1b, 0x31, 0x5d, 1312 0xe0, 0x58, 0x4a, 0x8d, 0x54, 0xb9, 0x63, 0x72, 1313 0x4a, 0x68, 0x5f, 0x9d, 0x1b, 0xde, 0xdf, 0xbb, 1314 0xae, 0x9b, 0xb4, 0x65, 0x91, 0x93, 0x91, 0x9f, 1315 0xd9, 0xb5, 0xbc, 0x41, 0x32, 0xd3, 0x37, 0x95, 1316 0xb1, 0x0e, 0xec, 0xe5, 0x18, 0x38, 0xf9, 0xbe, 1317 0xc9, 0xf9, 0xc1, 0x5c, 0x18, 0x9e, 0xd0, 0x56, 1318 0x35, 0xe1, 0xf2, 0xd1, 0xeb, 0x09, 0x18, 0xc4, 1319 0xe3, 0x56, 0x10, 0x47, 0x3c, 0xb4, 0x8b, 0xcc, 1320 0xf0, 0xab, 0x4c, 0xcd, 0xdb, 0x6c, 0xa2, 0x39, 1321 0xb9, 0x32, 0xee, 0x57, 0x33, 0x9e, 0x9b, 0xc8, 1322 0x30, 0xa1, 0x60, 0x3f, 0xd0, 0xdb, 0xf3, 0xb5, 1323 0x14, 0x9f, 0xab, 0x9e, 0xaf, 0xd6, 0x88, 0x12, 1324 0x26, 0xaf, 0xf6, 0x3b, 0x4c, 0x20, 0xf9, 0xae, 1325 0xa4, 0x85, 0x7b, 0x07, 0x8a, 0x1e, 0x10, 0x90, 1326 0x29, 0x9e, 0xba, 0x63, 0x54, 0x3f, 0x0e, 0xbe, 1327 0x95, 0x39, 0x22, 0x11, 0xe8, 0xff, 0xda, 0x08, 1328 0xd6, 0x6e, 0xb3, 0xd5, 0xcc, 0xbd, 0x4f, 0x8a, 1329 0x1d, 0x37, 0x0f, 0x9b, 0x6d, 0xda, 0x9d, 0xd0, 1330 0x46, 0x4d, 0x0f, 0x57, 0x06, 0x9f, 0x15, 0x53, 1331 0x52, 0x1b, 0xfe, 0x2c, 0x52, 0xc4, 0xab, 0x80, 1332 0x29, 0xce, 0x64, 0x1a, 0x7a, 0xd2, 0x98, 0x56, 1333 0xcc, 0x90, 0xed, 0x6d, 0x1e, 0x9c, 0xe8, 0x5d, 1334 0xcf, 0x55, 0x89, 0x14, 0x3d, 0x38, 0x46, 0x68, 1335 0x67, 0xbe, 0x09, 0x9c, 0x9a, 0xdd, 0x74, 0xeb, 1336 0xde, 0xc8, 0x65, 0x71, 0x1a, 0xd7, 0x35, 0xa5, 1337 0xee, 0xf9, 0xbd, 0xe0, 0xf9, 0x04, 0xb5, 0x8e, 1338 0xc9, 0x42, 0xc4, 0xa4, 0x5e, 0x2c, 0xa6, 0x4e, 1339 0x19, 0x8d, 0x45, 0x24, 0x28, 0x02, 0xbe, 0x7f, 1340 0xea, 0xd7, 0xc1, 0x99, 0x04, 0x72, 0xf5, 0xb3, 1341 0x06, 0x2d, 0xaf, 0xf6, 0x37, 0x08, 0x22, 0x82, 1342 0xd7, 0xbb, 0x5a, 0xea, 0x72, 0x23, 0xce, 0xa8, 1343 0x2e, 0x73, 0x76, 0x9c, 0x3b, 0xa7, 0x23, 0xfa, 1344 0x82, 0x9f, 0xd8, 0x6b, 0x75, 0x57, 0xab, 0x5e, 1345 0x49, 0xcb, 0x29, 0x55, 0xe5, 0x55, 0xb1, 0x40, 1346 0x41, 0xa0, 0x36, 0xdc, 0xff, 0xc5, 0xd3, 0x8a, 1347 0xa8, 0x1d, 0xd2, 0x15, 0x9b, 0xc5, 0x84, 0xb7, 1348 0xea, 0x88, 0x85, 0xfa, 0x82, 0x75, 0x16, 0xbf, 1349 0x7f, 0xc9, 0x8f, 0xa0, 0x76, 0x90, 0x8c, 0x99, 1350 0x7e, 0xd9, 0x8d, 0xd6, 0x88, 0x08, 0x43, 0xd3, 1351 0x50, 0x98, 0x06, 0xda, 0x78, 0x9a, 0xdd, 0x71, 1352 0x7a, 0x61, 0xd2, 0x4c, 0xc8, 0xf0, 0xc1, 0x52, 1353 0x1c, 0x09, 0x7f, 0xe7, 0xba, 0x4e, 0x11, 0x39, 1354 0x06, 0xb8, 0xe9, 0xa1, 0xb0, 0x12, 0x9b, 0x6b, 1355 0xda, 0x90, 0x5e, 0x24, 0x54, 0x54, 0x87, 0xbb, 1356 0x69, 0x07, 0x5d, 0xf2, 0x65, 0xb3, 0xf8, 0x7e, 1357 0xea, 0xa5, 0xe5, 0x3c, 0xe9, 0x4b, 0x31, 0x47, 1358 0x79, 0x44, 0x74, 0x3b, 0x96, 0x1e, 0x1c, 0xbd, 1359 0x8a, 0xb2, 0x6f, 0x89, 0xd1, 0x60, 0xb8, 0x06, 1360 0xa7, 0x05, 0x1e, 0xe0, 0x6b, 0x26, 0xa1, 0xd2, 1361 0x85, 0xe9, 0x0a, 0x7d, 0x92, 0x26, 0xdd, 0xb0, 1362 0xa9, 0x51, 0x9b, 0x5d, 0xfa, 0x0a, 0x19, 0xe4, 1363 0x0d, 0xdb, 0xfb, 0x94, 0x60, 0x89, 0x3e, 0x49, 1364 0x10, 0x75, 0x5c, 0xa0, 0x1e, 0x52, 0xad, 0xf9, 1365 0x06, 0x04, 0x15, 0x91, 0xb0, 0x42, 0x67, 0x3a, 1366 0x1e, 0x43, 0x87, 0xdc, 0x06, 0x4c, 0x54, 0x37, 1367 0x41, 0xbf, 0x6f, 0x5b, 0xd5, 0xc1, 0xd9, 0x7b, 1368 0xdc, 0x25, 0x78, 0xa6, 0x6c, 0x56, 0x91, 0x0d, 1369 0x57, 0x4e, 0x6c, 0x1f, 0xc7, 0xab, 0xec, 0x53, 1370 0xbd, 0x4a, 0x1e, 0xee, 0x3e, 0x5e, 0x74, 0xe8, 1371 0x4c, 0x37, 0x46, 0xe3, 0xa7, 0x55, 0xce, 0x16, 1372 0x35, 0x6b, 0xbe, 0x43, 0x9d, 0xef, 0x7c, 0x6b, 1373 0x77, 0xb9, 0xc7, 0xda, 0x16, 0x6d, 0x7e, 0x4a, 1374 0x95, 0x09, 0x33, 0x70, 0x37, 0xe0, 0xe2, 0x44, 1375 0xad, 0x6b, 0xa2, 0x44, 0xe7, 0x96, 0x07, 0x18, 1376 0x19, 0xf1, 0x88, 0x2d, 0x47, 0x36, 0x6e, 0x57, 1377 0x48, 0xa3, 0x7a, 0x3b, 0x00, 0x70, 0x76, 0x52, 1378 0xe3, 0xd4, 0xa5, 0xac, 0x8d, 0x37, 0x2c, 0xd1, 1379 0xbe, 0x5c, 0x7c, 0x6c, 0xda, 0x86, 0x0b, 0x02, 1380 0x86, 0xcc, 0xbf, 0x44, 0x46, 0x69, 0xca, 0x86, 1381 0xa6, 0x9d, 0x98, 0xd5, 0xd7, 0x84, 0x57, 0xa5, 1382 0x90, 0x63, 0x49, 0x14, 0x48, 0x03, 0x25, 0x33, 1383 0x8f, 0xd5, 0xc2, 0x71, 0xfa, 0x6c, 0xf0, 0x9b, 1384 0x9e, 0xf0, 0x2a, 0xb2, 0x0c, 0x2d, 0x31, 0x5e, 1385 0xda, 0x33, 0x88, 0x72, 0xe7, 0x5a, 0x56, 0xbc, 1386 0xfd, 0x63, 0x70, 0xf6, 0xa3, 0xc2, 0x46, 0xec, 1387 0x57, 0x53, 0xfa, 0x09, 0x7d, 0x61, 0xc1, 0x56, 1388 0xa5, 0xee, 0x57, 0x47, 0x81, 0x9b, 0x7f, 0x7b, 1389 0x33, 0xdf, 0x20, 0xf6, 0x84, 0x24, 0x6e, 0xb6, 1390 0x29, 0xcc, 0xe5, 0x9c, 0x3e, 0x23, 0xd3, 0x0a, 1391 0x29, 0xf4, 0x46, 0x68, 0xb2, 0x88, 0xcc, 0x22, 1392 0x95, 0x70, 0xd3, 0x36, 0x0f, 0x60, 0xcd, 0xf1, 1393 0x0d, 0xfa, 0xcd, 0x22, 0x22, 0x8a, 0x30, 0x6b, 1394 0xc4, 0x44, 0x46, 0xe8, 0xf6, 0xad, 0x8f, 0x32, 1395 0x9a, 0x05, 0x30, 0x94, 0xbb, 0x47, 0x52, 0xd3, 1396 0x6f, 0x42, 0xe1, 0x6f, 0x50, 0xd1, 0x63, 0x0c, 1397 0x74, 0x6f, 0x75, 0x02, 0x40, 0x29, 0xab, 0x74, 1398 0xeb, 0x61, 0xb8, 0x09, 0xe2, 0x16, 0xf0, 0x48, 1399 0x8e, 0xd0, 0xf3, 0x9e, 0x11, 0x6c, 0x6e, 0xf1, 1400 0xe8, 0x73, 0x8f, 0x38, 0xba, 0x9c, 0x9b, 0x16, 1401 0xc0, 0xdf, 0x33, 0xb7, 0x29, 0x7b, 0xa6, 0x39, 1402 0xa5, 0x86, 0x7d, 0xda, 0xb7, 0xf9, 0x9e, 0x88 1403 }; 1405 Author's Address 1406 Dan Harkins 1407 HP Enterprise 1408 3333 Scott boulevard 1409 Santa Clara, California 95054 1410 United States of America 1412 Phone: +1 415 997 9834 1413 Email: dharkins@lounge.org