00001
00002
00003
00004
00005
00006 #ifndef _KEYPROTO_H_RPCGEN
00007 #define _KEYPROTO_H_RPCGEN
00008
00009 #include "xdr.h"
00010
00011 namespace SST {
00012
00013 enum KeyOptionType {
00014 KeyOptionInvalid = 0
00015 };
00016
00017 struct KeyOptionUnion {
00018 KeyOptionType type;
00019 };
00020
00021 typedef XdrOption<KeyOptionUnion> KeyOption;
00022
00023 struct KeyChunkChkI1Data {
00024 quint32 key;
00025 quint8 chani;
00026 QByteArray cookie;
00027 QByteArray ulpi;
00028 };
00029
00030 struct KeyChunkChkR1Data {
00031 quint32 key;
00032 quint8 chanr;
00033 QByteArray cookie;
00034 QByteArray ulpr;
00035 };
00036
00037 enum DhGroup {
00038 DhGroup1024 = 0x01,
00039 DhGroup2048 = 0x02,
00040 DhGroup3072 = 0x03
00041 };
00042
00043 struct KeyChunkDhI1Data {
00044 DhGroup group;
00045 qint32 keymin;
00046 QByteArray nhi;
00047 QByteArray dhi;
00048 QByteArray eidr;
00049 };
00050
00051 struct KeyChunkDhR1Data {
00052 DhGroup group;
00053 qint32 keylen;
00054 QByteArray nhi;
00055 QByteArray nr;
00056 QByteArray dhr;
00057 QByteArray hhkr;
00058 QByteArray eidr;
00059 QByteArray pkr;
00060 QByteArray sr;
00061 };
00062
00063 struct KeyChunkDhI2Data {
00064 DhGroup group;
00065 qint32 keylen;
00066 QByteArray ni;
00067 QByteArray nr;
00068 QByteArray dhi;
00069 QByteArray dhr;
00070 QByteArray hhkr;
00071 QByteArray idi;
00072 };
00073
00074 struct KeyChunkDhR2Data {
00075 QByteArray nhi;
00076 QByteArray idr;
00077 };
00078
00079 struct KeyIdentI {
00080 quint8 chani;
00081 QByteArray eidi;
00082 QByteArray eidr;
00083 QByteArray idpki;
00084 QByteArray sigi;
00085 QByteArray ulpi;
00086 };
00087
00088 struct KeyIdentR {
00089 quint8 chanr;
00090 QByteArray eidr;
00091 QByteArray idpkr;
00092 QByteArray sigr;
00093 QByteArray ulpr;
00094 };
00095
00096 struct KeyParamR {
00097 DhGroup group;
00098 QByteArray dhr;
00099 };
00100
00101 struct KeyParams {
00102 DhGroup group;
00103 qint32 keylen;
00104 QByteArray nhi;
00105 QByteArray nr;
00106 QByteArray dhi;
00107 QByteArray dhr;
00108 QByteArray eid;
00109 };
00110
00111 enum KeyChunkType {
00112 KeyChunkPacket = 0x0001,
00113 KeyChunkChkI1 = 0x0011,
00114 KeyChunkChkR1 = 0x0012,
00115 KeyChunkDhI1 = 0x0021,
00116 KeyChunkDhR1 = 0x0022,
00117 KeyChunkDhI2 = 0x0023,
00118 KeyChunkDhR2 = 0x0024
00119 };
00120
00121 struct KeyChunkUnion {
00122 KeyChunkType type;
00123 QByteArray packet;
00124 KeyChunkChkI1Data chki1;
00125 KeyChunkChkR1Data chkr1;
00126 KeyChunkDhI1Data dhi1;
00127 KeyChunkDhR1Data dhr1;
00128 KeyChunkDhI2Data dhi2;
00129 KeyChunkDhR2Data dhr2;
00130 };
00131
00132 typedef XdrOption<KeyChunkUnion> KeyChunk;
00133
00134 struct KeyMessage {
00135 qint32 magic;
00136 QList<KeyChunk> chunks;
00137 };
00138
00139 }
00140
00141
00142 SST::XdrStream &operator<<(SST::XdrStream &xs, const SST::KeyOptionType &v);
00143 SST::XdrStream &operator>>(SST::XdrStream &xs, SST::KeyOptionType &v);
00144
00145 SST::XdrStream &operator<<(SST::XdrStream &xs, const SST::KeyOptionUnion &v);
00146 SST::XdrStream &operator>>(SST::XdrStream &xs, SST::KeyOptionUnion &v);
00147
00148 SST::XdrStream &operator<<(SST::XdrStream &xs, const SST::KeyOption &v);
00149 SST::XdrStream &operator>>(SST::XdrStream &xs, SST::KeyOption &v);
00150
00151 SST::XdrStream &operator<<(SST::XdrStream &xs, const SST::KeyChunkChkI1Data &v);
00152 SST::XdrStream &operator>>(SST::XdrStream &xs, SST::KeyChunkChkI1Data &v);
00153
00154 SST::XdrStream &operator<<(SST::XdrStream &xs, const SST::KeyChunkChkR1Data &v);
00155 SST::XdrStream &operator>>(SST::XdrStream &xs, SST::KeyChunkChkR1Data &v);
00156
00157 SST::XdrStream &operator<<(SST::XdrStream &xs, const SST::DhGroup &v);
00158 SST::XdrStream &operator>>(SST::XdrStream &xs, SST::DhGroup &v);
00159
00160 SST::XdrStream &operator<<(SST::XdrStream &xs, const SST::KeyChunkDhI1Data &v);
00161 SST::XdrStream &operator>>(SST::XdrStream &xs, SST::KeyChunkDhI1Data &v);
00162
00163 SST::XdrStream &operator<<(SST::XdrStream &xs, const SST::KeyChunkDhR1Data &v);
00164 SST::XdrStream &operator>>(SST::XdrStream &xs, SST::KeyChunkDhR1Data &v);
00165
00166 SST::XdrStream &operator<<(SST::XdrStream &xs, const SST::KeyChunkDhI2Data &v);
00167 SST::XdrStream &operator>>(SST::XdrStream &xs, SST::KeyChunkDhI2Data &v);
00168
00169 SST::XdrStream &operator<<(SST::XdrStream &xs, const SST::KeyChunkDhR2Data &v);
00170 SST::XdrStream &operator>>(SST::XdrStream &xs, SST::KeyChunkDhR2Data &v);
00171
00172 SST::XdrStream &operator<<(SST::XdrStream &xs, const SST::KeyIdentI &v);
00173 SST::XdrStream &operator>>(SST::XdrStream &xs, SST::KeyIdentI &v);
00174
00175 SST::XdrStream &operator<<(SST::XdrStream &xs, const SST::KeyIdentR &v);
00176 SST::XdrStream &operator>>(SST::XdrStream &xs, SST::KeyIdentR &v);
00177
00178 SST::XdrStream &operator<<(SST::XdrStream &xs, const SST::KeyParamR &v);
00179 SST::XdrStream &operator>>(SST::XdrStream &xs, SST::KeyParamR &v);
00180
00181 SST::XdrStream &operator<<(SST::XdrStream &xs, const SST::KeyParams &v);
00182 SST::XdrStream &operator>>(SST::XdrStream &xs, SST::KeyParams &v);
00183
00184 SST::XdrStream &operator<<(SST::XdrStream &xs, const SST::KeyChunkType &v);
00185 SST::XdrStream &operator>>(SST::XdrStream &xs, SST::KeyChunkType &v);
00186
00187 SST::XdrStream &operator<<(SST::XdrStream &xs, const SST::KeyChunkUnion &v);
00188 SST::XdrStream &operator>>(SST::XdrStream &xs, SST::KeyChunkUnion &v);
00189
00190 SST::XdrStream &operator<<(SST::XdrStream &xs, const SST::KeyChunk &v);
00191 SST::XdrStream &operator>>(SST::XdrStream &xs, SST::KeyChunk &v);
00192
00193 SST::XdrStream &operator<<(SST::XdrStream &xs, const SST::KeyMessage &v);
00194 SST::XdrStream &operator>>(SST::XdrStream &xs, SST::KeyMessage &v);
00195
00196
00197 #endif