1 /************************************************************** 2 * 3 * Licensed to the Apache Software Foundation (ASF) under one 4 * or more contributor license agreements. See the NOTICE file 5 * distributed with this work for additional information 6 * regarding copyright ownership. The ASF licenses this file 7 * to you under the Apache License, Version 2.0 (the 8 * "License"); you may not use this file except in compliance 9 * with the License. You may obtain a copy of the License at 10 * 11 * http://www.apache.org/licenses/LICENSE-2.0 12 * 13 * Unless required by applicable law or agreed to in writing, 14 * software distributed under the License is distributed on an 15 * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 16 * KIND, either express or implied. See the License for the 17 * specific language governing permissions and limitations 18 * under the License. 19 * 20 *************************************************************/ 21 22 23 24 #ifndef _XSEC_CTL_PARSER_HXX 25 #define _XSEC_CTL_PARSER_HXX 26 27 #include <xsecctl.hxx> 28 29 #include <com/sun/star/xml/sax/XParser.hpp> 30 #include <com/sun/star/lang/XInitialization.hpp> 31 #include <com/sun/star/xml/sax/XDocumentHandler.hpp> 32 #include <com/sun/star/xml/sax/XAttributeList.hpp> 33 34 #include <cppuhelper/implbase2.hxx> 35 36 class XSecParser: public cppu::WeakImplHelper2 37 < 38 com::sun::star::xml::sax::XDocumentHandler, 39 com::sun::star::lang::XInitialization 40 > 41 /****** XSecController.hxx/CLASS XSecParser *********************************** 42 * 43 * NAME 44 * XSecParser -- a SAX parser that can detect security elements 45 * 46 * FUNCTION 47 * The XSecParser object is connected on the SAX chain and detects 48 * security elements in the SAX event stream, then notifies 49 * the XSecController. 50 * 51 * HISTORY 52 * 05.01.2004 - Interface supported: XDocumentHandler, XInitialization 53 * 54 * NOTES 55 * This class is used when importing a document. 56 * 57 * AUTHOR 58 * Michael Mi 59 * Email: michael.mi@sun.com 60 ******************************************************************************/ 61 { 62 friend class XSecController; 63 private: 64 /* 65 * the following members are used to reserve the signature information, 66 * including X509IssuerName, X509SerialNumber, and X509Certificate,etc. 67 */ 68 rtl::OUString m_ouX509IssuerName; 69 rtl::OUString m_ouX509SerialNumber; 70 rtl::OUString m_ouX509Certificate; 71 rtl::OUString m_ouDigestValue; 72 rtl::OUString m_ouSignatureValue; 73 rtl::OUString m_ouDate; 74 //rtl::OUString m_ouTime; 75 76 /* 77 * whether inside a particular element 78 */ 79 bool m_bInX509IssuerName; 80 bool m_bInX509SerialNumber; 81 bool m_bInX509Certificate; 82 bool m_bInDigestValue; 83 bool m_bInSignatureValue; 84 bool m_bInDate; 85 //bool m_bInTime; 86 87 /* 88 * the XSecController collaborating with XSecParser 89 */ 90 XSecController* m_pXSecController; 91 92 /* 93 * the next XDocumentHandler on the SAX chain 94 */ 95 com::sun::star::uno::Reference< 96 com::sun::star::xml::sax::XDocumentHandler > m_xNextHandler; 97 98 /* 99 * this string is used to remember the current handled reference's URI, 100 * 101 * because it can be decided whether a stream reference is xml based or binary based 102 * only after the Transforms element is read in, so we have to reserve the reference's 103 * URI when the startElement event is met. 104 */ 105 rtl::OUString m_currentReferenceURI; 106 bool m_bReferenceUnresolved; 107 108 private: 109 rtl::OUString getIdAttr(const com::sun::star::uno::Reference< 110 com::sun::star::xml::sax::XAttributeList >& xAttribs ); 111 112 public: 113 XSecParser( XSecController* pXSecController, 114 const com::sun::star::uno::Reference< 115 com::sun::star::xml::sax::XDocumentHandler >& xNextHandler ); ~XSecParser()116 ~XSecParser(){}; 117 118 /* 119 * XDocumentHandler 120 */ 121 virtual void SAL_CALL startDocument( ); 122 123 virtual void SAL_CALL endDocument( ); 124 125 virtual void SAL_CALL startElement( 126 const rtl::OUString& aName, 127 const com::sun::star::uno::Reference< 128 com::sun::star::xml::sax::XAttributeList >& xAttribs ); 129 130 virtual void SAL_CALL endElement( const rtl::OUString& aName ); 131 132 virtual void SAL_CALL characters( const rtl::OUString& aChars ); 133 134 virtual void SAL_CALL ignorableWhitespace( const rtl::OUString& aWhitespaces ); 135 136 virtual void SAL_CALL processingInstruction( 137 const rtl::OUString& aTarget, 138 const rtl::OUString& aData ); 139 140 virtual void SAL_CALL setDocumentLocator( 141 const com::sun::star::uno::Reference< 142 com::sun::star::xml::sax::XLocator >& xLocator ); 143 144 /* 145 * XInitialization 146 */ 147 virtual void SAL_CALL initialize( 148 const com::sun::star::uno::Sequence< com::sun::star::uno::Any >& aArguments ); 149 }; 150 151 #endif 152