📄 asn_8h-source.html
字号:
00114 00115 word32 m_flags;00116 <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> m_nObjects, m_nCurrentObject, m_level;00117 std::vector<unsigned int> m_positions;00118 <a class="code" href="class_byte_queue.html">ByteQueue</a> m_queue;00119 <span class="keyword">enum</span> State {IDENTIFIER, LENGTH, BODY, TAIL, ALL_DONE} m_state;00120 byte m_id;00121 <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> m_lengthRemaining;00122 };00123 <span class="comment"></span>00124 <span class="comment">//! BER General Decoder</span><a name="l00125"></a><a class="code" href="class_b_e_r_general_decoder.html">00125</a> <span class="comment"></span><span class="keyword">class </span>CRYPTOPP_DLL BERGeneralDecoder : <span class="keyword">public</span> <a class="code" href="class_store.html">Store</a>00126 {00127 <span class="keyword">public</span>:00128 <span class="keyword">explicit</span> BERGeneralDecoder(<a class="code" href="class_buffered_transformation.html">BufferedTransformation</a> &inQueue, byte asnTag);00129 <span class="keyword">explicit</span> BERGeneralDecoder(BERGeneralDecoder &inQueue, byte asnTag);00130 ~BERGeneralDecoder();00131 00132 <span class="keywordtype">bool</span> IsDefiniteLength()<span class="keyword"> const </span>{<span class="keywordflow">return</span> m_definiteLength;}00133 <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> RemainingLength()<span class="keyword"> const </span>{assert(m_definiteLength); <span class="keywordflow">return</span> m_length;}00134 <span class="keywordtype">bool</span> EndReached() <span class="keyword">const</span>;00135 byte PeekByte() <span class="keyword">const</span>;00136 <span class="keywordtype">void</span> CheckByte(byte b);00137 00138 <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> <a class="code" href="class_buffered_transformation.html#_storez11_0">TransferTo2</a>(<a class="code" href="class_buffered_transformation.html">BufferedTransformation</a> &target, <span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> &transferBytes, <span class="keyword">const</span> std::string &channel=NULL_CHANNEL, <span class="keywordtype">bool</span> blocking=<span class="keyword">true</span>);00139 <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> CopyRangeTo2(<a class="code" href="class_buffered_transformation.html">BufferedTransformation</a> &target, <span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> &begin, <span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> end=ULONG_MAX, <span class="keyword">const</span> std::string &channel=NULL_CHANNEL, <span class="keywordtype">bool</span> blocking=<span class="keyword">true</span>) <span class="keyword">const</span>;00140 00141 <span class="comment">// call this to denote end of sequence</span>00142 <span class="keywordtype">void</span> MessageEnd();00143 00144 <span class="keyword">protected</span>:00145 <a class="code" href="class_buffered_transformation.html">BufferedTransformation</a> &m_inQueue;00146 <span class="keywordtype">bool</span> m_finished, m_definiteLength;00147 <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> m_length;00148 00149 <span class="keyword">private</span>:00150 <span class="keywordtype">void</span> StoreInitialize(<span class="keyword">const</span> <a class="code" href="class_name_value_pairs.html">NameValuePairs</a> &parameters) {assert(<span class="keyword">false</span>);}00151 <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> ReduceLength(<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> delta);00152 };00153 <span class="comment"></span>00154 <span class="comment">//! DER General Encoder</span><a name="l00155"></a><a class="code" href="class_d_e_r_general_encoder.html">00155</a> <span class="comment"></span><span class="keyword">class </span>CRYPTOPP_DLL DERGeneralEncoder : <span class="keyword">public</span> <a class="code" href="class_byte_queue.html">ByteQueue</a>00156 {00157 <span class="keyword">public</span>:00158 <span class="keyword">explicit</span> DERGeneralEncoder(<a class="code" href="class_buffered_transformation.html">BufferedTransformation</a> &outQueue, byte asnTag = SEQUENCE | CONSTRUCTED);00159 <span class="keyword">explicit</span> DERGeneralEncoder(DERGeneralEncoder &outQueue, byte asnTag = SEQUENCE | CONSTRUCTED);00160 ~DERGeneralEncoder();00161 00162 <span class="comment">// call this to denote end of sequence</span>00163 <span class="keywordtype">void</span> MessageEnd();00164 00165 <span class="keyword">private</span>:00166 <a class="code" href="class_buffered_transformation.html">BufferedTransformation</a> &m_outQueue;00167 <span class="keywordtype">bool</span> m_finished;00168 00169 byte m_asnTag;00170 };00171 <span class="comment"></span>00172 <span class="comment">//! BER Sequence Decoder</span><a name="l00173"></a><a class="code" href="class_b_e_r_sequence_decoder.html">00173</a> <span class="comment"></span><span class="keyword">class </span>CRYPTOPP_DLL BERSequenceDecoder : <span class="keyword">public</span> BERGeneralDecoder00174 {00175 <span class="keyword">public</span>:00176 <span class="keyword">explicit</span> BERSequenceDecoder(<a class="code" href="class_buffered_transformation.html">BufferedTransformation</a> &inQueue, byte asnTag = SEQUENCE | CONSTRUCTED)00177 : BERGeneralDecoder(inQueue, asnTag) {}00178 <span class="keyword">explicit</span> BERSequenceDecoder(BERSequenceDecoder &inQueue, byte asnTag = SEQUENCE | CONSTRUCTED)00179 : BERGeneralDecoder(inQueue, asnTag) {}00180 };00181 <span class="comment"></span>00182 <span class="comment">//! DER Sequence Encoder</span><a name="l00183"></a><a class="code" href="class_d_e_r_sequence_encoder.html">00183</a> <span class="comment"></span><span class="keyword">class </span>CRYPTOPP_DLL DERSequenceEncoder : <span class="keyword">public</span> DERGeneralEncoder00184 {00185 <span class="keyword">public</span>:00186 <span class="keyword">explicit</span> DERSequenceEncoder(<a class="code" href="class_buffered_transformation.html">BufferedTransformation</a> &outQueue, byte asnTag = SEQUENCE | CONSTRUCTED)00187 : DERGeneralEncoder(outQueue, asnTag) {}00188 <span class="keyword">explicit</span> DERSequenceEncoder(DERSequenceEncoder &outQueue, byte asnTag = SEQUENCE | CONSTRUCTED)00189 : DERGeneralEncoder(outQueue, asnTag) {}00190 };00191 <span class="comment"></span>00192 <span class="comment">//! BER Set Decoder</span><a name="l00193"></a><a class="code" href="class_b_e_r_set_decoder.html">00193</a> <span class="comment"></span><span class="keyword">class </span>CRYPTOPP_DLL BERSetDecoder : <span class="keyword">public</span> BERGeneralDecoder00194 {00195 <span class="keyword">public</span>:00196 <span class="keyword">explicit</span> BERSetDecoder(<a class="code" href="class_buffered_transformation.html">BufferedTransformation</a> &inQueue, byte asnTag = SET | CONSTRUCTED)00197 : BERGeneralDecoder(inQueue, asnTag) {}00198 <span class="keyword">explicit</span> BERSetDecoder(BERSetDecoder &inQueue, byte asnTag = SET | CONSTRUCTED)00199 : BERGeneralDecoder(inQueue, asnTag) {}00200 };00201 <span class="comment"></span>00202 <span class="comment">//! DER Set Encoder</span><a name="l00203"></a><a class="code" href="class_d_e_r_set_encoder.html">00203</a> <span class="comment"></span><span class="keyword">class </span>CRYPTOPP_DLL DERSetEncoder : <span class="keyword">public</span> DERGeneralEncoder00204 {00205 <span class="keyword">public</span>:00206 <span class="keyword">explicit</span> DERSetEncoder(<a class="code" href="class_buffered_transformation.html">BufferedTransformation</a> &outQueue, byte asnTag = SET | CONSTRUCTED)00207 : DERGeneralEncoder(outQueue, asnTag) {}00208 <span class="keyword">explicit</span> DERSetEncoder(DERSetEncoder &outQueue, byte asnTag = SET | CONSTRUCTED)00209 : DERGeneralEncoder(outQueue, asnTag) {}00210 };00211 00212 <span class="keyword">template</span> <<span class="keyword">class</span> T>00213 <span class="keyword">class </span>ASNOptional : <span class="keyword">public</span> member_ptr<T>00214 {00215 <span class="keyword">public</span>:00216 <span class="keywordtype">void</span> BERDecode(BERSequenceDecoder &seqDecoder, byte tag, byte mask = ~CONSTRUCTED)00217 {00218 byte b;00219 <span class="keywordflow">if</span> (seqDecoder.<a class="code" href="class_buffered_transformation.html#_zlib_decompressorz7_4">Peek</a>(b) && (b & mask) == tag)00220 reset(<span class="keyword">new</span> T(seqDecoder));00221 }00222 <span class="keywordtype">void</span> DEREncode(<a class="code" href="class_buffered_transformation.html">BufferedTransformation</a> &out)00223 {00224 <span class="keywordflow">if</span> (get() != NULL)00225 get()->DEREncode(out);00226 }00227 };00228 <span class="comment"></span>00229 <span class="comment">//! .</span><a name="l00230"></a><a class="code" href="class_a_s_n1_key.html">00230</a> <span class="comment"></span><span class="keyword">class </span>CRYPTOPP_DLL ASN1Key : <span class="keyword">public</span> <a class="code" href="class_a_s_n1_crypto_material.html">ASN1CryptoMaterial</a>00231 {00232 <span class="keyword">public</span>:00233 <span class="keyword">virtual</span> OID GetAlgorithmID() <span class="keyword">const</span> =0;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -