xref: /AOO41X/main/xmlsecurity/source/xmlsec/errorcallback.cxx (revision 06b3ce531745799678cf4bb887ef37436d81238b)
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 // MARKER(update_precomp.py): autogen include statement, do not remove
25 #include "precompiled_xmlsecurity.hxx"
26 
27 /*
28  * Implementation of the I/O interfaces based on stream and URI binding
29  */
30 #include "errorcallback.hxx"
31 
32 #include <sal/types.h>
33 //For reasons that escape me, this is what xmlsec does when size_t is not 4
34 #if SAL_TYPES_SIZEOFPOINTER != 4
35 #    define XMLSEC_NO_SIZE_T
36 #endif
37 #include "xmlsec/xmlsec.h"
38 #include "xmlsec/errors.h"
39 
40 using namespace ::com::sun::star::xml::crypto;
41 
42 // ::com::sun::star::uno::Reference< XXMLSecurityTemplate > g_xErrorRecorder;
43 // bool g_bErrorRecorded;
44 
45 // SecurityOperationStatus getOperationStatus(int reason)
46 // {
47 //  switch (reason)
48 //  {
49 //  case XMLSEC_ERRORS_R_XMLSEC_FAILED:
50 //      return SecurityOperationStatus_ENGINE_FAILED;
51 //  case XMLSEC_ERRORS_R_MALLOC_FAILED:
52 //      return SecurityOperationStatus_MALLOC_FAILED;
53 //  case XMLSEC_ERRORS_R_STRDUP_FAILED:
54 //      return SecurityOperationStatus_STRDUP_FAILED;
55 //  case XMLSEC_ERRORS_R_CRYPTO_FAILED:
56 //      return SecurityOperationStatus_CRYPTO_FAILED;
57 //  case XMLSEC_ERRORS_R_XML_FAILED:
58 //      return SecurityOperationStatus_XML_FAILED;
59 //  case XMLSEC_ERRORS_R_XSLT_FAILED:
60 //      return SecurityOperationStatus_XSLT_FAILED;
61 //  case XMLSEC_ERRORS_R_IO_FAILED:
62 //      return SecurityOperationStatus_IO_FAILED;
63 //  case XMLSEC_ERRORS_R_DISABLED:
64 //      return SecurityOperationStatus_DISABLED;
65 //  case XMLSEC_ERRORS_R_NOT_IMPLEMENTED:
66 //      return SecurityOperationStatus_NOT_IMPLEMENTED;
67 //  case XMLSEC_ERRORS_R_INVALID_SIZE:
68 //      return SecurityOperationStatus_INVALID_SIZE;
69 //  case XMLSEC_ERRORS_R_INVALID_DATA:
70 //      return SecurityOperationStatus_INVALID_DATA;
71 //  case XMLSEC_ERRORS_R_INVALID_RESULT:
72 //      return SecurityOperationStatus_INVALID_RESULT;
73 //  case XMLSEC_ERRORS_R_INVALID_TYPE:
74 //      return SecurityOperationStatus_INVALID_TYPE;
75 //  case XMLSEC_ERRORS_R_INVALID_OPERATION:
76 //      return SecurityOperationStatus_INVALID_OPERATION;
77 //  case XMLSEC_ERRORS_R_INVALID_STATUS:
78 //      return SecurityOperationStatus_INVALID_STATUS;
79 //  case XMLSEC_ERRORS_R_INVALID_FORMAT:
80 //      return SecurityOperationStatus_INVALID_FORMAT;
81 //  case XMLSEC_ERRORS_R_DATA_NOT_MATCH:
82 //      return SecurityOperationStatus_DATA_NOT_MATCH;
83 //  case XMLSEC_ERRORS_R_INVALID_NODE:
84 //      return SecurityOperationStatus_INVALID_NODE;
85 //  case XMLSEC_ERRORS_R_INVALID_NODE_CONTENT:
86 //      return SecurityOperationStatus_INVALID_NODE_CONTENT;
87 //  case XMLSEC_ERRORS_R_INVALID_NODE_ATTRIBUTE:
88 //      return SecurityOperationStatus_INVALID_NODE_ATTRIBUTE;
89 //  case XMLSEC_ERRORS_R_MISSING_NODE_ATTRIBUTE:
90 //      return SecurityOperationStatus_MISSING_NODE_ATTRIBUTE;
91 //  case XMLSEC_ERRORS_R_NODE_ALREADY_PRESENT:
92 //      return SecurityOperationStatus_NODE_ALREADY_PRESENT;
93 //  case XMLSEC_ERRORS_R_UNEXPECTED_NODE:
94 //      return SecurityOperationStatus_UNEXPECTED_NODE;
95 //  case XMLSEC_ERRORS_R_NODE_NOT_FOUND:
96 //      return SecurityOperationStatus_NODE_NOT_FOUND;
97 //  case XMLSEC_ERRORS_R_INVALID_TRANSFORM:
98 //      return SecurityOperationStatus_INVALID_TRANSFORM;
99 //  case XMLSEC_ERRORS_R_INVALID_TRANSFORM_KEY:
100 //      return SecurityOperationStatus_INVALID_TRANSFORM_KEY;
101 //  case XMLSEC_ERRORS_R_INVALID_URI_TYPE:
102 //      return SecurityOperationStatus_INVALID_URI_TYPE;
103 //  case XMLSEC_ERRORS_R_TRANSFORM_SAME_DOCUMENT_REQUIRED:
104 //      return SecurityOperationStatus_TRANSFORM_SAME_DOCUMENT_REQUIRED;
105 //  case XMLSEC_ERRORS_R_TRANSFORM_DISABLED:
106 //      return SecurityOperationStatus_TRANSFORM_DISABLED;
107 //  case XMLSEC_ERRORS_R_INVALID_KEY_DATA:
108 //      return SecurityOperationStatus_INVALID_KEY_DATA;
109 //  case XMLSEC_ERRORS_R_KEY_DATA_NOT_FOUND:
110 //      return SecurityOperationStatus_KEY_DATA_NOT_FOUND;
111 //  case XMLSEC_ERRORS_R_KEY_DATA_ALREADY_EXIST:
112 //      return SecurityOperationStatus_KEY_DATA_ALREADY_EXIST;
113 //  case XMLSEC_ERRORS_R_INVALID_KEY_DATA_SIZE:
114 //      return SecurityOperationStatus_INVALID_KEY_DATA_SIZE;
115 //  case XMLSEC_ERRORS_R_KEY_NOT_FOUND:
116 //      return SecurityOperationStatus_KEY_NOT_FOUND;
117 //  case XMLSEC_ERRORS_R_KEYDATA_DISABLED:
118 //      return SecurityOperationStatus_KEYDATA_DISABLED;
119 //  case XMLSEC_ERRORS_R_MAX_RETRIEVALS_LEVEL:
120 //      return SecurityOperationStatus_MAX_RETRIEVALS_LEVEL;
121 //  case XMLSEC_ERRORS_R_MAX_RETRIEVAL_TYPE_MISMATCH:
122 //      return SecurityOperationStatus_MAX_RETRIEVAL_TYPE_MISMATCH;
123 //  case XMLSEC_ERRORS_R_MAX_ENCKEY_LEVEL:
124 //      return SecurityOperationStatus_MAX_ENCKEY_LEVEL;
125 //  case XMLSEC_ERRORS_R_CERT_VERIFY_FAILED:
126 //      return SecurityOperationStatus_CERT_VERIFY_FAILED;
127 //  case XMLSEC_ERRORS_R_CERT_NOT_FOUND:
128 //      return SecurityOperationStatus_CERT_NOT_FOUND;
129 //  case XMLSEC_ERRORS_R_CERT_REVOKED:
130 //      return SecurityOperationStatus_CERT_REVOKED;
131 //  case XMLSEC_ERRORS_R_CERT_ISSUER_FAILED:
132 //      return SecurityOperationStatus_CERT_ISSUER_FAILED;
133 //  case XMLSEC_ERRORS_R_CERT_NOT_YET_VALID:
134 //      return SecurityOperationStatus_CERT_NOT_YET_VALID;
135 //  case XMLSEC_ERRORS_R_CERT_HAS_EXPIRED:
136 //      return SecurityOperationStatus_CERT_HAS_EXPIRED;
137 //  case XMLSEC_ERRORS_R_DSIG_NO_REFERENCES:
138 //      return SecurityOperationStatus_DSIG_NO_REFERENCES;
139 //  case XMLSEC_ERRORS_R_DSIG_INVALID_REFERENCE:
140 //      return SecurityOperationStatus_DSIG_INVALID_REFERENCE;
141 //  case XMLSEC_ERRORS_R_ASSERTION:
142 //      return SecurityOperationStatus_ASSERTION;
143 //  default:
144 //      return SecurityOperationStatus_RUNTIMEERROR_FAILED;
145 //  }
146 // }
147 
148 
149 extern "C"
errorCallback(const char *,int,const char *,const char *,const char *,int,const char *)150 void errorCallback(const char * /*file*/,
151                    int /*line*/,
152                    const char * /*func*/,
153                    const char * /*errorObject*/,
154                    const char * /*errorSubject*/,
155                    int /*reason*/,
156                    const char  * /*msg*/)
157 {
158 #if OSL_DEBUG_LEVEL > 1
159 //     const char * afunc = func ? func : "";
160 //     const char * errObj = errorObject ? errorObject : "";
161 //     const char * errSub = errorSubject ? errorSubject : "";
162 //     const char * amsg = msg ? msg : "";
163 //  fprintf(stdout, "xmlsec error: %s, %s,  %s, %i %s  \n", afunc, errObj, errSub, reason, amsg);
164 #endif
165     //ToDo write log message
166 //  if (g_xErrorRecorder.is() && !g_bErrorRecorded)
167 //  {
168 //      g_xErrorRecorder->setStatus(getOperationStatus(reason));
169 
170 //      if ( reason != XMLSEC_ERRORS_R_ASSERTION && reason!=XMLSEC_ERRORS_R_XMLSEC_FAILED)
171 //      {
172 //             g_bErrorRecorded = true;
173 //      }
174 //  }
175 }
176 
177 // void setErrorRecorder(const ::com::sun::star::uno::Reference< ::com::sun::star::xml::crypto::XXMLSecurityTemplate >& xTemplate)
178 // {
179 //  g_xErrorRecorder = xTemplate;
180 //  g_xErrorRecorder->setStatus(SecurityOperationStatus_OPERATION_SUCCEEDED);
181 //  g_bErrorRecorded = false;
182 //  xmlSecErrorsSetCallback(errorCallback);
183 // }
184 
185 //void setErrorRecorder(const ::com::sun::star::uno::Reference< ::com::sun::star::xml::crypto::XXMLSignatureTemplate >& xTemplate)
186 
setErrorRecorder()187 void setErrorRecorder()
188 {
189 //  ::com::sun::star::uno::Reference< ::com::sun::star::xml::crypto::XXMLSecurityTemplate >
190 //      xSecurityTemplate(xTemplate, ::com::sun::star::uno::UNO_QUERY);
191 //  setErrorRecorder( xSecurityTemplate );
192     xmlSecErrorsSetCallback(errorCallback);
193 }
194 
195 // void setErrorRecorder(const ::com::sun::star::uno::Reference< ::com::sun::star::xml::crypto::XXMLEncryptionTemplate >& xTemplate)
196 // {
197 //  ::com::sun::star::uno::Reference< ::com::sun::star::xml::crypto::XXMLSecurityTemplate >
198 //      xSecurityTemplate(xTemplate, ::com::sun::star::uno::UNO_QUERY);
199 //  setErrorRecorder( xSecurityTemplate );
200 // }
201 
clearErrorRecorder()202 void clearErrorRecorder()
203 {
204     xmlSecErrorsSetCallback(NULL);
205 //  g_xErrorRecorder = NULL;
206 }
207 
208