⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 asn_8h-source.html

📁 Crypto++是一个非常强大的密码学库,主要是功能全
💻 HTML
📖 第 1 页 / 共 3 页
字号:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"><html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1"><title>Crypto++: asn.h Source File</title><link href="doxygen.css" rel="stylesheet" type="text/css"></head><body><!-- Generated by Doxygen 1.3.2 --><div class="qindex"><a class="qindex" href="index.html">Main&nbsp;Page</a> | <a class="qindex" href="namespaces.html">Namespace List</a> | <a class="qindex" href="hierarchy.html">Class&nbsp;Hierarchy</a> | <a class="qindex" href="classes.html">Alphabetical&nbsp;List</a> | <a class="qindex" href="annotated.html">Compound&nbsp;List</a> | <a class="qindex" href="files.html">File&nbsp;List</a> | <a class="qindex" href="namespacemembers.html">Namespace&nbsp;Members</a> | <a class="qindex" href="functions.html">Compound&nbsp;Members</a> | <a class="qindex" href="globals.html">File&nbsp;Members</a></div><h1>asn.h</h1><div class="fragment"><pre>00001 <span class="preprocessor">#ifndef CRYPTOPP_ASN_H</span>00002 <span class="preprocessor"></span><span class="preprocessor">#define CRYPTOPP_ASN_H</span>00003 <span class="preprocessor"></span>00004 <span class="preprocessor">#include "filters.h"</span>00005 <span class="preprocessor">#include "queue.h"</span>00006 <span class="preprocessor">#include &lt;vector&gt;</span>00007 00008 NAMESPACE_BEGIN(CryptoPP)00009 00010 <span class="comment">// these tags and flags are not complete</span>00011 <span class="keyword">enum</span> ASNTag00012 {00013         BOOLEAN                         = 0x01,00014         INTEGER                         = 0x02,00015         BIT_STRING                      = 0x03,00016         OCTET_STRING            = 0x04,00017         TAG_NULL                        = 0x05,00018         OBJECT_IDENTIFIER       = 0x06,00019         OBJECT_DESCRIPTOR       = 0x07,00020         EXTERNAL                        = 0x08,00021         REAL                            = 0x09,00022         ENUMERATED                      = 0x0a,00023         UTF8_STRING                     = 0x0c,00024         SEQUENCE                        = 0x10,00025         SET                             = 0x11,00026         NUMERIC_STRING          = 0x12,00027         PRINTABLE_STRING        = 0x13,00028         T61_STRING                      = 0x14,00029         VIDEOTEXT_STRING        = 0x15,00030         IA5_STRING                      = 0x16,00031         UTC_TIME                        = 0x17,00032         GENERALIZED_TIME        = 0x18,00033         GRAPHIC_STRING          = 0x19,00034         VISIBLE_STRING          = 0x1a,00035         GENERAL_STRING          = 0x1b00036 };00037 00038 <span class="keyword">enum</span> ASNIdFlag00039 {00040         UNIVERSAL                       = 0x00,00041 <span class="comment">//      DATA                            = 0x01,</span>00042 <span class="comment">//      HEADER                          = 0x02,</span>00043         CONSTRUCTED             = 0x20,00044         APPLICATION             = 0x40,00045         CONTEXT_SPECIFIC        = 0x80,00046         PRIVATE                         = 0xc000047 };00048 00049 <span class="keyword">inline</span> <span class="keywordtype">void</span> BERDecodeError() {<span class="keywordflow">throw</span> <a class="code" href="class_b_e_r_decode_err.html">BERDecodeErr</a>();}00050 00051 <span class="keyword">class </span>CRYPTOPP_DLL UnknownOID : <span class="keyword">public</span> <a class="code" href="class_b_e_r_decode_err.html">BERDecodeErr</a>00052 {00053 <span class="keyword">public</span>:00054         UnknownOID() : <a class="code" href="class_b_e_r_decode_err.html">BERDecodeErr</a>("BER decode error: unknown object identifier") {}00055         UnknownOID(<span class="keyword">const</span> <span class="keywordtype">char</span> *err) : <a class="code" href="class_b_e_r_decode_err.html">BERDecodeErr</a>(err) {}00056 };00057 00058 <span class="comment">// unsigned int DERLengthEncode(unsigned int length, byte *output=0);</span>00059 CRYPTOPP_DLL <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> DERLengthEncode(<a class="code" href="class_buffered_transformation.html">BufferedTransformation</a> &amp;out, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> length);00060 <span class="comment">// returns false if indefinite length</span>00061 CRYPTOPP_DLL <span class="keywordtype">bool</span> BERLengthDecode(<a class="code" href="class_buffered_transformation.html">BufferedTransformation</a> &amp;in, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> &amp;length);00062 00063 CRYPTOPP_DLL <span class="keywordtype">void</span> DEREncodeNull(<a class="code" href="class_buffered_transformation.html">BufferedTransformation</a> &amp;out);00064 CRYPTOPP_DLL <span class="keywordtype">void</span> BERDecodeNull(<a class="code" href="class_buffered_transformation.html">BufferedTransformation</a> &amp;in);00065 00066 CRYPTOPP_DLL <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> DEREncodeOctetString(<a class="code" href="class_buffered_transformation.html">BufferedTransformation</a> &amp;out, <span class="keyword">const</span> byte *str, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> strLen);00067 CRYPTOPP_DLL <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> DEREncodeOctetString(<a class="code" href="class_buffered_transformation.html">BufferedTransformation</a> &amp;out, <span class="keyword">const</span> <a class="code" href="class_sec_block.html">SecByteBlock</a> &amp;str);00068 CRYPTOPP_DLL <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> BERDecodeOctetString(<a class="code" href="class_buffered_transformation.html">BufferedTransformation</a> &amp;in, <a class="code" href="class_sec_block.html">SecByteBlock</a> &amp;str);00069 CRYPTOPP_DLL <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> BERDecodeOctetString(<a class="code" href="class_buffered_transformation.html">BufferedTransformation</a> &amp;in, <a class="code" href="class_buffered_transformation.html">BufferedTransformation</a> &amp;str);00070 00071 <span class="comment">// for UTF8_STRING, PRINTABLE_STRING, and IA5_STRING</span>00072 CRYPTOPP_DLL <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> DEREncodeTextString(<a class="code" href="class_buffered_transformation.html">BufferedTransformation</a> &amp;out, <span class="keyword">const</span> std::string &amp;str, byte asnTag);00073 CRYPTOPP_DLL <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> BERDecodeTextString(<a class="code" href="class_buffered_transformation.html">BufferedTransformation</a> &amp;in, std::string &amp;str, byte asnTag);00074 00075 CRYPTOPP_DLL <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> DEREncodeBitString(<a class="code" href="class_buffered_transformation.html">BufferedTransformation</a> &amp;out, <span class="keyword">const</span> byte *str, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> strLen, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> unusedBits=0);00076 CRYPTOPP_DLL <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> BERDecodeBitString(<a class="code" href="class_buffered_transformation.html">BufferedTransformation</a> &amp;in, <a class="code" href="class_sec_block.html">SecByteBlock</a> &amp;str, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> &amp;unusedBits);00077 <span class="comment"></span>00078 <span class="comment">//! Object Identifier</span><a name="l00079"></a><a class="code" href="class_o_i_d.html">00079</a> <span class="comment"></span><span class="keyword">class </span>CRYPTOPP_DLL OID00080 {00081 <span class="keyword">public</span>:00082         OID() {}00083         OID(<span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> v) : m_values(1, v) {}00084         OID(<a class="code" href="class_buffered_transformation.html">BufferedTransformation</a> &amp;bt) {BERDecode(bt);}00085 00086         <span class="keyword">inline</span> OID &amp; operator+=(<span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> rhs) {m_values.push_back(rhs); <span class="keywordflow">return</span> *<span class="keyword">this</span>;}00087 00088         <span class="keywordtype">void</span> DEREncode(<a class="code" href="class_buffered_transformation.html">BufferedTransformation</a> &amp;bt) <span class="keyword">const</span>;00089         <span class="keywordtype">void</span> BERDecode(<a class="code" href="class_buffered_transformation.html">BufferedTransformation</a> &amp;bt);00090 00091         <span class="comment">// throw BERDecodeErr() if decoded value doesn't equal this OID</span>00092         <span class="keywordtype">void</span> BERDecodeAndCheck(<a class="code" href="class_buffered_transformation.html">BufferedTransformation</a> &amp;bt) <span class="keyword">const</span>;00093 00094         std::vector&lt;unsigned long&gt; m_values;00095 00096 <span class="keyword">private</span>:00097         <span class="keyword">static</span> <span class="keywordtype">void</span> EncodeValue(<a class="code" href="class_buffered_transformation.html">BufferedTransformation</a> &amp;bt, <span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> v);00098         <span class="keyword">static</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> DecodeValue(<a class="code" href="class_buffered_transformation.html">BufferedTransformation</a> &amp;bt, <span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> &amp;v);00099 };00100 00101 <span class="keyword">class </span>EncodedObjectFilter : <span class="keyword">public</span> <a class="code" href="class_filter.html">Filter</a>00102 {00103 <span class="keyword">public</span>:00104         <span class="keyword">enum</span> Flag {PUT_OBJECTS=1, PUT_MESSANGE_END_AFTER_EACH_OBJECT=2, PUT_MESSANGE_END_AFTER_ALL_OBJECTS=4, PUT_MESSANGE_SERIES_END_AFTER_ALL_OBJECTS=8};00105         EncodedObjectFilter(<a class="code" href="class_buffered_transformation.html">BufferedTransformation</a> *attachment = NULL, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> nObjects = 1, word32 flags = 0);00106 00107         <span class="keywordtype">void</span> <a class="code" href="class_buffered_transformation.html#_zlib_decompressorz1_0">Put</a>(<span class="keyword">const</span> byte *inString, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> length);00108 00109         <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> GetNumberOfCompletedObjects()<span class="keyword"> const </span>{<span class="keywordflow">return</span> m_nCurrentObject;}00110         <span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> GetPositionOfObject(<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> i)<span class="keyword"> const </span>{<span class="keywordflow">return</span> m_positions[i];}00111 00112 <span class="keyword">private</span>:00113         <a class="code" href="class_buffered_transformation.html">BufferedTransformation</a> &amp; CurrentTarget();

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -