📄 modes_8h-source.html
字号:
00208 <span class="keyword">class </span>CRYPTOPP_DLL CBC_ModeBase : <span class="keyword">public</span> BlockOrientedCipherModeBase00209 {00210 <span class="keyword">public</span>:00211 IV_Requirement IVRequirement()<span class="keyword"> const </span>{<span class="keywordflow">return</span> UNPREDICTABLE_RANDOM_IV;}00212 <span class="keywordtype">bool</span> RequireAlignedInput()<span class="keyword"> const </span>{<span class="keywordflow">return</span> <span class="keyword">false</span>;}00213 <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> MinLastBlockSize()<span class="keyword"> const </span>{<span class="keywordflow">return</span> 0;}00214 };00215 00216 <span class="keyword">class </span>CRYPTOPP_DLL CBC_Encryption : <span class="keyword">public</span> CBC_ModeBase00217 {00218 <span class="keyword">public</span>:00219 <span class="keywordtype">void</span> ProcessBlocks(byte *outString, <span class="keyword">const</span> byte *inString, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> numberOfBlocks);00220 };00221 00222 <span class="keyword">class </span>CRYPTOPP_DLL CBC_CTS_Encryption : <span class="keyword">public</span> CBC_Encryption00223 {00224 <span class="keyword">public</span>:00225 <span class="keywordtype">void</span> SetStolenIV(byte *iv) {m_stolenIV = iv;}00226 00227 <span class="keyword">protected</span>:00228 <span class="keywordtype">void</span> UncheckedSetKey(<span class="keyword">const</span> <a class="code" href="class_name_value_pairs.html">NameValuePairs</a> &params, <span class="keyword">const</span> byte *key, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> length)00229 {00230 CBC_Encryption::UncheckedSetKey(params, key, length);00231 m_stolenIV = params.<a class="code" href="class_name_value_pairs.html#_x_t_r___d_ha40">GetValueWithDefault</a>(Name::StolenIV(), (byte *)NULL);00232 }00233 <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> MinLastBlockSize()<span class="keyword"> const </span>{<span class="keywordflow">return</span> <a class="code" href="namespace_name.html#a9">BlockSize</a>()+1;}00234 <span class="keywordtype">void</span> ProcessLastBlock(byte *outString, <span class="keyword">const</span> byte *inString, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> length);00235 00236 byte *m_stolenIV;00237 };00238 00239 <span class="keyword">class </span>CRYPTOPP_DLL CBC_Decryption : <span class="keyword">public</span> CBC_ModeBase00240 {00241 <span class="keyword">public</span>:00242 <span class="keywordtype">void</span> ProcessBlocks(byte *outString, <span class="keyword">const</span> byte *inString, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> numberOfBlocks);00243 00244 <span class="keyword">protected</span>:00245 <span class="keywordtype">void</span> ResizeBuffers()00246 {00247 BlockOrientedCipherModeBase::ResizeBuffers();00248 m_temp.New(<a class="code" href="namespace_name.html#a9">BlockSize</a>());00249 }00250 <a class="code" href="class_sec_block.html">SecByteBlock</a> m_temp;00251 };00252 00253 <span class="keyword">class </span>CRYPTOPP_DLL CBC_CTS_Decryption : <span class="keyword">public</span> CBC_Decryption00254 {00255 <span class="keyword">public</span>:00256 <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> MinLastBlockSize()<span class="keyword"> const </span>{<span class="keywordflow">return</span> <a class="code" href="namespace_name.html#a9">BlockSize</a>()+1;}00257 <span class="keywordtype">void</span> ProcessLastBlock(byte *outString, <span class="keyword">const</span> byte *inString, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> length);00258 };00259 <span class="comment"></span>00260 <span class="comment">//! .</span>00261 <span class="comment"></span><span class="keyword">template</span> <<span class="keyword">class</span> CIPHER, <span class="keyword">class</span> BASE><a name="l00262"></a><a class="code" href="class_cipher_mode_final_template___cipher_holder.html">00262</a> <span class="keyword">class </span><a class="code" href="class_cipher_mode_final_template___cipher_holder.html">CipherModeFinalTemplate_CipherHolder</a> : <span class="keyword">public</span> ObjectHolder<CIPHER>, <span class="keyword">public</span> BASE00263 {00264 <span class="keyword">public</span>:00265 <a class="code" href="class_cipher_mode_final_template___cipher_holder.html">CipherModeFinalTemplate_CipherHolder</a>()00266 {00267 m_cipher = &m_object;00268 ResizeBuffers();00269 }00270 <a class="code" href="class_cipher_mode_final_template___cipher_holder.html">CipherModeFinalTemplate_CipherHolder</a>(<span class="keyword">const</span> byte *key, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> length)00271 {00272 m_cipher = &m_object;00273 SetKey(key, length);00274 }00275 <a class="code" href="class_cipher_mode_final_template___cipher_holder.html">CipherModeFinalTemplate_CipherHolder</a>(<span class="keyword">const</span> byte *key, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> length, <span class="keyword">const</span> byte *iv, <span class="keywordtype">int</span> feedbackSize = 0)00276 {00277 m_cipher = &m_object;00278 SetKey(key, length, MakeParameters(<span class="stringliteral">"IV"</span>, iv)(<span class="stringliteral">"FeedbackSize"</span>, feedbackSize));00279 }00280 };00281 <span class="comment"></span>00282 <span class="comment">//! .</span>00283 <span class="comment"></span><span class="keyword">template</span> <<span class="keyword">class</span> BASE><a name="l00284"></a><a class="code" href="class_cipher_mode_final_template___external_cipher.html">00284</a> <span class="keyword">class </span><a class="code" href="class_cipher_mode_final_template___external_cipher.html">CipherModeFinalTemplate_ExternalCipher</a> : <span class="keyword">public</span> BASE00285 {00286 <span class="keyword">public</span>:00287 <a class="code" href="class_cipher_mode_final_template___external_cipher.html">CipherModeFinalTemplate_ExternalCipher</a>(<a class="code" href="class_block_cipher.html">BlockCipher</a> &cipher, <span class="keyword">const</span> byte *iv = NULL, <span class="keywordtype">int</span> feedbackSize = 0);00288 };00289 00290 <span class="keyword">template</span> <<span class="keyword">class</span> BASE> <a class="code" href="class_cipher_mode_final_template___external_cipher.html">CipherModeFinalTemplate_ExternalCipher<BASE>::CipherModeFinalTemplate_ExternalCipher</a>(<a class="code" href="class_block_cipher.html">BlockCipher</a> &cipher, <span class="keyword">const</span> byte *iv, <span class="keywordtype">int</span> feedbackSize)00291 {00292 m_cipher = &cipher;00293 ResizeBuffers();00294 SetFeedbackSize(feedbackSize);00295 SetIV(iv);00296 }00297 00298 CRYPTOPP_DLL_TEMPLATE_CLASS CFB_CipherTemplate<AbstractPolicyHolder<CFB_CipherAbstractPolicy, CFB_ModePolicy> >;00299 CRYPTOPP_DLL_TEMPLATE_CLASS CFB_EncryptionTemplate<AbstractPolicyHolder<CFB_CipherAbstractPolicy, CFB_ModePolicy> >;00300 CRYPTOPP_DLL_TEMPLATE_CLASS CFB_DecryptionTemplate<AbstractPolicyHolder<CFB_CipherAbstractPolicy, CFB_ModePolicy> >;00301 <span class="comment"></span>00302 <span class="comment">//! CFB mode</span>00303 <span class="comment"></span><span class="keyword">template</span> <<span class="keyword">class</span> CIPHER><a name="l00304"></a><a class="code" href="struct_c_f_b___mode.html">00304</a> <span class="keyword">struct </span><a class="code" href="struct_c_f_b___mode.html">CFB_Mode</a> : <span class="keyword">public</span> <a class="code" href="struct_cipher_mode_documentation.html">CipherModeDocumentation</a>00305 {<a name="l00306"></a><a class="code" href="struct_c_f_b___mode.html#_c_f_b___modew0">00306</a> <span class="keyword">typedef</span> <a class="code" href="class_cipher_mode_final_template___cipher_holder.html">CipherModeFinalTemplate_CipherHolder<CPP_TYPENAME CIPHER::Encryption, ConcretePolicyHolder<Empty, CFB_EncryptionTemplate<AbstractPolicyHolder<CFB_CipherAbstractPolicy, CFB_ModePolicy></a> > > > <a class="code" href="class_cipher_mode_final_template___cipher_holder.html">Encryption</a>;<a name="l00307"></a><a class="code" href="struct_c_f_b___mode.html#_c_f_b___modew1">00307</a> <span class="keyword">typedef</span> <a class="code" href="class_cipher_mode_final_template___cipher_holder.html">CipherModeFinalTemplate_CipherHolder<CPP_TYPENAME CIPHER::Encryption, ConcretePolicyHolder<Empty, CFB_DecryptionTemplate<AbstractPolicyHolder<CFB_CipherAbstractPolicy, CFB_ModePolicy></a> > > > <a class="code" href="class_cipher_mode_final_template___cipher_holder.html">Decryption</a>;00308 };00309 <span class="comment"></span>00310 <span class="comment">//! CFB mode, external cipher</span><a name="l00311"></a><a class="code" href="struct_c_f_b___mode___external_cipher.html">00311</a> <span class="comment"></span><span class="keyword">struct </span><a class="code" href="struct_c_f_b___mode___external_cipher.html">CFB_Mode_ExternalCipher</a> : <span class="keyword">public</span> <a class="code" href="struct_cipher_mode_documentation.html">CipherModeDocumentation</a>00312 {<a name="l00313"></a><a class="code" href="struct_c_f_b___mode___external_cipher.html#_c_f_b___mode___external_cipherw0">00313</a> <span class="keyword">typedef</span> <a class="code" href="class_cipher_mode_final_template___external_cipher.html">CipherModeFinalTemplate_ExternalCipher<ConcretePolicyHolder<Empty, CFB_EncryptionTemplate<AbstractPolicyHolder<CFB_CipherAbstractPolicy, CFB_ModePolicy></a> > > > <a class="code" href="class_cipher_mode_final_template___external_cipher.html">Encryption</a>;<a name="l00314"></a><a class="code" href="struct_c_f_b___mode___external_cipher.html#_c_f_b___mode___external_cipherw1">00314</a> <span class="keyword">typedef</span> <a class="code" href="class_cipher_mode_final_template___external_cipher.html">CipherModeFinalTemplate_ExternalCipher<ConcretePolicyHolder<Empty, CFB_DecryptionTemplate<AbstractPolicyHolder<CFB_CipherAbstractPolicy, CFB_ModePolicy></a> > > > <a class="code" href="class_cipher_mode_final_template___external_cipher.html">Decryption</a>;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -