📄 asn_8h-source.html
字号:
<!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 Page</a> | <a class="qindex" href="namespaces.html">Namespace List</a> | <a class="qindex" href="hierarchy.html">Class Hierarchy</a> | <a class="qindex" href="classes.html">Alphabetical List</a> | <a class="qindex" href="annotated.html">Compound List</a> | <a class="qindex" href="files.html">File List</a> | <a class="qindex" href="namespacemembers.html">Namespace Members</a> | <a class="qindex" href="functions.html">Compound Members</a> | <a class="qindex" href="globals.html">File 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 <vector></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> &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> &in, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> &length);00062 00063 CRYPTOPP_DLL <span class="keywordtype">void</span> DEREncodeNull(<a class="code" href="class_buffered_transformation.html">BufferedTransformation</a> &out);00064 CRYPTOPP_DLL <span class="keywordtype">void</span> BERDecodeNull(<a class="code" href="class_buffered_transformation.html">BufferedTransformation</a> &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> &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> &out, <span class="keyword">const</span> <a class="code" href="class_sec_block.html">SecByteBlock</a> &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> &in, <a class="code" href="class_sec_block.html">SecByteBlock</a> &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> &in, <a class="code" href="class_buffered_transformation.html">BufferedTransformation</a> &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> &out, <span class="keyword">const</span> std::string &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> &in, std::string &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> &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> &in, <a class="code" href="class_sec_block.html">SecByteBlock</a> &str, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> &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> &bt) {BERDecode(bt);}00085 00086 <span class="keyword">inline</span> OID & 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> &bt) <span class="keyword">const</span>;00089 <span class="keywordtype">void</span> BERDecode(<a class="code" href="class_buffered_transformation.html">BufferedTransformation</a> &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> &bt) <span class="keyword">const</span>;00093 00094 std::vector<unsigned long> 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> &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> &bt, <span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> &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> & CurrentTarget();
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -