| 2139 | } |
| 2140 | |
| 2141 | GroupInfo |
| 2142 | State::group_info(bool inline_tree) const |
| 2143 | { |
| 2144 | auto group_info = GroupInfo{ |
| 2145 | { |
| 2146 | _suite, |
| 2147 | _group_id, |
| 2148 | _epoch, |
| 2149 | _tree.root_hash(), |
| 2150 | _transcript_hash.confirmed, |
| 2151 | _extensions, |
| 2152 | }, |
| 2153 | { /* No other extensions */ }, |
| 2154 | _key_schedule.confirmation_tag(_transcript_hash.confirmed), |
| 2155 | }; |
| 2156 | |
| 2157 | group_info.extensions.add( |
| 2158 | ExternalPubExtension{ _key_schedule.external_priv.public_key }); |
| 2159 | |
| 2160 | if (inline_tree) { |
| 2161 | group_info.extensions.add(RatchetTreeExtension{ _tree }); |
| 2162 | } |
| 2163 | |
| 2164 | group_info.sign(_tree, _index, _identity_priv); |
| 2165 | return group_info; |
| 2166 | } |
| 2167 | |
| 2168 | std::vector<LeafNode> |
| 2169 | State::roster() const |