mingwport29: merge with DEV300 m75

This commit is contained in:
tono 2010-03-24 06:43:30 +09:00
commit e28e96bb5f
511 changed files with 15535 additions and 3117 deletions

View File

@ -1,6 +1,5 @@
cr crashrep : l10n sal sysui SO:tools shell NULL
cr crashrep usr1 - all cr_mkout NULL
cr crashrep\scripts nmake - all cr_suscript NULL
cr crashrep\source\all nmake - all cr_sresource NULL
cr crashrep\source\unx nmake - u cr_sunx NULL
cr crashrep\source\win32 nmake - n cr_swin32 cr_sresource NULL

View File

@ -1,43 +0,0 @@
#*************************************************************************
#
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
#
# Copyright 2000, 2010 Oracle and/or its affiliates.
#
# OpenOffice.org - a multi-platform office productivity suite
#
# This file is part of OpenOffice.org.
#
# OpenOffice.org is free software: you can redistribute it and/or modify
# it under the terms of the GNU Lesser General Public License version 3
# only, as published by the Free Software Foundation.
#
# OpenOffice.org is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU Lesser General Public License version 3 for more details
# (a copy is included in the LICENSE file that accompanied this code).
#
# You should have received a copy of the GNU Lesser General Public License
# version 3 along with OpenOffice.org. If not, see
# <http://www.openoffice.org/license.html>
# for a copy of the LGPLv3 License.
#
#*************************************************************************
PRJ=..
PRJNAME=crashrep
TARGET=scripts
# --- Settings -----------------------------------------------------------
.INCLUDE : settings.mk
# --- Targets -------------------------------------------------------------
UNIXTEXT= \
$(MISC)$/crash_report.sh
.INCLUDE : target.mk

View File

@ -1,715 +0,0 @@
/*************************************************************************
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
* it under the terms of the GNU Lesser General Public License version 3
* only, as published by the Free Software Foundation.
*
* OpenOffice.org is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Lesser General Public License version 3 for more details
* (a copy is included in the LICENSE file that accompanied this code).
*
* You should have received a copy of the GNU Lesser General Public License
* version 3 along with OpenOffice.org. If not, see
* <http://www.openoffice.org/license.html>
* for a copy of the LGPLv3 License.
*
************************************************************************/
#include <interface.hxx>
#include <iostream.h>
using namespace std;
/*
* WizardPage
*/
WizardPage::~WizardPage()
{
}
/*
* WizardDialog
*/
WizardDialog::WizardDialog()
{
m_pStatusDialog = NULL;
m_pTopLevel = gtk_window_new( GTK_WINDOW_TOPLEVEL );
gtk_window_set_title( GTK_WINDOW(m_pTopLevel), StringResource::get( "%WELCOME_CAPTION%" ) );
m_pVBox = gtk_vbox_new( FALSE, 5 );
gtk_widget_show( m_pVBox );
gtk_container_add( GTK_CONTAINER(m_pTopLevel), m_pVBox );
m_pViewPort = gtk_viewport_new( NULL, NULL );
gtk_widget_show( m_pViewPort );
// set wizard title style
gtk_widget_ensure_style( m_pViewPort );
GtkStyle* pStyle = gtk_style_copy( gtk_widget_get_style( m_pViewPort ) );
for( int i = 0; i < 5; i++ )
{
pStyle->bg[i] = pStyle->white;
pStyle->text[i] = pStyle->black;
pStyle->bg_gc[i] = pStyle->white_gc;
pStyle->text_gc[i] = pStyle->black_gc;
}
gint nFontSize = pango_font_description_get_size( pStyle->font_desc );
nFontSize = nFontSize * 3 / 2;
pango_font_description_set_size( pStyle->font_desc, nFontSize );
gtk_widget_set_style( m_pViewPort, pStyle );
gtk_viewport_set_shadow_type( GTK_VIEWPORT(m_pViewPort), GTK_SHADOW_NONE );
gtk_box_pack_start( GTK_BOX(m_pVBox), m_pViewPort, FALSE, FALSE, 0 );
m_pWizardTitle = gtk_label_new( "Wizard" ); // to be replaced by resp. page titles
gtk_widget_show( m_pWizardTitle );
gtk_label_set_justify( GTK_LABEL(m_pWizardTitle), GTK_JUSTIFY_LEFT );
gtk_misc_set_alignment( GTK_MISC(m_pWizardTitle), 0, 1 );
gtk_misc_set_padding( GTK_MISC(m_pWizardTitle), 10, 10 );
gtk_widget_set_style( m_pWizardTitle, pStyle );
gtk_container_add( GTK_CONTAINER(m_pViewPort), m_pWizardTitle );
// prepare the area for the single pages
m_pPageArea = gtk_vbox_new( FALSE, 1);
gtk_widget_show( m_pPageArea );
gtk_box_pack_start( GTK_BOX(m_pVBox), m_pPageArea, TRUE, TRUE, 0 );
m_pSeparator = gtk_hseparator_new();
gtk_widget_show( m_pSeparator );
gtk_box_pack_start( GTK_BOX(m_pVBox), m_pSeparator, FALSE, FALSE, 0 );
m_pButtonBox = gtk_hbutton_box_new();
gtk_widget_show( m_pButtonBox );
gtk_box_pack_start( GTK_BOX(m_pVBox), m_pButtonBox, FALSE, FALSE, 0 );
gtk_button_box_set_layout( GTK_BUTTON_BOX(m_pButtonBox), GTK_BUTTONBOX_END );
gtk_button_box_set_spacing( GTK_BUTTON_BOX(m_pButtonBox), 0 );
m_pBackButton = gtk_button_new_with_mnemonic( StringResource::get( "%BACK_BUTTON%" ) );
gtk_widget_show( m_pBackButton );
gtk_container_add( GTK_CONTAINER(m_pButtonBox), m_pBackButton );
gtk_container_set_border_width( GTK_CONTAINER(m_pBackButton), 5 );
GTK_WIDGET_SET_FLAGS( m_pBackButton, GTK_CAN_DEFAULT );
m_pNextButton = gtk_button_new_with_mnemonic( StringResource::get( "%NEXT_BUTTON%" ) );
gtk_widget_show( m_pNextButton );
gtk_container_add( GTK_CONTAINER(m_pButtonBox), m_pNextButton );
gtk_container_set_border_width( GTK_CONTAINER(m_pNextButton), 5 );
GTK_WIDGET_SET_FLAGS( m_pNextButton, GTK_CAN_DEFAULT );
m_pSendButton = gtk_button_new_with_mnemonic( StringResource::get( "%SEND_BUTTON%" ) );
gtk_widget_show( m_pSendButton );
gtk_container_add( GTK_CONTAINER(m_pButtonBox), m_pSendButton );
gtk_container_set_border_width( GTK_CONTAINER(m_pSendButton), 5 );
GTK_WIDGET_SET_FLAGS( m_pSendButton, GTK_CAN_DEFAULT );
m_pCancelButton = gtk_button_new_with_mnemonic( StringResource::get( "%DONOT_SEND_BUTTON%" ) );
gtk_widget_show( m_pCancelButton );
gtk_container_add( GTK_CONTAINER(m_pButtonBox), m_pCancelButton );
gtk_container_set_border_width( GTK_CONTAINER(m_pCancelButton), 5 );
GTK_WIDGET_SET_FLAGS( m_pCancelButton, GTK_CAN_DEFAULT );
gtk_signal_connect( GTK_OBJECT(m_pTopLevel), "delete-event", G_CALLBACK(gtk_main_quit), NULL );
gtk_signal_connect( GTK_OBJECT(m_pCancelButton), "clicked", G_CALLBACK(gtk_main_quit), NULL );
gtk_signal_connect( GTK_OBJECT(m_pNextButton), "clicked", G_CALLBACK(button_clicked), this );
gtk_signal_connect( GTK_OBJECT(m_pBackButton), "clicked", G_CALLBACK(button_clicked), this );
gtk_signal_connect( GTK_OBJECT(m_pSendButton), "clicked", G_CALLBACK(button_clicked), this );
gtk_widget_set_sensitive( m_pSendButton, FALSE );
m_nCurrentPage = -1;
}
WizardDialog::~WizardDialog()
{
int nPages = m_aPages.size();
while( nPages-- )
delete m_aPages[nPages];
}
void WizardDialog::show_messagebox( const std::string& rMessage )
{
GtkWidget* messagebox = NULL;
GtkMessageType eType = GTK_MESSAGE_ERROR;
messagebox = gtk_message_dialog_new( NULL,
(GtkDialogFlags)0,
eType,
GTK_BUTTONS_OK,
rMessage.c_str(),
NULL
);
gtk_dialog_run( GTK_DIALOG(messagebox) );
gtk_widget_destroy( GTK_WIDGET(messagebox) );
}
// bInProgress: true=sending, false=finished
gint WizardDialog::show_sendingstatus( bool bInProgress )
{
m_pStatusDialog = gtk_dialog_new_with_buttons( StringResource::get( "%SENDING_REPORT_HEADER%" ),
getTopLevel(),
GTK_DIALOG_MODAL,
bInProgress ? GTK_STOCK_CANCEL : GTK_STOCK_OK,
bInProgress ? GTK_RESPONSE_REJECT : GTK_RESPONSE_OK,
NULL );
gtk_window_set_default_size( GTK_WINDOW(m_pStatusDialog), 350, 130 );
GtkWidget *pLabel = gtk_label_new( bInProgress ? StringResource::get( "%SENDING_REPORT_STATUS%" ) :
StringResource::get( "%SENDING_REPORT_STATUS_FINISHED%" ) );
gtk_widget_show( pLabel );
gtk_label_set_justify( GTK_LABEL(pLabel), GTK_JUSTIFY_CENTER);
gtk_misc_set_alignment( GTK_MISC(pLabel), 0, 0 );
gtk_container_add( GTK_CONTAINER(GTK_DIALOG(m_pStatusDialog)->vbox), pLabel );
gint ret = gtk_dialog_run( GTK_DIALOG(m_pStatusDialog) );
gtk_widget_destroy( m_pStatusDialog );
m_pStatusDialog = NULL;
return ret;
}
void WizardDialog::hide_sendingstatus()
{
if( m_pStatusDialog )
{
gtk_dialog_response( GTK_DIALOG(m_pStatusDialog), GTK_RESPONSE_OK );
XEvent event;
memset( &event, 0, sizeof(event) );
event.xexpose.type = Expose;
event.xexpose.display = GDK_DISPLAY();
event.xexpose.window = GDK_WINDOW_XWINDOW( m_pStatusDialog->window );
event.xexpose.width = event.xexpose.height = 10;
XSendEvent(
GDK_DISPLAY(),
GDK_WINDOW_XWINDOW( m_pStatusDialog->window ),
True,
ExposureMask,
&event );
XFlush( GDK_DISPLAY() );
}
}
gint WizardDialog::button_clicked( GtkWidget* pButton, WizardDialog* pThis )
{
if( pButton == pThis->m_pNextButton )
pThis->nextPage();
else if( pButton == pThis->m_pBackButton )
pThis->lastPage();
else if( pButton == pThis->m_pSendButton )
{
if( pThis->m_nCurrentPage != -1 )
pThis->m_aPages[pThis->m_nCurrentPage]->update();
if( send_crash_report( pThis, pThis->getSettings() ) )
gtk_main_quit();
}
return 0;
}
void WizardDialog::insertPage( WizardPage* pPage )
{
m_aPages.push_back( pPage );
if( m_nCurrentPage == -1 )
{
m_nCurrentPage = 0;
gtk_label_set_text( GTK_LABEL(m_pWizardTitle), pPage->getTitle() );
gtk_box_pack_start( GTK_BOX(m_pPageArea), pPage->getContents(), TRUE, TRUE, 0 );
gtk_widget_set_sensitive( m_pNextButton, FALSE );
gtk_widget_set_sensitive( m_pBackButton, FALSE );
}
else
{
gtk_widget_set_sensitive( m_pNextButton, TRUE );
}
}
void WizardDialog::nextPage()
{
if( m_aPages.empty() || m_nCurrentPage >= (int)m_aPages.size()-1 )
return;
m_aPages[m_nCurrentPage]->update();
gtk_container_remove( GTK_CONTAINER(m_pPageArea), m_aPages[m_nCurrentPage]->getContents() );
m_nCurrentPage++;
gtk_label_set_text( GTK_LABEL(m_pWizardTitle), m_aPages[m_nCurrentPage]->getTitle() );
gtk_box_pack_start( GTK_BOX(m_pPageArea), m_aPages[m_nCurrentPage]->getContents(), TRUE, TRUE, 0 );
if( m_nCurrentPage == (int)m_aPages.size()-1 )
{
gtk_widget_set_sensitive( m_pNextButton, FALSE );
gtk_widget_set_sensitive( m_pSendButton, TRUE );
}
if( m_aPages.size() > 1 )
gtk_widget_set_sensitive( m_pBackButton, TRUE );
}
void WizardDialog::lastPage()
{
if( m_aPages.empty() || m_nCurrentPage <= 0 )
return;
m_aPages[m_nCurrentPage]->update();
gtk_container_remove( GTK_CONTAINER(m_pPageArea), m_aPages[m_nCurrentPage]->getContents() );
m_nCurrentPage--;
gtk_label_set_text( GTK_LABEL(m_pWizardTitle), m_aPages[m_nCurrentPage]->getTitle() );
gtk_box_pack_start( GTK_BOX(m_pPageArea), m_aPages[m_nCurrentPage]->getContents(), TRUE, TRUE, 0 );
if( m_nCurrentPage == 0 )
gtk_widget_set_sensitive( m_pBackButton, FALSE );
if( m_aPages.size() > 1 )
gtk_widget_set_sensitive( m_pNextButton, TRUE );
}
void WizardDialog::show( bool bShow )
{
if( bShow )
gtk_widget_show( m_pTopLevel );
else
gtk_widget_hide( m_pTopLevel );
}
/*
* MainPage
*/
MainPage::MainPage( WizardDialog* pParent ) : WizardPage( pParent )
{
hash_map< string, string >& rSettings = m_pDialog->getSettings();
m_aWizardTitle = StringResource::get( "%REPORT_HEADER%" );
m_pPageContents = gtk_vbox_new( FALSE, 0 );
gtk_widget_show( m_pPageContents );
m_pInfo = gtk_label_new( StringResource::get( "%REPORT_BODY%" ) );
gtk_widget_show( m_pInfo );
gtk_label_set_line_wrap( GTK_LABEL(m_pInfo), TRUE );
gtk_label_set_justify( GTK_LABEL(m_pInfo), GTK_JUSTIFY_LEFT);
gtk_misc_set_alignment( GTK_MISC(m_pInfo), 0, 1 );
gtk_misc_set_padding( GTK_MISC(m_pInfo ), 5, 5);
gtk_box_pack_start( GTK_BOX(m_pPageContents), m_pInfo, FALSE, FALSE, 0 );
m_pHBox = gtk_hbox_new( FALSE, 0 );
gtk_widget_show( m_pHBox );
gtk_box_pack_start( GTK_BOX(m_pPageContents), m_pHBox, TRUE, TRUE, 0 );
m_pLeftColumn = gtk_vbox_new( FALSE, 5 );
gtk_widget_show( m_pLeftColumn );
gtk_container_set_border_width( GTK_CONTAINER(m_pLeftColumn), 5 );
gtk_box_pack_start( GTK_BOX(m_pHBox), m_pLeftColumn, TRUE, TRUE, 0 );
m_pRightColumn = gtk_vbutton_box_new();
gtk_widget_show( m_pRightColumn );
gtk_button_box_set_layout( GTK_BUTTON_BOX(m_pRightColumn), GTK_BUTTONBOX_END );
gtk_box_pack_start( GTK_BOX(m_pHBox), m_pRightColumn, FALSE, FALSE, 0 );
m_pEditLabel = gtk_label_new_with_mnemonic( StringResource::get( "%ENTER_TITLE%" ) );
gtk_widget_show( m_pEditLabel );
gtk_label_set_justify( GTK_LABEL(m_pEditLabel), GTK_JUSTIFY_LEFT);
gtk_misc_set_alignment( GTK_MISC(m_pEditLabel), 0, 1 );
gtk_box_pack_start( GTK_BOX(m_pLeftColumn), m_pEditLabel, FALSE, FALSE, 0 );
m_pEdit = gtk_entry_new();
gtk_widget_show( m_pEdit );
gtk_box_pack_start( GTK_BOX(m_pLeftColumn), m_pEdit, FALSE, FALSE, 0 );
gtk_label_set_mnemonic_widget( GTK_LABEL(m_pEditLabel), m_pEdit );
hash_map<string, string>::iterator aIter;
aIter = rSettings.find( "TITLE" );
if( aIter != rSettings.end() )
gtk_entry_set_text( GTK_ENTRY(m_pEdit), aIter->second.c_str() );
m_pEntryVBox = gtk_vbox_new( FALSE, 5 );
gtk_widget_show( m_pEntryVBox );
gtk_box_pack_start( GTK_BOX(m_pLeftColumn), m_pEntryVBox, TRUE, TRUE, 0 );
m_pEntryLabel = gtk_label_new_with_mnemonic( StringResource::get( "%ENTER_DESCRIPTION%" ) );
gtk_widget_show( m_pEntryLabel );
gtk_label_set_justify( GTK_LABEL(m_pEntryLabel), GTK_JUSTIFY_LEFT);
gtk_misc_set_alignment( GTK_MISC(m_pEntryLabel), 0, 1 );
gtk_box_pack_start( GTK_BOX(m_pEntryVBox), m_pEntryLabel, FALSE, FALSE, 0 );
m_pScrolledEntry = gtk_scrolled_window_new( NULL, NULL );
gtk_widget_show( m_pScrolledEntry );
gtk_scrolled_window_set_shadow_type( GTK_SCROLLED_WINDOW(m_pScrolledEntry), GTK_SHADOW_IN );
gtk_box_pack_start( GTK_BOX(m_pEntryVBox), m_pScrolledEntry, TRUE, TRUE, 0 );
m_pEntry = gtk_text_view_new();
gtk_widget_show( m_pEntry );
gtk_text_view_set_wrap_mode( GTK_TEXT_VIEW(m_pEntry), GTK_WRAP_WORD );
gtk_container_add( GTK_CONTAINER(m_pScrolledEntry), m_pEntry );
aIter = rSettings.find( "DESCRIPTION" );
if( aIter != rSettings.end() )
{
GtkTextBuffer* pBuffer = gtk_text_view_get_buffer( GTK_TEXT_VIEW(m_pEntry) );
gtk_text_buffer_set_text( pBuffer, aIter->second.c_str(), -1 );
}
gtk_label_set_mnemonic_widget( GTK_LABEL(m_pEntryLabel), m_pEntry );
m_pDetails = gtk_button_new_with_mnemonic( StringResource::get( "%SHOW_REPORT_BUTTON%" ) );
gtk_widget_show(m_pDetails);
gtk_container_set_border_width( GTK_CONTAINER(m_pDetails), 5 );
gtk_container_add( GTK_CONTAINER(m_pRightColumn), m_pDetails );
m_pOptions = gtk_button_new_with_mnemonic( StringResource::get( "%OPTIONS_BUTTON%" ) );
gtk_widget_show(m_pOptions);
gtk_container_set_border_width( GTK_CONTAINER(m_pOptions), 5 );
gtk_container_add( GTK_CONTAINER(m_pRightColumn), m_pOptions );
// check env var for save button
const char *szUserType = getenv( "STAROFFICE_USERTYPE" );
if( szUserType && *szUserType )
{
m_pSave = gtk_button_new_with_mnemonic( StringResource::get( "%SAVE_REPORT_BUTTON%" ) );
gtk_widget_show(m_pSave);
gtk_container_set_border_width( GTK_CONTAINER(m_pSave), 5 );
gtk_container_add( GTK_CONTAINER(m_pRightColumn), m_pSave );
}
else
m_pSave = NULL;
m_pCheck = gtk_check_button_new_with_mnemonic( StringResource::get( "%ALLOW_CONTACT%" ) );
gtk_widget_show( m_pCheck );
gtk_container_set_border_width( GTK_CONTAINER(m_pCheck), 5 );
//gtk_box_pack_start( GTK_BOX(m_pPageContents), m_pCheck, FALSE, FALSE, 5 );
gtk_box_pack_start( GTK_BOX(m_pLeftColumn), m_pCheck, FALSE, FALSE, 5 );
aIter = rSettings.find( "CONTACT" );
if( aIter != rSettings.end() )
{
const char *str = aIter->second.c_str();
if( str && !strcasecmp(str, "true") )
gtk_toggle_button_set_active( GTK_TOGGLE_BUTTON(m_pCheck), TRUE );
}
m_pAddressLabel = gtk_label_new_with_mnemonic( StringResource::get( "%ENTER_EMAIL%" ) );
gtk_widget_show( m_pAddressLabel );
gtk_label_set_justify( GTK_LABEL(m_pAddressLabel), GTK_JUSTIFY_LEFT);
gtk_misc_set_alignment( GTK_MISC(m_pAddressLabel), 0, 1 );
gtk_box_pack_start( GTK_BOX(m_pLeftColumn), m_pAddressLabel, FALSE, FALSE, 5 );
m_pAddress = gtk_entry_new();
gtk_widget_show( m_pAddress );
gtk_box_pack_start( GTK_BOX(m_pLeftColumn), m_pAddress, FALSE, FALSE, 5 );
aIter = rSettings.find( "EMAIL" );
if( aIter != rSettings.end() )
gtk_entry_set_text( GTK_ENTRY(m_pAddress), aIter->second.c_str() );
gtk_signal_connect( GTK_OBJECT(m_pDetails), "clicked", G_CALLBACK(button_clicked), this );
gtk_signal_connect( GTK_OBJECT(m_pOptions), "clicked", G_CALLBACK(button_clicked), this );
if(m_pSave) // optional
gtk_signal_connect( GTK_OBJECT(m_pSave), "clicked", G_CALLBACK(button_clicked), this );
gtk_signal_connect( GTK_OBJECT(m_pCheck), "toggled", G_CALLBACK(button_toggled), this );
button_toggled( m_pCheck, this );
g_object_ref( G_OBJECT(m_pPageContents) );
}
MainPage::~MainPage()
{
g_object_unref( G_OBJECT(m_pPageContents) );
}
void MainPage::update()
{
hash_map< string, string >& rSettings = m_pDialog->getSettings();
GtkTextIter start, end;
GtkTextBuffer* pTextBuffer = gtk_text_view_get_buffer( GTK_TEXT_VIEW(m_pEntry) );
gtk_text_buffer_get_bounds( pTextBuffer, &start, &end );
rSettings[ "DESCRIPTION" ] = gtk_text_buffer_get_text( pTextBuffer, &start, &end, 1 );
rSettings[ "TITLE" ] = gtk_entry_get_text( GTK_ENTRY(m_pEdit) );
rSettings[ "CONTACT" ] = gtk_toggle_button_get_active( GTK_TOGGLE_BUTTON(m_pCheck) ) ? "true" : "false";
rSettings[ "EMAIL" ] = gtk_entry_get_text( GTK_ENTRY(m_pAddress) );
}
gint MainPage::button_toggled( GtkWidget* pButton, MainPage* pThis )
{
if ( GTK_TOGGLE_BUTTON (pThis->m_pCheck)->active )
{
gtk_widget_set_sensitive( pThis->m_pAddressLabel, TRUE);
gtk_widget_set_sensitive( pThis->m_pAddress, TRUE);
}
else
{
gtk_widget_set_sensitive( pThis->m_pAddressLabel, FALSE);
gtk_widget_set_sensitive( pThis->m_pAddress, FALSE);
}
return 0;
}
gint MainPage::button_clicked( GtkWidget* pButton, MainPage* pThis )
{
if( pButton == pThis->m_pSave )
{
GtkWidget* pFile = gtk_file_selection_new( StringResource::get( "%SAVE_REPORT_TITLE%" ) );
gint nRet = gtk_dialog_run( GTK_DIALOG(pFile) );
if( nRet == GTK_RESPONSE_OK )
{
string aFile = gtk_file_selection_get_filename( GTK_FILE_SELECTION(pFile) );
pThis->update();
if( save_crash_report( aFile, pThis->m_pDialog->getSettings() ) )
{
// gtk_main_quit();
}
}
gtk_widget_destroy( pFile );
}
else if( pButton == pThis->m_pDetails )
{
pThis->update();
GtkWidget* pDialog = gtk_dialog_new_with_buttons( StringResource::get( "%REPORT_CAPTION%" ),
pThis->m_pDialog->getTopLevel(),
GTK_DIALOG_MODAL,
GTK_STOCK_OK,
GTK_RESPONSE_OK,
NULL );
gtk_window_set_default_size( GTK_WINDOW(pDialog), 500, 300 );
GtkWidget* pScroll = gtk_scrolled_window_new( NULL, NULL );
gtk_widget_show( pScroll );
gtk_scrolled_window_set_shadow_type( GTK_SCROLLED_WINDOW(pScroll), GTK_SHADOW_IN );
gtk_container_add( GTK_CONTAINER(GTK_DIALOG(pDialog)->vbox), pScroll );
string aText = crash_get_details( pThis->m_pDialog->getSettings() );
GtkWidget* pView = gtk_text_view_new();
gtk_widget_show( pView );
gtk_text_view_set_wrap_mode( GTK_TEXT_VIEW(pView), GTK_WRAP_WORD );
gtk_text_view_set_editable( GTK_TEXT_VIEW(pView), FALSE );
GtkTextBuffer* pBuffer = gtk_text_view_get_buffer( GTK_TEXT_VIEW(pView) );
gtk_text_buffer_set_text( pBuffer, aText.data(), aText.size() );
gtk_container_add( GTK_CONTAINER(pScroll), pView );
gtk_dialog_run( GTK_DIALOG(pDialog) );
gtk_widget_destroy( pDialog );
}
else if( pButton == pThis->m_pOptions )
{
OptionsDialog aOptions( pThis->m_pDialog->getTopLevel(), pThis->m_pDialog->getSettings() );
//pThis->m_pDialog->show_sendingstatus( true );
//pThis->m_pDialog->show_sendingstatus( false );
//sleep(5);
//pThis->m_pDialog->hide_sendingstatus();
}
return 0;
}
/*
* OptionsDialog (Proxy-Settings)
*/
OptionsDialog::OptionsDialog( GtkWindow *pParent ,hash_map< string, string >& rSettings )
{
m_pDialog = gtk_dialog_new_with_buttons( StringResource::get( "%OPTIONS_TITLE%" ),
pParent,
GTK_DIALOG_MODAL,
GTK_STOCK_OK, GTK_RESPONSE_OK,
GTK_STOCK_CANCEL, GTK_RESPONSE_REJECT,
NULL );
gtk_window_set_default_size( GTK_WINDOW(m_pDialog), 500, 300 );
m_pPage = gtk_vbox_new( FALSE, 0 );
m_pLeftColumn = gtk_vbox_new( FALSE, 5 );
gtk_widget_show( m_pPage );
gtk_widget_show( m_pLeftColumn );
gtk_container_add( GTK_CONTAINER(GTK_DIALOG(m_pDialog)->vbox), m_pPage );
gtk_container_set_border_width( GTK_CONTAINER(m_pLeftColumn), 5 );
gtk_box_pack_start( GTK_BOX(m_pPage), m_pLeftColumn, FALSE, FALSE, 5 );
// frame for proxy settings
m_pFrame = gtk_frame_new(StringResource::get( "%PROXY_SETTINGS_HEADER%" ));
gtk_frame_set_shadow_type( GTK_FRAME(m_pFrame), GTK_SHADOW_ETCHED_IN );
gtk_widget_show(m_pFrame);
gtk_box_pack_start(GTK_BOX (m_pLeftColumn), m_pFrame, TRUE, TRUE, 0);
m_pVBox = gtk_vbox_new( FALSE, 0 );
gtk_widget_show( m_pVBox );
gtk_container_add( GTK_CONTAINER( m_pFrame ), m_pVBox );
// the radio buttons
m_pDirect = gtk_radio_button_new_with_mnemonic( NULL,
StringResource::get( "%PROXY_SETTINGS_DIRECT%" ) );
gtk_widget_show(m_pDirect);
gtk_box_pack_start(GTK_BOX (m_pVBox), m_pDirect, FALSE, FALSE, 0);
m_pManual = gtk_radio_button_new_with_mnemonic( gtk_radio_button_group( GTK_RADIO_BUTTON(m_pDirect) ),
StringResource::get( "%PROXY_SETTINGS_MANUAL%" ) );
gtk_widget_show(m_pManual);
gtk_box_pack_start(GTK_BOX (m_pVBox), m_pManual, FALSE, FALSE, 0);
hash_map<string, string>::iterator aIter;
const char *str = NULL;
aIter = rSettings.find( "USEPROXY" );
if( aIter != rSettings.end() )
str = aIter->second.c_str();
if( str && !strcasecmp(str, "true") )
gtk_toggle_button_set_active( GTK_TOGGLE_BUTTON(m_pManual), TRUE );
else
gtk_toggle_button_set_active( GTK_TOGGLE_BUTTON(m_pDirect), TRUE );
// the server and port edit controls
m_pHBox = gtk_hbox_new( FALSE, 0 );
gtk_widget_show( m_pHBox );
gtk_box_pack_start(GTK_BOX (m_pVBox), m_pHBox, FALSE, FALSE, 10);
m_pVBoxServer = gtk_vbox_new( FALSE, 5 );
gtk_widget_show( m_pVBoxServer );
gtk_box_pack_start(GTK_BOX (m_pHBox), m_pVBoxServer, TRUE, TRUE, 10);
m_pVBoxPort = gtk_vbox_new( FALSE, 5 );
gtk_widget_show( m_pVBoxPort );
gtk_box_pack_start(GTK_BOX (m_pHBox), m_pVBoxPort, FALSE, FALSE, 10);
m_pServerLabel = gtk_label_new_with_mnemonic( StringResource::get( "%PROXY_SETTINGS_ADDRESS%" ) );
gtk_widget_show( m_pServerLabel );
gtk_label_set_justify( GTK_LABEL(m_pServerLabel), GTK_JUSTIFY_LEFT);
gtk_misc_set_alignment( GTK_MISC(m_pServerLabel), 0, 1 );
gtk_box_pack_start( GTK_BOX(m_pVBoxServer), m_pServerLabel, FALSE, FALSE, 0 );
m_pServer = gtk_entry_new();
gtk_widget_show( m_pServer );
gtk_box_pack_start( GTK_BOX(m_pVBoxServer), m_pServer, FALSE, FALSE, 0 );
gtk_label_set_mnemonic_widget( GTK_LABEL(m_pServerLabel), m_pServer );
aIter = rSettings.find( "SERVER" );
if( aIter != rSettings.end() )
gtk_entry_set_text( GTK_ENTRY(m_pServer), aIter->second.c_str() );
m_pPortLabel = gtk_label_new_with_mnemonic( StringResource::get( "%PROXY_SETTINGS_PORT%" ) );
gtk_widget_show( m_pPortLabel );
gtk_label_set_justify( GTK_LABEL(m_pPortLabel), GTK_JUSTIFY_LEFT);
gtk_misc_set_alignment( GTK_MISC(m_pPortLabel), 0, 1 );
gtk_box_pack_start( GTK_BOX(m_pVBoxPort), m_pPortLabel, FALSE, FALSE, 0 );
m_pPort = gtk_entry_new();
gtk_widget_show( m_pPort );
gtk_box_pack_start( GTK_BOX(m_pVBoxPort), m_pPort, FALSE, FALSE, 0 );
gtk_label_set_mnemonic_widget( GTK_LABEL(m_pPortLabel), m_pPort );
aIter = rSettings.find( "PORT" );
if( aIter != rSettings.end() )
gtk_entry_set_text( GTK_ENTRY(m_pPort), aIter->second.c_str() );
// help text
m_pNote = gtk_label_new( StringResource::get( "%PROXY_SETTINGS_DESCRIPTION%" ) );
gtk_widget_show( m_pNote );
gtk_label_set_justify( GTK_LABEL(m_pNote), GTK_JUSTIFY_LEFT);
gtk_misc_set_alignment( GTK_MISC(m_pNote), 0, 1 );
gtk_box_pack_start(GTK_BOX (m_pLeftColumn), m_pNote, FALSE, FALSE, 5);
gtk_label_set_line_wrap (GTK_LABEL (m_pNote), TRUE);
gtk_signal_connect( GTK_OBJECT(m_pDirect), "toggled", G_CALLBACK(button_toggled), this );
gtk_signal_connect( GTK_OBJECT(m_pManual), "toggled", G_CALLBACK(button_toggled), this );
button_toggled( m_pDirect, this );
if( gtk_dialog_run( GTK_DIALOG(m_pDialog) ) == GTK_RESPONSE_OK )
{
rSettings[ "SERVER" ] = getServer();
rSettings[ "PORT" ] = getPort();
rSettings[ "USEPROXY" ] = getUseProxy();
}
g_object_ref( G_OBJECT(m_pDialog) );
}
OptionsDialog::~OptionsDialog()
{
gtk_widget_destroy( m_pDialog );
g_object_unref( G_OBJECT(m_pDialog) );
}
gint OptionsDialog::button_toggled( GtkWidget* pButton, OptionsDialog* pThis )
{
if ( GTK_TOGGLE_BUTTON (pThis->m_pManual)->active )
{
gtk_widget_set_sensitive( pThis->m_pServerLabel, TRUE);
gtk_widget_set_sensitive( pThis->m_pServer, TRUE);
gtk_widget_set_sensitive( pThis->m_pPortLabel, TRUE);
gtk_widget_set_sensitive( pThis->m_pPort, TRUE);
}
else
{
gtk_widget_set_sensitive( pThis->m_pServerLabel, FALSE);
gtk_widget_set_sensitive( pThis->m_pServer, FALSE);
gtk_widget_set_sensitive( pThis->m_pPortLabel, FALSE);
gtk_widget_set_sensitive( pThis->m_pPort, FALSE);
}
return 0;
}
string OptionsDialog::getUseProxy()
{
return gtk_toggle_button_get_active( GTK_TOGGLE_BUTTON(m_pDirect) ) ? "false" : "true";
}
string OptionsDialog::getServer()
{
return gtk_entry_get_text( GTK_ENTRY(m_pServer) );
}
string OptionsDialog::getPort()
{
return gtk_entry_get_text( GTK_ENTRY(m_pPort) );
}
/*
* WelcomePage
*/
WelcomePage::WelcomePage( WizardDialog* pParent ) : WizardPage( pParent )
{
m_aWizardTitle = StringResource::get( "%WELCOME_HEADER%" );
string aBody = StringResource::get( "%WELCOME_BODY1%" );
aBody += StringResource::get( "%WELCOME_BODY2%" );
aBody += StringResource::get( "%WELCOME_BODY3%" );
aBody += "\n\n";
aBody += StringResource::get( "%PRIVACY_URL%" );
m_pPageContents = gtk_label_new( aBody.c_str() );
gtk_widget_show( m_pPageContents );
gtk_label_set_line_wrap( GTK_LABEL(m_pPageContents), TRUE );
gtk_label_set_justify( GTK_LABEL(m_pPageContents), GTK_JUSTIFY_LEFT);
gtk_misc_set_alignment( GTK_MISC(m_pPageContents), 0, 1 );
gtk_misc_set_padding( GTK_MISC(m_pPageContents ), 5, 5);
g_object_ref( G_OBJECT(m_pPageContents) );
}
WelcomePage::~WelcomePage()
{
g_object_unref( G_OBJECT(m_pPageContents) );
}
void WelcomePage::update()
{
}

View File

@ -1,189 +0,0 @@
/*************************************************************************
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
* it under the terms of the GNU Lesser General Public License version 3
* only, as published by the Free Software Foundation.
*
* OpenOffice.org is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Lesser General Public License version 3 for more details
* (a copy is included in the LICENSE file that accompanied this code).
*
* You should have received a copy of the GNU Lesser General Public License
* version 3 along with OpenOffice.org. If not, see
* <http://www.openoffice.org/license.html>
* for a copy of the LGPLv3 License.
*
************************************************************************/
#include <sys/types.h>
#include <sys/stat.h>
#include <unistd.h>
#include <string.h>
#include <stdio.h>
#include <gdk/gdkkeysyms.h>
#include <gtk/gtk.h>
#include <gdk/gdk.h>
#include <gdk/gdkx.h>
#include <X11/Xlib.h>
#include <hash_map>
#include <vector>
#include <string>
class WizardDialog;
// returns success, on true application will quit
bool save_crash_report( const std::string& rFileName, const std::hash_map< std::string, std::string >& rSettings );
// returns success, on true application will quit
bool send_crash_report( WizardDialog *pDialog, const std::hash_map< std::string, std::string >& rSettings );
// must return a valid UTF8 string containing the message that will be sent
std::string crash_get_details( const std::hash_map< std::string, std::string >& rSettings );
class StringResource
{
public:
static void init( int argc, char** argv );
static const char* get( const char* pKey );
};
class WizardPage
{
protected:
std::string m_aWizardTitle;
GtkWidget* m_pPageContents;
WizardDialog* m_pDialog;
public:
WizardPage( WizardDialog* pDialog ) : m_pDialog( pDialog ) {}
virtual ~WizardPage();
const char* getTitle() const { return m_aWizardTitle.c_str(); }
GtkWidget* getContents() const { return m_pPageContents; }
virtual void update() = 0;
};
class WizardDialog
{
std::vector< WizardPage* > m_aPages;
int m_nCurrentPage;
GtkWidget* m_pTopLevel;
GtkWidget* m_pVBox;
GtkWidget* m_pViewPort;
GtkWidget* m_pWizardTitle;
GtkWidget* m_pPageArea;
GtkWidget* m_pSeparator;
GtkWidget* m_pButtonBox;
GtkWidget* m_pBackButton;
GtkWidget* m_pNextButton;
GtkWidget* m_pSendButton;
GtkWidget* m_pCancelButton;
GtkWidget* m_pStatusDialog;
std::hash_map< std::string, std::string > m_aSettings;
static gint button_clicked( GtkWidget* pButton, WizardDialog* pThis );
void nextPage();
void lastPage();
public:
WizardDialog();
~WizardDialog();
// takes ownership of page
void insertPage( WizardPage* pPage );
void show( bool bShow = true );
void show_messagebox( const std::string& rMessage );
gint show_sendingstatus( bool bInProgress );
void hide_sendingstatus();
std::hash_map< std::string, std::string >& getSettings() { return m_aSettings; }
GtkWindow* getTopLevel() const { return GTK_WINDOW(m_pTopLevel); }
};
class MainPage : public WizardPage
{
GtkWidget* m_pInfo;
GtkWidget* m_pEditLabel;
GtkWidget* m_pEdit;
GtkWidget* m_pEntryLabel;
GtkWidget* m_pEntryVBox;
GtkWidget* m_pScrolledEntry;
GtkWidget* m_pEntry;
GtkWidget* m_pHBox;
GtkWidget* m_pRightColumn;
GtkWidget* m_pLeftColumn;
GtkWidget* m_pDetails;
GtkWidget* m_pSave;
GtkWidget* m_pCheck;
GtkWidget* m_pOptions;
GtkWidget* m_pAddressLabel;
GtkWidget* m_pAddress;
static gint button_clicked( GtkWidget* pButton, MainPage* pThis );
static gint button_toggled( GtkWidget* pButton, MainPage* pThis );
public:
MainPage( WizardDialog* );
virtual ~MainPage();
virtual void update();
};
class WelcomePage : public WizardPage
{
public:
WelcomePage( WizardDialog* );
virtual ~WelcomePage();
virtual void update();
};
class OptionsDialog
{
GtkWidget* m_pDialog;
GtkWidget* m_pPage;
GtkWidget* m_pLeftColumn;
GtkWidget* m_pFrame;
GtkWidget* m_pDirect;
GtkWidget* m_pManual;
GtkWidget* m_pServerLabel;
GtkWidget* m_pServer;
GtkWidget* m_pColon;
GtkWidget* m_pPortLabel;
GtkWidget* m_pPort;
GtkWidget* m_pNote;
GtkWidget* m_pOkButton;
GtkWidget* m_pCancelButton;
GtkWidget* m_pButtonBox;
GtkWidget* m_pVBox;
GtkWidget* m_pHBox;
GtkWidget* m_pVBoxServer;
GtkWidget* m_pVBoxPort;
static gint button_toggled( GtkWidget* pButton, OptionsDialog* pThis );
public:
OptionsDialog( GtkWindow* pParent,
std::hash_map< std::string, std::string >& rSettings );
virtual ~OptionsDialog();
std::string getUseProxy();
std::string getServer();
std::string getPort();
};

View File

@ -56,9 +56,6 @@ APP1TARGET=$(TARGET)
APP1OBJS=$(OBJFILES)
APP1RPATH=BRAND
.IF "$(OS)" != "MACOSX"
APP1STDLIBS=$(DYNAMIC) -lXext -lX11
.ENDIF
.IF "$(OS)" != "FREEBSD" && "$(OS)" != "MACOSX" && "$(OS)"!="NETBSD"
APP1STDLIBS+=-ldl -lnsl
.ENDIF
@ -66,6 +63,8 @@ APP1STDLIBS+=-ldl -lnsl
APP1STDLIBS+=-lsocket
.ENDIF
UNIXTEXT = $(MISC)/crash_report.sh
.ENDIF # "$(ENABLE_CRASHDUMP)" != "" || "$(PRODUCT)" == ""
# --- Targets ------------------------------------------------------

View File

@ -1,130 +0,0 @@
/*************************************************************************
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
* it under the terms of the GNU Lesser General Public License version 3
* only, as published by the Free Software Foundation.
*
* OpenOffice.org is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Lesser General Public License version 3 for more details
* (a copy is included in the LICENSE file that accompanied this code).
*
* You should have received a copy of the GNU Lesser General Public License
* version 3 along with OpenOffice.org. If not, see
* <http://www.openoffice.org/license.html>
* for a copy of the LGPLv3 License.
*
************************************************************************/
#include <interface.hxx>
#include <cstdio>
#include <hash_map>
#include <string>
using namespace std;
static hash_map< string, string >* pStringResources = NULL;
static string getResFileName( const char* progname )
{
string aRet = progname;
size_t pos = aRet.rfind( '/' );
// FIXME: search PATH if necessary
OSL_ASSERT( pos != string::npos );
aRet.erase( pos );
aRet.append( "/resource/crash_dump.res" );
return aRet;
}
static void filterString( string& rString )
{
static const char* pProductName = getenv( "PRODUCTNAME" );
static int nProductLen = pProductName ? strlen( pProductName ) : 0;
static const char* pProductVersion = getenv( "PRODUCTVERSION" );
static int nVersionLen = pProductVersion ? strlen( pProductVersion ) : 0;
// fill in eventually escaped characters
string::size_type pos = 0;
while( (pos = rString.find( '\\' ) ) != string::npos )
{
char cRep = 0;
switch( rString[pos+1] )
{
case 't': cRep = '\t';break;
case 'n': cRep = '\n';break;
case 'r': cRep = '\r';break;
case 'f': cRep = '\f';break;
default: cRep = rString[pos+1];
}
if( cRep )
rString.replace( pos, 2, &cRep, 1 );
}
while( (pos = rString.find( '~' ) ) != string::npos )
{
// replace mnemonic marker
rString.replace( pos, 1, "_", 1 );
}
while( (pos = rString.find( "%PRODUCTNAME%" ) ) != string::npos )
{
rString.replace( pos, 13, pProductName ? pProductName : "OpenOffice" );
}
while( (pos = rString.find( "%PRODUCTVERSION%" ) ) != string::npos )
{
rString.replace( pos, 16, pProductVersion ? pProductVersion : "" );
}
// remove whitespace at end
pos = rString.find_last_not_of( "\r\n\t\f " );
if( pos != string::npos )
rString.erase( pos+1 );
}
void StringResource::init( int argc, char** argv )
{
pStringResources = new hash_map< string, string >();
string aResFile = getResFileName( argv[0] );
FILE* fp = fopen( aResFile.c_str(), "r" );
if( fp )
{
char buf[4096];
string aKey;
string aValue;
while( ! feof( fp ) )
{
if( ! fgets( buf, sizeof(buf), fp ) )
break;
char* pEq = strchr( buf, '=' );
if( ! pEq || *(pEq+1) == 0 ) // invalid line
continue;
aKey = string(buf, pEq-buf);
aValue = pEq+1;
while( (aValue.empty() || aValue[ aValue.size()-1 ] != '\n') && ! feof( fp ) )
{
if( fgets( buf, sizeof( buf ), fp ) )
aValue.append( buf );
}
filterString( aValue );
(*pStringResources)[aKey] = aValue;
}
fclose( fp );
}
}
const char* StringResource::get( const char* pKey )
{
hash_map< string, string >::const_iterator it = pStringResources->find( pKey );
return (it == pStringResources->end()) ? "" : it->second.c_str();
}

View File

@ -1,59 +0,0 @@
#*************************************************************************
#
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
#
# Copyright 2000, 2010 Oracle and/or its affiliates.
#
# OpenOffice.org - a multi-platform office productivity suite
#
# This file is part of OpenOffice.org.
#
# OpenOffice.org is free software: you can redistribute it and/or modify
# it under the terms of the GNU Lesser General Public License version 3
# only, as published by the Free Software Foundation.
#
# OpenOffice.org is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU Lesser General Public License version 3 for more details
# (a copy is included in the LICENSE file that accompanied this code).
#
# You should have received a copy of the GNU Lesser General Public License
# version 3 along with OpenOffice.org. If not, see
# <http://www.openoffice.org/license.html>
# for a copy of the LGPLv3 License.
#
#*************************************************************************
PRJ=..$/..$/..
PRJNAME=crashrep
TARGET=unxcrashres
LIBTARGET=NO
TARGETTYPE=CUI
# --- Settings -----------------------------------------------------
.INCLUDE : settings.mk
.IF "$(OS)"=="MACOSX"
dummy:
@echo "Nothing to build for OS $(OS)"
.ELSE # "$(OS)"=="MACOSX"
# --- Files --------------------------------------------------------
SOLARLIB!:=$(SOLARLIB:s/jre/jnore/)
APP1TARGET=$(TARGET)
APP1OBJS=$(OBJ)$/unxcrashres.obj
APP1STDLIBS=$(TOOLSLIB) $(SALLIB)
.ENDIF "$(OS)"=="MACOSX"
# --- Targets ------------------------------------------------------
.INCLUDE : target.mk

View File

@ -1,101 +0,0 @@
/*************************************************************************
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
* it under the terms of the GNU Lesser General Public License version 3
* only, as published by the Free Software Foundation.
*
* OpenOffice.org is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Lesser General Public License version 3 for more details
* (a copy is included in the LICENSE file that accompanied this code).
*
* You should have received a copy of the GNU Lesser General Public License
* version 3 along with OpenOffice.org. If not, see
* <http://www.openoffice.org/license.html>
* for a copy of the LGPLv3 License.
*
************************************************************************/#include <tools/config.hxx>
#include <rtl/string.hxx>
#include <osl/thread.h>
#include <hash_map>
#include <string>
#include <cstdio>
#include <cerrno>
using namespace std;
using namespace rtl;
void filterValue( ByteString& rValue, const OString& rGroup, const ByteString& rKey )
{
USHORT nStartPos = rValue.Search( '"' );
USHORT nStopPos = rValue.SearchBackward( '"' );
if( nStartPos == STRING_NOTFOUND || nStopPos == STRING_NOTFOUND )
{
fprintf( stderr, "Error: invalid key in [%s] in key \"%s\"\n",
rGroup.getStr(),
rKey.GetBuffer() );
exit( 1 );
}
rValue.Erase( nStopPos );
rValue.Erase( 0, nStartPos+1 );
}
int main( int argc, char** argv )
{
if( argc != 3 )
{
fprintf( stderr, "USAGE: unxcrashres <in_lng_file> <out_file_prefix>\n" );
exit( 1 );
}
ByteString tmp_argv1( argv[1] );
Config aConfig( String( tmp_argv1, osl_getThreadTextEncoding() ) );
hash_map< ByteString, hash_map< OString, OString, OStringHash >, OStringHash > aFiles;
for( USHORT i = 0; i < aConfig.GetGroupCount(); i++ )
{
aConfig.SetGroup( aConfig.GetGroupName( i ) );
OString aGroup = aConfig.GetGroupName( i );
USHORT nKeys = aConfig.GetKeyCount();
for( USHORT n = 0; n < nKeys; n++ )
{
ByteString aKey = aConfig.GetKeyName( n );
ByteString aValue = aConfig.ReadKey( aKey );
// tailor key
filterValue( aValue, aGroup, aKey );
aFiles[aKey][aGroup] = ByteString( aValue );
}
}
for( hash_map< ByteString, hash_map< OString, OString, OStringHash >, OStringHash >::const_iterator lang_it = aFiles.begin(); lang_it != aFiles.end(); ++lang_it )
{
ByteString aFile( argv[2] );
aFile.Append( '.' );
aFile.Append( lang_it->first );
FILE* fp = fopen( aFile.GetBuffer(), "w" );
if( ! fp )
{
fprintf( stderr, "Error: could not open \"%s\" for writing: %s\n",
aFile.GetBuffer(), strerror( errno ) );
exit(1);
}
for( hash_map< OString, OString, OStringHash >::const_iterator line_it = lang_it->second.begin(); line_it != lang_it->second.end(); ++line_it )
{
fprintf( fp, "%s=%s\n", line_it->first.getStr(), line_it->second.getStr() );
}
fclose( fp );
}
return 0;
}

View File

@ -619,9 +619,17 @@ void SfxSaveTabPage::Reset( const SfxItemSet& )
aDocTypeLB.SelectEntryPos(0);
FilterHdl_Impl(&aDocTypeLB);
}
catch(Exception& )
catch(Exception& e)
{
DBG_ERROR("exception in FilterFactory access");
(void) e;
DBG_ERROR(
rtl::OUStringToOString(
(rtl::OUString(
RTL_CONSTASCII_USTRINGPARAM(
"exception in FilterFactory access: ")) +
e.Message),
RTL_TEXTENCODING_UTF8).
getStr());
}
pImpl->bInitialized = sal_True;

View File

@ -174,7 +174,7 @@ Interceptor::~Interceptor()
void Interceptor::DisconnectDocHolder()
{
osl::MutexGuard aGuard(m_aMutex);
m_xDocHLocker = uno::Reference< uno::XInterface >();
m_xDocHLocker.clear();
m_pDocH = NULL;
m_xOleAccess = NULL;
}

View File

@ -28,14 +28,8 @@
// MARKER(update_precomp.py): autogen include statement, do not remove
#include "precompiled_extensions.hxx"
#ifndef EXTENSIONS_CONFIG_LDAP_LDAPUSERPROFILE_HXX_
#include "ldapuserprofilebe.hxx"
#endif //CONFIGMGR_BACKEND_LDAPUSERPROFILE_HXX_
#include <com/sun/star/registry/XRegistryKey.hpp>
#ifndef _CPPUHELPER_IMPLEMENTATIONENTRY_HXX_
#include <cppuhelper/implementationentry.hxx>
#endif // _CPPUHELPER_IMPLEMENTATIONENTRY_HXX_
#include <rtl/ustrbuf.hxx>
using namespace extensions::config::ldap ;
@ -70,49 +64,8 @@ extern "C" void SAL_CALL component_getImplementationEnvironment(
extern "C" sal_Bool SAL_CALL component_writeInfo(void *aServiceManager,
void *aRegistryKey) {
using namespace ::com::sun::star::registry;
if (aRegistryKey)
{
/** Service factory */
uno::Reference<lang::XMultiServiceFactory> xFactory
(reinterpret_cast<lang::XMultiServiceFactory*> (aServiceManager),
uno::UNO_QUERY);
rtl::OUStringBuffer aImplKeyName;
aImplKeyName.appendAscii("/");
aImplKeyName.append(LdapUserProfileBe::getLdapUserProfileBeName());
rtl::OUString aMainKeyName(RTL_CONSTASCII_USTRINGPARAM("/UNO/SERVICES"));
uno::Reference<XRegistryKey> xNewImplKey(
reinterpret_cast<XRegistryKey*>
(aRegistryKey)->createKey(aImplKeyName.makeStringAndClear()));
uno::Reference<XRegistryKey> xNewKey(
xNewImplKey->createKey(aMainKeyName));
//Now register associated service names
uno::Sequence<rtl::OUString> sServiceNames =
LdapUserProfileBe::getLdapUserProfileBeServiceNames();
for (sal_Int32 i = 0 ; i < sServiceNames.getLength() ; ++ i)
{
xNewKey->createKey(sServiceNames[i]);
}
//Now register associated org.openoffice.UserProfile component
//that this backend supports under xNewImplKey
uno::Reference<XRegistryKey> xComponentKey(
xNewImplKey->createKey(rtl::OUString::createFromAscii
("/DATA/SupportedComponents")));
uno::Sequence<rtl::OUString> aComponentList(1);
aComponentList[0]= rtl::OUString::createFromAscii
("org.openoffice.UserProfile");
xComponentKey->setAsciiListValue(aComponentList);
return sal_True;
}
return sal_False;
return cppu::component_writeInfoHelper(
aServiceManager, aRegistryKey, kImplementations_entries);
}
//------------------------------------------------------------------------------

View File

@ -30,7 +30,6 @@
#include "ldapaccess.hxx"
#include "ldapuserprof.hxx"
#include <rtl/ustrbuf.hxx>
#include <rtl/strbuf.hxx>
@ -46,6 +45,8 @@ t_ldap_init LdapConnection::s_p_init = NULL;
t_ldap_msgfree LdapConnection::s_p_msgfree = NULL;
t_ldap_get_dn LdapConnection::s_p_get_dn = NULL;
t_ldap_first_entry LdapConnection::s_p_first_entry = NULL;
t_ldap_first_attribute LdapConnection::s_p_first_attribute = NULL;
t_ldap_next_attribute LdapConnection::s_p_next_attribute = NULL;
t_ldap_search_s LdapConnection::s_p_search_s = NULL;
t_ldap_value_free LdapConnection::s_p_value_free = NULL;
t_ldap_get_values LdapConnection::s_p_get_values = NULL;
@ -188,12 +189,12 @@ void LdapConnection::initConnection()
}
}
//------------------------------------------------------------------------------
void LdapConnection::getUserProfile(const rtl::OUString& aUser,
const LdapUserProfileMap& aUserProfileMap,
LdapUserProfile& aUserProfile)
void LdapConnection::getUserProfile(
const rtl::OUString& aUser, LdapData * data)
throw (lang::IllegalArgumentException,
ldap::LdapConnectionException, ldap::LdapGenericException)
{
{
OSL_ASSERT(data != 0);
if (!isValid()) { connectSimple(); }
rtl::OString aUserDn =findUserDn( rtl::OUStringToOString(aUser, RTL_TEXTENCODING_ASCII_US));
@ -203,18 +204,26 @@ void LdapConnection::initConnection()
aUserDn,
LDAP_SCOPE_BASE,
"(objectclass=*)",
const_cast<sal_Char **>(aUserProfileMap.getLdapAttributes()),
0,
0, // Attributes + values
&result.msg) ;
checkLdapReturnCode("getUserProfile", retCode,mConnection) ;
aUserProfileMap.ldapToUserProfile(mConnection,
result.msg,
aUserProfile) ;
}
void * ptr;
char * attr = (*s_p_first_attribute)(mConnection, result.msg, &ptr);
while (attr != 0) {
char ** values = (*s_p_get_values)(mConnection, result.msg, attr);
if (values != 0) {
data->insert(
LdapData::value_type(
rtl::OStringToOUString(attr, RTL_TEXTENCODING_ASCII_US),
rtl::OStringToOUString(*values, RTL_TEXTENCODING_UTF8)));
(*s_p_value_free)(values);
}
attr = (*s_p_next_attribute)(mConnection, result.msg, ptr);
}
}
//------------------------------------------------------------------------------
rtl::OString LdapConnection::findUserDn(const rtl::OString& aUser)
throw (lang::IllegalArgumentException,
@ -264,47 +273,6 @@ void LdapConnection::initConnection()
return userDn ;
}
//------------------------------------------------------------------------------
rtl::OString LdapConnection::getSingleAttribute(
const rtl::OString& aDn,
const rtl::OString& aAttribute)
throw (ldap::LdapConnectionException, ldap::LdapGenericException)
{
if (!isValid()) { connectSimple(); }
const sal_Char *attributes [2] ;
rtl::OString value ;
attributes [0] = aAttribute ;
attributes [1] = 0 ;
LdapMessageHolder result ;
LdapErrCode retCode = (*s_p_search_s)(mConnection,
aDn,
LDAP_SCOPE_BASE,
"(objectclass=*)",
const_cast<sal_Char **>(attributes),
0, // Attributes + values
&result.msg) ;
if (retCode == LDAP_NO_SUCH_OBJECT)
{
return value ;
}
checkLdapReturnCode("GetSingleAttribute", retCode, mConnection) ;
LDAPMessage *entry = (*s_p_first_entry)(mConnection, result.msg) ;
if (entry != NULL)
{
sal_Char **values = (*s_p_get_values)(mConnection, entry,
aAttribute) ;
if (values != NULL)
{
if (*values != NULL) { value = *values ; }
(*s_p_value_free)(values) ;
}
}
return value ;
}
extern "C" { static void SAL_CALL thisModule() {} }
void LdapConnection::loadModule()
@ -336,6 +304,8 @@ void LdapConnection::loadModule()
s_p_msgfree = (t_ldap_msgfree)(osl_getFunctionSymbol(s_Ldap_Module, ::rtl::OUString::createFromAscii("ldap_msgfree").pData));
s_p_get_dn = (t_ldap_get_dn)(osl_getFunctionSymbol(s_Ldap_Module, ::rtl::OUString::createFromAscii("ldap_get_dn").pData));
s_p_first_entry = (t_ldap_first_entry)(osl_getFunctionSymbol(s_Ldap_Module, ::rtl::OUString::createFromAscii("ldap_first_entry").pData));
s_p_first_attribute = (t_ldap_first_attribute)(osl_getFunctionSymbol(s_Ldap_Module, ::rtl::OUString::createFromAscii("ldap_first_attribute").pData));
s_p_next_attribute = (t_ldap_next_attribute)(osl_getFunctionSymbol(s_Ldap_Module, ::rtl::OUString::createFromAscii("ldap_next_attribute").pData));
s_p_search_s = (t_ldap_search_s)(osl_getFunctionSymbol(s_Ldap_Module, ::rtl::OUString::createFromAscii("ldap_search_s").pData));
s_p_value_free = (t_ldap_value_free)(osl_getFunctionSymbol(s_Ldap_Module, ::rtl::OUString::createFromAscii("ldap_value_free").pData));
s_p_get_values = (t_ldap_get_values)(osl_getFunctionSymbol(s_Ldap_Module, ::rtl::OUString::createFromAscii("ldap_get_values").pData));

View File

@ -28,6 +28,10 @@
#ifndef EXTENSIONS_CONFIG_LDAP_LDAPACCESS_HXX_
#define EXTENSIONS_CONFIG_LDAP_LDAPACCESS_HXX_
#include "sal/config.h"
#include <map>
#include "wrapldapinclude.hxx"
#include <com/sun/star/ldap/LdapGenericException.hpp>
@ -54,6 +58,8 @@ typedef LDAP_API(LDAP *) (LDAP_CALL *t_ldap_init)( const char *defhost, int defp
typedef LDAP_API(int) (LDAP_CALL *t_ldap_msgfree)( LDAPMessage *lm );
typedef LDAP_API(char *) (LDAP_CALL *t_ldap_get_dn)( LDAP *ld, LDAPMessage *entry );
typedef LDAP_API(LDAPMessage *) (LDAP_CALL *t_ldap_first_entry)( LDAP *ld, LDAPMessage *chain );
typedef LDAP_API(char *) (LDAP_CALL *t_ldap_first_attribute)( LDAP *ld, LDAPMessage *entry, void **ptr );
typedef LDAP_API(char *) (LDAP_CALL *t_ldap_next_attribute)( LDAP *ld, LDAPMessage *entry, void *ptr );
typedef LDAP_API(int) (LDAP_CALL *t_ldap_search_s)( LDAP *ld, const char *base, int scope, const char *filter, char **attrs, int attrsonly, LDAPMessage **res );
typedef LDAP_API(void) (LDAP_CALL *t_ldap_value_free)( char **vals );
typedef LDAP_API(char **) (LDAP_CALL *t_ldap_get_values)( LDAP *ld, LDAPMessage *entry, const char *target );
@ -76,10 +82,10 @@ struct LdapDefinition
rtl::OString mUserObjectClass;
/** User Entity Unique Attribute */
rtl::OString mUserUniqueAttr;
/** Mapping File */
rtl::OString mMapping;
} ;
typedef std::map< rtl::OUString, rtl::OUString > LdapData; // key/value pairs
/** Class encapulating all LDAP functionality */
class LdapConnection
{
@ -95,36 +101,19 @@ public:
throw (ldap::LdapConnectionException,
ldap::LdapGenericException);
/** query connection status */
bool isConnected() const { return isValid(); }
/**
Gets LdapUserProfile from LDAP repository for specified user
@param aUser name of logged on user
@param aUserProfileMap Map containing LDAP->00o mapping
@param aUserProfile struct for holding OOo values
@param aUserProfile struct for holding OOo values
@throws com::sun::star::ldap::LdapGenericException
if an LDAP error occurs.
*/
void getUserProfile(const rtl::OUString& aUser,
const LdapUserProfileMap& aUserProfileMap,
LdapUserProfile& aUserProfile)
void getUserProfile(const rtl::OUString& aUser, LdapData * data)
throw (lang::IllegalArgumentException,
ldap::LdapConnectionException,
ldap::LdapGenericException);
/**
Retrieves a single attribute from a single entry.
@param aDn entry DN
@param aAttribute attribute name
@throws com::sun::star::ldap::LdapGenericException
if an LDAP error occurs.
*/
rtl::OString getSingleAttribute(const rtl::OString& aDn,
const rtl::OString& aAttribute)
throw (ldap::LdapConnectionException,
ldap::LdapGenericException);
/** finds DN of user
@return DN of User
@ -137,8 +126,6 @@ public:
void loadModule();
static t_ldap_err2string s_p_err2string;
static t_ldap_value_free s_p_value_free;
static t_ldap_get_values s_p_get_values;
private:
void initConnection()
@ -159,6 +146,8 @@ private:
LdapDefinition mLdapDefinition;
static oslModule s_Ldap_Module;
static t_ldap_value_free s_p_value_free;
static t_ldap_get_values s_p_get_values;
static t_ldap_unbind_s s_p_unbind_s;
static t_ldap_simple_bind_s s_p_simple_bind_s;
static t_ldap_set_option s_p_set_option;
@ -166,6 +155,8 @@ private:
static t_ldap_msgfree s_p_msgfree;
static t_ldap_get_dn s_p_get_dn;
static t_ldap_first_entry s_p_first_entry;
static t_ldap_first_attribute s_p_first_attribute;
static t_ldap_next_attribute s_p_next_attribute;
static t_ldap_search_s s_p_search_s;
static t_ldap_memfree s_p_memfree;

View File

@ -1,45 +0,0 @@
c<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE module-description PUBLIC "-//StarOffice/DTD ComponentDescription 1.0//EN" "module-description.dtd">
<module-description xmlns:xlink="http://www.w3.org/1999/xlink">
<module-name>ldapbe2.uno</module-name>
<component-description>
<author>Sarah Smith</author>
<name>com.sun.star.comp.configuration.backend.LdapUserProfileBe</name>
<description>The LdapUserProfileBe accesses User Profile settings form a configured LDAP repository</description>
<loader-name>com.sun.star.loader.SharedLibrary</loader-name>
<language>C++</language>
<status value="final"/>
<supported-service>com.sun.star.configuration.backend.LdapUserProfileBe</supported-service>
<supported-service>com.sun.star.configuration.backend.PlatformBackend</supported-service>
<supported-service>com.sun.star.configuration.backend.SingleLayerStratum</supported-service>
<service-dependency>com.sun.star.configuration.backend.LayerDescriber</service-dependency>
<type>com.sun.star.configuration.CannotLoadConfigurationException</type>
<type>com.sun.star.configuration.backend.BackendAccessException</type>
<type>com.sun.star.configuration.backend.XLayer</type>
<type>com.sun.star.configuration.backend.XUpdateHandler</type>
<type>com.sun.star.configuration.backend.XSingleLayerStratum</type>
<type>com.sun.star.uno.XComponentContext</type>
<type>com.sun.star.lang.IllegalArgumentException</type>
<type>com.sun.star.lang.XInitialization</type>
<type>com.sun.star.lang.XMultiServiceFactory</type>
<type>com.sun.star.lang.XServiceInfo</type>
<type>com.sun.star.lang.XSingleServiceFactory</type>
<type>com.sun.star.lang.XSingleComponentFactory</type>
<type>com.sun.star.lang.XTypeProvider</type>
<type>com.sun.star.registry.XRegistryKey</type>
<type>com.sun.star.uno.Any</type>
<type>com.sun.star.uno.Sequence</type>
</component-description>
<project-build-dependency> comphelper </project-build-dependency>
<project-build-dependency> vos </project-build-dependency>
<project-build-dependency> cppuhelper </project-build-dependency>
<project-build-dependency> salhelper </project-build-dependency>
<project-build-dependency> cppu </project-build-dependency>
<project-build-dependency> sal </project-build-dependency>
<runtime-module-dependency> comphelp2$(COM) </runtime-module-dependency>
<runtime-module-dependency> vos2$(COM) </runtime-module-dependency>
<runtime-module-dependency> cppuhelper3$(COM) </runtime-module-dependency>
<runtime-module-dependency> salhelper3$(COM) </runtime-module-dependency>
<runtime-module-dependency> cppu3 </runtime-module-dependency>
<runtime-module-dependency> sal3 </runtime-module-dependency>
</module-description>

View File

@ -1,226 +0,0 @@
/*************************************************************************
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
* it under the terms of the GNU Lesser General Public License version 3
* only, as published by the Free Software Foundation.
*
* OpenOffice.org is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Lesser General Public License version 3 for more details
* (a copy is included in the LICENSE file that accompanied this code).
*
* You should have received a copy of the GNU Lesser General Public License
* version 3 along with OpenOffice.org. If not, see
* <http://www.openoffice.org/license.html>
* for a copy of the LGPLv3 License.
*
************************************************************************/
// MARKER(update_precomp.py): autogen include statement, do not remove
#include "precompiled_extensions.hxx"
#include "ldapuserprof.hxx"
#include "ldapaccess.hxx"
namespace extensions { namespace config { namespace ldap {
//==============================================================================
//------------------------------------------------------------------------------
/**
Finds the next line in a buffer and returns it, along with a
modified version of the buffer with the line removed.
@param aString string to extract the next line from
@param aLine next line
@return sal_True if a line has been extracted, sal_False otherwise
*/
static sal_Bool getNextLine(rtl::OString& aString,
rtl::OString& aLine)
{
aString = aString.trim() ;
const sal_Char *currentChar = aString ;
const sal_Char *endChar = currentChar + aString.getLength() ;
sal_Int32 lineThreshold = 0 ;
while (currentChar < endChar &&
*currentChar != '\r' && *currentChar != '\n') { ++ currentChar ; }
lineThreshold = currentChar - static_cast<const sal_Char *>(aString) ;
if (lineThreshold == 0) { return sal_False ; }
aLine = aString.copy(0, lineThreshold) ;
aString = aString.copy(lineThreshold) ;
return sal_True ;
}
//------------------------------------------------------------------------------
LdapUserProfileMap::~LdapUserProfileMap(void)
{
// No need to delete the contents of the mAttributes array,
// since they refer to rtl::OStrings stored in the mLdapAttributes
// array.
if (mAttributes != NULL)
{
delete [] mAttributes ;
}
}
//------------------------------------------------------------------------------
void LdapUserProfileMap::source(const rtl::OString& aMap)
{
if (mAttributes != NULL)
{
delete [] mAttributes ; mAttributes = NULL ;
mMapping.clear() ;
}
rtl::OString currentLine ;
rtl::OString buffer = aMap ;
std::set<rtl::OString> attributes ;
rtl::OString prefix ;
// First, parse the buffer to find all the mapping definitions.
// While we're at it, we collect the list of unique LDAP attributes
// involved in the mapping.
while (getNextLine(buffer, currentLine))
{
addNewMapping(currentLine, attributes, prefix) ;
}
// Now we use the list of attributes to build mAttributes
mAttributes = new const sal_Char * [attributes.size() + 1] ;
std::set<rtl::OString>::const_iterator attribute ;
sal_Int32 i = 0 ;
for (attribute = attributes.begin() ;
attribute != attributes.end() ; ++ attribute)
{
mAttributes [i ++] = static_cast<const sal_Char *>(*attribute) ;
}
mAttributes [i] = NULL ;
}
//------------------------------------------------------------------------------
void LdapUserProfileMap::ldapToUserProfile(LDAP *aConnection,
LDAPMessage *aEntry,
LdapUserProfile& aProfile) const
{
if (aEntry == NULL) { return ; }
// Ensure return value has proper size
aProfile.mProfile.resize(mMapping.size()) ;
sal_Char **values = NULL ;
for (sal_uInt32 i = 0 ; i < mMapping.size() ; ++ i)
{
aProfile.mProfile [i].mAttribute = rtl::OStringToOUString(
mMapping [i].mProfileElement,
RTL_TEXTENCODING_ASCII_US);
rtl::OUString debugStr = aProfile.mProfile [i].mAttribute;
for (sal_uInt32 j = 0 ;
j < mMapping [i].mLdapAttributes.size() ; ++ j)
{
values = (*LdapConnection::s_p_get_values)(aConnection, aEntry,
mMapping [i].mLdapAttributes [j]) ;
if (values != NULL)
{
aProfile.mProfile[i].mValue = rtl::OStringToOUString(
*values, RTL_TEXTENCODING_UTF8);
(*LdapConnection::s_p_value_free)(values);
break;
}
}
}
}
//------------------------------------------------------------------------------
void LdapUserProfileMap::addNewMapping(const rtl::OString& aLine,
std::set<rtl::OString>& aLdapAttributes,
rtl::OString& aPrefix)
{
if (aLine.getStr() [0] == '#') { return ; }
sal_Int32 prefixLength = aPrefix.getLength() ;
if (prefixLength == 0)
{
sal_Int32 firstSlash = aLine.indexOf('/') ;
if (firstSlash == -1) { return ; }
sal_Int32 secondSlash = aLine.indexOf('/', firstSlash + 1) ;
if (secondSlash == -1){ return; }
mComponentName =
rtl::OUString::createFromAscii(aLine.copy(0, firstSlash)) ;
mGroupName =
rtl::OUString::createFromAscii(aLine.copy(firstSlash + 1,
secondSlash - firstSlash - 1)) ;
aPrefix = aLine.copy(0, secondSlash + 1) ;
prefixLength = secondSlash + 1 ;
}
else if (aLine.compareTo(aPrefix, prefixLength) != 0)
{
return ;
}
mMapping.push_back(Mapping()) ;
if (!mMapping.back().parse(aLine.copy(prefixLength)))
{
mMapping.pop_back() ;
}
else
{
const std::vector<rtl::OString>& attributes =
mMapping.back().mLdapAttributes ;
std::vector<rtl::OString>::const_iterator ldapAttribute ;
for (ldapAttribute = attributes.begin() ;
ldapAttribute != attributes.end() ; ++ ldapAttribute)
{
aLdapAttributes.insert(*ldapAttribute) ;
}
}
}
//------------------------------------------------------------------------------
static sal_Char kMappingSeparator = '=' ;
static sal_Char kLdapMapSeparator = ',' ;
sal_Bool LdapUserProfileMap::Mapping::parse(const rtl::OString& aLine)
{
sal_Int32 index = aLine.indexOf(kMappingSeparator) ;
if (index == -1)
{
// Imparsable line
return sal_False ;
}
sal_Int32 oldIndex = index + 1 ;
mProfileElement = aLine.copy(0, index).trim() ;
mLdapAttributes.clear() ;
index = aLine.indexOf(kLdapMapSeparator, oldIndex) ;
while (index != -1)
{
mLdapAttributes.push_back(
aLine.copy(oldIndex, index - oldIndex).trim()) ;
oldIndex = index + 1 ;
index = aLine.indexOf(kLdapMapSeparator, oldIndex) ;
}
rtl::OString endOfLine = aLine.copy(oldIndex).trim() ;
if (endOfLine.getLength() > 0)
{
mLdapAttributes.push_back(endOfLine) ;
}
return sal_True ;
}
//------------------------------------------------------------------------------
} } } // extensiond.config.ldap

View File

@ -1,163 +0,0 @@
/*************************************************************************
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
* it under the terms of the GNU Lesser General Public License version 3
* only, as published by the Free Software Foundation.
*
* OpenOffice.org is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Lesser General Public License version 3 for more details
* (a copy is included in the LICENSE file that accompanied this code).
*
* You should have received a copy of the GNU Lesser General Public License
* version 3 along with OpenOffice.org. If not, see
* <http://www.openoffice.org/license.html>
* for a copy of the LGPLv3 License.
*
************************************************************************/
#ifndef EXTENSIONS_CONFIG_LDAP_LDAPUSERPROF_HXX_
#define EXTENSIONS_CONFIG_LDAP_LDAPUSERPROF_HXX_
#include "wrapldapinclude.hxx"
#include <rtl/ustring.hxx>
#include <rtl/string.hxx>
#ifndef VECTOR_INCLUDED
#define VECTOR_INCLUDED
#include <vector>
#endif // VECTOR_INCLUDED
#ifndef SET_INCLUDED
#define SET_INCLUDED
#include <set>
#endif // SET_INCLUDED
namespace extensions { namespace config { namespace ldap {
/** Struct containing the data associated to a UserProfile */
struct LdapUserProfile {
/** Struct defining an entry in the profile */
struct ProfileEntry {
rtl::OUString mAttribute ;
rtl::OUString mValue ;
} ;
/** List of attribute/value pairs */
std::vector<ProfileEntry> mProfile ;
typedef std::vector<ProfileEntry>::const_iterator Iterator;
} ;
/** Provider of UserProfile mapping services */
class LdapUserProfileMap
{
public :
/** Default constructor, doesn't do much. */
LdapUserProfileMap() : mAttributes(NULL) {}
/** Destructor */
~LdapUserProfileMap() ;
/**
Fills the map using a string description of the mapping.
Each possible UserProfile attribute is mapped to a list
of LDAP attributes, in order of priority.
The entry is formatted as:
<UP Attribute>=<LDAP Attr1>,...,<LDAP AttrN>
@param aMap string description of the mapping
*/
void source(const rtl::OString& aMap) ;
/**
Returns an array of all the LDAP attribute names that may
be relevant for UserProfile mapping.
@return array of LDAP attribute names
*/
const sal_Char **getLdapAttributes(void) const { return mAttributes ; }
/**
Returns the component name that holds the data
when presented to the outside.
@return component name
*/
const rtl::OUString& getComponentName(void) const {
return mComponentName ;
}
/**
Returns the group name that holds the data when
presented to the outside world.
@return group name
*/
const rtl::OUString& getGroupName(void) const {
return mGroupName ;
}
/**
Struct defining the mapping between UserProfile attributes
and LDAP ones. It also serves as a crude "schema" of the
UserProfile component, as the list of profile elements
is the list of properties in the component and the presence
or absence of LDAP mapping indicates whether the property
should be made writable or kept read-only.
*/
struct Mapping {
/** Name of the UserProfile element */
rtl::OString mProfileElement ;
/** Corresponding LDAP attributes in order of priority */
std::vector<rtl::OString> mLdapAttributes ;
/** Utility to fill the mapping from a <Prof>=<Ldap1>;...;<LdapN>
description */
sal_Bool parse(const rtl::OString& aDescription) ;
} ;
/**
Maps an LDAP entry to a UserProfile.
@param aConnection LDAP connection to the repository
@param aEntry entry containing the data
@param aProfile user profile struct to fill up
*/
void ldapToUserProfile(LDAP *aConnection,
LDAPMessage *aEntry,
LdapUserProfile& aProfile) const ;
private :
/** Contains the mapping entries */
std::vector<Mapping> mMapping ;
/** Contains the LDAP attributes used in a NULL terminated array */
const sal_Char **mAttributes ;
/** User profile component name */
rtl::OUString mComponentName ;
/** User profile storage group name */
rtl::OUString mGroupName ;
/**
Adds a new mapping entry to the list, and collects the
LDAP attributes involved in the mapping.
@param aMappingDescription string describing the mapping
@param aLdapAttributes collection of LDAP attributes
@param aPrefix common prefix to the attributes
containing the component and group
name, used for validation
*/
void addNewMapping(const rtl::OString& aMappingDescription,
std::set<rtl::OString>& aLdapAttributes,
rtl::OString& aPrefix) ;
} ;
} } } // extensions.config.ldap
#endif // EXTENSIONS_CONFIG_LDAP_LDAPUSERPROF_HXX_

View File

@ -28,8 +28,8 @@
// MARKER(update_precomp.py): autogen include statement, do not remove
#include "precompiled_extensions.hxx"
#include "ldapaccess.hxx"
#include "ldapuserprofilebe.hxx"
#include "ldapuserprofilelayer.hxx"
#include <osl/file.hxx>
#include <osl/module.hxx>
#include <osl/process.h>
@ -40,63 +40,18 @@
#include <rtl/instance.hxx>
#endif
#include <com/sun/star/beans/NamedValue.hpp>
#include <com/sun/star/beans/Optional.hpp>
#include <osl/security.hxx>
//==============================================================================
namespace extensions { namespace config { namespace ldap {
static void checkIOError(
osl::File::RC aErrorCode,
const rtl::OUString& aFileUrl)
{
switch (aErrorCode)
{
case osl::File::E_None: // got it
{
}
break;
default:
{
rtl::OUStringBuffer sMsg;
sMsg.appendAscii("LdapUserProfileBe: Cannot Read Meta-Configuration file:");
sMsg.append(aFileUrl);
throw backend::BackendSetupException(sMsg.makeStringAndClear(),
NULL, uno::Any());
}
}
}
//------------------------------------------------------------------------------
#if 0
static rtl::OUString getCurrentModuleDirectory() // URL excluding terminating slash
{
rtl::OUString aFileURL;
if ( !osl::Module::getUrlFromAddress((void*)&getCurrentModuleDirectory,aFileURL) )
{
OSL_TRACE(false, "Cannot locate current module - using executable instead");
OSL_VERIFY(osl_Process_E_None == osl_getExecutableFile(&aFileURL.pData));
}
OSL_ENSURE(0 < aFileURL.lastIndexOf('/'), "Cannot find directory for module URL");
return aFileURL.copy(0, aFileURL.lastIndexOf('/') );
}
#endif
//------------------------------------------------------------------------------
LdapUserProfileBe::LdapUserProfileBe( const uno::Reference<uno::XComponentContext>& xContext)
// throw (backend::BackendAccessException, backend::BackendSetupException, RuntimeException)
: LdapProfileMutexHolder(),
BackendBase(mMutex),
mFactory(xContext->getServiceManager(),uno::UNO_QUERY_THROW),
mContext(xContext),
mLdapSource( new LdapUserProfileSource ),
mLoggedOnUser(),
mUserDN()
BackendBase(mMutex)
{
LdapDefinition aDefinition;
rtl::OUString loggedOnUser;
// This whole rigmarole is to prevent an infinite recursion where reading
// the configuration for the backend would create another instance of the
@ -113,16 +68,20 @@ LdapUserProfileBe::LdapUserProfileBe( const uno::Reference<uno::XComponentContex
try
{
bReentrantCall = true ;
if (! readLdapConfiguration(aDefinition) )
if (!readLdapConfiguration(
css::uno::Reference< css::lang::XMultiServiceFactory >(
xContext->getServiceManager(),
css::uno::UNO_QUERY_THROW),
&aDefinition, &loggedOnUser))
{
throw backend::BackendSetupException(
throw css::uno::RuntimeException(
rtl::OUString::createFromAscii("LdapUserProfileBe- LDAP not configured"),
NULL, uno::Any());
NULL);
}
bReentrantCall = false ;
}
catch (uno::Exception&)
catch (...)
{
bReentrantCall = false;
throw;
@ -130,34 +89,10 @@ LdapUserProfileBe::LdapUserProfileBe( const uno::Reference<uno::XComponentContex
}
}
try
{
mLdapSource->mConnection.loadModule();
mLdapSource->mConnection.connectSimple(aDefinition);
//Set the UserDN
mUserDN = mLdapSource->mConnection.findUserDn(
rtl::OUStringToOString(mLoggedOnUser, RTL_TEXTENCODING_ASCII_US));
}
catch (lang::IllegalArgumentException& exception)
{
throw backend::BackendSetupException(exception.Message, NULL,
uno::makeAny(exception)) ;
}
catch (ldap::LdapConnectionException& exception)
{
throw backend::CannotConnectException(exception.Message, NULL,
uno::makeAny(exception)) ;
}
catch(ldap::LdapGenericException& exception)
{
mapGenericException(exception) ;
}
initializeMappingTable(
rtl::OStringToOUString(aDefinition.mMapping,
RTL_TEXTENCODING_ASCII_US));
OSL_POSTCOND(mLdapSource->mConnection.isConnected(),"Erroneously constructed a LdapUserProfileBackend without a LDAP connection");
LdapConnection connection;
connection.loadModule();
connection.connectSimple(aDefinition);
connection.getUserProfile(loggedOnUser, &data_);
}
//------------------------------------------------------------------------------
LdapUserProfileBe::~LdapUserProfileBe()
@ -165,129 +100,11 @@ LdapUserProfileBe::~LdapUserProfileBe()
}
//------------------------------------------------------------------------------
void LdapUserProfileBe::initializeMappingTable(const rtl::OUString& aFileMapName)
{
rtl::OUString aMappingFileUrl = getMappingFileUrl(aFileMapName );
osl::File aFile (aMappingFileUrl);
checkIOError( aFile.open(OpenFlag_Read), aMappingFileUrl);
sal_uInt64 nFileLength = 0;
checkIOError( aFile.getSize(nFileLength), aMappingFileUrl);
sal_uInt32 nDataLength = sal_uInt32(nFileLength);
if (nDataLength != nFileLength)
{
throw backend::BackendSetupException(rtl::OUString::createFromAscii
("LdapUserProfileBe - can not read entire Mapping File: too big"),
NULL, uno::Any());
}
struct RawBuffer
{
RawBuffer(sal_Size size) : data(rtl_allocateMemory(size)) {}
~RawBuffer() { rtl_freeMemory(data); }
void * data;
};
RawBuffer buffer( nDataLength );
sal_uInt64 nRead = 0;
osl::File::RC result = aFile.read (static_cast<sal_uInt8*>(buffer.data), nDataLength, nRead);
if (result != osl::File::E_None)
{
checkIOError( result, aMappingFileUrl );
OSL_ASSERT(!"unreached");
}
if (nRead != nDataLength)
{
throw backend::BackendSetupException(rtl::OUString::createFromAscii
("LdapUserProfileBe - can not read entire Mapping File"),
NULL, uno::Any());
}
rtl::OString aStrBuffer ( static_cast<char*>(buffer.data), sal_uInt32(nDataLength) );
mLdapSource->mProfileMap.source(aStrBuffer);
}
//------------------------------------------------------------------------------
static const rtl::OUString kMappingFileSuffix(RTL_CONSTASCII_USTRINGPARAM(
"-attr.map"));
static const rtl::OUString kMappingUrl(
RTL_CONSTASCII_USTRINGPARAM("/modules/com.sun.star.configuration/bootstrap/LdapMappingUrl"));
static const sal_Unicode kPathSeparator = '/' ;
static const rtl::OUString kBootstrapContextSingletonName(
RTL_CONSTASCII_USTRINGPARAM(
"/singletons/com.sun.star.configuration.bootstrap.theBootstrapContext"));
rtl::OUString LdapUserProfileBe::getMappingFileUrl(const rtl::OUString& aFileMapName) const
{
uno::Any aContext = mContext->getValueByName(kBootstrapContextSingletonName);
uno::Reference<uno::XComponentContext> aBootStrapContext;
rtl::OUString aFileUrl;
if (aContext >>= aBootStrapContext)
aBootStrapContext->getValueByName(kMappingUrl) >>= aFileUrl;
if (aFileUrl.getLength() == 0 )
{
#if 0
static const rtl::OUString kMappingDirectory(RTL_CONSTASCII_USTRINGPARAM( "/share/registry/ldap"));
rtl::OUString aModuleUrl = getCurrentModuleDirectory();
sal_Int32 nIndex = aModuleUrl.lastIndexOf('/');
if (nIndex == 0)
{
throw backend::BackendSetupException(rtl::OUString::createFromAscii
("LdapUserProfileBe - can not access Mapping File"),
NULL, uno::Any());
}
rtl::OUString aMappingFileUrl = aModuleUrl.copy(0, nIndex);
aMappingFileUrl += kMappingDirectory;
aFileUrl = aMappingFileUrl;
#else
throw backend::BackendSetupException(rtl::OUString::createFromAscii
("LdapUserProfileBe - can not locate Mapping File"),
NULL, uno::Any());
#endif
}
rtl::OUStringBuffer sFileBuffer(aFileUrl);
sFileBuffer.append(kPathSeparator);
sFileBuffer.append (aFileMapName);
sFileBuffer.append(kMappingFileSuffix);
return sFileBuffer.makeStringAndClear();
}
//------------------------------------------------------------------------------
void LdapUserProfileBe::mapGenericException(ldap::LdapGenericException& aException)
throw (backend::InsufficientAccessRightsException,
backend::ConnectionLostException,
backend::BackendAccessException)
{
switch (aException.ErrorCode)
{
case LDAP_INSUFFICIENT_ACCESS:
throw backend::InsufficientAccessRightsException(aException.Message,
NULL, uno::makeAny(aException)) ;
case LDAP_SERVER_DOWN:
case LDAP_CONNECT_ERROR:
throw backend::ConnectionLostException(aException.Message, NULL,
uno::makeAny(aException)) ;
default:
throw backend::BackendAccessException(aException.Message, NULL,
uno::makeAny(aException)) ;
}
}
//------------------------------------------------------------------------------
bool LdapUserProfileBe::readLdapConfiguration(LdapDefinition& aDefinition)
bool LdapUserProfileBe::readLdapConfiguration(
css::uno::Reference< css::lang::XMultiServiceFactory > const & factory,
LdapDefinition * definition, rtl::OUString * loggedOnUser)
{
OSL_ASSERT(factory.is() && definition != 0 && loggedOnUser != 0);
const rtl::OUString kConfigurationProviderService( RTL_CONSTASCII_USTRINGPARAM("com.sun.star.configuration.ConfigurationProvider")) ;
const rtl::OUString kReadOnlyViewService( RTL_CONSTASCII_USTRINGPARAM("com.sun.star.configuration.ConfigurationAccess")) ;
const rtl::OUString kComponent( RTL_CONSTASCII_USTRINGPARAM("org.openoffice.LDAP/UserDirectory"));
@ -299,14 +116,12 @@ bool LdapUserProfileBe::readLdapConfiguration(LdapDefinition& aDefinition)
const rtl::OUString kPassword(RTL_CONSTASCII_USTRINGPARAM("SearchPassword"));
const rtl::OUString kUserObjectClass(RTL_CONSTASCII_USTRINGPARAM("UserObjectClass"));
const rtl::OUString kUserUniqueAttr(RTL_CONSTASCII_USTRINGPARAM("UserUniqueAttribute"));
const rtl::OUString kMapping(RTL_CONSTASCII_USTRINGPARAM("Mapping"));
const rtl::OString kDefaultMappingFile("oo-ldap");
uno::Reference< XInterface > xIface;
try
{
uno::Reference< lang::XMultiServiceFactory > xCfgProvider(
mFactory->createInstance(kConfigurationProviderService),
factory->createInstance(kConfigurationProviderService),
uno::UNO_QUERY);
OSL_ENSURE(xCfgProvider.is(),"LdapUserProfileBe: could not create the configuration provider");
if (!xCfgProvider.is())
@ -324,26 +139,23 @@ bool LdapUserProfileBe::readLdapConfiguration(LdapDefinition& aDefinition)
uno::Reference<container::XNameAccess > xChildAccess(xIface, uno::UNO_QUERY_THROW);
if (!getLdapStringParam(xChildAccess, kServer, aDefinition.mServer))
if (!getLdapStringParam(xChildAccess, kServer, definition->mServer))
return false;
if (!getLdapStringParam(xChildAccess, kBaseDN, aDefinition.mBaseDN))
if (!getLdapStringParam(xChildAccess, kBaseDN, definition->mBaseDN))
return false;
aDefinition.mPort=0;
xChildAccess->getByName(kPort) >>= aDefinition.mPort ;
if (aDefinition.mPort == 0)
definition->mPort=0;
xChildAccess->getByName(kPort) >>= definition->mPort ;
if (definition->mPort == 0)
return false;
if (!getLdapStringParam(xAccess, kUserObjectClass, aDefinition.mUserObjectClass))
if (!getLdapStringParam(xAccess, kUserObjectClass, definition->mUserObjectClass))
return false;
if (!getLdapStringParam(xAccess, kUserUniqueAttr, aDefinition.mUserUniqueAttr))
if (!getLdapStringParam(xAccess, kUserUniqueAttr, definition->mUserUniqueAttr))
return false;
getLdapStringParam(xAccess, kUser, aDefinition.mAnonUser);
getLdapStringParam(xAccess, kPassword, aDefinition.mAnonCredentials);
if (!getLdapStringParam(xAccess, kMapping, aDefinition.mMapping))
aDefinition.mMapping = kDefaultMappingFile;
getLdapStringParam(xAccess, kUser, definition->mAnonUser);
getLdapStringParam(xAccess, kPassword, definition->mAnonCredentials);
}
catch (uno::Exception & e)
{
@ -353,15 +165,15 @@ bool LdapUserProfileBe::readLdapConfiguration(LdapDefinition& aDefinition)
}
osl::Security aSecurityContext;
if (!aSecurityContext.getUserName(mLoggedOnUser))
if (!aSecurityContext.getUserName(*loggedOnUser))
OSL_TRACE("LdapUserProfileBackend - could not get Logged on user from system");
sal_Int32 nIndex = mLoggedOnUser.indexOf('/');
sal_Int32 nIndex = loggedOnUser->indexOf('/');
if (nIndex > 0)
mLoggedOnUser = mLoggedOnUser.copy(nIndex+1);
*loggedOnUser = loggedOnUser->copy(nIndex+1);
//Remember to remove
OSL_TRACE("Logged on user is %s", rtl::OUStringToOString(mLoggedOnUser,RTL_TEXTENCODING_ASCII_US).getStr());
OSL_TRACE("Logged on user is %s", rtl::OUStringToOString(*loggedOnUser,RTL_TEXTENCODING_ASCII_US).getStr());
return true;
}
@ -379,35 +191,48 @@ bool LdapUserProfileBe::getLdapStringParam(
return aServerParameter.getLength() != 0;
}
//------------------------------------------------------------------------------
uno::Reference<backend::XLayer> SAL_CALL LdapUserProfileBe::getLayer(
const rtl::OUString& /*aComponent*/, const rtl::OUString& /*aTimestamp*/)
throw (backend::BackendAccessException, lang::IllegalArgumentException,uno::RuntimeException)
void LdapUserProfileBe::setPropertyValue(
rtl::OUString const &, css::uno::Any const &)
throw (
css::beans::UnknownPropertyException, css::beans::PropertyVetoException,
css::lang::IllegalArgumentException, css::lang::WrappedTargetException,
css::uno::RuntimeException)
{
OSL_PRECOND(mLdapSource->mConnection.isConnected(), "LdapUserProfileBackend invoked without a connection");
if (!mLdapSource->mConnection.isConnected())
return NULL;
const rtl::OString kModificationAttribute = "modifyTimeStamp";
rtl::OString aTimeStamp = mLdapSource->mConnection.
getSingleAttribute( mUserDN, kModificationAttribute);
return new LdapUserProfileLayer(
mFactory, mLoggedOnUser, mLdapSource,
rtl::OStringToOUString(aTimeStamp, RTL_TEXTENCODING_ASCII_US));
throw css::lang::IllegalArgumentException(
rtl::OUString(
RTL_CONSTASCII_USTRINGPARAM("setPropertyValue not supported")),
static_cast< cppu::OWeakObject * >(this), -1);
}
//------------------------------------------------------------------------------
uno::Reference<backend::XUpdatableLayer> SAL_CALL
LdapUserProfileBe::getUpdatableLayer(const rtl::OUString& /*aComponent*/)
throw (backend::BackendAccessException,lang::NoSupportException,
lang::IllegalArgumentException,uno::RuntimeException)
css::uno::Any LdapUserProfileBe::getPropertyValue(
rtl::OUString const & PropertyName)
throw (
css::beans::UnknownPropertyException, css::lang::WrappedTargetException,
css::uno::RuntimeException)
{
throw lang::NoSupportException(
rtl::OUString::createFromAscii(
"LdapUserProfileBe: No Update Operation allowed, Read Only access"),
*this) ;
for (sal_Int32 i = 0;;) {
sal_Int32 j = PropertyName.indexOf(',', i);
if (j == -1) {
j = PropertyName.getLength();
}
if (j == i) {
throw css::beans::UnknownPropertyException(
PropertyName, static_cast< cppu::OWeakObject * >(this));
}
LdapData::iterator k(data_.find(PropertyName.copy(i, j - i)));
if (k != data_.end()) {
return css::uno::makeAny(
css::beans::Optional< css::uno::Any >(
true, css::uno::makeAny(k->second)));
}
if (j == PropertyName.getLength()) {
break;
}
i = j + 1;
}
return css::uno::makeAny(css::beans::Optional< css::uno::Any >());
}
//------------------------------------------------------------------------------
rtl::OUString SAL_CALL LdapUserProfileBe::getLdapUserProfileBeName(void) {
return rtl::OUString::createFromAscii("com.sun.star.comp.configuration.backend.LdapUserProfileBe") ;
@ -423,10 +248,8 @@ rtl::OUString SAL_CALL LdapUserProfileBe::getImplementationName(void)
uno::Sequence<rtl::OUString> SAL_CALL LdapUserProfileBe::getLdapUserProfileBeServiceNames(void)
{
uno::Sequence<rtl::OUString> aServices(2) ;
uno::Sequence<rtl::OUString> aServices(1) ;
aServices[0] = rtl::OUString( RTL_CONSTASCII_USTRINGPARAM("com.sun.star.configuration.backend.LdapUserProfileBe")) ;
aServices[1] = rtl::OUString( RTL_CONSTASCII_USTRINGPARAM("com.sun.star.configuration.backend.PlatformBackend")) ;
return aServices ;
}
//------------------------------------------------------------------------------

View File

@ -28,41 +28,33 @@
#ifndef EXTENSIONS_CONFIG_LDAP_LDAPUSERPROFILEBE_HXX_
#define EXTENSIONS_CONFIG_LDAP_LDAPUSERPROFILEBE_HXX_
#include "ldapuserprof.hxx"
#include "ldapaccess.hxx"
#include "ldapuserprofilelayer.hxx"
#include <com/sun/star/configuration/backend/XSingleLayerStratum.hpp>
#include <com/sun/star/beans/XPropertySet.hpp>
#include <com/sun/star/lang/XInitialization.hpp>
#include <com/sun/star/uno/XComponentContext.hpp>
#include <com/sun/star/lang/XServiceInfo.hpp>
#include <com/sun/star/lang/XMultiServiceFactory.hpp>
#include <com/sun/star/configuration/backend/CannotConnectException.hpp>
#include <com/sun/star/configuration/backend/InsufficientAccessRightsException.hpp>
#include <com/sun/star/configuration/backend/ConnectionLostException.hpp>
#include <com/sun/star/container/XNameAccess.hpp>
#include <com/sun/star/lang/IllegalArgumentException.hpp>
#include <cppuhelper/compbase2.hxx>
#include "ldapaccess.hxx"
#define CONTEXT_ITEM_PREFIX_ "/modules/com.sun.star.configuration/bootstrap/"
namespace extensions { namespace config { namespace ldap {
namespace css = com::sun::star ;
namespace uno = css::uno ;
namespace lang = css::lang ;
namespace ldap= css::ldap ;
namespace backend = css::configuration::backend ;
namespace container = css::container;
//------------------------------------------------------------------------------
//------------------------------------------------------------------------------
typedef cppu::WeakComponentImplHelper2<backend::XSingleLayerStratum,
struct LdapDefinition;
typedef cppu::WeakComponentImplHelper2<css::beans::XPropertySet,
lang::XServiceInfo> BackendBase ;
struct LdapProfileMutexHolder { osl::Mutex mMutex; };
/**
Implements the PlatformBackend service, a specialization of the
SingleLayerStratum service for retreiving LDAP user profile
XPropertySet service for retreiving LDAP user profile
configuration settings from a LDAP repsoitory.
*/
class LdapUserProfileBe : private LdapProfileMutexHolder, public BackendBase
@ -70,7 +62,6 @@ class LdapUserProfileBe : private LdapProfileMutexHolder, public BackendBase
public :
LdapUserProfileBe(const uno::Reference<uno::XComponentContext>& xContext);
// throw(backend::BackendAccessException, backend::BackendSetupException, RuntimeException);
~LdapUserProfileBe(void) ;
// XServiceInfo
@ -86,19 +77,57 @@ class LdapUserProfileBe : private LdapProfileMutexHolder, public BackendBase
getSupportedServiceNames( )
throw (uno::RuntimeException) ;
//XSingleLayerStratum
virtual uno::Reference<backend::XLayer> SAL_CALL
getLayer( const rtl::OUString& aLayerId, const rtl::OUString& aTimestamp )
throw (backend::BackendAccessException,
lang::IllegalArgumentException,
uno::RuntimeException) ;
// XPropertySet
virtual css::uno::Reference< css::beans::XPropertySetInfo > SAL_CALL
getPropertySetInfo() throw (css::uno::RuntimeException)
{ return css::uno::Reference< css::beans::XPropertySetInfo >(); }
virtual void SAL_CALL setPropertyValue(
rtl::OUString const &, css::uno::Any const &)
throw (
css::beans::UnknownPropertyException,
css::beans::PropertyVetoException,
css::lang::IllegalArgumentException,
css::lang::WrappedTargetException, css::uno::RuntimeException);
virtual css::uno::Any SAL_CALL getPropertyValue(
rtl::OUString const & PropertyName)
throw (
css::beans::UnknownPropertyException,
css::lang::WrappedTargetException, css::uno::RuntimeException);
virtual void SAL_CALL addPropertyChangeListener(
rtl::OUString const &,
css::uno::Reference< css::beans::XPropertyChangeListener > const &)
throw (
css::beans::UnknownPropertyException,
css::lang::WrappedTargetException, css::uno::RuntimeException)
{}
virtual void SAL_CALL removePropertyChangeListener(
rtl::OUString const &,
css::uno::Reference< css::beans::XPropertyChangeListener > const &)
throw (
css::beans::UnknownPropertyException,
css::lang::WrappedTargetException, css::uno::RuntimeException)
{}
virtual void SAL_CALL addVetoableChangeListener(
rtl::OUString const &,
css::uno::Reference< css::beans::XVetoableChangeListener > const &)
throw (
css::beans::UnknownPropertyException,
css::lang::WrappedTargetException, css::uno::RuntimeException)
{}
virtual void SAL_CALL removeVetoableChangeListener(
rtl::OUString const &,
css::uno::Reference< css::beans::XVetoableChangeListener > const &)
throw (
css::beans::UnknownPropertyException,
css::lang::WrappedTargetException, css::uno::RuntimeException)
{}
virtual uno::Reference<backend::XUpdatableLayer> SAL_CALL
getUpdatableLayer( const rtl::OUString& aLayerId )
throw (backend::BackendAccessException,
lang::NoSupportException,
lang::IllegalArgumentException,
uno::RuntimeException) ;
/**
Provides the implementation name.
@return implementation name
@ -112,35 +141,16 @@ class LdapUserProfileBe : private LdapProfileMutexHolder, public BackendBase
getLdapUserProfileBeServiceNames(void) ;
private:
/** Build OO/LDAP attribute mapping table */
void initializeMappingTable (const rtl::OUString& aFileMapName);
/** Check if LDAP is configured */
bool readLdapConfiguration(LdapDefinition& aDefinition);
bool readLdapConfiguration(
uno::Reference<lang::XMultiServiceFactory> const & factory,
LdapDefinition * definition, rtl::OUString * loggedOnUser);
bool getLdapStringParam(uno::Reference<container::XNameAccess>& xAccess,
const rtl::OUString& aLdapSetting,
rtl::OString& aServerParameter);
void mapGenericException(ldap::LdapGenericException& aException)
throw (backend::InsufficientAccessRightsException,
backend::ConnectionLostException,
backend::BackendAccessException);
/** Connect to LDAP server */
void connectToLdapServer(const LdapDefinition& aDefinition );
/** Get URL of OO-to-LDAP Mapping File */
rtl::OUString getMappingFileUrl(const rtl::OUString& aFileMapName) const;
/** Service Factory object */
uno::Reference<lang::XMultiServiceFactory> mFactory;
/** Component Context */
uno::Reference<uno::XComponentContext> mContext ;
/** Object for LDAP functionality */
LdapUserProfileSourceRef mLdapSource;
/**Currently logged in user */
rtl::OUString mLoggedOnUser ;
/** DN of currently logged in user */
rtl::OString mUserDN;
LdapData data_;
} ;
//------------------------------------------------------------------------------
}}}

View File

@ -1,244 +0,0 @@
/*************************************************************************
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
* it under the terms of the GNU Lesser General Public License version 3
* only, as published by the Free Software Foundation.
*
* OpenOffice.org is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Lesser General Public License version 3 for more details
* (a copy is included in the LICENSE file that accompanied this code).
*
* You should have received a copy of the GNU Lesser General Public License
* version 3 along with OpenOffice.org. If not, see
* <http://www.openoffice.org/license.html>
* for a copy of the LGPLv3 License.
*
************************************************************************/
// MARKER(update_precomp.py): autogen include statement, do not remove
#include "precompiled_extensions.hxx"
#include "ldapuserprofilelayer.hxx"
#include <com/sun/star/configuration/backend/PropertyInfo.hpp>
#include <com/sun/star/configuration/backend/ConnectionLostException.hpp>
#ifndef _COM_SUN_STAR_BEANS_PROPERTYATTRIBUTE_HPP_
// on windows this is defined indirectly by <ldap.h>
#undef OPTIONAL
#include <com/sun/star/beans/PropertyAttribute.hpp>
#endif
#include <rtl/ustrbuf.hxx>
#include <com/sun/star/uno/Sequence.hxx>
//==============================================================================
namespace extensions { namespace config { namespace ldap {
static const sal_Unicode kPathSeparator = '/' ;
static
uno::Reference<backend::XLayerContentDescriber>
newLayerDescriber(const uno::Reference<lang::XMultiServiceFactory>& xFactory)
{
typedef uno::Reference<backend::XLayerContentDescriber> LayerDescriber;
rtl::OUString const k_sLayerDescriberService (
RTL_CONSTASCII_USTRINGPARAM("com.sun.star.comp.configuration.backend.LayerDescriber"));
LayerDescriber xResult(xFactory->createInstance(k_sLayerDescriberService), uno::UNO_QUERY_THROW);
return xResult;
}
//------------------------------------------------------------------------------
void LdapUserProfileSource::getUserProfile(const rtl::OUString & aUser, LdapUserProfile & aProfile)
{
mConnection.getUserProfile(aUser,
mProfileMap,
aProfile);
}
rtl::OUString LdapUserProfileSource::getComponentName() const
{
return mProfileMap.getComponentName();
}
rtl::OUString LdapUserProfileSource::getConfigurationBasePath() const
{
rtl::OUStringBuffer sComponentNameBuffer(mProfileMap.getComponentName());
sComponentNameBuffer.append(kPathSeparator);
sComponentNameBuffer.append (mProfileMap.getGroupName());
sComponentNameBuffer.append(kPathSeparator);
return sComponentNameBuffer.makeStringAndClear();
}
//------------------------------------------------------------------------------
struct LdapUserProfileLayer::ProfileData
{
LdapUserProfile mProfile;
rtl::OUString mBasePath;
explicit ProfileData(LdapUserProfileSource & aSource, const rtl::OUString & aUser)
{
aSource.getUserProfile(aUser, mProfile);
mBasePath = aSource.getConfigurationBasePath();
}
};
//------------------------------------------------------------------------------
LdapUserProfileLayer::LdapUserProfileLayer(
const uno::Reference<lang::XMultiServiceFactory>& xFactory,
const rtl::OUString& aUser,
const LdapUserProfileSourceRef & aUserProfileSource,
const rtl::OUString& aTimestamp)
: mLayerDescriber( newLayerDescriber(xFactory) )
, mSource( aUserProfileSource )
, mUser(aUser)
, mTimestamp(aTimestamp)
, mProfile( 0 )
{
OSL_ASSERT(mSource.is());
}
//------------------------------------------------------------------------------
LdapUserProfileLayer::~LdapUserProfileLayer()
{
delete mProfile;
}
//------------------------------------------------------------------------------
#define PROPNAME( name ) rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( name ) )
#define PROPTYPE( type ) getCppuType( static_cast< type const *>( 0 ) )
const sal_Int32 LAYER_PROPERTY_URL = 1;
cppu::IPropertyArrayHelper * SAL_CALL LdapUserProfileLayer::newInfoHelper()
{
using com::sun::star::beans::Property;
using namespace com::sun::star::beans::PropertyAttribute;
Property properties[] =
{
Property(PROPNAME("URL"), LAYER_PROPERTY_URL, PROPTYPE(rtl::OUString), READONLY)
};
return new cppu::OPropertyArrayHelper(properties, sizeof(properties)/sizeof(properties[0]));
}
//------------------------------------------------------------------------------
void SAL_CALL LdapUserProfileLayer::getFastPropertyValue( uno::Any& rValue, sal_Int32 nHandle ) const
{
switch (nHandle)
{
case LAYER_PROPERTY_URL:
{
rtl::OUStringBuffer aURL;
aURL.appendAscii("ldap-user-profile:");
aURL.append(mUser);
aURL.append(sal_Unicode('@'));
if (mSource.is())
aURL.append(mSource->getComponentName());
else
aURL.appendAscii("<NULL>");
rValue <<= aURL.makeStringAndClear();
}
break;
default:
OSL_ENSURE(false, "Error: trying to get an UNKNOWN property");
break;
}
}
//------------------------------------------------------------------------------
bool LdapUserProfileLayer::readProfile()
{
if (mSource.is())
try
{
OSL_ASSERT(!mProfile);
mProfile = new ProfileData(*mSource,mUser);
mSource.clear();
}
catch (ldap::LdapConnectionException & e)
{
// without existing Ldap Connection we should never have gotten a timestamp
OSL_ENSURE(false, "Unexpected: Have Ldap Backedn Layer but no vaild LDAP connection ?!");
throw backend::ConnectionLostException(e.Message, *this, uno::makeAny(e) );
}
catch (ldap::LdapGenericException & e)
{
throw backend::BackendAccessException(e.Message, *this, uno::makeAny(e) );
}
OSL_ASSERT( !mSource.is() );
OSL_ASSERT( mProfile != 0 );
return mProfile != 0;
}
//------------------------------------------------------------------------------
void SAL_CALL LdapUserProfileLayer::readData(
const uno::Reference<backend::XLayerHandler>& xHandler)
throw ( backend::MalformedDataException,
lang::NullPointerException,
lang::WrappedTargetException,
uno::RuntimeException)
{
std::vector<backend::PropertyInfo> aPropList;
#ifdef SUPPRESS_BACKEND_ERRORS
try
#endif
if ( readProfile() )
{
// initialize PropInfo members that are the same for all settings
const rtl::OUString k_sTypeString(RTL_CONSTASCII_USTRINGPARAM("string"));
backend::PropertyInfo aPropInfo;
aPropInfo.Type = k_sTypeString;
aPropInfo.Protected = sal_False;
LdapUserProfile * pProfile = &mProfile->mProfile;
aPropList.reserve(pProfile->mProfile.size());
for (LdapUserProfile::Iterator entry = pProfile->mProfile.begin() ;
entry != pProfile->mProfile.end() ; ++ entry)
{
if (entry->mAttribute.getLength()==0) { continue ; }
if (entry->mValue.getLength()==0) { continue ; }
aPropInfo.Name = mProfile->mBasePath + entry->mAttribute;
aPropInfo.Value <<= entry->mValue;
aPropList.push_back(aPropInfo);
}
}
#ifdef SUPPRESS_BACKEND_ERRORS
catch (uno::Exception & e)
{
OSL_TRACE("LDAP Backend - Reading data from LDAP failed: %s\n",
rtl::OUStringToOString( e.Message, RTL_TEXTENCODING_ASCII_US ).getStr() );
}
#endif
if ( !aPropList.empty())
{
//Describe UserProfileLayer (the list of properties) to the XHandler
//Object using com.sun.star.comp.backend.LayerContentDescriber Service
uno::Sequence<backend::PropertyInfo> aPropInfoList(&aPropList.front(),aPropList.size());
mLayerDescriber->describeLayer(xHandler, aPropInfoList);
}
// else { check handler not NULL; xHandler->startLayer(); xHandler->endLayer(); }
}
//------------------------------------------------------------------------------
}}}
//------------------------------------------------------------------------------

View File

@ -1,121 +0,0 @@
/*************************************************************************
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
* it under the terms of the GNU Lesser General Public License version 3
* only, as published by the Free Software Foundation.
*
* OpenOffice.org is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Lesser General Public License version 3 for more details
* (a copy is included in the LICENSE file that accompanied this code).
*
* You should have received a copy of the GNU Lesser General Public License
* version 3 along with OpenOffice.org. If not, see
* <http://www.openoffice.org/license.html>
* for a copy of the LGPLv3 License.
*
************************************************************************/
#ifndef EXTENSIONS_CONFIG_LDAP_LADPUSERPROFILELAYER_HXX_
#define EXTENSIONS_CONFIG_LDAP_LADPUSERPROFILELAYER_HXX_
#include "ldapuserprof.hxx"
#include "ldapaccess.hxx"
#include "propertysethelper.hxx"
#include <com/sun/star/configuration/backend/XLayer.hpp>
#include <com/sun/star/configuration/backend/BackendAccessException.hpp>
#ifndef _COM_SUN_STAR_CONFIGURATION_BACKEND_XLAYERCONTENTDESCIBER_HPP_
#include <com/sun/star/configuration/backend/XLayerContentDescriber.hpp>
#endif
#include <com/sun/star/util/XTimeStamped.hpp>
#include <cppuhelper/implbase2.hxx>
#include <salhelper/simplereferenceobject.hxx>
#include <rtl/ref.hxx>
namespace extensions { namespace config { namespace ldap {
namespace css = com::sun::star ;
namespace uno = css::uno ;
namespace lang = css::lang ;
namespace backend = css::configuration::backend ;
namespace util = css::util ;
//------------------------------------------------------------------------------
struct LdapUserProfileSource : public salhelper::SimpleReferenceObject
{
LdapConnection mConnection;
LdapUserProfileMap mProfileMap;
rtl::OUString getComponentName() const;
rtl::OUString getConfigurationBasePath() const;
void getUserProfile(rtl::OUString const & aUser, LdapUserProfile & aProfile);
};
typedef rtl::Reference< LdapUserProfileSource > LdapUserProfileSourceRef;
//------------------------------------------------------------------------------
/**
Implementation of the XLayer interfaces for LdapUserProfileBe.
Class reads UserProfile setting form LDAP.
The timestamp indicates the last modification time
*/
class LdapUserProfileLayer : public cppu::ImplInheritanceHelper2<
apihelper::ReadOnlyPropertySetHelper,
backend::XLayer,
util::XTimeStamped>
{
public :
/** Constructor */
LdapUserProfileLayer(
const uno::Reference<lang::XMultiServiceFactory>& xFactory,
const rtl::OUString& aUser,
const LdapUserProfileSourceRef & aUserProfileSource,
const rtl::OUString& aTimestamp);
// throw (uno::RuntimeException
/** Destructor */
~LdapUserProfileLayer();
// XLayer
virtual void SAL_CALL readData(
const uno::Reference<backend::XLayerHandler>& xHandler)
throw ( backend::MalformedDataException,
lang::NullPointerException,
lang::WrappedTargetException,
uno::RuntimeException) ;
// XTimeStamped
virtual rtl::OUString SAL_CALL getTimestamp(void)
throw (uno::RuntimeException)
{ return mTimestamp; }
protected:
// PropertySetHelper
virtual cppu::IPropertyArrayHelper * SAL_CALL newInfoHelper();
virtual void SAL_CALL getFastPropertyValue( uno::Any& rValue, sal_Int32 nHandle ) const;
private :
struct ProfileData;
bool readProfile();
uno::Reference<backend::XLayerContentDescriber> mLayerDescriber;
LdapUserProfileSourceRef mSource;
rtl::OUString mUser;
rtl::OUString mTimestamp;
ProfileData * mProfile;
private:
using cppu::OPropertySetHelper::getFastPropertyValue;
} ;
}}}
#endif // EXTENSIONS_CONFIG_LDAP_LADPUSERPROFILELAYER_HXX_

View File

@ -27,7 +27,6 @@
PRJ=..$/..$/..
PRJINC=$(PRJ)$/source
PRJNAME=extensions
TARGET=ldapbe
ENABLE_EXCEPTIONS=TRUE
@ -64,10 +63,7 @@ SOLARINC+= $(LDAPSDKINCLUDES)
SLOFILES=\
$(SLO)$/ldapuserprofilebe.obj \
$(SLO)$/ldapuserprof.obj \
$(SLO)$/ldapaccess.obj \
$(SLO)$/ldapuserprofilelayer.obj \
$(SLO)$/propertysethelper.obj \
$(SLO)$/componentdef.obj
LIB1TARGET=$(SLB)$/_$(TARGET).lib

View File

@ -1,150 +0,0 @@
/*************************************************************************
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
* it under the terms of the GNU Lesser General Public License version 3
* only, as published by the Free Software Foundation.
*
* OpenOffice.org is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Lesser General Public License version 3 for more details
* (a copy is included in the LICENSE file that accompanied this code).
*
* You should have received a copy of the GNU Lesser General Public License
* version 3 along with OpenOffice.org. If not, see
* <http://www.openoffice.org/license.html>
* for a copy of the LGPLv3 License.
*
************************************************************************/
// MARKER(update_precomp.py): autogen include statement, do not remove
#include "precompiled_extensions.hxx"
#include "propertysethelper.hxx"
#include <com/sun/star/lang/XTypeProvider.hpp>
#include <cppuhelper/typeprovider.hxx>
//..........................................................................
namespace extensions {
namespace apihelper {
//..........................................................................
namespace uno = com::sun::star::uno;
namespace lang = com::sun::star::lang;
namespace beans = com::sun::star::beans;
//..........................................................................
PropertySetHelper::PropertySetHelper()
: BroadcasterBase()
, cppu::OWeakObject()
, cppu::OPropertySetHelper( BroadcasterBase::getBroadcastHelper() )
, m_pHelper(0)
{
}
//..........................................................................
PropertySetHelper::~PropertySetHelper()
{
delete m_pHelper;
}
//..........................................................................
// XInterface
uno::Any SAL_CALL PropertySetHelper::queryInterface( uno::Type const & rType ) throw (uno::RuntimeException)
{
uno::Any aResult = cppu::OPropertySetHelper::queryInterface(rType);
if (!aResult.hasValue())
aResult = OWeakObject::queryInterface(rType);
return aResult;
}
void SAL_CALL PropertySetHelper::acquire() throw ()
{
OWeakObject::acquire();
}
void SAL_CALL PropertySetHelper::release() throw ()
{
if (m_refCount == 1)
this->disposing();
OWeakObject::release();
}
//..........................................................................
// XTypeProvider
uno::Sequence< uno::Type > SAL_CALL PropertySetHelper::getTypes() throw (uno::RuntimeException)
{
// could be static instance
cppu::OTypeCollection aTypes(
::getCppuType( static_cast< uno::Reference< beans::XPropertySet > const * >(0) ),
::getCppuType( static_cast< uno::Reference< beans::XMultiPropertySet > const * >(0) ),
::getCppuType( static_cast< uno::Reference< beans::XFastPropertySet > const * >(0) ),
::getCppuType( static_cast< uno::Reference< lang::XTypeProvider > const * >(0) ) );
return aTypes.getTypes();
}
//..........................................................................
// cppu::OPropertySetHelper
uno::Reference< beans::XPropertySetInfo > SAL_CALL PropertySetHelper::getPropertySetInfo( )
throw (uno::RuntimeException)
{
return createPropertySetInfo(getInfoHelper());
}
//..........................................................................
cppu::IPropertyArrayHelper & SAL_CALL PropertySetHelper::getInfoHelper()
{
osl::MutexGuard aGuard( getBroadcastMutex() );
if (!m_pHelper)
m_pHelper = newInfoHelper();
OSL_ENSURE(m_pHelper,"Derived class did not create new PropertyInfoHelper");
if (!m_pHelper)
throw uno::RuntimeException(rtl::OUString::createFromAscii("No PropertyArrayHelper available"),*this);
return *m_pHelper;
}
//..........................................................................
sal_Bool SAL_CALL PropertySetHelper::convertFastPropertyValue(
uno::Any & rConvertedValue, uno::Any & rOldValue, sal_Int32 nHandle, const uno::Any& rValue )
throw (lang::IllegalArgumentException)
{
this->getFastPropertyValue(rOldValue, nHandle);
rConvertedValue = rValue;
return rValue.isExtractableTo( rOldValue.getValueType() );
}
//..........................................................................
void SAL_CALL ReadOnlyPropertySetHelper::setFastPropertyValue_NoBroadcast(
sal_Int32 /*nHandle*/, const uno::Any& /*rValue*/ )
throw (uno::Exception)
{
OSL_ENSURE(false, "Attempt to set value in read-only property set");
throw beans::PropertyVetoException(rtl::OUString::createFromAscii("Attempt to set value in Read-Only property set"),*this);
}
//..........................................................................
sal_Bool SAL_CALL ReadOnlyPropertySetHelper::convertFastPropertyValue(
uno::Any & /*rConvertedValue*/, uno::Any & /*rOldValue*/, sal_Int32 /*nHandle*/, const uno::Any& /*rValue*/ )
throw (lang::IllegalArgumentException)
{
OSL_ENSURE(false, "Attempt to convert value in read-only property set");
return false;
}
//..........................................................................
//..........................................................................
} // namespace apihelper
} // namespace extensions
//..........................................................................

View File

@ -1,134 +0,0 @@
/*************************************************************************
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
* it under the terms of the GNU Lesser General Public License version 3
* only, as published by the Free Software Foundation.
*
* OpenOffice.org is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Lesser General Public License version 3 for more details
* (a copy is included in the LICENSE file that accompanied this code).
*
* You should have received a copy of the GNU Lesser General Public License
* version 3 along with OpenOffice.org. If not, see
* <http://www.openoffice.org/license.html>
* for a copy of the LGPLv3 License.
*
************************************************************************/
#ifndef EXTENSIONS_MISC_PROPERTYSETHELPER_HXX
#define EXTENSIONS_MISC_PROPERTYSETHELPER_HXX
#include <cppuhelper/propshlp.hxx>
#include <cppuhelper/weak.hxx>
//..........................................................................
namespace extensions {
namespace apihelper {
//..........................................................................
namespace uno = com::sun::star::uno;
namespace lang = com::sun::star::lang;
namespace beans = com::sun::star::beans;
//..........................................................................
class BroadcasterBase
{
osl::Mutex m_aMutex;
cppu::OBroadcastHelper m_aBroadcastHelper;
protected:
BroadcasterBase() : m_aMutex(), m_aBroadcastHelper(m_aMutex) {}
~BroadcasterBase() {}
osl::Mutex & getBroadcastMutex() { return m_aMutex; }
cppu::OBroadcastHelper & getBroadcastHelper() { return m_aBroadcastHelper; }
};
//..........................................................................
class PropertySetHelper : protected BroadcasterBase // must be first
, public cppu::OWeakObject
, public cppu::OPropertySetHelper // not copyable
{
public:
PropertySetHelper();
~PropertySetHelper();
// XInterface
virtual uno::Any SAL_CALL queryInterface( uno::Type const & rType ) throw (uno::RuntimeException);
virtual void SAL_CALL acquire() throw ();
virtual void SAL_CALL release() throw ();
// XTypeProvider
virtual uno::Sequence< uno::Type > SAL_CALL getTypes() throw (uno::RuntimeException);
// to be provided by derived classes
// virtual uno::Sequence< sal_Int8 > SAL_CALL getImplementationId() throw (uno::RuntimeException) = 0;
// XPropertySet
virtual uno::Reference< beans::XPropertySetInfo > SAL_CALL
getPropertySetInfo( ) throw (uno::RuntimeException);
protected:
// new methods still to be overridden
virtual cppu::IPropertyArrayHelper * SAL_CALL newInfoHelper() = 0;
// cppu::OPropertySetHelper interface
#if 0 // these methods still must be overridden
virtual cppu::IPropertyArrayHelper * SAL_CALL newInfoHelper() = 0;
virtual void SAL_CALL setFastPropertyValue_NoBroadcast( sal_Int32 nHandle, const uno::Any& rValue )
throw (uno::Exception) = 0;
virtual void SAL_CALL getFastPropertyValue( uno::Any& rValue, sal_Int32 nHandle ) const = 0;
#endif
virtual cppu::IPropertyArrayHelper & SAL_CALL getInfoHelper();
// default implementation: does not do any conversion
virtual sal_Bool SAL_CALL convertFastPropertyValue(
uno::Any & rConvertedValue, uno::Any & rOldValue,
sal_Int32 nHandle, const uno::Any& rValue )
throw (lang::IllegalArgumentException);
private:
cppu::IPropertyArrayHelper * m_pHelper;
};
//..........................................................................
class ReadOnlyPropertySetHelper : public PropertySetHelper
{
public:
ReadOnlyPropertySetHelper() {}
~ReadOnlyPropertySetHelper() {}
protected:
#if 0 // these methods still must be overridden
virtual cppu::IPropertyArrayHelper * SAL_CALL newInfoHelper() = 0;
virtual void SAL_CALL getFastPropertyValue( uno::Any& rValue, sal_Int32 nHandle ) const = 0;
#endif
// default implementation: rejects any attempt to set a value
virtual void SAL_CALL setFastPropertyValue_NoBroadcast( sal_Int32 nHandle, const uno::Any& rValue )
throw (uno::Exception);
// default implementation: rejects any attempt to do a conversion
virtual sal_Bool SAL_CALL convertFastPropertyValue(
uno::Any & rConvertedValue, uno::Any & rOldValue,
sal_Int32 nHandle, const uno::Any& rValue )
throw (lang::IllegalArgumentException);
};
//..........................................................................
} // namespace apihelper
} // namespace extensions
//..........................................................................
#endif

View File

@ -1,5 +1,4 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE oor:component-data SYSTEM "../../../../component-update.dtd">
<oor:component-data oor:name="Jobs" oor:package="org.openoffice.Office" xmlns:oor="http://openoffice.org/2001/registry" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<node oor:name="Jobs">
<node oor:name="OOoImprovement.OnLogRotateJob" oor:op="replace">

View File

@ -242,7 +242,7 @@ install_linux_rpm()
# start to install jre
echo "Extracting ..."
olddir=`pwd`
cd $tempdir
cd "$tempdir"
rpm2cpio $tempjrefile | cpio -i --make-directories
rm -f $tempjrefile # we do not need it anymore, so conserve discspace
@ -330,7 +330,7 @@ install_linux_rpm()
fi
echo "Done."
cd $olddir
cd "$olddir"
}
find_rpm2cpio()

View File

@ -62,7 +62,7 @@ en-US = "Installation failed."
en-US = "Installation of [PRODUCTNAME] language pack completed."
[InstallCompleteText2]
en-US = "Call 'Tools-Options-Language Settings' to change the user interface language."
en-US = "Call '[PRODUCTNAME]-Preferences-Language Settings-Languages' to change the user interface language."
[InstallCompleteTextPatch]
en-US = "Installation of [FULLPRODUCTNAME] completed"

View File

@ -365,12 +365,6 @@ public abstract class Configuration
}
}
public static XNameAccess getChildNodebyIndex(Object _oNode, int _index)
{
XNameAccess xNameAccessNode = (XNameAccess) UnoRuntime.queryInterface(XNameAccess.class, _oNode);
return getChildNodebyIndex(xNameAccessNode, _index);
}
public static XNameAccess getChildNodebyIndex(XNameAccess _xNameAccess, int _index)
{
try

View File

@ -56,12 +56,14 @@ public class CGCategory
xMSF = _xMSF;
}
public void initialize(int _index)
public void initialize(String category)
{
try
{
oconfigView = Configuration.getConfigurationRoot(xMSF, CGROOTPATH, false); //business/Tables
xNameAccessCurBusinessNode = Configuration.getChildNodebyIndex(oconfigView, _index);
xNameAccessCurBusinessNode = Configuration.getChildNodebyName(
UnoRuntime.queryInterface(XNameAccess.class, oconfigView),
category);
}
catch (Exception e)
{

View File

@ -39,8 +39,6 @@ import com.sun.star.wizards.common.Properties;
public class FieldDescription
{
int category;
private String tablename = "";
// String fieldname;
private String keyname;
@ -60,7 +58,6 @@ public class FieldDescription
{
xMSF = _xMSF;
aLocale = _aLocale;
category = _curscenarioselector.getCategory();
tablename = _curscenarioselector.getTableName();
Name = _fieldname;
keyname = _keyname;

View File

@ -165,19 +165,6 @@ public class ScenarioSelector extends FieldSelection implements XItemListener, X
initializeCategory(BUSINESS);
}
public int getCategory()
{
if (optBusiness.getState())
{
curcategory = BUSINESS;
}
else
{
curcategory = PRIVATE;
}
return curcategory;
}
public void selectCategory()
{
if (optBusiness.getState())
@ -194,7 +181,8 @@ public class ScenarioSelector extends FieldSelection implements XItemListener, X
{
try
{
oCGCategory.initialize(_iCategory);
oCGCategory.initialize(
_iCategory == PRIVATE ? "private" : "business");
xTableListBox.removeItems((short) 0, xTableListBox.getItemCount());
xTableListBox.addItems(oCGCategory.getTableNames(), (short) _iCategory);
initializeTable(0);

View File

@ -125,16 +125,8 @@ CertificateViewerGeneralTP::CertificateViewerGeneralTP( Window* _pParent, Certif
//Verify the certificate
sal_Int32 certStatus = mpDlg->mxSecurityEnvironment->verifyCertificate(mpDlg->mxCert,
Sequence<Reference<css::security::XCertificate> >());
//We currently have two status
//These errors are alloweds
sal_Int32 validCertErrors = css::security::CertificateValidity::VALID
| css::security::CertificateValidity::UNKNOWN_REVOKATION;
//Build a mask to filter out the allowed errors
sal_Int32 mask = ~validCertErrors;
// "subtract" the allowed error flags from the result
sal_Int32 certErrors = certStatus & mask;
bool bCertValid = certErrors > 0 ? false : true;
bool bCertValid = certStatus == css::security::CertificateValidity::VALID ? true : false;
bool bHC = GetSettings().GetStyleSettings().GetHighContrastMode();
if ( !bCertValid )
@ -485,16 +477,7 @@ void CertificateViewerCertPathTP::ActivatePage()
//Verify the certificate
sal_Int32 certStatus = mpDlg->mxSecurityEnvironment->verifyCertificate(rCert,
Sequence<Reference<css::security::XCertificate> >());
//We currently have two status
//These errors are alloweds
sal_Int32 validCertErrors = css::security::CertificateValidity::VALID
| css::security::CertificateValidity::UNKNOWN_REVOKATION;
//Build a mask to filter out the allowed errors
sal_Int32 mask = ~validCertErrors;
// "subtract" the allowed error flags from the result
sal_Int32 certErrors = certStatus & mask;
bool bCertValid = certErrors > 0 ? false : true;
bool bCertValid = certStatus == css::security::CertificateValidity::VALID ? true : false;
pParent = InsertCert( pParent, sName, rCert, bCertValid);
}

View File

@ -640,15 +640,7 @@ void DigitalSignaturesDialog::ImplFillSignaturesBox()
sal_Int32 certResult = xSecEnv->verifyCertificate(xCert,
Sequence<css::uno::Reference<css::security::XCertificate> >());
//These errors are alloweds
sal_Int32 validErrors = css::security::CertificateValidity::VALID
| css::security::CertificateValidity::UNKNOWN_REVOKATION;
//Build a mask to filter out the allowed errors
sal_Int32 mask = ~validErrors;
// "subtract" the allowed error flags from the result
sal_Int32 errors = certResult & mask;
bCertValid = errors > 0 ? false : true;
bCertValid = certResult == css::security::CertificateValidity::VALID ? true : false;
if ( bCertValid )
nValidCerts++;

View File

@ -0,0 +1,77 @@
/*************************************************************************
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* Copyright 2008 by Sun Microsystems, Inc.
*
* OpenOffice.org - a multi-platform office productivity suite
*
* $RCSfile: xmlstreamio.hxx,v $
* $Revision: 1.3 $
*
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
* it under the terms of the GNU Lesser General Public License version 3
* only, as published by the Free Software Foundation.
*
* OpenOffice.org is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Lesser General Public License version 3 for more details
* (a copy is included in the LICENSE file that accompanied this code).
*
* You should have received a copy of the GNU Lesser General Public License
* version 3 along with OpenOffice.org. If not, see
* <http://www.openoffice.org/license.html>
* for a copy of the LGPLv3 License.
*
************************************************************************/
#include "diagnose.hxx"
#include <stdio.h>
#include <stdarg.h>
#include "rtl/instance.hxx"
#include "rtl/bootstrap.hxx"
namespace xmlsecurity {
struct UseDiagnose : public rtl::StaticWithInit<
const bool, UseDiagnose>
{
const bool operator () ()
{
::rtl::OUString value;
sal_Bool res = rtl::Bootstrap::get(
::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("XMLSECURITY_TRACE")), value);
return res == sal_True ? true : false;
}
};
/* the function will print the string when
- build with debug
- the bootstrap variable XMLSECURITY_TRACE is set.
*/
void xmlsec_trace(const char* pszFormat, ...)
{
bool bDebug = false;
#if OSL_DEBUG_LEVEL > 1
bDebug = true;
#endif
if (bDebug || UseDiagnose::get())
{
va_list args;
fprintf(stderr, "[xmlsecurity] ");
va_start(args, pszFormat);
vfprintf(stderr, pszFormat, args);
va_end(args);
fprintf(stderr,"\n");
fflush(stderr);
}
}
}

View File

@ -0,0 +1,43 @@
/*************************************************************************
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* Copyright 2008 by Sun Microsystems, Inc.
*
* OpenOffice.org - a multi-platform office productivity suite
*
* $RCSfile: xmlstreamio.hxx,v $
* $Revision: 1.3 $
*
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
* it under the terms of the GNU Lesser General Public License version 3
* only, as published by the Free Software Foundation.
*
* OpenOffice.org is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Lesser General Public License version 3 for more details
* (a copy is included in the LICENSE file that accompanied this code).
*
* You should have received a copy of the GNU Lesser General Public License
* version 3 along with OpenOffice.org. If not, see
* <http://www.openoffice.org/license.html>
* for a copy of the LGPLv3 License.
*
************************************************************************/
#ifndef XMLSECURITY_DIAGNOSE_HXX
#define XMLSECURITY_DIAGNOSE_HXX
namespace xmlsecurity
{
void xmlsec_trace(const char* pszFormat, ...);
}
#endif //XMLSECURITY_DIAGNOSE_HXX

View File

@ -41,10 +41,12 @@ ENABLE_EXCEPTIONS = TRUE
CFLAGS+=-DSYSTEM_LIBXML $(LIBXML_CFLAGS)
.ENDIF
.IF "$(WITH_MOZILLA)" == "NO"
.IF "$(WITH_MOZILLA)" == "NO" || "$(ENABLE_NSS_MODULE)"!="YES"
.IF "$(SYSTEM_MOZILLA)" != "YES"
@all:
@echo "No mozilla -> no nss -> no libxmlsec -> no xmlsecurity.."
.ENDIF
.ENDIF
.IF "$(CRYPTO_ENGINE)" == "mscrypto"
CDEFS += -DXMLSEC_CRYPTO_MSCRYPTO -DXMLSEC_NO_XSLT
@ -62,7 +64,8 @@ SLOFILES = \
$(SLO)$/certificateextension_xmlsecimpl.obj \
$(SLO)$/xmlstreamio.obj \
$(SLO)$/errorcallback.obj \
$(SLO)$/xsec_xmlsec.obj
$(SLO)$/xsec_xmlsec.obj \
$(SLO)$/diagnose.obj
# --- Targets ------------------------------------------------------

View File

@ -43,10 +43,12 @@ LIBTARGET=NO
.IF "$(CRYPTO_ENGINE)" == "mscrypto"
.IF "$(WITH_MOZILLA)" == "NO"
.IF "$(WITH_MOZILLA)" == "NO" || "$(ENABLE_NSS_MODULE)"!="YES"
.IF "$(SYSTEM_MOZILLA)" != "YES"
@all:
@echo "No mozilla -> no nss -> no libxmlsec -> no xmlsecurity/nss"
.ENDIF
.ENDIF
CDEFS += -DXMLSEC_CRYPTO_MSCRYPTO -DXMLSEC_NO_XSLT

View File

@ -37,6 +37,7 @@
#pragma warning(pop)
#endif
#include <sal/config.h>
#include <osl/thread.h>
#include "securityenvironment_mscryptimpl.hxx"
#ifndef _X509CERTIFICATE_NSSIMPL_HXX_
@ -60,7 +61,11 @@
#include <osl/process.h>
//CP : end
#include <rtl/memory.h>
#include "../diagnose.hxx"
using namespace xmlsecurity;
using namespace ::com::sun::star::uno ;
using namespace ::com::sun::star::lang ;
using ::com::sun::star::lang::XMultiServiceFactory ;
@ -69,9 +74,58 @@ using ::rtl::OUString ;
using ::com::sun::star::xml::crypto::XSecurityEnvironment ;
using ::com::sun::star::security::XCertificate ;
namespace css = ::com::sun::star;
extern X509Certificate_MSCryptImpl* MswcryCertContextToXCert( PCCERT_CONTEXT cert ) ;
struct CertErrorToString{
DWORD error;
char * name;
};
CertErrorToString arErrStrings[] =
{
{ 0x00000000, "CERT_TRUST_NO_ERROR"},
{ 0x00000001, "CERT_TRUST_IS_NOT_TIME_VALID"},
{ 0x00000002, "CERT_TRUST_IS_NOT_TIME_NESTED"},
{ 0x00000004, "CERT_TRUST_IS_REVOKED" },
{ 0x00000008, "CERT_TRUST_IS_NOT_SIGNATURE_VALID" },
{ 0x00000010, "CERT_TRUST_IS_NOT_SIGNATURE_VALID"},
{ 0x00000020, "CERT_TRUST_IS_UNTRUSTED_ROOT"},
{ 0x00000040, "CERT_TRUST_REVOCATION_STATUS_UNKNOWN"},
{ 0x00000080, "CERT_TRUST_IS_CYCLIC"},
{ 0x00000100, "CERT_TRUST_INVALID_EXTENSION"},
{ 0x00000200, "CERT_TRUST_INVALID_POLICY_CONSTRAINTS"},
{ 0x00000400, "CERT_TRUST_INVALID_BASIC_CONSTRAINTS"},
{ 0x00000800, "CERT_TRUST_INVALID_NAME_CONSTRAINTS"},
{ 0x00001000, "CERT_TRUST_HAS_NOT_SUPPORTED_NAME_CONSTRAINT"},
{ 0x00002000, "CERT_TRUST_HAS_NOT_DEFINED_NAME_CONSTRAINT"},
{ 0x00004000, "CERT_TRUST_HAS_NOT_PERMITTED_NAME_CONSTRAINT"},
{ 0x00008000, "CERT_TRUST_HAS_EXCLUDED_NAME_CONSTRAINT"},
{ 0x01000000, "CERT_TRUST_IS_OFFLINE_REVOCATION"},
{ 0x02000000, "CERT_TRUST_NO_ISSUANCE_CHAIN_POLICY"},
{ 0x04000000, "CERT_TRUST_IS_EXPLICIT_DISTRUST"},
{ 0x08000000, "CERT_TRUST_HAS_NOT_SUPPORTED_CRITICAL_EXT"},
//Chain errors
{ 0x00010000, "CERT_TRUST_IS_PARTIAL_CHAIN"},
{ 0x00020000, "CERT_TRUST_CTL_IS_NOT_TIME_VALID"},
{ 0x00040000, "CERT_TRUST_CTL_IS_NOT_SIGNATURE_VALID"},
{ 0x00080000, "CERT_TRUST_CTL_IS_NOT_VALID_FOR_USAGE"}
};
void traceTrustStatus(DWORD err)
{
int numErrors = sizeof(arErrStrings) / sizeof(CertErrorToString);
xmlsec_trace("The certificate error status is: ");
if (err == 0)
xmlsec_trace("%s", arErrStrings[0].name);
for (int i = 1; i < numErrors; i++)
{
if (arErrStrings[i].error & err)
xmlsec_trace("%s", arErrStrings[i].name);
}
}
SecurityEnvironment_MSCryptImpl :: SecurityEnvironment_MSCryptImpl( const Reference< XMultiServiceFactory >& aFactory ) : m_hProv( NULL ) , m_pszContainer( NULL ) , m_hKeyStore( NULL ), m_hCertStore( NULL ), m_tSymKeyList() , m_tPubKeyList() , m_tPriKeyList(), m_xServiceManager( aFactory ), m_bEnableDefault( sal_False ) {
}
@ -891,6 +945,11 @@ HCERTSTORE getCertStoreForIntermediatCerts(
for (int i = 0; i < seqCerts.getLength(); i++)
{
xmlsec_trace("Added temporary certificate: \n%s",
OUStringToOString(seqCerts[i]->getSubjectName(),
osl_getThreadTextEncoding()).getStr());
Sequence<sal_Int8> data = seqCerts[i]->getEncoded();
PCCERT_CONTEXT cert = CertCreateCertificateContext(
X509_ASN_ENCODING, ( const BYTE* )&data[0], data.getLength());
@ -901,6 +960,11 @@ HCERTSTORE getCertStoreForIntermediatCerts(
}
return store;
}
//We return only valid or invalid, as long as the API documentation expresses
//explicitly that all validation steps are carried out even if one or several
//errors occur. See also
//http://wiki.services.openoffice.org/wiki/Certificate_Path_Validation#Validation_status
sal_Int32 SecurityEnvironment_MSCryptImpl :: verifyCertificate(
const Reference< ::com::sun::star::security::XCertificate >& aCert,
const Sequence< Reference< ::com::sun::star::security::XCertificate > >& seqCerts)
@ -910,17 +974,16 @@ sal_Int32 SecurityEnvironment_MSCryptImpl :: verifyCertificate(
PCCERT_CHAIN_CONTEXT pChainContext = NULL;
PCCERT_CONTEXT pCertContext = NULL;
const X509Certificate_MSCryptImpl* xcert = NULL;
DWORD chainStatus ;
CERT_ENHKEY_USAGE enhKeyUsage ;
CERT_USAGE_MATCH certUsage ;
CERT_CHAIN_PARA chainPara ;
Reference< XUnoTunnel > xCertTunnel( aCert, UNO_QUERY ) ;
if( !xCertTunnel.is() ) {
throw RuntimeException() ;
}
xmlsec_trace("Start verification of certificate: \n %s",
OUStringToOString(
aCert->getSubjectName(), osl_getThreadTextEncoding()).getStr());
xcert = ( X509Certificate_MSCryptImpl* )xCertTunnel->getSomething( X509Certificate_MSCryptImpl::getUnoTunnelId() ) ;
if( xcert == NULL ) {
throw RuntimeException() ;
@ -928,6 +991,11 @@ sal_Int32 SecurityEnvironment_MSCryptImpl :: verifyCertificate(
pCertContext = xcert->getMswcryCert() ;
CERT_ENHKEY_USAGE enhKeyUsage ;
CERT_USAGE_MATCH certUsage ;
CERT_CHAIN_PARA chainPara ;
rtl_zeroMemory(&chainPara, sizeof(CERT_CHAIN_PARA));
//Prepare parameter for CertGetCertificateChain
enhKeyUsage.cUsageIdentifier = 0 ;
enhKeyUsage.rgpszUsageIdentifier = NULL ;
@ -975,130 +1043,92 @@ sal_Int32 SecurityEnvironment_MSCryptImpl :: verifyCertificate(
}
//CertGetCertificateChain searches by default in MY, CA, ROOT and TRUST
//We do not check revocation of the root. In most cases there are none.
//Then we would get CERT_TRUST_REVOCATION_STATUS_UNKNOWN
xmlsec_trace("Verifying cert using revocation information.");
bChain = CertGetCertificateChain(
NULL ,
pCertContext ,
NULL , //use current system time
hCollectionStore,
&chainPara ,
CERT_CHAIN_REVOCATION_CHECK_CHAIN | CERT_CHAIN_TIMESTAMP_TIME ,
CERT_CHAIN_REVOCATION_CHECK_CHAIN | CERT_CHAIN_REVOCATION_CHECK_CHAIN_EXCLUDE_ROOT,
NULL ,
&pChainContext);
if (!bChain)
pChainContext = NULL;
}
if(bChain && pChainContext != NULL )
{
chainStatus = pChainContext->TrustStatus.dwErrorStatus ;
// JL & TKR: Until we have a test suite to test all error types we just say that the cert is
// valid or invalid with no further separation.
// Error CERT_TRUST_IS_OFFLINE_REVOCATION and CERT_TRUST_REVOCATION_STATUS_UNKNOWN are treated separate
// because they are ignored ( Bad! ) in the currently situation
if( chainStatus == CERT_TRUST_NO_ERROR )
if (bChain && pChainContext->cChain > 0)
{
validity = ::com::sun::star::security::CertificateValidity::VALID ;
}
xmlsec_trace("Overall error status (all chains):");
traceTrustStatus(pChainContext->TrustStatus.dwErrorStatus);
//highest quality chains come first
PCERT_SIMPLE_CHAIN pSimpleChain = pChainContext->rgpChain[0];
xmlsec_trace("Error status of first chain: ");
traceTrustStatus(pSimpleChain->TrustStatus.dwErrorStatus);
if ( ( chainStatus & CERT_TRUST_IS_OFFLINE_REVOCATION ) == CERT_TRUST_IS_OFFLINE_REVOCATION ) {
validity |= ::com::sun::star::security::CertificateValidity::UNKNOWN_REVOKATION ;
}
//CERT_TRUST_REVOCATION_STATUS_UNKNOWN is also set if a certificate
//has no AIA(OCSP) or CRLDP extension and there is no CRL locally installed.
DWORD revocationFlags = CERT_TRUST_REVOCATION_STATUS_UNKNOWN |
CERT_TRUST_IS_OFFLINE_REVOCATION;
DWORD otherErrorsMask = ~revocationFlags;
if( !(pSimpleChain->TrustStatus.dwErrorStatus & otherErrorsMask))
if ( ( chainStatus & CERT_TRUST_REVOCATION_STATUS_UNKNOWN ) == CERT_TRUST_REVOCATION_STATUS_UNKNOWN ) {
validity |= ::com::sun::star::security::CertificateValidity::UNKNOWN_REVOKATION ;
{
//No errors except maybe those caused by missing revocation information
//Check if there are errors
if ( pSimpleChain->TrustStatus.dwErrorStatus & revocationFlags)
{
//No revocation information. Because MSDN documentation is not
//clear about if all other tests are performed if an error occurrs,
//we test again, without requiring revocation checking.
CertFreeCertificateChain(pChainContext);
pChainContext = NULL;
xmlsec_trace("Checking again but without requiring revocation information.");
bChain = CertGetCertificateChain(
NULL ,
pCertContext ,
NULL , //use current system time
hCollectionStore,
&chainPara ,
0,
NULL ,
&pChainContext);
if (bChain
&& pChainContext->cChain > 0
&& pChainContext->rgpChain[0]->TrustStatus.dwErrorStatus == CERT_TRUST_NO_ERROR)
{
xmlsec_trace("Certificate is valid.\n");
validity = ::com::sun::star::security::CertificateValidity::VALID;
}
else
{
xmlsec_trace("Certificate is invalid.\n");
}
}
else
{
//valid and revocation information available
xmlsec_trace("Certificate is valid.\n");
validity = ::com::sun::star::security::CertificateValidity::VALID;
}
}
else
{
//invalid
xmlsec_trace("Certificate is invalid.\n");
validity = ::com::sun::star::security::CertificateValidity::INVALID ;
}
}
if (chainStatus & CERT_TRUST_IS_NOT_VALID_FOR_USAGE
|| chainStatus & CERT_TRUST_IS_CYCLIC
|| chainStatus & CERT_TRUST_INVALID_POLICY_CONSTRAINTS
|| chainStatus & CERT_TRUST_INVALID_BASIC_CONSTRAINTS
|| chainStatus & CERT_TRUST_INVALID_NAME_CONSTRAINTS
|| chainStatus & CERT_TRUST_HAS_NOT_SUPPORTED_NAME_CONSTRAINT
|| chainStatus & CERT_TRUST_HAS_NOT_DEFINED_NAME_CONSTRAINT
|| chainStatus & CERT_TRUST_HAS_NOT_PERMITTED_NAME_CONSTRAINT
|| chainStatus & CERT_TRUST_HAS_EXCLUDED_NAME_CONSTRAINT
|| chainStatus & CERT_TRUST_NO_ISSUANCE_CHAIN_POLICY
|| chainStatus & CERT_TRUST_CTL_IS_NOT_TIME_VALID
|| chainStatus & CERT_TRUST_CTL_IS_NOT_SIGNATURE_VALID
|| chainStatus & CERT_TRUST_CTL_IS_NOT_VALID_FOR_USAGE
|| chainStatus & CERT_TRUST_IS_NOT_TIME_VALID
|| chainStatus & CERT_TRUST_IS_NOT_TIME_NESTED
|| chainStatus & CERT_TRUST_IS_REVOKED
|| chainStatus & CERT_TRUST_IS_NOT_SIGNATURE_VALID
|| chainStatus & CERT_TRUST_IS_UNTRUSTED_ROOT
|| chainStatus & CERT_TRUST_INVALID_EXTENSION
|| chainStatus & CERT_TRUST_IS_PARTIAL_CHAIN )
else
{
validity = ::com::sun::star::security::CertificateValidity::INVALID;
xmlsec_trace("CertGetCertificateChaine failed.\n");
}
/*
if( ( chainStatus & CERT_TRUST_IS_NOT_TIME_VALID ) == CERT_TRUST_IS_NOT_TIME_VALID ) {
validity |= ::com::sun::star::security::CertificateValidity::TIME_INVALID ;
}
if( ( chainStatus & CERT_TRUST_IS_NOT_TIME_NESTED ) == CERT_TRUST_IS_NOT_TIME_NESTED ) {
validity |= ::com::sun::star::security::CertificateValidity::NOT_TIME_NESTED;
}
if( ( chainStatus & CERT_TRUST_IS_REVOKED ) == CERT_TRUST_IS_REVOKED ) {
validity |= ::com::sun::star::security::CertificateValidity::REVOKED ;
}
//JL My interpretation is that CERT_TRUST_IS_OFFLINE_REVOCATION does not mean that the certificate was revoked.
//Instead the CRL cannot be retrieved from the net, or an available CRL is stale (too old).
//This error may also occurs if the certificate does not contain the CDP (Certificate Distribution Point)extension
if( ( chainStatus & CERT_TRUST_IS_OFFLINE_REVOCATION ) == CERT_TRUST_IS_OFFLINE_REVOCATION ) {
validity |= ::com::sun::star::security::CertificateValidity::UNKNOWN_REVOKATION ;
}
if( ( chainStatus & CERT_TRUST_IS_NOT_SIGNATURE_VALID ) == CERT_TRUST_IS_NOT_SIGNATURE_VALID ) {
validity |= ::com::sun::star::security::CertificateValidity::SIGNATURE_INVALID ;
}
if( ( chainStatus & CERT_TRUST_IS_UNTRUSTED_ROOT ) == CERT_TRUST_IS_UNTRUSTED_ROOT ) {
validity |= ::com::sun::star::security::CertificateValidity::ROOT_UNTRUSTED ;
}
if( ( chainStatus & CERT_TRUST_REVOCATION_STATUS_UNKNOWN ) == CERT_TRUST_REVOCATION_STATUS_UNKNOWN ) {
validity |= ::com::sun::star::security::CertificateValidity::UNKNOWN_REVOKATION ;
}
if( ( chainStatus & CERT_TRUST_INVALID_EXTENSION ) == CERT_TRUST_INVALID_EXTENSION ) {
validity |= ::com::sun::star::security::CertificateValidity::EXTENSION_INVALID ;
}
if( ( chainStatus & CERT_TRUST_IS_PARTIAL_CHAIN ) == CERT_TRUST_IS_PARTIAL_CHAIN ) {
validity |= ::com::sun::star::security::CertificateValidity::CHAIN_INCOMPLETE ;
}
//todo
if (chainStatus & CERT_TRUST_IS_NOT_VALID_FOR_USAGE
|| chainStatus & CERT_TRUST_IS_CYCLIC
|| chainStatus & CERT_TRUST_INVALID_POLICY_CONSTRAINTS
|| chainStatus & CERT_TRUST_INVALID_BASIC_CONSTRAINTS
|| chainStatus & CERT_TRUST_INVALID_NAME_CONSTRAINTS
|| chainStatus & CERT_TRUST_HAS_NOT_SUPPORTED_NAME_CONSTRAINT
|| chainStatus & CERT_TRUST_HAS_NOT_DEFINED_NAME_CONSTRAINT
|| chainStatus & CERT_TRUST_HAS_NOT_PERMITTED_NAME_CONSTRAINT
|| chainStatus & CERT_TRUST_HAS_EXCLUDED_NAME_CONSTRAINT
|| chainStatus & CERT_TRUST_NO_ISSUANCE_CHAIN_POLICY
|| chainStatus & CERT_TRUST_CTL_IS_NOT_TIME_VALID
|| chainStatus & CERT_TRUST_CTL_IS_NOT_SIGNATURE_VALID
|| chainStatus & CERT_TRUST_CTL_IS_NOT_VALID_FOR_USAGE)
{
validity = ::com::sun::star::security::CertificateValidity::INVALID;
}
*/
} else {
validity = ::com::sun::star::security::CertificateValidity::INVALID ;
}
if (pChainContext)
{
CertFreeCertificateChain(pChainContext);
pChainContext = NULL;
}
//Close the additional store, do not destroy the contained certs
CertCloseStore(hCollectionStore, CERT_CLOSE_STORE_CHECK_FLAG);

View File

@ -260,24 +260,27 @@ sal_Int16 SAL_CALL X509Certificate_MSCryptImpl :: getVersion() throw ( ::com::su
}
}
::rtl::OUString SAL_CALL X509Certificate_MSCryptImpl :: getSubjectName() throw ( ::com::sun::star::uno::RuntimeException) {
if( m_pCertContext != NULL && m_pCertContext->pCertInfo != NULL ) {
char* subject ;
::rtl::OUString SAL_CALL X509Certificate_MSCryptImpl :: getSubjectName() throw ( ::com::sun::star::uno::RuntimeException)
{
if( m_pCertContext != NULL && m_pCertContext->pCertInfo != NULL )
{
wchar_t* subject ;
DWORD cbSubject ;
cbSubject = CertNameToStr(
cbSubject = CertNameToStrW(
X509_ASN_ENCODING | PKCS_7_ASN_ENCODING ,
&( m_pCertContext->pCertInfo->Subject ),
CERT_X500_NAME_STR | CERT_NAME_STR_REVERSE_FLAG ,
NULL, 0
) ;
if( cbSubject != 0 ) {
subject = new char[ cbSubject ] ;
if( cbSubject != 0 )
{
subject = new wchar_t[ cbSubject ] ;
if( subject == NULL )
throw RuntimeException() ;
cbSubject = CertNameToStr(
cbSubject = CertNameToStrW(
X509_ASN_ENCODING | PKCS_7_ASN_ENCODING ,
&( m_pCertContext->pCertInfo->Subject ),
CERT_X500_NAME_STR | CERT_NAME_STR_REVERSE_FLAG ,
@ -289,22 +292,17 @@ sal_Int16 SAL_CALL X509Certificate_MSCryptImpl :: getVersion() throw ( ::com::su
throw RuntimeException() ;
}
// By CP , for correct encoding
sal_uInt16 encoding ;
rtl_Locale *pLocale = NULL ;
osl_getProcessLocale( &pLocale ) ;
encoding = osl_getTextEncodingFromLocale( pLocale ) ;
// CP end
if(subject[cbSubject-1] == 0) cbSubject--; //delimit the last 0x00;
OUString xSubject(subject , cbSubject ,encoding ) ; //By CP
OUString xSubject(subject);
delete [] subject ;
return replaceTagSWithTagST(xSubject);
} else {
} else
{
return OUString() ;
}
} else {
}
else
{
return OUString() ;
}
}

View File

@ -0,0 +1,384 @@
/*************************************************************************
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* Copyright 2008 by Sun Microsystems, Inc.
*
* OpenOffice.org - a multi-platform office productivity suite
*
* $RCSfile: securityenvironment_nssimpl.cxx,v $
* $Revision: 1.23 $
*
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
* it under the terms of the GNU Lesser General Public License version 3
* only, as published by the Free Software Foundation.
*
* OpenOffice.org is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Lesser General Public License version 3 for more details
* (a copy is included in the LICENSE file that accompanied this code).
*
* You should have received a copy of the GNU Lesser General Public License
* version 3 along with OpenOffice.org. If not, see
* <http://www.openoffice.org/license.html>
* for a copy of the LGPLv3 License.
*
************************************************************************/
{SEC_ERROR_IO, "An I/O error occurred during security authorization."},
{SEC_ERROR_LIBRARY_FAILURE, "security library failure."},
{SEC_ERROR_BAD_DATA, "security library: received bad data."},
{SEC_ERROR_OUTPUT_LEN, "security library: output length error."},
{SEC_ERROR_INPUT_LEN, "security library has experienced an input length error."},
{SEC_ERROR_INVALID_ARGS, "security library: invalid arguments."},
{SEC_ERROR_INVALID_ALGORITHM, "security library: invalid algorithm."},
{SEC_ERROR_INVALID_AVA, "security library: invalid AVA."},
{SEC_ERROR_INVALID_TIME, "Improperly formatted time string."},
{SEC_ERROR_BAD_DER, "security library: improperly formatted DER-encoded message."},
{SEC_ERROR_BAD_SIGNATURE, "Peer's certificate has an invalid signature."},
{SEC_ERROR_EXPIRED_CERTIFICATE, "Peer's Certificate has expired."},
{SEC_ERROR_REVOKED_CERTIFICATE, "Peer's Certificate has been revoked."},
{SEC_ERROR_UNKNOWN_ISSUER, "Peer's Certificate issuer is not recognized."},
{SEC_ERROR_BAD_KEY, "Peer's public key is invalid."},
{SEC_ERROR_BAD_PASSWORD, "The security password entered is incorrect."},
{SEC_ERROR_RETRY_PASSWORD, "New password entered incorrectly. Please try again."},
{SEC_ERROR_NO_NODELOCK, "security library: no nodelock."},
{SEC_ERROR_BAD_DATABASE, "security library: bad database."},
{SEC_ERROR_NO_MEMORY, "security library: memory allocation failure."},
{SEC_ERROR_UNTRUSTED_ISSUER, "Peer's certificate issuer has been marked as not trusted by the user."},
{SEC_ERROR_UNTRUSTED_CERT, "Peer's certificate has been marked as not trusted by the user."},
{SEC_ERROR_DUPLICATE_CERT, "Certificate already exists in your database."},
{SEC_ERROR_DUPLICATE_CERT_NAME, "Downloaded certificate's name duplicates one already in your database."},
{SEC_ERROR_ADDING_CERT, "Error adding certificate to database."},
{SEC_ERROR_FILING_KEY, "Error refiling the key for this certificate."},
{SEC_ERROR_NO_KEY, "The private key for this certificate cannot be found in key database"},
{SEC_ERROR_CERT_VALID, "This certificate is valid."},
{SEC_ERROR_CERT_NOT_VALID, "This certificate is not valid."},
{SEC_ERROR_CERT_NO_RESPONSE, "Cert Library: No Response"},
{SEC_ERROR_EXPIRED_ISSUER_CERTIFICATE, "The certificate issuer's certificate has expired. Check your system date and time."},
{SEC_ERROR_CRL_EXPIRED, "The CRL for the certificate's issuer has expired. Update it or check your system date and time."},
{SEC_ERROR_CRL_BAD_SIGNATURE, "The CRL for the certificate's issuer has an invalid signature."},
{SEC_ERROR_CRL_INVALID, "New CRL has an invalid format."},
{SEC_ERROR_EXTENSION_VALUE_INVALID, "Certificate extension value is invalid."},
{SEC_ERROR_EXTENSION_NOT_FOUND, "Certificate extension not found."},
{SEC_ERROR_CA_CERT_INVALID, "Issuer certificate is invalid."},
{SEC_ERROR_PATH_LEN_CONSTRAINT_INVALID, "Certificate path length constraint is invalid."},
{SEC_ERROR_CERT_USAGES_INVALID, "Certificate usages field is invalid."},
{SEC_INTERNAL_ONLY, "**Internal ONLY module**"},
{SEC_ERROR_INVALID_KEY, "The key does not support the requested operation."},
{SEC_ERROR_UNKNOWN_CRITICAL_EXTENSION, "Certificate contains unknown critical extension."},
{SEC_ERROR_OLD_CRL, "New CRL is not later than the current one."},
{SEC_ERROR_NO_EMAIL_CERT, "Not encrypted or signed: you do not yet have an email certificate."},
{SEC_ERROR_NO_RECIPIENT_CERTS_QUERY, "Not encrypted: you do not have certificates for each of the recipients."},
{SEC_ERROR_NOT_A_RECIPIENT, "Cannot decrypt: you are not a recipient, or matching certificate and \
private key not found."},
{SEC_ERROR_PKCS7_KEYALG_MISMATCH, "Cannot decrypt: key encryption algorithm does not match your certificate."},
{SEC_ERROR_PKCS7_BAD_SIGNATURE, "Signature verification failed: no signer found, too many signers found, \
or improper or corrupted data."},
{SEC_ERROR_UNSUPPORTED_KEYALG, "Unsupported or unknown key algorithm."},
{SEC_ERROR_DECRYPTION_DISALLOWED, "Cannot decrypt: encrypted using a disallowed algorithm or key size."},
/* Fortezza Alerts */
{XP_SEC_FORTEZZA_BAD_CARD, "Fortezza card has not been properly initialized. \
Please remove it and return it to your issuer."},
{XP_SEC_FORTEZZA_NO_CARD, "No Fortezza cards Found"},
{XP_SEC_FORTEZZA_NONE_SELECTED, "No Fortezza card selected"},
{XP_SEC_FORTEZZA_MORE_INFO, "Please select a personality to get more info on"},
{XP_SEC_FORTEZZA_PERSON_NOT_FOUND, "Personality not found"},
{XP_SEC_FORTEZZA_NO_MORE_INFO, "No more information on that Personality"},
{XP_SEC_FORTEZZA_BAD_PIN, "Invalid Pin"},
{XP_SEC_FORTEZZA_PERSON_ERROR, "Couldn't initialize Fortezza personalities."},
/* end fortezza alerts. */
{SEC_ERROR_NO_KRL, "No KRL for this site's certificate has been found."},
{SEC_ERROR_KRL_EXPIRED, "The KRL for this site's certificate has expired."},
{SEC_ERROR_KRL_BAD_SIGNATURE, "The KRL for this site's certificate has an invalid signature."},
{SEC_ERROR_REVOKED_KEY, "The key for this site's certificate has been revoked."},
{SEC_ERROR_KRL_INVALID, "New KRL has an invalid format."},
{SEC_ERROR_NEED_RANDOM, "security library: need random data."},
{SEC_ERROR_NO_MODULE, "security library: no security module can perform the requested operation."},
{SEC_ERROR_NO_TOKEN, "The security card or token does not exist, needs to be initialized, or has been removed."},
{SEC_ERROR_READ_ONLY, "security library: read-only database."},
{SEC_ERROR_NO_SLOT_SELECTED, "No slot or token was selected."},
{SEC_ERROR_CERT_NICKNAME_COLLISION, "A certificate with the same nickname already exists."},
{SEC_ERROR_KEY_NICKNAME_COLLISION, "A key with the same nickname already exists."},
{SEC_ERROR_SAFE_NOT_CREATED, "error while creating safe object"},
{SEC_ERROR_BAGGAGE_NOT_CREATED, "error while creating baggage object"},
{XP_JAVA_REMOVE_PRINCIPAL_ERROR, "Couldn't remove the principal"},
{XP_JAVA_DELETE_PRIVILEGE_ERROR, "Couldn't delete the privilege"},
{XP_JAVA_CERT_NOT_EXISTS_ERROR, "This principal doesn't have a certificate"},
{SEC_ERROR_BAD_EXPORT_ALGORITHM, "Required algorithm is not allowed."},
{SEC_ERROR_EXPORTING_CERTIFICATES, "Error attempting to export certificates."},
{SEC_ERROR_IMPORTING_CERTIFICATES, "Error attempting to import certificates."},
{SEC_ERROR_PKCS12_DECODING_PFX, "Unable to import. Decoding error. File not valid."},
{SEC_ERROR_PKCS12_INVALID_MAC, "Unable to import. Invalid MAC. Incorrect password or corrupt file."},
{SEC_ERROR_PKCS12_UNSUPPORTED_MAC_ALGORITHM, "Unable to import. MAC algorithm not supported."},
{SEC_ERROR_PKCS12_UNSUPPORTED_TRANSPORT_MODE, "Unable to import. Only password integrity and privacy modes supported."},
{SEC_ERROR_PKCS12_CORRUPT_PFX_STRUCTURE, "Unable to import. File structure is corrupt."},
{SEC_ERROR_PKCS12_UNSUPPORTED_PBE_ALGORITHM, "Unable to import. Encryption algorithm not supported."},
{SEC_ERROR_PKCS12_UNSUPPORTED_VERSION, "Unable to import. File version not supported."},
{SEC_ERROR_PKCS12_PRIVACY_PASSWORD_INCORRECT, "Unable to import. Incorrect privacy password."},
{SEC_ERROR_PKCS12_CERT_COLLISION, "Unable to import. Same nickname already exists in database."},
{SEC_ERROR_USER_CANCELLED, "The user pressed cancel."},
{SEC_ERROR_PKCS12_DUPLICATE_DATA, "Not imported, already in database."},
{SEC_ERROR_MESSAGE_SEND_ABORTED, "Message not sent."},
{SEC_ERROR_INADEQUATE_KEY_USAGE, "Certificate key usage inadequate for attempted operation."},
{SEC_ERROR_INADEQUATE_CERT_TYPE, "Certificate type not approved for application."},
{SEC_ERROR_CERT_ADDR_MISMATCH, "Address in signing certificate does not match address in message headers."},
{SEC_ERROR_PKCS12_UNABLE_TO_IMPORT_KEY, "Unable to import. Error attempting to import private key."},
{SEC_ERROR_PKCS12_IMPORTING_CERT_CHAIN, "Unable to import. Error attempting to import certificate chain."},
{SEC_ERROR_PKCS12_UNABLE_TO_LOCATE_OBJECT_BY_NAME, "Unable to export. Unable to locate certificate or key by nickname."},
{SEC_ERROR_PKCS12_UNABLE_TO_EXPORT_KEY, "Unable to export. Private Key could not be located and exported."},
{SEC_ERROR_PKCS12_UNABLE_TO_WRITE, "Unable to export. Unable to write the export file."},
{SEC_ERROR_PKCS12_UNABLE_TO_READ, "Unable to import. Unable to read the import file."},
{SEC_ERROR_PKCS12_KEY_DATABASE_NOT_INITIALIZED, "Unable to export. Key database corrupt or deleted."},
{SEC_ERROR_KEYGEN_FAIL, "Unable to generate public/private key pair."},
{SEC_ERROR_INVALID_PASSWORD, "Password entered is invalid. Please pick a different one."},
{SEC_ERROR_RETRY_OLD_PASSWORD, "Old password entered incorrectly. Please try again."},
{SEC_ERROR_BAD_NICKNAME, "Certificate nickname already in use."},
{SEC_ERROR_NOT_FORTEZZA_ISSUER, "Peer FORTEZZA chain has a non-FORTEZZA Certificate."},
{SEC_ERROR_CANNOT_MOVE_SENSITIVE_KEY, "A sensitive key cannot be moved to the slot where it is needed."},
{SEC_ERROR_JS_INVALID_MODULE_NAME, "Invalid module name."},
{SEC_ERROR_JS_INVALID_DLL, "Invalid module path/filename"},
{SEC_ERROR_JS_ADD_MOD_FAILURE, "Unable to add module"},
{SEC_ERROR_JS_DEL_MOD_FAILURE, "Unable to delete module"},
{SEC_ERROR_OLD_KRL, "New KRL is not later than the current one."},
{SEC_ERROR_CKL_CONFLICT, "New CKL has different issuer than current CKL. Delete current CKL."},
{SEC_ERROR_CERT_NOT_IN_NAME_SPACE, "The Certifying Authority for this certificate is not permitted to issue a \
certificate with this name."},
{SEC_ERROR_KRL_NOT_YET_VALID, "The key revocation list for this certificate is not yet valid."},
{SEC_ERROR_CRL_NOT_YET_VALID, "The certificate revocation list for this certificate is not yet valid."},
{SEC_ERROR_UNKNOWN_CERT, "The requested certificate could not be found."},
{SEC_ERROR_UNKNOWN_SIGNER, "The signer's certificate could not be found."},
{SEC_ERROR_CERT_BAD_ACCESS_LOCATION, "The location for the certificate status server has invalid format."},
{SEC_ERROR_OCSP_UNKNOWN_RESPONSE_TYPE, "The OCSP response cannot be fully decoded; it is of an unknown type."},
{SEC_ERROR_OCSP_BAD_HTTP_RESPONSE, "The OCSP server returned unexpected/invalid HTTP data."},
{SEC_ERROR_OCSP_MALFORMED_REQUEST, "The OCSP server found the request to be corrupted or improperly formed."},
{SEC_ERROR_OCSP_SERVER_ERROR, "The OCSP server experienced an internal error."},
{SEC_ERROR_OCSP_TRY_SERVER_LATER, "The OCSP server suggests trying again later."},
{SEC_ERROR_OCSP_REQUEST_NEEDS_SIG, "The OCSP server requires a signature on this request."},
{SEC_ERROR_OCSP_UNAUTHORIZED_REQUEST, "The OCSP server has refused this request as unauthorized."},
{SEC_ERROR_OCSP_UNKNOWN_RESPONSE_STATUS, "The OCSP server returned an unrecognizable status."},
{SEC_ERROR_OCSP_UNKNOWN_CERT, "The OCSP server has no status for the certificate."},
{SEC_ERROR_OCSP_NOT_ENABLED, "You must enable OCSP before performing this operation."},
{SEC_ERROR_OCSP_NO_DEFAULT_RESPONDER, "You must set the OCSP default responder before performing this operation."},
{SEC_ERROR_OCSP_MALFORMED_RESPONSE, "The response from the OCSP server was corrupted or improperly formed."},
{SEC_ERROR_OCSP_UNAUTHORIZED_RESPONSE, "The signer of the OCSP response is not authorized to give status for \
this certificate."},
{SEC_ERROR_OCSP_FUTURE_RESPONSE, "The OCSP response is not yet valid (contains a date in the future},."},
{SEC_ERROR_OCSP_OLD_RESPONSE, "The OCSP response contains out-of-date information."},
{SEC_ERROR_DIGEST_NOT_FOUND, "The CMS or PKCS #7 Digest was not found in signed message."},
{SEC_ERROR_UNSUPPORTED_MESSAGE_TYPE, "The CMS or PKCS #7 Message type is unsupported."},
{SEC_ERROR_MODULE_STUCK, "PKCS #11 module could not be removed because it is still in use."},
{SEC_ERROR_BAD_TEMPLATE, "Could not decode ASN.1 data. Specified template was invalid."},
{SEC_ERROR_CRL_NOT_FOUND, "No matching CRL was found."},
{SEC_ERROR_REUSED_ISSUER_AND_SERIAL, "You are attempting to import a cert with the same issuer/serial as \
an existing cert, but that is not the same cert."},
{SEC_ERROR_BUSY, "NSS could not shutdown. Objects are still in use."},
{SEC_ERROR_EXTRA_INPUT, "DER-encoded message contained extra unused data."},
{SEC_ERROR_UNSUPPORTED_ELLIPTIC_CURVE, "Unsupported elliptic curve."},
{SEC_ERROR_UNSUPPORTED_EC_POINT_FORM, "Unsupported elliptic curve point form."},
{SEC_ERROR_UNRECOGNIZED_OID, "Unrecognized Object Identifier."},
{SEC_ERROR_OCSP_INVALID_SIGNING_CERT, "Invalid OCSP signing certificate in OCSP response."},
{SEC_ERROR_REVOKED_CERTIFICATE_CRL, "Certificate is revoked in issuer's certificate revocation list."},
{SEC_ERROR_REVOKED_CERTIFICATE_OCSP, "Issuer's OCSP responder reports certificate is revoked."},
{SEC_ERROR_CRL_INVALID_VERSION, "Issuer's Certificate Revocation List has an unknown version number."},
{SEC_ERROR_CRL_V1_CRITICAL_EXTENSION, "Issuer's V1 Certificate Revocation List has a critical extension."},
{SEC_ERROR_CRL_UNKNOWN_CRITICAL_EXTENSION, "Issuer's V2 Certificate Revocation List has an unknown critical extension."},
{SEC_ERROR_UNKNOWN_OBJECT_TYPE, "Unknown object type specified."},
{SEC_ERROR_INCOMPATIBLE_PKCS11, "PKCS #11 driver violates the spec in an incompatible way."},
{SEC_ERROR_NO_EVENT, "No new slot event is available at this time."},
{SEC_ERROR_CRL_ALREADY_EXISTS, "CRL already exists."},
{SEC_ERROR_NOT_INITIALIZED, "NSS is not initialized."},
{SEC_ERROR_TOKEN_NOT_LOGGED_IN, "The operation failed because the PKCS#11 token is not logged in."},
{SEC_ERROR_OCSP_RESPONDER_CERT_INVALID, "Configured OCSP responder's certificate is invalid."},
{SEC_ERROR_OCSP_BAD_SIGNATURE, "OCSP response has an invalid signature."},
{SEC_ERROR_OUT_OF_SEARCH_LIMITS, "Cert validation search is out of search limits"},
{SEC_ERROR_INVALID_POLICY_MAPPING, "Policy mapping contains anypolicy"},
{SEC_ERROR_POLICY_VALIDATION_FAILED, "Cert chain fails policy validation"},
{SEC_ERROR_UNKNOWN_AIA_LOCATION_TYPE, "Unknown location type in cert AIA extension"},
{SEC_ERROR_BAD_HTTP_RESPONSE, "Server returned bad HTTP response"},
{SEC_ERROR_BAD_LDAP_RESPONSE, "Server returned bad LDAP response"},
{SEC_ERROR_FAILED_TO_ENCODE_DATA, "Failed to encode data with ASN1 encoder"},
{SEC_ERROR_BAD_INFO_ACCESS_LOCATION, "Bad information access location in cert extension"},
{SEC_ERROR_LIBPKIX_INTERNAL, "Libpkix internal error occured during cert validation."},
{SEC_ERROR_PKCS11_GENERAL_ERROR, "A PKCS #11 module returned CKR_GENERAL_ERROR, indicating that an unrecoverable error has occurred."},
{SEC_ERROR_PKCS11_FUNCTION_FAILED, "A PKCS #11 module returned CKR_FUNCTION_FAILED, indicating that the requested function could not be performed. Trying the same operation again might succeed."},
{SEC_ERROR_PKCS11_DEVICE_ERROR, "A PKCS #11 module returned CKR_DEVICE_ERROR, indicating that a problem has occurred with the token or slot."},
{SEC_ERROR_BAD_INFO_ACCESS_METHOD, "Unknown information access method in certificate extension."},
{SEC_ERROR_CRL_IMPORT_FAILED, "Error attempting to import a CRL."},

View File

@ -47,10 +47,12 @@ LIBTARGET=NO
.IF "$(CRYPTO_ENGINE)" == "nss"
.IF "$(WITH_MOZILLA)" == "NO"
.IF "$(WITH_MOZILLA)" == "NO" || "$(ENABLE_NSS_MODULE)"!="YES"
.IF "$(SYSTEM_MOZILLA)" != "YES"
@all:
@echo "No mozilla -> no nss -> no libxmlsec -> no xmlsecurity/nss"
.ENDIF
.ENDIF
.IF "$(SYSTEM_MOZILLA)" != "YES"
MOZ_INC = $(SOLARVERSION)$/$(INPATH)$/inc$(UPDMINOREXT)$/mozilla
@ -128,7 +130,9 @@ SLOFILES = \
$(SLO)$/xmlsignature_nssimpl.obj \
$(SLO)$/x509certificate_nssimpl.obj \
$(SLO)$/seinitializer_nssimpl.obj \
$(SLO)$/xsec_nss.obj
$(SLO)$/xsec_nss.obj \
$(SLO)$/secerror.obj
.ENDIF

View File

@ -0,0 +1,165 @@
/*************************************************************************
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* Copyright 2008 by Sun Microsystems, Inc.
*
* OpenOffice.org - a multi-platform office productivity suite
*
* $RCSfile: securityenvironment_nssimpl.cxx,v $
* $Revision: 1.23 $
*
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
* it under the terms of the GNU Lesser General Public License version 3
* only, as published by the Free Software Foundation.
*
* OpenOffice.org is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Lesser General Public License version 3 for more details
* (a copy is included in the LICENSE file that accompanied this code).
*
* You should have received a copy of the GNU Lesser General Public License
* version 3 along with OpenOffice.org. If not, see
* <http://www.openoffice.org/license.html>
* for a copy of the LGPLv3 License.
*
************************************************************************/
#include "secerr.h"
#include "sslerr.h"
#include "nspr.h"
#include "certt.h"
#include "../diagnose.hxx"
using namespace xmlsecurity;
struct ErrDesc {
PRErrorCode errNum;
const char * errString;
};
const ErrDesc allDesc[] = {
#include "certerrors.h"
};
/* Returns a UTF-8 encoded constant error string for "errNum".
* Returns NULL of errNum is unknown.
*/
const char *
getCertError(PRErrorCode errNum)
{
static char sEmpty[] = "";
const int numDesc = sizeof(allDesc) / sizeof(ErrDesc);
for (int i = 0; i < numDesc; i++)
{
if (allDesc[i].errNum == errNum)
return allDesc[i].errString;
}
return sEmpty;
}
void
printChainFailure(CERTVerifyLog *log)
{
unsigned long errorFlags = 0;
unsigned int depth = (unsigned int)-1;
const char * specificError = NULL;
const char * issuer = NULL;
CERTVerifyLogNode *node = NULL;
if (log->count > 0)
{
xmlsec_trace("Bad certifcation path:");
for (node = log->head; node; node = node->next)
{
if (depth != node->depth)
{
depth = node->depth;
xmlsec_trace("Certificate: %d. %s %s:", depth,
node->cert->subjectName,
depth ? "[Certificate Authority]": "");
}
xmlsec_trace(" ERROR %ld: %s", node->error,
getCertError(node->error));
specificError = NULL;
issuer = NULL;
switch (node->error)
{
case SEC_ERROR_INADEQUATE_KEY_USAGE:
errorFlags = (unsigned long)node->arg;
switch (errorFlags)
{
case KU_DIGITAL_SIGNATURE:
specificError = "Certificate cannot sign.";
break;
case KU_KEY_ENCIPHERMENT:
specificError = "Certificate cannot encrypt.";
break;
case KU_KEY_CERT_SIGN:
specificError = "Certificate cannot sign other certs.";
break;
default:
specificError = "[unknown usage].";
break;
}
case SEC_ERROR_INADEQUATE_CERT_TYPE:
errorFlags = (unsigned long)node->arg;
switch (errorFlags)
{
case NS_CERT_TYPE_SSL_CLIENT:
case NS_CERT_TYPE_SSL_SERVER:
specificError = "Certificate cannot be used for SSL.";
break;
case NS_CERT_TYPE_SSL_CA:
specificError = "Certificate cannot be used as an SSL CA.";
break;
case NS_CERT_TYPE_EMAIL:
specificError = "Certificate cannot be used for SMIME.";
break;
case NS_CERT_TYPE_EMAIL_CA:
specificError = "Certificate cannot be used as an SMIME CA.";
break;
case NS_CERT_TYPE_OBJECT_SIGNING:
specificError = "Certificate cannot be used for object signing.";
break;
case NS_CERT_TYPE_OBJECT_SIGNING_CA:
specificError = "Certificate cannot be used as an object signing CA.";
break;
default:
specificError = "[unknown usage].";
break;
}
case SEC_ERROR_UNKNOWN_ISSUER:
specificError = "Unknown issuer:";
issuer = node->cert->issuerName;
break;
case SEC_ERROR_UNTRUSTED_ISSUER:
specificError = "Untrusted issuer:";
issuer = node->cert->issuerName;
break;
case SEC_ERROR_EXPIRED_ISSUER_CERTIFICATE:
specificError = "Expired issuer certificate:";
issuer = node->cert->issuerName;
break;
default:
break;
}
if (specificError)
xmlsec_trace("%s", specificError);
if (issuer)
xmlsec_trace("%s", issuer);
}
}
}

View File

@ -0,0 +1,40 @@
/*************************************************************************
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* Copyright 2008 by Sun Microsystems, Inc.
*
* OpenOffice.org - a multi-platform office productivity suite
*
* $RCSfile: securityenvironment_nssimpl.hxx,v $
* $Revision: 1.9 $
*
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
* it under the terms of the GNU Lesser General Public License version 3
* only, as published by the Free Software Foundation.
*
* OpenOffice.org is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Lesser General Public License version 3 for more details
* (a copy is included in the LICENSE file that accompanied this code).
*
* You should have received a copy of the GNU Lesser General Public License
* version 3 along with OpenOffice.org. If not, see
* <http://www.openoffice.org/license.html>
* for a copy of the LGPLv3 License.
*
************************************************************************/
#ifndef _XSECERROR_HXX_
#define _XSECERROR_HXX_
const char *
getCertError(PRErrorCode errNum);
void
printChainFailure(CERTVerifyLog *log);
#endif // _XSECERROR_HXX_

View File

@ -33,12 +33,13 @@
#include "nssrenam.h"
#include "cert.h"
#include "secerr.h"
#include "ocsp.h"
#include <sal/config.h>
#include "securityenvironment_nssimpl.hxx"
#include "x509certificate_nssimpl.hxx"
#include <rtl/uuid.h>
#include "../diagnose.hxx"
#include <sal/types.h>
//For reasons that escape me, this is what xmlsec does when size_t is not 4
@ -62,9 +63,12 @@
#include <vector>
#include "boost/scoped_array.hpp"
#include "secerror.hxx"
// MM : added for password exception
#include <com/sun/star/security/NoPasswordException.hpp>
namespace csss = ::com::sun::star::security;
using namespace xmlsecurity;
using namespace ::com::sun::star::security;
using namespace com::sun::star;
using namespace ::com::sun::star::uno ;
@ -80,6 +84,14 @@ extern X509Certificate_NssImpl* NssCertToXCert( CERTCertificate* cert ) ;
extern X509Certificate_NssImpl* NssPrivKeyToXCert( SECKEYPrivateKey* ) ;
struct UsageDescription
{
SECCertificateUsage usage;
char const * const description;
};
char* GetPasswordFunction( PK11SlotInfo* pSlot, PRBool bRetry, void* /*arg*/ )
{
uno::Reference< lang::XMultiServiceFactory > xMSF( ::comphelper::getProcessServiceFactory() );
@ -750,7 +762,7 @@ verifyCertificate( const Reference< csss::XCertificate >& aCert,
const Sequence< Reference< csss::XCertificate > >& intermediateCerts )
throw( ::com::sun::star::uno::SecurityException, ::com::sun::star::uno::RuntimeException )
{
sal_Int32 validity = 0;
sal_Int32 validity = csss::CertificateValidity::INVALID;
const X509Certificate_NssImpl* xcert ;
const CERTCertificate* cert ;
::std::vector<CERTCertificate*> vecTmpNSSCertificates;
@ -759,10 +771,9 @@ verifyCertificate( const Reference< csss::XCertificate >& aCert,
throw RuntimeException() ;
}
OSL_TRACE("[xmlsecurity] Start verification of certificate: %s",
xmlsec_trace("Start verification of certificate: \n %s \n",
OUStringToOString(
aCert->getIssuerName(), osl_getThreadTextEncoding()).getStr());
aCert->getSubjectName(), osl_getThreadTextEncoding()).getStr());
xcert = reinterpret_cast<X509Certificate_NssImpl*>(
sal::static_int_cast<sal_uIntPtr>(xCertTunnel->getSomething( X509Certificate_NssImpl::getUnoTunnelId() ))) ;
@ -770,12 +781,16 @@ verifyCertificate( const Reference< csss::XCertificate >& aCert,
throw RuntimeException() ;
}
//CERT_PKIXVerifyCert does not take a db as argument. It will therefore
//internally use CERT_GetDefaultCertDB
//Make sure m_pHandler is the default DB
OSL_ASSERT(m_pHandler == CERT_GetDefaultCertDB());
CERTCertDBHandle * certDb = m_pHandler != NULL ? m_pHandler : CERT_GetDefaultCertDB();
cert = xcert->getNssCert() ;
if( cert != NULL )
{
//prepare the intermediate certificates
CERTCertDBHandle * certDb = m_pHandler != NULL ? m_pHandler : CERT_GetDefaultCertDB();
for (sal_Int32 i = 0; i < intermediateCerts.getLength(); i++)
{
Sequence<sal_Int8> der = intermediateCerts[i]->getEncoded();
@ -790,140 +805,172 @@ verifyCertificate( const Reference< csss::XCertificate >& aCert,
PR_TRUE /* copyDER */);
if (!certTmp)
{
OSL_TRACE("[xmlsecurity] Failed to add a temporary certificate: %s",
xmlsec_trace("Failed to add a temporary certificate: %s",
OUStringToOString(intermediateCerts[i]->getIssuerName(),
osl_getThreadTextEncoding()).getStr());
}
else
{
OSL_TRACE("[xmlsecurity] Added temporary certificate: %s",
xmlsec_trace("Added temporary certificate: %s",
certTmp->subjectName ? certTmp->subjectName : "");
vecTmpNSSCertificates.push_back(certTmp);
}
}
int64 timeboundary ;
SECStatus status ;
//Get the system clock time
timeboundary = PR_Now() ;
SECCertificateUsage usage = 0;
CERTVerifyLog log;
log.arena = PORT_NewArena(512);
log.head = log.tail = NULL;
log.count = 0;
// create log
CERT_EnableOCSPChecking(certDb);
CERT_DisableOCSPDefaultResponder(certDb);
CERTValOutParam cvout[5];
CERTValInParam cvin[3];
CERTVerifyLog realLog;
CERTVerifyLog *log;
cvin[0].type = cert_pi_useAIACertFetch;
cvin[0].value.scalar.b = PR_TRUE;
log = &realLog;
PRUint64 revFlagsLeaf[2];
PRUint64 revFlagsChain[2];
CERTRevocationFlags rev;
rev.leafTests.number_of_defined_methods = 2;
rev.leafTests.cert_rev_flags_per_method = revFlagsLeaf;
//the flags are defined in cert.h
//We check both leaf and chain.
//It is enough if one revocation method has fresh info,
//but at least one must have some. Otherwise validation fails.
//!!! using leaf test and CERT_REV_MI_REQUIRE_SOME_FRESH_INFO_AVAILABLE
// when validating a root certificate will result in "revoked". Usually
//there is no revocation information available for the root cert because
//it must be trusted anyway and it does itself issue revocation information.
//When we use the flag here and OOo shows the certification path then the root
//cert is invalid while all other can be valid. It would probably best if
//this interface method returned the whole chain.
//Otherwise we need to check if the certificate is self-signed and if it is
//then not use the flag when doing the leaf-test.
rev.leafTests.cert_rev_flags_per_method[cert_revocation_method_crl] =
CERT_REV_M_TEST_USING_THIS_METHOD
| CERT_REV_M_IGNORE_IMPLICIT_DEFAULT_SOURCE;
rev.leafTests.cert_rev_flags_per_method[cert_revocation_method_ocsp] =
CERT_REV_M_TEST_USING_THIS_METHOD
| CERT_REV_M_IGNORE_IMPLICIT_DEFAULT_SOURCE;
rev.leafTests.number_of_preferred_methods = 0;
rev.leafTests.preferred_methods = NULL;
rev.leafTests.cert_rev_method_independent_flags =
CERT_REV_MI_TEST_ALL_LOCAL_INFORMATION_FIRST;
// | CERT_REV_MI_REQUIRE_SOME_FRESH_INFO_AVAILABLE;
rev.chainTests.number_of_defined_methods = 2;
rev.chainTests.cert_rev_flags_per_method = revFlagsChain;
rev.chainTests.cert_rev_flags_per_method[cert_revocation_method_crl] =
CERT_REV_M_TEST_USING_THIS_METHOD
| CERT_REV_M_IGNORE_IMPLICIT_DEFAULT_SOURCE;
rev.chainTests.cert_rev_flags_per_method[cert_revocation_method_ocsp] =
CERT_REV_M_TEST_USING_THIS_METHOD
| CERT_REV_M_IGNORE_IMPLICIT_DEFAULT_SOURCE;
rev.chainTests.number_of_preferred_methods = 0;
rev.chainTests.preferred_methods = NULL;
rev.chainTests.cert_rev_method_independent_flags =
CERT_REV_MI_TEST_ALL_LOCAL_INFORMATION_FIRST;
// | CERT_REV_MI_REQUIRE_SOME_FRESH_INFO_AVAILABLE;
log->count = 0;
log->head = NULL;
log->tail = NULL;
log->arena = PORT_NewArena( DER_DEFAULT_CHUNKSIZE );
cvin[1].type = cert_pi_revocationFlags;
cvin[1].value.pointer.revocation = &rev;
// does not work, not implemented yet in 3.12.4
// cvin[2].type = cert_pi_keyusage;
// cvin[2].value.scalar.ui = KU_DIGITAL_SIGNATURE;
cvin[2].type = cert_pi_end;
//CERTVerifyLog *log;
//PRArenaPool *arena;
cvout[0].type = cert_po_trustAnchor;
cvout[0].value.pointer.cert = NULL;
cvout[1].type = cert_po_errorLog;
cvout[1].value.pointer.log = &log;
cvout[2].type = cert_po_end;
//arena = PORT_NewArena( DER_DEFAULT_CHUNKSIZE );
//log = PORT_ArenaZNew( arena, CERTVerifyLog );
//log->arena = arena;
validity = csss::CertificateValidity::INVALID;
// We check SSL server certificates, CA certificates and signing sertificates.
//
// ToDo check keyusage, looking at CERT_KeyUsageAndTypeForCertUsage (
// mozilla/security/nss/lib/certdb/certdb.c indicates that
// certificateUsageSSLClient, certificateUsageSSLServer and certificateUsageSSLCA
// are sufficient. They cover the key usages for digital signature, key agreement
// and encipherment and certificate signature
if( m_pHandler != NULL )
//never use the following usages because they are not checked properly
// certificateUsageUserCertImport
// certificateUsageVerifyCA
// certificateUsageAnyCA
// certificateUsageProtectedObjectSigner
UsageDescription arUsages[] =
{
//JL: We must not pass a particular usage in the requiredUsages argument (the 4th) because,
//then ONLY these are verified. For example, we pass
//certificateUsageSSLClient | certificateUsageSSLServer. Then checking a certificate which
// is a valid certificateUsageEmailSigner but no certificateUsageSSLClient | certificateUsageSSLServer
//will result in CertificateValidity::INVALID.
//Only if the argument "requiredUsages" has a value (other than zero)
//then the function will return SECFailure in case
//the certificate is not suitable for the provided usage. That is, in the previous
//example the function returns SECFailure.
status = CERT_VerifyCertificate(
m_pHandler, ( CERTCertificate* )cert, PR_TRUE,
(SECCertificateUsage)0, timeboundary , NULL, log, &usage);
}
else
{certificateUsageSSLClient, "certificateUsageSSLClient" },
{certificateUsageSSLServer, "certificateUsageSSLServer" },
{certificateUsageSSLCA, "certificateUsageSSLCA" },
{certificateUsageEmailSigner, "certificateUsageEmailSigner"}, //only usable for end certs
{certificateUsageEmailRecipient, "certificateUsageEmailRecipient"}
};
int numUsages = sizeof(arUsages) / sizeof(UsageDescription);
for (int i = 0; i < numUsages; i++)
{
status = CERT_VerifyCertificate(
CERT_GetDefaultCertDB(), ( CERTCertificate* )cert,
PR_TRUE, (SECCertificateUsage)0, timeboundary ,NULL, log, &usage);
}
xmlsec_trace("Testing usage %d of %d: %s (0x%x)", i + 1,
numUsages, arUsages[i].description, (int) arUsages[i].usage);
if( status == SECSuccess )
{
// JL & TKR : certificateUsageUserCertImport,
// certificateUsageVerifyCA and certificateUsageAnyCA dont check the chain
status = CERT_PKIXVerifyCert(const_cast<CERTCertificate *>(cert), arUsages[i].usage,
cvin, cvout, NULL);
if( status == SECSuccess )
{
xmlsec_trace("CERT_PKIXVerifyCert returned SECSuccess.");
//When an intermediate or root certificate is checked then we expect the usage
//certificateUsageSSLCA. This, however, will be only set when in the trust settings dialog
//the button "This certificate can identify websites" is checked. If for example only
//"This certificate can identify mail users" is set then the end certificate can
//be validated and the returned usage will conain certificateUsageEmailRecipient.
//But checking directly the root or intermediate certificate will fail. In the
//certificate path view the end certificate will be shown as valid but the others
//will be displayed as invalid.
//When an intermediate or root certificate is checked then we expect the usage
//certificateUsageSSLCA. This, however, will be only set when in the trust settings dialog
//the button "This certificate can identify websites" is checked. If for example only
//"This certificate can identify mail users" is set then the end certificate can
//be validated and the returned usage will conain certificateUsageEmailRecipient.
//But checking directly the root or intermediate certificate will fail. In the
//certificate path view the end certificate will be shown as valid but the others
//will be displayed as invalid.
if (usage & certificateUsageEmailSigner
|| usage & certificateUsageEmailRecipient
|| usage & certificateUsageSSLCA
|| usage & certificateUsageSSLServer
|| usage & certificateUsageSSLClient
// || usage & certificateUsageUserCertImport
// || usage & certificateUsageVerifyCA
|| usage & certificateUsageStatusResponder )
// || usage & certificateUsageAnyCA )
validity = csss::CertificateValidity::VALID;
xmlsec_trace("Certificate is valid.\n");
CERTCertificate * issuerCert = cvout[0].value.pointer.cert;
if (issuerCert)
{
xmlsec_trace("Root certificate: %s", issuerCert->subjectName);
CERT_DestroyCertificate(issuerCert);
};
break;
}
else
validity = csss::CertificateValidity::INVALID;
{
PRIntn err = PR_GetError();
xmlsec_trace("Error: , %d = %s", err, getCertError(err));
/* Display validation results */
if ( log.count > 0)
{
CERTVerifyLogNode *node = NULL;
printChainFailure(&log);
for (node = log.head; node; node = node->next) {
if (node->cert)
CERT_DestroyCertificate(node->cert);
}
log.head = log.tail = NULL;
log.count = 0;
}
xmlsec_trace("Certificate is invalid.\n");
}
}
// always check what kind of error occured, even SECStatus says Success
//JL: When we call CERT_VerifyCertificate whit the parameter requiredUsages == 0 then all
//possible usages are checked. Then there are certainly usages for which the certificate
//is not intended. For these usages there will be NO flag set in the argument returnedUsages
// (the last arg) and there will be error codes set in the log. Therefore we cannot
//set the CertificateValidity to INVALID because there is a log entry.
// CERTVerifyLogNode *logNode = 0;
// logNode = log->head;
// while ( logNode != NULL )
// {
// sal_Int32 errorCode = 0;
// errorCode = logNode->error;
// switch ( errorCode )
// {
// // JL & TKR: Any error are treated as invalid because we cannot say that we get all occurred errors from NSS
// /*
// case ( SEC_ERROR_REVOKED_CERTIFICATE ):
// validity |= csss::CertificateValidity::REVOKED;
// break;
// case ( SEC_ERROR_EXPIRED_CERTIFICATE ):
// validity |= csss::CertificateValidity::TIME_INVALID;
// break;
// case ( SEC_ERROR_CERT_USAGES_INVALID):
// validity |= csss::CertificateValidity::INVALID;
// break;
// case ( SEC_ERROR_UNTRUSTED_ISSUER ):
// case ( SEC_ERROR_UNTRUSTED_CERT ):
// validity |= csss::CertificateValidity::UNTRUSTED;
// break;
// */
// default:
// validity |= csss::CertificateValidity::INVALID;
// break;
// }
// logNode = logNode->next;
// }
}
else
{
validity = ::com::sun::star::security::CertificateValidity::INVALID ;
}
@ -931,15 +978,9 @@ verifyCertificate( const Reference< csss::XCertificate >& aCert,
std::vector<CERTCertificate*>::const_iterator cert_i;
for (cert_i = vecTmpNSSCertificates.begin(); cert_i != vecTmpNSSCertificates.end(); cert_i++)
{
OSL_TRACE("[xmlsecurity] Destroying temporary certificate");
xmlsec_trace("Destroying temporary certificate");
CERT_DestroyCertificate(*cert_i);
}
#if OSL_DEBUG_LEVEL > 1
if (validity == ::com::sun::star::security::CertificateValidity::VALID)
OSL_TRACE("[xmlsecurity] Certificate is valid.");
else
OSL_TRACE("[xmlsecurity] Certificate is invalid.");
#endif
return validity ;
}

View File

@ -61,6 +61,7 @@
#include <rtl/logfile.hxx>
#include "seinitializer_nssimpl.hxx"
#include "../diagnose.hxx"
#include "securityenvironment_nssimpl.hxx"
#include <com/sun/star/mozilla/XMozillaBootstrap.hpp>
@ -76,6 +77,7 @@ namespace cssu = com::sun::star::uno;
namespace cssl = com::sun::star::lang;
namespace cssxc = com::sun::star::xml::crypto;
using namespace xmlsecurity;
using namespace com::sun::star;
using ::rtl::OUString;
using ::rtl::OString;
@ -109,7 +111,7 @@ struct InitNSSInitialize
bInitialized = nsscrypto_initialize(m_sProfile.getStr(), bNSSInit);
if (bNSSInit)
atexit(nsscrypto_finalize );
return & bInitialized;
return & bInitialized;
}
};
@ -139,7 +141,7 @@ void deleteRootsModule()
{
if (PK11_HasRootCerts(slot))
{
OSL_TRACE("[xmlsecurity] The root certifificates module \"%s"
xmlsec_trace("The root certifificates module \"%s"
"\" is already loaded: \n%s",
module->commonName, module->dllName);
@ -157,11 +159,11 @@ void deleteRootsModule()
PRInt32 modType;
if (SECSuccess == SECMOD_DeleteModule(RootsModule->commonName, &modType))
{
OSL_TRACE("[xmlsecurity] Deleted module \"%s\".", RootsModule->commonName);
xmlsec_trace("Deleted module \"%s\".", RootsModule->commonName);
}
else
{
OSL_TRACE("[xmlsecurity] Failed to delete \"%s\" : \n%s",
xmlsec_trace("Failed to delete \"%s\" : \n%s",
RootsModule->commonName, RootsModule->dllName);
}
SECMOD_DestroyModule(RootsModule);
@ -194,18 +196,36 @@ bool nsscrypto_initialize( const char* token, bool & out_nss_init )
{
bool return_value = true;
OSL_TRACE("[xmlsecurity] Using profile: %s", token);
xmlsec_trace("Using profile: %s", token);
PR_Init( PR_USER_THREAD, PR_PRIORITY_NORMAL, 1 ) ;
if( NSS_InitReadWrite( token ) != SECSuccess )
//token may be an empty string
if (token != NULL && strlen(token) > 0)
{
char * error = NULL;
if( NSS_InitReadWrite( token ) != SECSuccess )
{
xmlsec_trace("Initializing NSS with profile failed.");
char * error = NULL;
PR_GetErrorText(error);
if (error)
printf("%s",error);
return false ;
PR_GetErrorText(error);
if (error)
xmlsec_trace("%s",error);
return false ;
}
}
else
{
xmlsec_trace("Initializing NSS without profile.");
if ( NSS_NoDB_Init(NULL) != SECSuccess )
{
xmlsec_trace("Initializing NSS without profile failed.");
char * error = NULL;
PR_GetErrorText(error);
if (error)
xmlsec_trace("%s",error);
return false ;
}
}
out_nss_init = true;
@ -247,18 +267,18 @@ bool nsscrypto_initialize( const char* token, bool & out_nss_init )
SECMOD_DestroyModule(RootsModule);
RootsModule = 0;
if (found)
OSL_TRACE("[xmlsecurity] Added new root certificate module "
xmlsec_trace("Added new root certificate module "
"\""ROOT_CERTS"\" contained in \n%s", ospath.getStr());
else
{
OSL_TRACE("[xmlsecurity] FAILED to load the new root certificate module "
xmlsec_trace("FAILED to load the new root certificate module "
"\""ROOT_CERTS"\" contained in \n%s", ospath.getStr());
return_value = false;
}
}
else
{
OSL_TRACE("[xmlsecurity] FAILED to add new root certifice module: "
xmlsec_trace("FAILED to add new root certifice module: "
"\""ROOT_CERTS"\" contained in \n%s", ospath.getStr());
return_value = false;
@ -266,7 +286,7 @@ bool nsscrypto_initialize( const char* token, bool & out_nss_init )
}
else
{
OSL_TRACE("[xmlsecurity] Adding new root certificate module failed.");
xmlsec_trace("Adding new root certificate module failed.");
return_value = false;
}
#if SYSTEM_MOZILLA
@ -287,17 +307,17 @@ extern "C" void nsscrypto_finalize()
if (SECSuccess == SECMOD_UnloadUserModule(RootsModule))
{
OSL_TRACE("[xmlsecurity] Unloaded module \""ROOT_CERTS"\".");
xmlsec_trace("Unloaded module \""ROOT_CERTS"\".");
}
else
{
OSL_TRACE("[xmlsecurity] Failed unloadeding module \""ROOT_CERTS"\".");
xmlsec_trace("Failed unloadeding module \""ROOT_CERTS"\".");
}
SECMOD_DestroyModule(RootsModule);
}
else
{
OSL_TRACE("[xmlsecurity] Unloading module \""ROOT_CERTS
xmlsec_trace("Unloading module \""ROOT_CERTS
"\" failed because it was not found.");
}
PK11_LogoutAll();
@ -312,17 +332,16 @@ bool getMozillaCurrentProfile(
/*
* first, try to get the profile from "MOZILLA_CERTIFICATE_FOLDER"
*/
char * env = getenv("MOZILLA_CERTIFICATE_FOLDER");
if (env)
{
profilePath = rtl::OUString::createFromAscii( env );
RTL_LOGFILE_PRODUCT_TRACE1( "XMLSEC: Using env MOZILLA_CERTIFICATE_FOLDER: %s", rtl::OUStringToOString( profilePath, RTL_TEXTENCODING_ASCII_US ).getStr() );
return true;
}
else
{
RTL_LOGFILE_TRACE( "getMozillaCurrentProfile: Using MozillaBootstrap..." );
mozilla::MozillaProductType productTypes[4] = {
char * env = getenv("MOZILLA_CERTIFICATE_FOLDER");
if (env)
{
profilePath = rtl::OUString::createFromAscii( env );
RTL_LOGFILE_PRODUCT_TRACE1( "XMLSEC: Using env MOZILLA_CERTIFICATE_FOLDER: %s", rtl::OUStringToOString( profilePath, RTL_TEXTENCODING_ASCII_US ).getStr() );
return true;
}
else
{
mozilla::MozillaProductType productTypes[4] = {
mozilla::MozillaProductType_Thunderbird,
mozilla::MozillaProductType_Mozilla,
mozilla::MozillaProductType_Firefox,
@ -343,8 +362,6 @@ bool getMozillaCurrentProfile(
{
::rtl::OUString profile = xMozillaBootstrap->getDefaultProfile(productTypes[i]);
RTL_LOGFILE_TRACE2( "getMozillaCurrentProfile: getDefaultProfile [%i] returns %s", i, rtl::OUStringToOString( profile, RTL_TEXTENCODING_ASCII_US ).getStr() );
if (profile != NULL && profile.getLength()>0)
{
profilePath = xMozillaBootstrap->getProfilePath(productTypes[i],profile);
@ -401,36 +418,9 @@ cssu::Reference< cssxc::XXMLSecurityContext > SAL_CALL
}
if( !sCertDir.getLength() )
{
RTL_LOGFILE_TRACE( "XMLSEC: Error - No certificate directory!" );
// return NULL;
}
/* Initialize NSPR and NSS */
/* Replaced with new methods by AF. ----
//PR_Init( PR_SYSTEM_THREAD, PR_PRIORITY_NORMAL, 1 ) ;
PR_Init( PR_USER_THREAD, PR_PRIORITY_NORMAL, 1 ) ;
if (NSS_Init(sCertDir.getStr()) != SECSuccess )
{
PK11_LogoutAll();
return NULL;
}
----*/
if( ! *initNSS( sCertDir.getStr() ) )
{
RTL_LOGFILE_TRACE( "XMLSEC: Error - nsscrypto_initialize() failed." );
if ( NSS_NoDB_Init(NULL) != SECSuccess )
{
RTL_LOGFILE_TRACE( "XMLSEC: NSS_NoDB_Init also failed, NSS Security not available!" );
return NULL;
}
else
{
RTL_LOGFILE_TRACE( "XMLSEC: NSS_NoDB_Init works, enough for verifying signatures..." );
}
return NULL;
}
pCertHandle = CERT_GetDefaultCertDB() ;

View File

@ -0,0 +1,383 @@
This folder contains the directory structures needed by openssl to create
and manager certificates.
################################################################################
Root 1
======
Valid root CA certificate.
Provides CRL = NO
Provides CRL via HTTP = NO
Provides OCSP = NO
Sub CA 1 Root 1
===============
Valid intermediate CA certificate.
Provides CRL = NO
Provides CRL via HTTP = NO
Provides OCSP = NO
CRLDP = NO
AIA = NO
User 1 Sub CA 1 Root 1
======================
Valid end certificate.
CRLDP = NO
AIA = NO
################################################################################
Root 2
======
Valid root CA certificate.
Provides CRL = NO
Provides CRL via HTTP = NO
Provides OCSP = NO
Sub CA 1 Root 2
===============
Valid intermediate CA certificate.
Provides CRL = YES
Provides CRL via HTTP = NO
Provides OCSP = NO
CRLDP = NO
AIA = NO
User 1 Sub CA 1 Root 2
======================
Valid end certificate.
CRLDP = NO
AIA = NO
################################################################################
Root 3
======
Valid root CA certificate.
Provides CRL = YES
Provides CRL via HTTP = NO
Provides OCSP = NO
Sub CA 1 Root 3
===============
Valid intermediate CA certificate.
Provides CRL = NO
Provides CRL via HTTP = NO
Provides OCSP = NO
CRLDP = NO
AIA = NO
User 1 Sub CA 1 Root 3
======================
Valid end certificate.
CRLDP = NO
AIA = NO
################################################################################
Root 4
======
Valid root CA certificate.
Provides CRL = YES
Provides CRL via HTTP = NO
Provides OCSP = NO
Revoked certificates:
- Sub CA 2 Root 4
Sub CA 1 Root 4
===============
Valid intermediate CA certificate.
Provides CRL = YES
Provides CRL via HTTP = NO
Provides OCSP = NO
CRLDP = NO
AIA = NO
Revoked certificates:
- User 2 Sub CA 1 Root 4
User 1 Sub CA 1 Root 4
======================
Valid end certificate.
CRLDP = NO
AIA = NO
User 2 Sub CA 1 Root 4
======================
Revoked end certificate.
CRLDP = NO
AIA = NO
Sub CA 2 Root 4
===============
Revoked intermediate CA certificate. Reason = keyCompromise
Provides CRL = YES
Provides CRL via HTTP = NO
Provides OCSP = NO
CRLDP = NO
AIA = NO
Revoked certificates:
- User 2 Sub CA 2 Root 4
User 1 Sub CA 2 Root 4
======================
Valid end certificate. Issuer is revoked.
CRLDP = NO
AIA = NO
User 2 Sub CA 2 Root 4
======================
Revoked end certificate. Reason = keyCompromise. Issuer is revoked.
CRLDP = NO
AIA = NO
################################################################################
Root 5
======
Valid root CA certificate.
Provides CRL = NO
Provides CRL via HTTP = NO
Provides OCSP = NO
Sub CA 1 Root 5
===============
Valid intermediate CA certificate.
Provides CRL = NO
Provides CRL via HTTP = YES
Provides OCSP = NO
CRLDP = URL=http://localhost:8901/demoCA/crl/Root_5.crl
AIA = NO
User 1 Sub CA 1 Root 5
======================
Valid end certificate.
CRLDP = URL=http://localhost:8902/demoCA/crl/Sub_CA_1_Root_5.crl
AIA = NO
################################################################################
Root 6
======
Valid root CA certificate.
Provides CRL = NO
Provides CRL via HTTP = YES
Provides OCSP = NO
Sub CA 1 Root 6
===============
Valid intermediate CA certificate.
Provides CRL = NO
Provides CRL via HTTP = NO
Provides OCSP = NO
CRLDP = URL=http://localhost:8901/demoCA/crl/Root_6.crl
AIA = NO
User 1 Sub CA 1 Root 6
======================
Valid end certificate.
CRLDP = URL=http://localhost:8902/demoCA/crl/Sub_CA_1_Root_6.crl
AIA = NO
################################################################################
Root 7
======
Valid root CA certificate.
Provides CRL = NO
Provides CRL via HTTP = YES
Provides OCSP = NO
Revoked certificates:
- Sub CA 2 Root 7
Sub CA 1 Root 7
===============
Valid intermediate CA certificate.
Provides CRL = NO
Provides CRL via HTTP = YES
Provides OCSP = NO
CRLDP = URL=http://localhost:8901/demoCA/crl/Root_7.crl
AIA = NO
Revoked certificates:
- User 2 Sub CA 1 Root 7
User 1 Sub CA 1 Root 7
======================
Valid end certificate.
CRLDP = URL=http://localhost:8902/demoCA/crl/Sub_CA_1_Root_7.crl
AIA = NO
User 2 Sub CA 1 Root 7
======================
Revoked end certificate. Reason = CACompromise.
CRLDP = URL=http://localhost:8902/demoCA/crl/Sub_CA_1_Root_7.crl
AIA = NO
Sub CA 2 Root 7
===============
Revoked intermediate CA certificate. Reason = keyCompromise
Provides CRL = NO
Provides CRL via HTTP = YES
Provides OCSP = NO
CRLDP = URL=http://localhost:8901/demoCA/crl/Root_7.crl
AIA = NO
Revoked certificates:
- User 2 Sub CA 2 Root 7
User 1 Sub CA 2 Root 7
======================
Valid end certificate. Issuer is revoked.
CRLDP = URL=http://localhost:8902/demoCA/crl/Sub_CA_2_Root_7.crl
AIA = NO
User 2 Sub CA 2 Root 7
======================
Revoked end certificate. Reason = CACompromise. Issuer is revoked.
CRLDP = URL=http://localhost:8902/demoCA/crl/Sub_CA_2_Root_7.crl
AIA = NO
################################################################################
Root 8
======
Valid root CA certificate.
Provides CRL = NO
Provides CRL via HTTP = NO
Provides OCSP = YES
Revoked certificates:
- Sub CA 2 Root 8
Sub CA 1 Root 8
===============
Valid intermediate CA certificate.
Provides CRL = NO
Provides CRL via HTTP = NO
Provides OCSP = YES
CRLDP =
AIA = OCSP;URI:http://localhost:8888
Revoked certificates:
- User 2 Sub CA 1 Root 8
User 1 Sub CA 1 Root 8
======================
Valid end certificate.
CRLDP = NO
AIA = OCSP;URI:http://localhost:8889
User 2 Sub CA 1 Root 8
======================
Revoked end certificate. Reason = superseded.
CRLDP = NO
AIA = OCSP;URI:http://localhost:8889
Sub CA 2 Root 8
===============
Revoked intermediate CA certificate. Reason = superseded.
Provides CRL = NO
Provides CRL via HTTP = NO
Provides OCSP = YES
CRLDP = NO
AIA = OCSP;URI:http://localhost:8888
Revoked certificates:
- User 2 Sub CA 2 Root 8
User 1 Sub CA 2 Root 8
======================
Valid end certificate. Issuer is revoked.
CRLDP = NO
AIA = OCSP;URI:http://localhost:8889
User 2 Sub CA 2 Root 8
======================
Revoked end certificate. Reason = superseded. Issuer is revoked.
CRLDP = NO
AIA = OCSP;URI:http://localhost:8889
################################################################################
Root 9
======
Valid root CA certificate. (Not installed.)
Provides CRL = YES
Provides CRL via HTTP = NO
Provides OCSP = NO
Sub CA 1 Root 9
===============
Valid intermediate CA certificate.
Provides CRL = YES
Provides CRL via HTTP = NO
Provides OCSP = NO
CRLDP = NO
AIA = NO
User 1 Sub CA 1 Root 9
======================
Valid end certificate.
CRLDP = NO
AIA = NO
################################################################################
Root 10
======
Valid root CA certificate.
Provides CRL = YES
Provides CRL via HTTP = NO
Provides OCSP = NO
Sub CA 1 Root 10
===============
Valid intermediate CA certificate. (Not installed.)
Provides CRL = NO
Provides CRL via HTTP = YES
Provides OCSP = NO
CRLDP = NO
AIA = NO
User 1 Sub CA 1 Root 10
======================
Valid end certificate.
CRLDP = URI:http://localhost:8902/demoCA/crl/Sub_CA_1_Root_10.crl
AIA = caIssuers;URI:http://localhost:8910/demoCA/Sub_CA_1_Root_10.crt
################################################################################
Root 11
======
Valid root CA certificate.
Provides CRL = YES
Provides CRL via HTTP = NO
Provides OCSP = NO
User x Root 11
======================
All certificate issues by Root 11 are valid end certificate. Currently there are
31 certificates.

View File

@ -0,0 +1,19 @@
-----BEGIN CERTIFICATE-----
MIIDBDCCAm2gAwIBAgIJAJWwBSvtwjktMA0GCSqGSIb3DQEBBQUAMF8xCzAJBgNV
BAYTAkRFMRAwDgYDVQQIEwdIYW1idXJnMRcwFQYDVQQKEw5PcGVuT2ZmaWNlLm9y
ZzEUMBIGA1UECxMLRGV2ZWxvcG1lbnQxDzANBgNVBAMTBlJvb3QgMTAeFw0wOTEx
MTgxNDU1NDFaFw0zNDExMTIxNDU1NDFaMF8xCzAJBgNVBAYTAkRFMRAwDgYDVQQI
EwdIYW1idXJnMRcwFQYDVQQKEw5PcGVuT2ZmaWNlLm9yZzEUMBIGA1UECxMLRGV2
ZWxvcG1lbnQxDzANBgNVBAMTBlJvb3QgMTCBnzANBgkqhkiG9w0BAQEFAAOBjQAw
gYkCgYEAvrD6NFWcOQQVxIuXw5Pzpy667PZbBP80ow2Bbnj+RFCI/LbgfQTsC8Bw
eSlQGX7IqMHkCTuWNJw7CoNeOLFhRMtm0DEKnEkZlM0t6kpFshbs12jZu9okcnII
F5uIoKxx/thbD5AbC1Q74vZr6XOXY5Sc+k9Ic6Jwhe9ZyEt6SUsCAwEAAaOBxzCB
xDAdBgNVHQ4EFgQUD/rG69/OuLuzqT5Cprrs0pPKR6QwgZEGA1UdIwSBiTCBhoAU
D/rG69/OuLuzqT5Cprrs0pPKR6ShY6RhMF8xCzAJBgNVBAYTAkRFMRAwDgYDVQQI
EwdIYW1idXJnMRcwFQYDVQQKEw5PcGVuT2ZmaWNlLm9yZzEUMBIGA1UECxMLRGV2
ZWxvcG1lbnQxDzANBgNVBAMTBlJvb3QgMYIJAJWwBSvtwjktMA8GA1UdEwEB/wQF
MAMBAf8wDQYJKoZIhvcNAQEFBQADgYEAqORur4HQGdQOQCaiyZR5u0+9mM/0w79y
r8Cmt+H8WB5BBeDgCyOcmaZjF0eEoRBF/ZhtlO54i4CH/yb/Pl6gGlxfGZL9iLu0
tv4HRIIibnoi0N7Z0r/dhJcrTHo4Ha8EARhAqxoNUSlGVBsaKUfjW9RyCjv4Akyi
WUSwsmtd/sY=
-----END CERTIFICATE-----

View File

@ -0,0 +1 @@
1000

View File

@ -0,0 +1 @@
V 341112150713Z 1000 unknown /C=DE/ST=Hamburg/O=OpenOffice.org/OU=Development/CN=Sub CA 1 Root 1

View File

@ -0,0 +1 @@
unique_subject = yes

View File

@ -0,0 +1,62 @@
Certificate:
Data:
Version: 3 (0x2)
Serial Number: 4096 (0x1000)
Signature Algorithm: sha1WithRSAEncryption
Issuer: C=DE, ST=Hamburg, O=OpenOffice.org, OU=Development, CN=Root 1
Validity
Not Before: Nov 18 15:07:13 2009 GMT
Not After : Nov 12 15:07:13 2034 GMT
Subject: C=DE, ST=Hamburg, O=OpenOffice.org, OU=Development, CN=Sub CA 1 Root 1
Subject Public Key Info:
Public Key Algorithm: rsaEncryption
RSA Public Key: (1024 bit)
Modulus (1024 bit):
00:d9:3a:8d:64:95:87:76:76:e8:61:c3:e9:65:f4:
a6:b7:0c:77:0e:4b:10:e8:14:a3:e1:84:69:7c:8e:
97:d2:7d:01:ad:b2:dc:5c:cd:c6:91:a1:f3:93:7c:
54:36:64:e3:ca:22:ca:00:cb:c6:91:ab:6b:26:88:
69:60:9a:61:d7:59:17:db:93:7d:09:36:da:28:cb:
ec:2d:a4:26:bb:1a:42:20:b8:08:b2:0f:b9:77:a6:
80:71:cf:13:f5:37:a2:90:4d:ab:e8:97:49:d2:80:
94:8f:b1:9d:5a:b4:9f:de:ff:fa:b6:d6:e0:45:5f:
cc:d4:10:1e:32:46:7b:ba:55
Exponent: 65537 (0x10001)
X509v3 extensions:
X509v3 Subject Key Identifier:
37:71:74:81:44:DD:1E:B1:60:96:41:B7:4B:38:C4:B7:79:1B:CF:8A
X509v3 Authority Key Identifier:
keyid:0F:FA:C6:EB:DF:CE:B8:BB:B3:A9:3E:42:A6:BA:EC:D2:93:CA:47:A4
DirName:/C=DE/ST=Hamburg/O=OpenOffice.org/OU=Development/CN=Root 1
serial:95:B0:05:2B:ED:C2:39:2D
X509v3 Basic Constraints: critical
CA:TRUE
Signature Algorithm: sha1WithRSAEncryption
18:f6:02:5e:75:04:5f:eb:3b:07:41:85:c0:9e:08:29:58:3d:
b5:6f:c2:aa:24:0d:93:1d:17:fc:be:d6:43:ac:43:d7:4d:a0:
2c:40:fd:3d:d5:7e:91:46:25:49:62:ba:e9:7f:67:c2:fc:8a:
c3:a0:37:bf:ec:f9:54:bf:61:10:35:dd:5b:bb:da:7c:70:54:
32:13:b9:ae:7d:ea:a5:7d:aa:55:3e:ef:0a:ef:12:fd:c3:f6:
e5:25:98:97:34:02:64:fd:88:79:b3:e2:f4:fc:ff:e7:d3:98:
f1:d9:d5:18:d9:b4:62:ae:99:88:61:2e:ff:02:6a:13:35:fe:
37:c7
-----BEGIN CERTIFICATE-----
MIIDBjCCAm+gAwIBAgICEAAwDQYJKoZIhvcNAQEFBQAwXzELMAkGA1UEBhMCREUx
EDAOBgNVBAgTB0hhbWJ1cmcxFzAVBgNVBAoTDk9wZW5PZmZpY2Uub3JnMRQwEgYD
VQQLEwtEZXZlbG9wbWVudDEPMA0GA1UEAxMGUm9vdCAxMB4XDTA5MTExODE1MDcx
M1oXDTM0MTExMjE1MDcxM1owaDELMAkGA1UEBhMCREUxEDAOBgNVBAgTB0hhbWJ1
cmcxFzAVBgNVBAoTDk9wZW5PZmZpY2Uub3JnMRQwEgYDVQQLEwtEZXZlbG9wbWVu
dDEYMBYGA1UEAxMPU3ViIENBIDEgUm9vdCAxMIGfMA0GCSqGSIb3DQEBAQUAA4GN
ADCBiQKBgQDZOo1klYd2duhhw+ll9Ka3DHcOSxDoFKPhhGl8jpfSfQGtstxczcaR
ofOTfFQ2ZOPKIsoAy8aRq2smiGlgmmHXWRfbk30JNtooy+wtpCa7GkIguAiyD7l3
poBxzxP1N6KQTavol0nSgJSPsZ1atJ/e//q21uBFX8zUEB4yRnu6VQIDAQABo4HH
MIHEMB0GA1UdDgQWBBQ3cXSBRN0esWCWQbdLOMS3eRvPijCBkQYDVR0jBIGJMIGG
gBQP+sbr3864u7OpPkKmuuzSk8pHpKFjpGEwXzELMAkGA1UEBhMCREUxEDAOBgNV
BAgTB0hhbWJ1cmcxFzAVBgNVBAoTDk9wZW5PZmZpY2Uub3JnMRQwEgYDVQQLEwtE
ZXZlbG9wbWVudDEPMA0GA1UEAxMGUm9vdCAxggkAlbAFK+3COS0wDwYDVR0TAQH/
BAUwAwEB/zANBgkqhkiG9w0BAQUFAAOBgQAY9gJedQRf6zsHQYXAnggpWD21b8Kq
JA2THRf8vtZDrEPXTaAsQP091X6RRiVJYrrpf2fC/IrDoDe/7PlUv2EQNd1bu9p8
cFQyE7mufeqlfapVPu8K7xL9w/blJZiXNAJk/Yh5s+L0/P/n05jx2dUY2bRirpmI
YS7/AmoTNf43xw==
-----END CERTIFICATE-----

View File

@ -0,0 +1,18 @@
-----BEGIN RSA PRIVATE KEY-----
Proc-Type: 4,ENCRYPTED
DEK-Info: DES-EDE3-CBC,2D2CC3782F59A842
901JcMMdeCfHjfY05bkyLIsgMxwu4SFJPXZH75ebFtJQpkQQf5WNhSlo3sgKJ5MF
GZeqQw4w9CmN+CNqQENZOOGrVKxT+sFtWIgSLVk4hrLzPtsT7domHc1yUKfpBH/w
xo/bsL5wZPqcsxSdlmd4FA0PKzW/rhyYvRxF0oKQx2PVnJKT29WbhwlYurI3+2gG
pS+N6f7awWjmgyqYvFuFo7DWhERDDL/Bi/sJ7qFinijtfp1CkVG1XWFZ8Tu9ij+t
KPT3fpWbh4sV0V1ZGng7EPb4c+p/+GHvKsGM9N5kuyxufllNzAeIy6hfTR3mxn0i
Ep4CoufMi0JwNEfgwBB+o47k1hVoBTn0ofXc2iP6iQWsoC5ZoPPGLLklWK3Tur7P
kpng8UECTxV2s6J3nYkAoHfy+TzK+nssFPpE8zDmaprpeTj9oh3KrPTn0IdoPHcx
oI3yqWqDK9uErJBBCAjLF0SPJWAsmp0HsJaGnj5ErVe0yy3jBxVWogVDSWkoWU0W
+umK1pSQrS1A/oKErsnbhPi8XAD/gd4etEaKdcY538QKgE2tdPvhLoAeXxslyOfG
UiPohtmcm2Mva7vT0Iu1MGKplw76DxmmM1Rpf3+u7Kwf/+K6bMOSBGZQJhjE2AuZ
aPyHX8gCNlZfqB6eeuWdbqIHhTN5dS2Bba3QquvS84Vgb3O2ck+vdjmdPEeetvA7
7S4WZYHBRmz1ZHwdfSvwyBkdTRP5YrUhrIthbqy2NjcP9TkpQmJaDIlWXsGY738q
zTsjCkcnS06x0/JvHe1I8IAib+MFsmGI7Dw25fzgY3ReS4wZRZdU0A==
-----END RSA PRIVATE KEY-----

View File

@ -0,0 +1 @@
1001

View File

@ -0,0 +1,292 @@
#
# OpenSSL example configuration file.
# This is mostly being used for generation of certificate requests.
#
# This definition stops the following lines choking if HOME isn't
# defined.
HOME = .
RANDFILE = $ENV::HOME/.rnd
# Extra OBJECT IDENTIFIER info:
#oid_file = $ENV::HOME/.oid
oid_section = new_oids
# To use this configuration file with the "-extfile" option of the
# "openssl x509" utility, name here the section containing the
# X.509v3 extensions to use:
# extensions =
# (Alternatively, use a configuration file that has only
# X.509v3 extensions in its main [= default] section.)
[ new_oids ]
# We can add new OIDs in here for use by 'ca' and 'req'.
# Add a simple OID like this:
# testoid1=1.2.3.4
# Or use config file substitution like this:
# testoid2=${testoid1}.5.6
####################################################################
[ ca ]
default_ca = CA_default # The default ca section
####################################################################
[ CA_default ]
dir = ./demoCA # Where everything is kept
certs = $dir/certs # Where the issued certs are kept
crl_dir = $dir/crl # Where the issued crl are kept
database = $dir/index.txt # database index file.
#unique_subject = no # Set to 'no' to allow creation of
# several ctificates with same subject.
new_certs_dir = $dir/newcerts # default place for new certs.
certificate = $dir/cacert.pem # The CA certificate
serial = $dir/serial # The current serial number
crlnumber = $dir/crlnumber # the current crl number
# must be commented out to leave a V1 CRL
crl = $dir/crl.pem # The current CRL
private_key = $dir/private/cakey.pem # The private key
RANDFILE = $dir/private/.rand # private random number file
x509_extensions = usr_cert # The extentions to add to the cert
# Comment out the following two lines for the "traditional"
# (and highly broken) format.
name_opt = ca_default # Subject Name options
cert_opt = ca_default # Certificate field options
# Extension copying option: use with caution.
# copy_extensions = copy
# Extensions to add to a CRL. Note: Netscape communicator chokes on V2 CRLs
# so this is commented out by default to leave a V1 CRL.
# crlnumber must also be commented out to leave a V1 CRL.
# crl_extensions = crl_ext
default_days = 365 # how long to certify for
default_crl_days= 30 # how long before next CRL
default_md = sha1 # which md to use.
preserve = no # keep passed DN ordering
# A few difference way of specifying how similar the request should look
# For type CA, the listed attributes must be the same, and the optional
# and supplied fields are just that :-)
policy = policy_match
# For the CA policy
[ policy_match ]
countryName = match
stateOrProvinceName = match
organizationName = match
organizationalUnitName = optional
commonName = supplied
emailAddress = optional
# For the 'anything' policy
# At this point in time, you must list all acceptable 'object'
# types.
[ policy_anything ]
countryName = optional
stateOrProvinceName = optional
localityName = optional
organizationName = optional
organizationalUnitName = optional
commonName = supplied
emailAddress = optional
####################################################################
[ req ]
default_bits = 1024
default_keyfile = privkey.pem
distinguished_name = req_distinguished_name
attributes = req_attributes
x509_extensions = v3_ca # The extentions to add to the self signed cert
# Passwords for private keys if not present they will be prompted for
# input_password = secret
# output_password = secret
# This sets a mask for permitted string types. There are several options.
# default: PrintableString, T61String, BMPString.
# pkix : PrintableString, BMPString.
# utf8only: only UTF8Strings.
# nombstr : PrintableString, T61String (no BMPStrings or UTF8Strings).
# MASK:XXXX a literal mask value.
# WARNING: current versions of Netscape crash on BMPStrings or UTF8Strings
# so use this option with caution!
string_mask = nombstr
# req_extensions = v3_req # The extensions to add to a certificate request
[ req_distinguished_name ]
countryName = Country Name (2 letter code)
countryName_default = DE
countryName_min = 2
countryName_max = 2
stateOrProvinceName = State or Province Name (full name)
stateOrProvinceName_default = Hamburg
localityName = Locality Name (eg, city)
0.organizationName = Organization Name (eg, company)
0.organizationName_default = OpenOffice.org
# we can do this but it is not needed normally :-)
#1.organizationName = Second Organization Name (eg, company)
#1.organizationName_default = World Wide Web Pty Ltd
organizationalUnitName = Organizational Unit Name (eg, section)
organizationalUnitName_default = Development
commonName = Common Name (eg, YOUR name)
commonName_max = 64
emailAddress = Email Address
emailAddress_max = 64
# SET-ex3 = SET extension number 3
[ req_attributes ]
challengePassword = A challenge password
challengePassword_min = 4
challengePassword_max = 20
unstructuredName = An optional company name
[ usr_cert ]
# These extensions are added when 'ca' signs a request.
#authorityInfoAccess = OCSP;URI:http://localhost:8888/
# This is typical in keyUsage for a client certificate.
# keyUsage = nonRepudiation, digitalSignature, keyEncipherment
# This will be displayed in Netscape's comment listbox.
nsComment = "OpenSSL Generated Certificate"
# PKIX recommendations harmless if included in all certificates.
subjectKeyIdentifier=hash
authorityKeyIdentifier=keyid,issuer
# This stuff is for subjectAltName and issuerAltname.
# Import the email address.
# subjectAltName=email:copy
# An alternative to produce certificates that aren't
# deprecated according to PKIX.
# subjectAltName=email:move
# Copy subject details
# issuerAltName=issuer:copy
[ v3_req ]
# Extensions to add to a certificate request
basicConstraints = CA:FALSE
keyUsage = nonRepudiation, digitalSignature, keyEncipherment
#authorityInfoAccess = OCSP;URI:http://localhost:8888/
[ v3_ca ]
# Extensions for a typical CA
# PKIX recommendation.
subjectKeyIdentifier=hash
authorityKeyIdentifier=keyid:always,issuer:always
#authorityInfoAccess = OCSP;URI:http://localhost:8888
#crlDistributionPoints=URI:http://localhost:8901/demoCA/crl/Test_CA_2009.2.crl
# This is what PKIX recommends but some broken software chokes on critical
# extensions.
#basicConstraints = critical,CA:true
# So we do this instead.
basicConstraints = critical, CA:true
# Key usage: this is typical for a CA certificate. However since it will
# prevent it being used as an test self-signed certificate it is best
# left out by default.
# keyUsage = cRLSign, keyCertSign
# Some might want this also
# nsCertType = sslCA, emailCA
# Include email address in subject alt name: another PKIX recommendation
# subjectAltName=email:copy
# Copy issuer details
# issuerAltName=issuer:copy
# DER hex encoding of an extension: beware experts only!
# obj=DER:02:03
# Where 'obj' is a standard or added object
# You can even override a supported extension:
# basicConstraints= critical, DER:30:03:01:01:FF
[ crl_ext ]
# CRL extensions.
# Only issuerAltName and authorityKeyIdentifier make any sense in a CRL.
# issuerAltName=issuer:copy
authorityKeyIdentifier=keyid:always,issuer:always
[ proxy_cert_ext ]
# These extensions should be added when creating a proxy certificate
# This goes against PKIX guidelines but some CAs do it and some software
# requires this to avoid interpreting an end user certificate as a CA.
basicConstraints=CA:FALSE
# Here are some examples of the usage of nsCertType. If it is omitted
# the certificate can be used for anything *except* object signing.
# This is OK for an SSL server.
# nsCertType = server
# For an object signing certificate this would be used.
# nsCertType = objsign
# For normal client use this is typical
# nsCertType = client, email
# and for everything including object signing:
# nsCertType = client, email, objsign
# This is typical in keyUsage for a client certificate.
# keyUsage = nonRepudiation, digitalSignature, keyEncipherment
# This will be displayed in Netscape's comment listbox.
nsComment = "OpenSSL Generated Certificate"
# PKIX recommendations harmless if included in all certificates.
subjectKeyIdentifier=hash
authorityKeyIdentifier=keyid,issuer:always
# This stuff is for subjectAltName and issuerAltname.
# Import the email address.
# subjectAltName=email:copy
# An alternative to produce certificates that aren't
# deprecated according to PKIX.
# subjectAltName=email:move
# Copy subject details
# issuerAltName=issuer:copy
#nsCaRevocationUrl = http://www.domain.dom/ca-crl.pem
#nsBaseUrl
#nsRevocationUrl
#nsRenewalUrl
#nsCaPolicyUrl
#nsSslServerName
# This really needs to be in place for it to be a proxy certificate.
proxyCertInfo=critical,language:id-ppl-anyLanguage,pathlen:3,policy:foo

View File

@ -0,0 +1,19 @@
-----BEGIN CERTIFICATE-----
MIIDBzCCAnCgAwIBAgIJAL/ID7vZoDprMA0GCSqGSIb3DQEBBQUAMGAxCzAJBgNV
BAYTAkRFMRAwDgYDVQQIEwdIYW1idXJnMRcwFQYDVQQKEw5PcGVuT2ZmaWNlLm9y
ZzEUMBIGA1UECxMLRGV2ZWxvcG1lbnQxEDAOBgNVBAMTB1Jvb3QgMTAwHhcNMDkx
MTIzMTUwNzA0WhcNMzQxMTE3MTUwNzA0WjBgMQswCQYDVQQGEwJERTEQMA4GA1UE
CBMHSGFtYnVyZzEXMBUGA1UEChMOT3Blbk9mZmljZS5vcmcxFDASBgNVBAsTC0Rl
dmVsb3BtZW50MRAwDgYDVQQDEwdSb290IDEwMIGfMA0GCSqGSIb3DQEBAQUAA4GN
ADCBiQKBgQC5qE1pk/tI2i60IrVhlwS77j7jAyktxRuwKJqBECd2ZD2/goO8wcwD
R/wfrh+zuLWRwFb57PF1O7ig+WNhQk3GDhXhMbuB82Bwjb/n5phKDWHsAIqDRbH4
vpl/7sWYXvE46zf41PpQPgudOtqpeL1ENFoHKZOJthkBc4Yx6HTUSQIDAQABo4HI
MIHFMB0GA1UdDgQWBBTIp6OAIHRsb+wReva+JhA3MYewejCBkgYDVR0jBIGKMIGH
gBTIp6OAIHRsb+wReva+JhA3MYeweqFkpGIwYDELMAkGA1UEBhMCREUxEDAOBgNV
BAgTB0hhbWJ1cmcxFzAVBgNVBAoTDk9wZW5PZmZpY2Uub3JnMRQwEgYDVQQLEwtE
ZXZlbG9wbWVudDEQMA4GA1UEAxMHUm9vdCAxMIIJAL/ID7vZoDprMA8GA1UdEwEB
/wQFMAMBAf8wDQYJKoZIhvcNAQEFBQADgYEAroDDzqZQL+7NeQuePohejcGfFR/0
vtbQ3AYViQ2JS42gQpaNaMNcVCvO0nUwLHldLNVdQsn9P0ultu6KcUKkBbY4/2Xp
er6RMQWsrKVLnszgIi2gk1NiNwZ+N9RISJvElaQuIciZs+8sM6LOPybVTArMjxEo
U3VqHTViFfOvWC0=
-----END CERTIFICATE-----

View File

@ -0,0 +1 @@
1001

View File

@ -0,0 +1 @@
V 341117151448Z 1000 unknown /C=DE/ST=Hamburg/O=OpenOffice.org/OU=Development/CN=Sub CA 1 Root 10

View File

@ -0,0 +1 @@
unique_subject = yes

View File

@ -0,0 +1,62 @@
Certificate:
Data:
Version: 3 (0x2)
Serial Number: 4096 (0x1000)
Signature Algorithm: sha1WithRSAEncryption
Issuer: C=DE, ST=Hamburg, O=OpenOffice.org, OU=Development, CN=Root 10
Validity
Not Before: Nov 23 15:14:48 2009 GMT
Not After : Nov 17 15:14:48 2034 GMT
Subject: C=DE, ST=Hamburg, O=OpenOffice.org, OU=Development, CN=Sub CA 1 Root 10
Subject Public Key Info:
Public Key Algorithm: rsaEncryption
RSA Public Key: (1024 bit)
Modulus (1024 bit):
00:e4:d5:66:14:88:9f:79:41:50:b0:d1:a0:1b:98:
bf:b0:21:34:30:36:70:58:6f:8b:58:f1:b9:58:3a:
ce:29:6b:65:b6:11:f7:0d:c8:a6:c3:be:db:0f:2a:
4e:c7:42:df:c9:0e:13:c0:00:0f:af:b5:71:c4:bc:
dd:82:fc:4a:27:c0:ee:af:ba:e1:7b:67:de:6b:bb:
ac:4c:fe:88:01:1a:73:4e:f5:32:15:3a:d0:cb:6b:
97:84:1b:6c:d0:d6:91:a8:a4:5a:87:2a:69:61:36:
1d:42:cc:16:d0:03:9c:c6:90:5c:61:20:8b:b1:be:
b6:54:24:5b:6f:1f:a9:5a:6f
Exponent: 65537 (0x10001)
X509v3 extensions:
X509v3 Subject Key Identifier:
11:63:A1:BE:8B:E3:56:07:E6:A3:9F:23:39:72:7D:E3:22:B6:53:39
X509v3 Authority Key Identifier:
keyid:C8:A7:A3:80:20:74:6C:6F:EC:11:7A:F6:BE:26:10:37:31:87:B0:7A
DirName:/C=DE/ST=Hamburg/O=OpenOffice.org/OU=Development/CN=Root 10
serial:BF:C8:0F:BB:D9:A0:3A:6B
X509v3 Basic Constraints: critical
CA:TRUE
Signature Algorithm: sha1WithRSAEncryption
6b:0f:75:6d:56:b0:4e:45:19:65:ad:50:ef:4e:87:6c:95:5d:
05:39:5a:43:5c:b4:51:25:9a:ec:f4:93:d1:f0:f6:91:dd:a3:
77:95:0c:74:3c:a9:7c:c2:f6:62:ce:bf:58:5f:66:1f:d0:55:
ca:d8:2d:c4:1e:29:3a:ad:55:2c:9d:2c:8f:8e:9e:ce:ac:17:
7e:1b:d1:16:d9:12:76:5c:2d:3f:9d:70:66:aa:39:34:f0:ec:
31:4b:4b:5a:14:0c:c5:5b:3c:c8:47:02:90:cb:77:d7:4f:88:
10:a7:80:3d:ca:19:5c:b5:04:c9:f0:e1:1b:5a:5f:fb:61:b2:
14:b5
-----BEGIN CERTIFICATE-----
MIIDCTCCAnKgAwIBAgICEAAwDQYJKoZIhvcNAQEFBQAwYDELMAkGA1UEBhMCREUx
EDAOBgNVBAgTB0hhbWJ1cmcxFzAVBgNVBAoTDk9wZW5PZmZpY2Uub3JnMRQwEgYD
VQQLEwtEZXZlbG9wbWVudDEQMA4GA1UEAxMHUm9vdCAxMDAeFw0wOTExMjMxNTE0
NDhaFw0zNDExMTcxNTE0NDhaMGkxCzAJBgNVBAYTAkRFMRAwDgYDVQQIEwdIYW1i
dXJnMRcwFQYDVQQKEw5PcGVuT2ZmaWNlLm9yZzEUMBIGA1UECxMLRGV2ZWxvcG1l
bnQxGTAXBgNVBAMTEFN1YiBDQSAxIFJvb3QgMTAwgZ8wDQYJKoZIhvcNAQEBBQAD
gY0AMIGJAoGBAOTVZhSIn3lBULDRoBuYv7AhNDA2cFhvi1jxuVg6zilrZbYR9w3I
psO+2w8qTsdC38kOE8AAD6+1ccS83YL8SifA7q+64Xtn3mu7rEz+iAEac071MhU6
0Mtrl4QbbNDWkaikWocqaWE2HULMFtADnMaQXGEgi7G+tlQkW28fqVpvAgMBAAGj
gcgwgcUwHQYDVR0OBBYEFBFjob6L41YH5qOfIzlyfeMitlM5MIGSBgNVHSMEgYow
gYeAFMino4AgdGxv7BF69r4mEDcxh7B6oWSkYjBgMQswCQYDVQQGEwJERTEQMA4G
A1UECBMHSGFtYnVyZzEXMBUGA1UEChMOT3Blbk9mZmljZS5vcmcxFDASBgNVBAsT
C0RldmVsb3BtZW50MRAwDgYDVQQDEwdSb290IDEwggkAv8gPu9mgOmswDwYDVR0T
AQH/BAUwAwEB/zANBgkqhkiG9w0BAQUFAAOBgQBrD3VtVrBORRllrVDvTodslV0F
OVpDXLRRJZrs9JPR8PaR3aN3lQx0PKl8wvZizr9YX2Yf0FXK2C3EHik6rVUsnSyP
jp7OrBd+G9EW2RJ2XC0/nXBmqjk08OwxS0taFAzFWzzIRwKQy3fXT4gQp4A9yhlc
tQTJ8OEbWl/7YbIUtQ==
-----END CERTIFICATE-----

View File

@ -0,0 +1,18 @@
-----BEGIN RSA PRIVATE KEY-----
Proc-Type: 4,ENCRYPTED
DEK-Info: DES-EDE3-CBC,78CCF9A24E7B5044
ppKSX6K7DHnU4EvbmBAIzWDJ35yGppjzNdWRKpB7rkGW60dW0Cw0Jmbxf1dfbUC+
UTWtxE+i0x159jF7jGobPvLFQnAg1ZPUUIgeXJt+fqf/OghY4i8x82BdSlaKJ293
GgwR9m1N1I2/6ydob+9KwzJhOPhmylyUyRJVAx/OF86E9G4nxtuJA1c1nzSBgwR5
7uHU0LiY5A42iTDiMmu7Jw4vj6Cy81P88hmyoVzo4JQG8YFuJyLz2ei+DJ3/572z
BCefqDKmlmI2vvayZW1jgpLDlTwmqiIGUDBBipN4vDmqZAdEbv/9BjLkS4Svy3PU
xaFs1tFQzv8ivGpyPWU5naoTKhmMhOEAKpEi6YqWbcD/qKn1pRrYSyVyD9zNXHEK
QrXjTP+D/DMSHNJTo5WI4kxvwSZtPI97vaCTmxkrjnIXDPD5L4v9dJUdejnngsqn
cHB/C/05dR0RLEp5CHrl0hwGiIY1IgQXmGHY2HEUyQYttyJ5jdY0pdnn9n0eQxHr
9Mg3WneWC42XHw0pyqEsgiMmr8SjaF42MSrMB6y4WEVtBstn03LTdFnRIFTgZ5Mj
l/O2mSk+YUBR4CYTUTRaWpzCAZmFVy98I8KQgrhi8t96wrRe0+9tB1uC5PoDNR5P
CcgsmiEPeqolPZwOmnDdij+DcIiT43Sx2vDYGfDtqc+kur/O6noYyX8Kf7wzcpan
V4gHTCEOrlcRiEcVIxAQFDpB8CERG9fJvnBdZE9Gjepz6OatRpE/2kDZMelwRcEx
V5zeE1qNS51gdq2dE0qYkdyU1yfbNUouqtFy/z1sXU6Q5nR1r21jFQ==
-----END RSA PRIVATE KEY-----

View File

@ -0,0 +1 @@
1001

View File

@ -0,0 +1,292 @@
#
# OpenSSL example configuration file.
# This is mostly being used for generation of certificate requests.
#
# This definition stops the following lines choking if HOME isn't
# defined.
HOME = .
RANDFILE = $ENV::HOME/.rnd
# Extra OBJECT IDENTIFIER info:
#oid_file = $ENV::HOME/.oid
oid_section = new_oids
# To use this configuration file with the "-extfile" option of the
# "openssl x509" utility, name here the section containing the
# X.509v3 extensions to use:
# extensions =
# (Alternatively, use a configuration file that has only
# X.509v3 extensions in its main [= default] section.)
[ new_oids ]
# We can add new OIDs in here for use by 'ca' and 'req'.
# Add a simple OID like this:
# testoid1=1.2.3.4
# Or use config file substitution like this:
# testoid2=${testoid1}.5.6
####################################################################
[ ca ]
default_ca = CA_default # The default ca section
####################################################################
[ CA_default ]
dir = ./demoCA # Where everything is kept
certs = $dir/certs # Where the issued certs are kept
crl_dir = $dir/crl # Where the issued crl are kept
database = $dir/index.txt # database index file.
#unique_subject = no # Set to 'no' to allow creation of
# several ctificates with same subject.
new_certs_dir = $dir/newcerts # default place for new certs.
certificate = $dir/cacert.pem # The CA certificate
serial = $dir/serial # The current serial number
crlnumber = $dir/crlnumber # the current crl number
# must be commented out to leave a V1 CRL
crl = $dir/crl.pem # The current CRL
private_key = $dir/private/cakey.pem # The private key
RANDFILE = $dir/private/.rand # private random number file
x509_extensions = usr_cert # The extentions to add to the cert
# Comment out the following two lines for the "traditional"
# (and highly broken) format.
name_opt = ca_default # Subject Name options
cert_opt = ca_default # Certificate field options
# Extension copying option: use with caution.
# copy_extensions = copy
# Extensions to add to a CRL. Note: Netscape communicator chokes on V2 CRLs
# so this is commented out by default to leave a V1 CRL.
# crlnumber must also be commented out to leave a V1 CRL.
# crl_extensions = crl_ext
default_days = 365 # how long to certify for
default_crl_days= 30 # how long before next CRL
default_md = sha1 # which md to use.
preserve = no # keep passed DN ordering
# A few difference way of specifying how similar the request should look
# For type CA, the listed attributes must be the same, and the optional
# and supplied fields are just that :-)
policy = policy_match
# For the CA policy
[ policy_match ]
countryName = match
stateOrProvinceName = match
organizationName = match
organizationalUnitName = optional
commonName = supplied
emailAddress = optional
# For the 'anything' policy
# At this point in time, you must list all acceptable 'object'
# types.
[ policy_anything ]
countryName = optional
stateOrProvinceName = optional
localityName = optional
organizationName = optional
organizationalUnitName = optional
commonName = supplied
emailAddress = optional
####################################################################
[ req ]
default_bits = 1024
default_keyfile = privkey.pem
distinguished_name = req_distinguished_name
attributes = req_attributes
x509_extensions = v3_ca # The extentions to add to the self signed cert
# Passwords for private keys if not present they will be prompted for
# input_password = secret
# output_password = secret
# This sets a mask for permitted string types. There are several options.
# default: PrintableString, T61String, BMPString.
# pkix : PrintableString, BMPString.
# utf8only: only UTF8Strings.
# nombstr : PrintableString, T61String (no BMPStrings or UTF8Strings).
# MASK:XXXX a literal mask value.
# WARNING: current versions of Netscape crash on BMPStrings or UTF8Strings
# so use this option with caution!
string_mask = nombstr
# req_extensions = v3_req # The extensions to add to a certificate request
[ req_distinguished_name ]
countryName = Country Name (2 letter code)
countryName_default = DE
countryName_min = 2
countryName_max = 2
stateOrProvinceName = State or Province Name (full name)
stateOrProvinceName_default = Hamburg
localityName = Locality Name (eg, city)
0.organizationName = Organization Name (eg, company)
0.organizationName_default = OpenOffice.org
# we can do this but it is not needed normally :-)
#1.organizationName = Second Organization Name (eg, company)
#1.organizationName_default = World Wide Web Pty Ltd
organizationalUnitName = Organizational Unit Name (eg, section)
organizationalUnitName_default = Development
commonName = Common Name (eg, YOUR name)
commonName_max = 64
emailAddress = Email Address
emailAddress_max = 64
# SET-ex3 = SET extension number 3
[ req_attributes ]
challengePassword = A challenge password
challengePassword_min = 4
challengePassword_max = 20
unstructuredName = An optional company name
[ usr_cert ]
# These extensions are added when 'ca' signs a request.
#authorityInfoAccess = OCSP;URI:http://localhost:8888/
# This is typical in keyUsage for a client certificate.
keyUsage = nonRepudiation, digitalSignature, keyEncipherment
# This will be displayed in Netscape's comment listbox.
nsComment = "OpenSSL Generated Certificate"
# PKIX recommendations harmless if included in all certificates.
subjectKeyIdentifier=hash
authorityKeyIdentifier=keyid,issuer
# This stuff is for subjectAltName and issuerAltname.
# Import the email address.
# subjectAltName=email:copy
# An alternative to produce certificates that aren't
# deprecated according to PKIX.
# subjectAltName=email:move
# Copy subject details
# issuerAltName=issuer:copy
[ v3_req ]
# Extensions to add to a certificate request
basicConstraints = CA:FALSE
keyUsage = nonRepudiation, digitalSignature, keyEncipherment
#authorityInfoAccess = OCSP;URI:http://localhost:8888/
[ v3_ca ]
# Extensions for a typical CA
# PKIX recommendation.
subjectKeyIdentifier=hash
authorityKeyIdentifier=keyid:always,issuer:always
#authorityInfoAccess = OCSP;URI:http://localhost:8888
#crlDistributionPoints=URI:http://localhost:8901/demoCA/crl/Root_7.crl
# This is what PKIX recommends but some broken software chokes on critical
# extensions.
#basicConstraints = critical,CA:true
# So we do this instead.
basicConstraints = critical, CA:true
# Key usage: this is typical for a CA certificate. However since it will
# prevent it being used as an test self-signed certificate it is best
# left out by default.
# keyUsage = cRLSign, keyCertSign
# Some might want this also
# nsCertType = sslCA, emailCA
# Include email address in subject alt name: another PKIX recommendation
# subjectAltName=email:copy
# Copy issuer details
# issuerAltName=issuer:copy
# DER hex encoding of an extension: beware experts only!
# obj=DER:02:03
# Where 'obj' is a standard or added object
# You can even override a supported extension:
# basicConstraints= critical, DER:30:03:01:01:FF
[ crl_ext ]
# CRL extensions.
# Only issuerAltName and authorityKeyIdentifier make any sense in a CRL.
# issuerAltName=issuer:copy
authorityKeyIdentifier=keyid:always,issuer:always
[ proxy_cert_ext ]
# These extensions should be added when creating a proxy certificate
# This goes against PKIX guidelines but some CAs do it and some software
# requires this to avoid interpreting an end user certificate as a CA.
basicConstraints=CA:FALSE
# Here are some examples of the usage of nsCertType. If it is omitted
# the certificate can be used for anything *except* object signing.
# This is OK for an SSL server.
# nsCertType = server
# For an object signing certificate this would be used.
# nsCertType = objsign
# For normal client use this is typical
# nsCertType = client, email
# and for everything including object signing:
# nsCertType = client, email, objsign
# This is typical in keyUsage for a client certificate.
# keyUsage = nonRepudiation, digitalSignature, keyEncipherment
# This will be displayed in Netscape's comment listbox.
nsComment = "OpenSSL Generated Certificate"
# PKIX recommendations harmless if included in all certificates.
subjectKeyIdentifier=hash
authorityKeyIdentifier=keyid,issuer:always
# This stuff is for subjectAltName and issuerAltname.
# Import the email address.
# subjectAltName=email:copy
# An alternative to produce certificates that aren't
# deprecated according to PKIX.
# subjectAltName=email:move
# Copy subject details
# issuerAltName=issuer:copy
#nsCaRevocationUrl = http://www.domain.dom/ca-crl.pem
#nsBaseUrl
#nsRevocationUrl
#nsRenewalUrl
#nsCaPolicyUrl
#nsSslServerName
# This really needs to be in place for it to be a proxy certificate.
proxyCertInfo=critical,language:id-ppl-anyLanguage,pathlen:3,policy:foo

View File

@ -0,0 +1,19 @@
-----BEGIN CERTIFICATE-----
MIIDBzCCAnCgAwIBAgIJAI3gSU2IIGPLMA0GCSqGSIb3DQEBBQUAMGAxCzAJBgNV
BAYTAkRFMRAwDgYDVQQIEwdIYW1idXJnMRcwFQYDVQQKEw5PcGVuT2ZmaWNlLm9y
ZzEUMBIGA1UECxMLRGV2ZWxvcG1lbnQxEDAOBgNVBAMTB1Jvb3QgMTEwHhcNMTAw
MTE0MTEzNzA1WhcNMzUwMTA4MTEzNzA2WjBgMQswCQYDVQQGEwJERTEQMA4GA1UE
CBMHSGFtYnVyZzEXMBUGA1UEChMOT3Blbk9mZmljZS5vcmcxFDASBgNVBAsTC0Rl
dmVsb3BtZW50MRAwDgYDVQQDEwdSb290IDExMIGfMA0GCSqGSIb3DQEBAQUAA4GN
ADCBiQKBgQDKGrq6yC3tyctcBo+iz31MF2yvDiQ7YFgez8TswNvb3USOPOUPsCaB
ufVN6ULSqmGi5BzFIW7CVAj5L+iCrrwMtPyG86fKbvgdWmLepz5a4S1y+vydnQ0B
rJCNdxmLdQK+l/P7jzrH5xhcR62DPQ2lLabvmixvylHv4H6cFjJ98wIDAQABo4HI
MIHFMB0GA1UdDgQWBBToarvCkOpscCI+9vZIGwPmvremVTCBkgYDVR0jBIGKMIGH
gBToarvCkOpscCI+9vZIGwPmvremVaFkpGIwYDELMAkGA1UEBhMCREUxEDAOBgNV
BAgTB0hhbWJ1cmcxFzAVBgNVBAoTDk9wZW5PZmZpY2Uub3JnMRQwEgYDVQQLEwtE
ZXZlbG9wbWVudDEQMA4GA1UEAxMHUm9vdCAxMYIJAI3gSU2IIGPLMA8GA1UdEwEB
/wQFMAMBAf8wDQYJKoZIhvcNAQEFBQADgYEAZRXdBfSqhY+xELs28/gjsZ4/mUvu
LKL3PruRCNqUgIOznEdxsQXsmLIQhEPZ4a4jd31srFD2j5gJmZ8KdeFXII9NRvIX
RpRcrl2uclHXWbIC7s6xiATDWumrL2nXB5bU4qYMZ0ybytXprIwkzqRFXUrEHcYm
OXJCSKayIviQ6G0=
-----END CERTIFICATE-----

View File

@ -0,0 +1 @@
1000

View File

@ -0,0 +1,34 @@
V 350108161110Z 1000 unknown /C=DE/ST=Hamburg/O=OpenOffice.org/OU=Development/CN=\xC5\xB9\xC5\xBA\xC5\xBB\xC5\xBC\xC5\xBD\xC5\xBE \xEF\xAC\xB3 j\xCE\xAC\xCE\xAD\xCE\xAE
V 350108161614Z 1001 unknown /C=DE/ST=Hamburg/O=OpenOffice.org/OU=Development/CN=\xC5\xB9\xC5\xBA\xC5\xBB\xC5\xBC\xC5\xBD\xC5\xBE \xEF\xAD\x86 j\xCE\xAC\xCE\xAD\xCE\xAE
V 350112144417Z 1002 unknown /C=DE/ST=Hamburg/O=OpenOffice.org/OU=Development/CN=\x04\x0F\x04\x10\x04\x11\x04\x12\x04\x13\x04\x14
V 350112153942Z 1003 unknown /C=DE/ST=Hamburg/O=OpenOffice.org/OU=Development/CN=\x01y\x01z\x01{\x00 \x03\xA6\x03\xA7\x03\xA8\x03\xA9
V 350112160038Z 1004 unknown /C=DE/ST=Hamburg/O=OpenOffice.org/OU=Development/CN=\x00"\x00e\x00n\x00c\x00l\x00o\x00s\x00i\x00n\x00g\x00 \x00q\x00u\x00o\x00t\x00e\x00s\x00"
V 350112160547Z 1005 unknown /C=DE/ST=Hamburg/O=OpenOffice.org/OU=Development/CN=\x00"\x00"\x00d\x00o\x00u\x00b\x00l\x00e\x00 \x00e\x00n\x00c\x00l\x00o\x00s\x00i\x00n\x00g\x00 \x00q\x00u\x00o\x00t\x00e\x00s\x00"\x00"
V 350112160921Z 1006 unknown /C=DE/ST=Hamburg/O=OpenOffice.org/OU=Development/CN=\x00"\x00"\x00t\x00w\x00o\x00 \x00s\x00t\x00a\x00r\x00t\x00i\x00n\x00g\x00 \x00o\x00n\x00e\x00 \x00e\x00n\x00d\x00i\x00n\x00g\x00 \x00q\x00u\x00o\x00t\x00e\x00"
V 350112161153Z 1007 unknown /C=DE/ST=Hamburg/O=OpenOffice.org/OU=Development/CN=\x00"\x00s\x00t\x00a\x00r\x00t\x00i\x00n\x00g\x00 \x00q\x00u\x00o\x00t\x00e
V 350112161405Z 1008 unknown /C=DE/ST=Hamburg/O=OpenOffice.org/OU=Development/CN=\x00e\x00n\x00d\x00i\x00n\x00g\x00 \x00q\x00u\x00o\x00t\x00e\x00"
V 350112161631Z 1009 unknown /C=DE/ST=Hamburg/O=OpenOffice.org/OU=Development/CN=\x00m\x00i\x00d\x00d\x00l\x00e\x00 \x00"\x00q\x00u\x00o\x00t\x00e
V 350112161857Z 100A unknown /C=DE/ST=Hamburg/O=OpenOffice.org/OU=Development/CN=\x00d\x00o\x00u\x00b\x00l\x00e\x00 \x00"\x00"\x00m\x00i\x00d\x00d\x00l\x00e\x00 \x00q\x00u\x00o\x00t\x00e
V 350113090237Z 100B unknown /C=DE/ST=Hamburg/O=OpenOffice.org/OU=Development/CN=\x00p\x00a\x00r\x00t\x00i\x00a\x00l\x00l\x00y\x00 \x00"\x00e\x00n\x00c\x00l\x00o\x00s\x00i\x00n\x00g\x00 \x00q\x00u\x00o\x00t\x00e\x00"
V 350113094852Z 100C unknown /C=DE/ST=Hamburg/O=OpenOffice.org/OU=Development/CN=\x00"\x00U\x00s\x00e\x00r\x00 \x001\x001\x00,\x00 \x00s\x00t\x00a\x00r\x00t\x00i\x00n\x00g\x00 \x00q\x00u\x00o\x00t\x00e
V 350113095110Z 100D unknown /C=DE/ST=Hamburg/O=OpenOffice.org/OU=Development/CN=\x00U\x00s\x00e\x00r\x00 \x001\x002\x00,\x00 \x00e\x00n\x00d\x00i\x00n\x00g\x00 \x00q\x00u\x00o\x00t\x00e\x00"
V 350113095308Z 100E unknown /C=DE/ST=Hamburg/O=OpenOffice.org/OU=Development/CN=\x00"\x00U\x00s\x00e\x00r\x00 \x001\x003\x00,\x00 \x00e\x00n\x00c\x00l\x00o\x00s\x00i\x00n\x00g\x00 \x00q\x00u\x00o\x00t\x00e\x00s\x00"
V 350113095502Z 100F unknown /C=DE/ST=Hamburg/O=OpenOffice.org/OU=Development/CN=\x00U\x00s\x00e\x00r\x00 \x001\x004\x00 \x00"\x00,\x00m\x00i\x00d\x00d\x00l\x00e\x00 \x00q\x00u\x00o\x00t\x00e\x00"
V 350113095752Z 1010 unknown /C=DE/ST=Hamburg/O=OpenOffice.org/OU=Development/CN=\x00\\x00e\x00n\x00c\x00l\x00o\x00s\x00i\x00n\x00g\x00 \x00q\x00u\x00o\x00t\x00e\x00s\x00\
V 350113095922Z 1011 unknown /C=DE/ST=Hamburg/O=OpenOffice.org/OU=Development/CN=\x00\\x00\\x00d\x00o\x00u\x00b\x00l\x00e\x00 \x00e\x00n\x00c\x00l\x00o\x00s\x00i\x00n\x00g\x00 \x00q\x00u\x00o\x00t\x00e\x00s\x00\\x00\
V 350113100207Z 1012 unknown /C=DE/ST=Hamburg/O=OpenOffice.org/OU=Development/CN=\x00\\x00\\x00t\x00w\x00o\x00 \x00s\x00t\x00a\x00r\x00t\x00i\x00n\x00g\x00 \x00o\x00n\x00e\x00 \x00e\x00n\x00d\x00i\x00n\x00g\x00 \x00q\x00u\x00o\x00t\x00e\x00\
V 350113100436Z 1013 unknown /C=DE/ST=Hamburg/O=OpenOffice.org/OU=Development/CN=\x00\\x00s\x00t\x00a\x00r\x00t\x00i\x00n\x00g\x00 \x00q\x00u\x00o\x00t\x00e
V 350113100550Z 1014 unknown /C=DE/ST=Hamburg/O=OpenOffice.org/OU=Development/CN=\x00e\x00n\x00d\x00i\x00n\x00g\x00 \x00q\x00u\x00o\x00t\x00e\x00\
V 350113100707Z 1015 unknown /C=DE/ST=Hamburg/O=OpenOffice.org/OU=Development/CN=\x00m\x00i\x00d\x00d\x00l\x00e\x00 \x00\\x00q\x00u\x00o\x00t\x00e
V 350113100950Z 1016 unknown /C=DE/ST=Hamburg/O=OpenOffice.org/OU=Development/CN=\x00d\x00o\x00u\x00b\x00l\x00e\x00 \x00\\x00\\x00m\x00i\x00d\x00d\x00l\x00e\x00 \x00q\x00u\x00o\x00t\x00e
V 350113101153Z 1017 unknown /C=DE/ST=Hamburg/O=OpenOffice.org/OU=Development/CN=\x00p\x00a\x00r\x00t\x00i\x00a\x00l\x00l\x00y\x00 \x00\\x00e\x00n\x00c\x00l\x00o\x00s\x00i\x00n\x00g\x00 \x00q\x00u\x00o\x00t\x00e\x00\
V 350113101338Z 1018 unknown /C=DE/ST=Hamburg/O=OpenOffice.org/OU=Development/CN=\x00\\x00U\x00s\x00e\x00r\x00 \x002\x003\x00,\x00 \x00s\x00t\x00a\x00r\x00t\x00i\x00n\x00g\x00 \x00q\x00u\x00o\x00t\x00e
V 350113101450Z 1019 unknown /C=DE/ST=Hamburg/O=OpenOffice.org/OU=Development/CN=\x00U\x00s\x00e\x00r\x00 \x002\x004\x00,\x00 \x00e\x00n\x00d\x00i\x00n\x00g\x00 \x00q\x00u\x00o\x00t\x00e\x00\
V 350113101610Z 101A unknown /C=DE/ST=Hamburg/O=OpenOffice.org/OU=Development/CN=\x00\\x00U\x00s\x00e\x00r\x00 \x002\x005\x00,\x00 \x00e\x00n\x00c\x00l\x00o\x00s\x00i\x00n\x00g\x00 \x00q\x00u\x00o\x00t\x00e\x00\
V 350113101745Z 101B unknown /C=DE/ST=Hamburg/O=OpenOffice.org/OU=Development/CN=\x00U\x00s\x00e\x00r\x00 \x002\x006\x00\\x00,\x00 \x00m\x00i\x00d\x00d\x00l\x00e\x00 \x00q\x00u\x00o\x00t\x00e
V 350113101913Z 101C unknown /C=DE/ST=Hamburg/O=OpenOffice.org/OU=Development/CN=comma, comma, comma ,
V 350113102047Z 101D unknown /C=DE/ST=Hamburg/O=OpenOffice.org/OU=Development/CN=equal CN=User 28
V 350113102213Z 101E unknown /C=DE/ST=Hamburg/O=OpenOffice.org/OU=Development/CN=User 29+OU=ooo
V 350113102601Z 101F unknown /C=DE/ST=Hamburg/O=OpenOffice.org/OU=Development/CN=\x00U\x00s\x00e\x00r\x00 \x003\x000\x00<\x00 \x00>\x00#\x00;\x00 \x00"\x00+\x00"
V 350113102847Z 1020 unknown /C=DE/ST=Hamburg/O=OpenOffice.org/OU=Development/CN=\x00U\x00s\x00e\x00r\x00 \x003\x001\x00 \x00\\x00"\x00a\x00,\x00b\x00"\x00+\x00C\x00N\x00=\x00U\x00S\x00,\x00 \x00>\x00 \x00\\x00\\x00d\x00e\x00 \x00<
V 350113104059Z 1021 unknown /C=DE/ST=Hamburg/O=OpenOffice.org/OU=Development/CN=\x00U\x00s\x00e\x00r\x00 \x001\x004\x00 \x00"\x00,\x00m\x00i\x00d\x00d\x00l\x00e\x00 \x00q\x00u\x00o\x00t\x00e

View File

@ -0,0 +1 @@
unique_subject = yes

View File

@ -0,0 +1,57 @@
Certificate:
Data:
Version: 3 (0x2)
Serial Number: 4096 (0x1000)
Signature Algorithm: sha1WithRSAEncryption
Issuer: C=DE, ST=Hamburg, O=OpenOffice.org, OU=Development, CN=Root 11
Validity
Not Before: Jan 14 16:11:10 2010 GMT
Not After : Jan 8 16:11:10 2035 GMT
Subject: C=DE, ST=Hamburg, O=OpenOffice.org, OU=Development, CN=\xC5\xB9\xC5\xBA\xC5\xBB\xC5\xBC\xC5\xBD\xC5\xBE \xEF\xAC\xB3 j\xCE\xAC\xCE\xAD\xCE\xAE
Subject Public Key Info:
Public Key Algorithm: rsaEncryption
RSA Public Key: (1024 bit)
Modulus (1024 bit):
00:c5:8e:23:dc:00:60:ab:13:ac:00:15:c8:2f:13:
04:4a:05:15:38:1e:ea:43:cb:68:8e:e3:08:cc:a4:
bb:ef:78:3e:4a:d3:3c:89:50:95:c4:16:6f:a4:89:
97:4a:07:ad:17:b4:96:1e:54:87:82:ed:22:a4:15:
f7:cf:09:83:b7:4d:ee:75:70:8c:71:5a:b8:e7:4d:
27:b4:f8:eb:19:67:8f:58:3f:4c:5f:b3:ca:aa:bd:
5b:95:d7:b4:ba:d4:bc:0e:69:01:52:b9:8a:2d:55:
83:9e:4d:3f:01:0c:f1:d7:bd:c9:82:54:d2:71:d6:
51:9c:55:4c:a3:82:43:35:2f
Exponent: 65537 (0x10001)
X509v3 extensions:
X509v3 Key Usage:
Digital Signature, Non Repudiation, Key Encipherment
X509v3 Subject Key Identifier:
CA:DF:DA:1A:F7:9C:D8:41:19:34:69:EA:67:74:68:CA:A3:24:0F:9F
X509v3 Authority Key Identifier:
keyid:E8:6A:BB:C2:90:EA:6C:70:22:3E:F6:F6:48:1B:03:E6:BE:B7:A6:55
Signature Algorithm: sha1WithRSAEncryption
28:3a:db:4b:fd:15:4c:bb:ea:74:b4:53:4f:75:2a:92:3c:78:
b6:86:aa:39:bc:b0:67:3a:5a:00:f1:1e:74:5c:c7:2b:19:4f:
f4:c0:4d:ff:01:4c:b2:0f:b5:49:14:c3:9a:96:ce:61:b6:c7:
37:82:44:75:76:fc:bd:5d:74:f9:22:ae:f2:36:cb:20:b7:e3:
c8:c8:01:ae:d5:01:f6:5e:b4:cb:ca:76:fe:72:98:f3:0a:c3:
ac:76:fa:41:67:b4:5c:92:67:fa:ca:17:02:80:00:d8:b6:d5:
01:03:89:25:97:96:60:86:0c:0b:d8:64:94:c9:77:43:28:06:
f9:4e
-----BEGIN CERTIFICATE-----
MIIClzCCAgCgAwIBAgICEAAwDQYJKoZIhvcNAQEFBQAwYDELMAkGA1UEBhMCREUx
EDAOBgNVBAgTB0hhbWJ1cmcxFzAVBgNVBAoTDk9wZW5PZmZpY2Uub3JnMRQwEgYD
VQQLEwtEZXZlbG9wbWVudDEQMA4GA1UEAxMHUm9vdCAxMTAeFw0xMDAxMTQxNjEx
MTBaFw0zNTAxMDgxNjExMTBaMHExCzAJBgNVBAYTAkRFMRAwDgYDVQQIEwdIYW1i
dXJnMRcwFQYDVQQKEw5PcGVuT2ZmaWNlLm9yZzEUMBIGA1UECxMLRGV2ZWxvcG1l
bnQxITAfBgNVBAMUGMW5xbrFu8W8xb3FviDvrLMgas6szq3OrjCBnzANBgkqhkiG
9w0BAQEFAAOBjQAwgYkCgYEAxY4j3ABgqxOsABXILxMESgUVOB7qQ8tojuMIzKS7
73g+StM8iVCVxBZvpImXSgetF7SWHlSHgu0ipBX3zwmDt03udXCMcVq4500ntPjr
GWePWD9MX7PKqr1blde0utS8DmkBUrmKLVWDnk0/AQzx173JglTScdZRnFVMo4JD
NS8CAwEAAaNPME0wCwYDVR0PBAQDAgXgMB0GA1UdDgQWBBTK39oa95zYQRk0aepn
dGjKoyQPnzAfBgNVHSMEGDAWgBToarvCkOpscCI+9vZIGwPmvremVTANBgkqhkiG
9w0BAQUFAAOBgQAoOttL/RVMu+p0tFNPdSqSPHi2hqo5vLBnOloA8R50XMcrGU/0
wE3/AUyyD7VJFMOals5htsc3gkR1dvy9XXT5Iq7yNssgt+PIyAGu1QH2XrTLynb+
cpjzCsOsdvpBZ7Rckmf6yhcCgADYttUBA4kll5ZghgwL2GSUyXdDKAb5Tg==
-----END CERTIFICATE-----

View File

@ -0,0 +1,60 @@
Certificate:
Data:
Version: 3 (0x2)
Serial Number: 4098 (0x1002)
Signature Algorithm: sha1WithRSAEncryption
Issuer: C=DE, ST=Hamburg, O=OpenOffice.org, OU=Development, CN=Root 11
Validity
Not Before: Jan 18 14:44:17 2010 GMT
Not After : Jan 12 14:44:17 2035 GMT
Subject: C=DE, ST=Hamburg, O=OpenOffice.org, OU=Development, CN=\x04\x0F\x04\x10\x04\x11\x04\x12\x04\x13\x04\x14
Subject Public Key Info:
Public Key Algorithm: rsaEncryption
RSA Public Key: (1024 bit)
Modulus (1024 bit):
00:b4:d3:fd:a0:56:2b:d9:72:66:e3:fc:4b:5b:70:
fb:9c:23:10:0b:b9:8a:c4:d1:dd:1d:37:cd:20:f4:
9d:52:c3:8f:80:14:26:c4:3e:dc:3d:af:38:86:70:
2f:e1:54:1c:a6:5e:b6:6a:2d:73:b4:2d:88:7c:ed:
eb:63:34:bf:ef:d0:a8:e0:00:ea:f0:24:50:68:3b:
ff:03:4a:22:e0:eb:5c:a4:e8:65:e4:c7:e7:38:e9:
ce:0c:44:3e:36:08:fe:82:d8:50:b9:13:43:3b:17:
77:09:ef:7b:cc:9f:b4:7d:5d:f7:ab:8e:ab:c0:11:
bc:7a:07:ea:98:51:c0:27:1f
Exponent: 65537 (0x10001)
X509v3 extensions:
X509v3 Key Usage:
Digital Signature, Non Repudiation, Key Encipherment
X509v3 Subject Key Identifier:
49:1F:9A:43:D9:43:B9:89:0C:00:D9:90:C8:BC:9C:67:CD:8D:3E:C6
X509v3 Authority Key Identifier:
keyid:E8:6A:BB:C2:90:EA:6C:70:22:3E:F6:F6:48:1B:03:E6:BE:B7:A6:55
X509v3 Subject Alternative Name:
DirName:/CN=User 2 Root 11
Signature Algorithm: sha1WithRSAEncryption
03:bc:24:ba:71:8b:4f:cc:3a:60:5a:04:13:15:4e:b0:79:e7:
94:6c:9b:3b:4c:5d:d8:26:75:f5:94:04:71:5a:3e:b9:8c:5f:
b5:3d:e0:bb:8b:64:71:8f:0d:9a:99:b8:ff:ec:14:c0:c0:ca:
63:5a:4e:1d:75:77:7a:2f:fb:12:90:25:44:ba:d8:2f:03:39:
86:ef:88:4a:cc:69:79:0b:ff:a6:66:83:45:08:17:0b:0c:05:
f9:25:7c:6a:30:05:b3:61:df:1a:fe:2c:ca:49:e9:73:bd:b3:
11:6b:bf:04:b0:a6:46:76:21:40:95:5c:78:b3:aa:4b:fd:03:
ee:51
-----BEGIN CERTIFICATE-----
MIICszCCAhygAwIBAgICEAIwDQYJKoZIhvcNAQEFBQAwYDELMAkGA1UEBhMCREUx
EDAOBgNVBAgTB0hhbWJ1cmcxFzAVBgNVBAoTDk9wZW5PZmZpY2Uub3JnMRQwEgYD
VQQLEwtEZXZlbG9wbWVudDEQMA4GA1UEAxMHUm9vdCAxMTAeFw0xMDAxMTgxNDQ0
MTdaFw0zNTAxMTIxNDQ0MTdaMGUxCzAJBgNVBAYTAkRFMRAwDgYDVQQIEwdIYW1i
dXJnMRcwFQYDVQQKEw5PcGVuT2ZmaWNlLm9yZzEUMBIGA1UECxMLRGV2ZWxvcG1l
bnQxFTATBgNVBAMeDAQPBBAEEQQSBBMEFDCBnzANBgkqhkiG9w0BAQEFAAOBjQAw
gYkCgYEAtNP9oFYr2XJm4/xLW3D7nCMQC7mKxNHdHTfNIPSdUsOPgBQmxD7cPa84
hnAv4VQcpl62ai1ztC2IfO3rYzS/79Co4ADq8CRQaDv/A0oi4OtcpOhl5MfnOOnO
DEQ+Ngj+gthQuRNDOxd3Ce97zJ+0fV33q46rwBG8egfqmFHAJx8CAwEAAaN3MHUw
CwYDVR0PBAQDAgXgMB0GA1UdDgQWBBRJH5pD2UO5iQwA2ZDIvJxnzY0+xjAfBgNV
HSMEGDAWgBToarvCkOpscCI+9vZIGwPmvremVTAmBgNVHREEHzAdpBswGTEXMBUG
A1UEAxMOVXNlciAyIFJvb3QgMTEwDQYJKoZIhvcNAQEFBQADgYEAA7wkunGLT8w6
YFoEExVOsHnnlGybO0xd2CZ19ZQEcVo+uYxftT3gu4tkcY8Nmpm4/+wUwMDKY1pO
HXV3ei/7EpAlRLrYLwM5hu+ISsxpeQv/pmaDRQgXCwwF+SV8ajAFs2HfGv4syknp
c72zEWu/BLCmRnYhQJVceLOqS/0D7lE=
-----END CERTIFICATE-----

View File

@ -0,0 +1,60 @@
Certificate:
Data:
Version: 3 (0x2)
Serial Number: 4099 (0x1003)
Signature Algorithm: sha1WithRSAEncryption
Issuer: C=DE, ST=Hamburg, O=OpenOffice.org, OU=Development, CN=Root 11
Validity
Not Before: Jan 18 15:39:42 2010 GMT
Not After : Jan 12 15:39:42 2035 GMT
Subject: C=DE, ST=Hamburg, O=OpenOffice.org, OU=Development, CN=\x01y\x01z\x01{\x00 \x03\xA6\x03\xA7\x03\xA8\x03\xA9
Subject Public Key Info:
Public Key Algorithm: rsaEncryption
RSA Public Key: (1024 bit)
Modulus (1024 bit):
00:d6:d8:62:3c:69:c9:dd:93:b3:e9:65:63:89:03:
4e:f8:8a:e1:8b:9d:92:c6:43:ca:8e:af:fd:6e:9c:
c7:66:31:48:f4:ce:5e:be:38:c5:6c:1b:48:c9:61:
f5:78:8a:e9:74:ac:a8:98:9c:83:f9:b0:74:e3:25:
7c:5a:bb:df:5f:73:ef:fc:a0:dc:6a:ac:07:a2:b8:
52:ea:7a:42:ba:9f:74:3c:00:cc:26:46:ba:90:5d:
45:78:02:57:e7:47:9f:8e:94:9c:5a:31:ab:f3:ff:
bc:9f:7f:d9:b0:a6:f6:86:70:a6:9d:52:ff:c8:19:
47:88:75:78:6a:73:d5:97:e9
Exponent: 65537 (0x10001)
X509v3 extensions:
X509v3 Key Usage:
Digital Signature, Non Repudiation, Key Encipherment
X509v3 Subject Key Identifier:
E3:01:F6:1E:51:6D:FC:DB:BF:82:A9:12:21:4B:E2:46:FF:E8:EE:FF
X509v3 Authority Key Identifier:
keyid:E8:6A:BB:C2:90:EA:6C:70:22:3E:F6:F6:48:1B:03:E6:BE:B7:A6:55
X509v3 Subject Alternative Name:
DirName:/CN=User 1 Root 11
Signature Algorithm: sha1WithRSAEncryption
68:f0:88:18:d5:98:63:da:42:39:47:bf:51:22:f6:0b:8e:46:
b0:8c:83:b0:4d:07:a4:e3:a9:66:76:4d:41:23:1a:6b:dc:d8:
d1:85:b1:bf:4f:f9:e6:01:4a:36:a9:a3:26:2d:0b:33:cc:36:
97:c6:40:b6:77:26:1c:06:f2:1b:fa:0a:ef:5c:61:8d:0d:9c:
3c:d3:0f:db:dd:60:69:8c:24:c6:70:bc:f8:3b:38:19:90:7a:
f3:4f:7e:7c:b7:69:b6:0f:55:e1:4b:da:77:cd:b1:fe:5f:f1:
c1:8a:f8:3d:26:10:3d:40:6f:83:17:0a:d8:dd:da:a1:27:10:
a1:73
-----BEGIN CERTIFICATE-----
MIICtzCCAiCgAwIBAgICEAMwDQYJKoZIhvcNAQEFBQAwYDELMAkGA1UEBhMCREUx
EDAOBgNVBAgTB0hhbWJ1cmcxFzAVBgNVBAoTDk9wZW5PZmZpY2Uub3JnMRQwEgYD
VQQLEwtEZXZlbG9wbWVudDEQMA4GA1UEAxMHUm9vdCAxMTAeFw0xMDAxMTgxNTM5
NDJaFw0zNTAxMTIxNTM5NDJaMGkxCzAJBgNVBAYTAkRFMRAwDgYDVQQIEwdIYW1i
dXJnMRcwFQYDVQQKEw5PcGVuT2ZmaWNlLm9yZzEUMBIGA1UECxMLRGV2ZWxvcG1l
bnQxGTAXBgNVBAMeEAF5AXoBewAgA6YDpwOoA6kwgZ8wDQYJKoZIhvcNAQEBBQAD
gY0AMIGJAoGBANbYYjxpyd2Ts+llY4kDTviK4YudksZDyo6v/W6cx2YxSPTOXr44
xWwbSMlh9XiK6XSsqJicg/mwdOMlfFq7319z7/yg3GqsB6K4Uup6QrqfdDwAzCZG
upBdRXgCV+dHn46UnFoxq/P/vJ9/2bCm9oZwpp1S/8gZR4h1eGpz1ZfpAgMBAAGj
dzB1MAsGA1UdDwQEAwIF4DAdBgNVHQ4EFgQU4wH2HlFt/Nu/gqkSIUviRv/o7v8w
HwYDVR0jBBgwFoAU6Gq7wpDqbHAiPvb2SBsD5r63plUwJgYDVR0RBB8wHaQbMBkx
FzAVBgNVBAMTDlVzZXIgMSBSb290IDExMA0GCSqGSIb3DQEBBQUAA4GBAGjwiBjV
mGPaQjlHv1Ei9guORrCMg7BNB6TjqWZ2TUEjGmvc2NGFsb9P+eYBSjapoyYtCzPM
NpfGQLZ3JhwG8hv6Cu9cYY0NnDzTD9vdYGmMJMZwvPg7OBmQevNPfny3abYPVeFL
2nfNsf5f8cGK+D0mED1Ab4MXCtjd2qEnEKFz
-----END CERTIFICATE-----

View File

@ -0,0 +1,60 @@
Certificate:
Data:
Version: 3 (0x2)
Serial Number: 4100 (0x1004)
Signature Algorithm: sha1WithRSAEncryption
Issuer: C=DE, ST=Hamburg, O=OpenOffice.org, OU=Development, CN=Root 11
Validity
Not Before: Jan 18 16:00:38 2010 GMT
Not After : Jan 12 16:00:38 2035 GMT
Subject: C=DE, ST=Hamburg, O=OpenOffice.org, OU=Development, CN=\x00"\x00e\x00n\x00c\x00l\x00o\x00s\x00i\x00n\x00g\x00 \x00q\x00u\x00o\x00t\x00e\x00s\x00"
Subject Public Key Info:
Public Key Algorithm: rsaEncryption
RSA Public Key: (1024 bit)
Modulus (1024 bit):
00:c9:ff:37:16:4d:7a:ad:59:bd:f2:c4:dc:4f:79:
6a:f6:21:c7:ef:cd:af:f1:39:34:24:92:f4:46:d3:
8b:43:31:55:11:3e:22:2b:85:19:38:ed:0b:35:3c:
73:fc:b9:17:e8:73:99:21:a2:20:30:b4:e9:11:c6:
7a:61:fa:fa:fe:eb:c8:30:c4:73:5f:77:f2:fc:42:
b7:10:29:ac:9e:8a:c2:df:25:9b:44:17:05:a3:39:
d9:1b:58:62:fb:2c:86:07:f7:f0:28:7b:5a:38:1b:
6a:de:88:fb:ad:32:f4:53:e2:a1:c5:0f:68:db:64:
ae:39:2a:5e:02:d0:b5:38:07
Exponent: 65537 (0x10001)
X509v3 extensions:
X509v3 Key Usage:
Digital Signature, Non Repudiation, Key Encipherment
X509v3 Subject Key Identifier:
86:2F:46:D0:A9:F9:3F:22:BD:57:83:51:35:F9:67:11:A2:00:AB:33
X509v3 Authority Key Identifier:
keyid:E8:6A:BB:C2:90:EA:6C:70:22:3E:F6:F6:48:1B:03:E6:BE:B7:A6:55
X509v3 Subject Alternative Name:
DirName:/CN=User 3 Root 11
Signature Algorithm: sha1WithRSAEncryption
bb:f6:61:ae:30:94:3a:4a:d6:d5:cb:b5:50:bb:ca:0e:ab:9f:
09:e9:78:d4:2f:20:fe:18:4e:d8:61:db:97:28:a9:d9:dc:e5:
06:f8:6c:41:c2:5a:95:53:47:7e:a7:73:c9:45:4f:6b:30:fc:
fd:17:9a:7b:a9:d8:27:57:a9:fd:8d:e7:7e:4b:3e:98:11:42:
00:39:1a:55:4b:3d:a5:de:75:3c:43:5a:33:10:d3:cf:4e:04:
0a:71:d4:93:2b:0b:2b:15:82:7b:04:46:9b:50:da:18:84:66:
31:75:36:5b:09:eb:82:5d:7d:e1:35:a3:a4:6c:b2:ac:c8:fa:
bd:5f
-----BEGIN CERTIFICATE-----
MIICyzCCAjSgAwIBAgICEAQwDQYJKoZIhvcNAQEFBQAwYDELMAkGA1UEBhMCREUx
EDAOBgNVBAgTB0hhbWJ1cmcxFzAVBgNVBAoTDk9wZW5PZmZpY2Uub3JnMRQwEgYD
VQQLEwtEZXZlbG9wbWVudDEQMA4GA1UEAxMHUm9vdCAxMTAeFw0xMDAxMTgxNjAw
MzhaFw0zNTAxMTIxNjAwMzhaMH0xCzAJBgNVBAYTAkRFMRAwDgYDVQQIEwdIYW1i
dXJnMRcwFQYDVQQKEw5PcGVuT2ZmaWNlLm9yZzEUMBIGA1UECxMLRGV2ZWxvcG1l
bnQxLTArBgNVBAMeJAAiAGUAbgBjAGwAbwBzAGkAbgBnACAAcQB1AG8AdABlAHMA
IjCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEAyf83Fk16rVm98sTcT3lq9iHH
782v8Tk0JJL0RtOLQzFVET4iK4UZOO0LNTxz/LkX6HOZIaIgMLTpEcZ6Yfr6/uvI
MMRzX3fy/EK3ECmsnorC3yWbRBcFoznZG1hi+yyGB/fwKHtaOBtq3oj7rTL0U+Kh
xQ9o22SuOSpeAtC1OAcCAwEAAaN3MHUwCwYDVR0PBAQDAgXgMB0GA1UdDgQWBBSG
L0bQqfk/Ir1Xg1E1+WcRogCrMzAfBgNVHSMEGDAWgBToarvCkOpscCI+9vZIGwPm
vremVTAmBgNVHREEHzAdpBswGTEXMBUGA1UEAxMOVXNlciAzIFJvb3QgMTEwDQYJ
KoZIhvcNAQEFBQADgYEAu/ZhrjCUOkrW1cu1ULvKDqufCel41C8g/hhO2GHblyip
2dzlBvhsQcJalVNHfqdzyUVPazD8/Reae6nYJ1ep/Y3nfks+mBFCADkaVUs9pd51
PENaMxDTz04ECnHUkysLKxWCewRGm1DaGIRmMXU2Wwnrgl194TWjpGyyrMj6vV8=
-----END CERTIFICATE-----

View File

@ -0,0 +1,61 @@
Certificate:
Data:
Version: 3 (0x2)
Serial Number: 4101 (0x1005)
Signature Algorithm: sha1WithRSAEncryption
Issuer: C=DE, ST=Hamburg, O=OpenOffice.org, OU=Development, CN=Root 11
Validity
Not Before: Jan 18 16:05:47 2010 GMT
Not After : Jan 12 16:05:47 2035 GMT
Subject: C=DE, ST=Hamburg, O=OpenOffice.org, OU=Development, CN=\x00"\x00"\x00d\x00o\x00u\x00b\x00l\x00e\x00 \x00e\x00n\x00c\x00l\x00o\x00s\x00i\x00n\x00g\x00 \x00q\x00u\x00o\x00t\x00e\x00s\x00"\x00"
Subject Public Key Info:
Public Key Algorithm: rsaEncryption
RSA Public Key: (1024 bit)
Modulus (1024 bit):
00:de:4d:31:93:c5:1b:7c:2b:85:86:da:89:3d:06:
6f:6d:44:a5:de:6c:6a:06:28:b0:96:7b:40:34:01:
af:e4:b1:f4:93:f1:25:78:b0:43:ea:92:2a:87:60:
e8:be:7e:c9:b6:02:f8:14:93:1b:b8:5f:cb:2c:24:
e2:80:24:f0:5c:6d:77:f2:dc:ef:90:d6:d1:78:22:
53:f0:7f:45:ad:f2:1a:9d:25:08:13:c8:62:6b:9e:
88:79:3d:9e:b4:0a:05:11:79:7d:a1:b2:46:89:f3:
45:ce:f3:22:2e:17:ab:e1:a9:b1:04:93:3b:f3:ca:
e6:60:c0:fd:91:7f:34:80:65
Exponent: 65537 (0x10001)
X509v3 extensions:
X509v3 Key Usage:
Digital Signature, Non Repudiation, Key Encipherment
X509v3 Subject Key Identifier:
C1:6E:6A:FB:5A:B1:0C:67:07:C8:7E:F1:8D:86:F6:D0:27:56:6D:73
X509v3 Authority Key Identifier:
keyid:E8:6A:BB:C2:90:EA:6C:70:22:3E:F6:F6:48:1B:03:E6:BE:B7:A6:55
X509v3 Subject Alternative Name:
DirName:/CN=User 4 Root 11
Signature Algorithm: sha1WithRSAEncryption
61:72:4b:33:1d:60:91:08:19:4f:ff:ec:8e:9e:83:71:d7:00:
96:0a:b5:82:b7:8c:a6:3f:70:64:36:ac:25:a7:f1:a9:83:f1:
63:f8:29:06:fa:58:86:8a:fd:25:9e:77:38:dd:c7:3b:cd:68:
91:8e:f4:57:42:c9:6b:88:87:ec:24:57:38:84:fb:c0:d9:bc:
6c:1c:6e:9d:9d:b9:da:cc:7e:fe:f9:bd:29:be:14:26:6f:63:
1f:6f:6a:f1:dd:fd:d2:03:69:f2:36:e1:35:e0:57:72:d5:e3:
09:ee:6a:08:45:b4:73:e9:d1:18:c2:38:1d:86:53:53:6d:bf:
f0:1e
-----BEGIN CERTIFICATE-----
MIIC3jCCAkegAwIBAgICEAUwDQYJKoZIhvcNAQEFBQAwYDELMAkGA1UEBhMCREUx
EDAOBgNVBAgTB0hhbWJ1cmcxFzAVBgNVBAoTDk9wZW5PZmZpY2Uub3JnMRQwEgYD
VQQLEwtEZXZlbG9wbWVudDEQMA4GA1UEAxMHUm9vdCAxMTAeFw0xMDAxMTgxNjA1
NDdaFw0zNTAxMTIxNjA1NDdaMIGPMQswCQYDVQQGEwJERTEQMA4GA1UECBMHSGFt
YnVyZzEXMBUGA1UEChMOT3Blbk9mZmljZS5vcmcxFDASBgNVBAsTC0RldmVsb3Bt
ZW50MT8wPQYDVQQDHjYAIgAiAGQAbwB1AGIAbABlACAAZQBuAGMAbABvAHMAaQBu
AGcAIABxAHUAbwB0AGUAcwAiACIwgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGB
AN5NMZPFG3wrhYbaiT0Gb21Epd5sagYosJZ7QDQBr+Sx9JPxJXiwQ+qSKodg6L5+
ybYC+BSTG7hfyywk4oAk8Fxtd/Lc75DW0XgiU/B/Ra3yGp0lCBPIYmueiHk9nrQK
BRF5faGyRonzRc7zIi4Xq+GpsQSTO/PK5mDA/ZF/NIBlAgMBAAGjdzB1MAsGA1Ud
DwQEAwIF4DAdBgNVHQ4EFgQUwW5q+1qxDGcHyH7xjYb20CdWbXMwHwYDVR0jBBgw
FoAU6Gq7wpDqbHAiPvb2SBsD5r63plUwJgYDVR0RBB8wHaQbMBkxFzAVBgNVBAMT
DlVzZXIgNCBSb290IDExMA0GCSqGSIb3DQEBBQUAA4GBAGFySzMdYJEIGU//7I6e
g3HXAJYKtYK3jKY/cGQ2rCWn8amD8WP4KQb6WIaK/SWedzjdxzvNaJGO9FdCyWuI
h+wkVziE+8DZvGwcbp2dudrMfv75vSm+FCZvYx9vavHd/dIDafI24TXgV3LV4wnu
aghFtHPp0RjCOB2GU1Ntv/Ae
-----END CERTIFICATE-----

View File

@ -0,0 +1,61 @@
Certificate:
Data:
Version: 3 (0x2)
Serial Number: 4102 (0x1006)
Signature Algorithm: sha1WithRSAEncryption
Issuer: C=DE, ST=Hamburg, O=OpenOffice.org, OU=Development, CN=Root 11
Validity
Not Before: Jan 18 16:09:21 2010 GMT
Not After : Jan 12 16:09:21 2035 GMT
Subject: C=DE, ST=Hamburg, O=OpenOffice.org, OU=Development, CN=\x00"\x00"\x00t\x00w\x00o\x00 \x00s\x00t\x00a\x00r\x00t\x00i\x00n\x00g\x00 \x00o\x00n\x00e\x00 \x00e\x00n\x00d\x00i\x00n\x00g\x00 \x00q\x00u\x00o\x00t\x00e\x00"
Subject Public Key Info:
Public Key Algorithm: rsaEncryption
RSA Public Key: (1024 bit)
Modulus (1024 bit):
00:d1:a4:91:c7:28:84:f8:54:63:09:1f:bc:2e:4e:
a3:be:54:01:42:2e:f7:ef:4f:b8:46:a9:35:b1:b3:
29:0e:8b:f7:b5:fa:b7:71:5b:33:03:ac:e6:b5:f6:
ba:f5:ba:21:72:ed:7d:ea:f0:f1:2c:55:2a:a9:c6:
d8:54:ef:12:f0:f5:37:ca:57:b2:3c:ce:7c:5a:57:
86:68:a2:51:82:80:bd:58:a5:04:1c:e8:cf:f6:5b:
4e:d2:6a:79:63:eb:ac:52:7c:61:8c:fe:0a:6b:b2:
f6:16:9c:94:ae:a6:f6:69:b9:d5:0b:26:0d:01:7f:
62:d2:58:c2:02:53:25:63:0d
Exponent: 65537 (0x10001)
X509v3 extensions:
X509v3 Key Usage:
Digital Signature, Non Repudiation, Key Encipherment
X509v3 Subject Key Identifier:
45:DF:D7:35:D1:13:E4:8F:E3:0D:E3:7E:A9:9A:5D:56:00:64:4E:43
X509v3 Authority Key Identifier:
keyid:E8:6A:BB:C2:90:EA:6C:70:22:3E:F6:F6:48:1B:03:E6:BE:B7:A6:55
X509v3 Subject Alternative Name:
DirName:/CN=User 5 Root 11
Signature Algorithm: sha1WithRSAEncryption
9d:bd:dc:dc:8e:a8:e8:e4:15:cb:14:c1:6a:ab:d8:ab:e6:e5:
4f:f5:a8:8b:2c:ab:80:e2:31:f9:89:d8:12:ba:9c:4f:b3:f5:
bb:7e:ee:8b:df:58:d3:b2:ee:f8:c5:46:c3:5d:2e:a9:35:d0:
7a:1e:80:18:14:4d:78:6e:f1:c8:9a:51:db:86:3e:2c:04:4a:
0a:2f:f1:7a:01:e3:1b:31:d7:1d:f1:32:c4:04:db:b9:7e:c4:
fd:b0:c1:41:3f:8a:b3:88:4f:4a:9c:a6:38:11:2a:4a:0f:8b:
d0:9a:8a:2c:33:fe:7f:42:b5:93:8d:54:df:de:2b:b1:08:5c:
d9:0d
-----BEGIN CERTIFICATE-----
MIIC6DCCAlGgAwIBAgICEAYwDQYJKoZIhvcNAQEFBQAwYDELMAkGA1UEBhMCREUx
EDAOBgNVBAgTB0hhbWJ1cmcxFzAVBgNVBAoTDk9wZW5PZmZpY2Uub3JnMRQwEgYD
VQQLEwtEZXZlbG9wbWVudDEQMA4GA1UEAxMHUm9vdCAxMTAeFw0xMDAxMTgxNjA5
MjFaFw0zNTAxMTIxNjA5MjFaMIGZMQswCQYDVQQGEwJERTEQMA4GA1UECBMHSGFt
YnVyZzEXMBUGA1UEChMOT3Blbk9mZmljZS5vcmcxFDASBgNVBAsTC0RldmVsb3Bt
ZW50MUkwRwYDVQQDHkAAIgAiAHQAdwBvACAAcwB0AGEAcgB0AGkAbgBnACAAbwBu
AGUAIABlAG4AZABpAG4AZwAgAHEAdQBvAHQAZQAiMIGfMA0GCSqGSIb3DQEBAQUA
A4GNADCBiQKBgQDRpJHHKIT4VGMJH7wuTqO+VAFCLvfvT7hGqTWxsykOi/e1+rdx
WzMDrOa19rr1uiFy7X3q8PEsVSqpxthU7xLw9TfKV7I8znxaV4ZoolGCgL1YpQQc
6M/2W07Sanlj66xSfGGM/gprsvYWnJSupvZpudULJg0Bf2LSWMICUyVjDQIDAQAB
o3cwdTALBgNVHQ8EBAMCBeAwHQYDVR0OBBYEFEXf1zXRE+SP4w3jfqmaXVYAZE5D
MB8GA1UdIwQYMBaAFOhqu8KQ6mxwIj729kgbA+a+t6ZVMCYGA1UdEQQfMB2kGzAZ
MRcwFQYDVQQDEw5Vc2VyIDUgUm9vdCAxMTANBgkqhkiG9w0BAQUFAAOBgQCdvdzc
jqjo5BXLFMFqq9ir5uVP9aiLLKuA4jH5idgSupxPs/W7fu6L31jTsu74xUbDXS6p
NdB6HoAYFE14bvHImlHbhj4sBEoKL/F6AeMbMdcd8TLEBNu5fsT9sMFBP4qziE9K
nKY4ESpKD4vQmoosM/5/QrWTjVTf3iuxCFzZDQ==
-----END CERTIFICATE-----

View File

@ -0,0 +1,60 @@
Certificate:
Data:
Version: 3 (0x2)
Serial Number: 4103 (0x1007)
Signature Algorithm: sha1WithRSAEncryption
Issuer: C=DE, ST=Hamburg, O=OpenOffice.org, OU=Development, CN=Root 11
Validity
Not Before: Jan 18 16:11:53 2010 GMT
Not After : Jan 12 16:11:53 2035 GMT
Subject: C=DE, ST=Hamburg, O=OpenOffice.org, OU=Development, CN=\x00"\x00s\x00t\x00a\x00r\x00t\x00i\x00n\x00g\x00 \x00q\x00u\x00o\x00t\x00e
Subject Public Key Info:
Public Key Algorithm: rsaEncryption
RSA Public Key: (1024 bit)
Modulus (1024 bit):
00:d1:99:9c:20:2e:65:ee:0f:ce:cb:8a:d8:70:c8:
04:3c:ac:2f:14:7c:6c:8f:5e:95:36:f8:53:74:5b:
88:bf:a1:43:73:04:ab:3a:42:b4:7c:2c:3c:3b:63:
7e:ef:82:c5:bb:b1:28:9b:8b:b7:29:72:3d:30:08:
e9:a2:d7:4b:08:e2:2e:e6:d4:9f:75:29:31:23:be:
b4:30:5d:94:30:41:38:a1:d5:34:bc:69:f5:d8:8d:
c6:08:cc:28:4a:92:22:2b:19:89:f5:ad:7c:49:89:
b3:63:c6:e5:6c:86:d7:62:05:1b:97:db:2d:fb:c2:
47:e5:51:a6:f0:50:6f:e3:53
Exponent: 65537 (0x10001)
X509v3 extensions:
X509v3 Key Usage:
Digital Signature, Non Repudiation, Key Encipherment
X509v3 Subject Key Identifier:
5F:DA:34:F6:6F:BA:9E:12:99:DC:02:2A:4C:3E:8C:0D:14:A1:9B:2B
X509v3 Authority Key Identifier:
keyid:E8:6A:BB:C2:90:EA:6C:70:22:3E:F6:F6:48:1B:03:E6:BE:B7:A6:55
X509v3 Subject Alternative Name:
DirName:/CN=User 6 Root 11
Signature Algorithm: sha1WithRSAEncryption
24:af:11:b6:1a:5c:d1:bf:70:93:85:c0:2e:10:96:4d:b7:ad:
4e:d7:c4:7e:87:a1:3b:20:d7:bf:04:07:cc:91:13:0c:ad:66:
08:d6:2e:b6:d0:aa:d0:45:0e:c0:92:3d:7c:a6:82:19:04:3c:
9a:b3:5e:e8:fe:9e:5c:d6:17:75:73:e3:3c:64:0c:ae:5d:92:
2a:eb:0e:ef:04:f5:ce:a5:7f:1f:2f:1d:05:a0:70:f4:24:80:
c3:38:35:2d:e5:ac:a7:11:4a:3e:a2:b2:d1:14:91:ba:b0:d8:
5f:be:80:8a:34:2c:72:fb:00:47:88:47:9e:34:65:12:ad:9f:
ff:99
-----BEGIN CERTIFICATE-----
MIICxTCCAi6gAwIBAgICEAcwDQYJKoZIhvcNAQEFBQAwYDELMAkGA1UEBhMCREUx
EDAOBgNVBAgTB0hhbWJ1cmcxFzAVBgNVBAoTDk9wZW5PZmZpY2Uub3JnMRQwEgYD
VQQLEwtEZXZlbG9wbWVudDEQMA4GA1UEAxMHUm9vdCAxMTAeFw0xMDAxMTgxNjEx
NTNaFw0zNTAxMTIxNjExNTNaMHcxCzAJBgNVBAYTAkRFMRAwDgYDVQQIEwdIYW1i
dXJnMRcwFQYDVQQKEw5PcGVuT2ZmaWNlLm9yZzEUMBIGA1UECxMLRGV2ZWxvcG1l
bnQxJzAlBgNVBAMeHgAiAHMAdABhAHIAdABpAG4AZwAgAHEAdQBvAHQAZTCBnzAN
BgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEA0ZmcIC5l7g/Oy4rYcMgEPKwvFHxsj16V
NvhTdFuIv6FDcwSrOkK0fCw8O2N+74LFu7Eom4u3KXI9MAjpotdLCOIu5tSfdSkx
I760MF2UMEE4odU0vGn12I3GCMwoSpIiKxmJ9a18SYmzY8blbIbXYgUbl9st+8JH
5VGm8FBv41MCAwEAAaN3MHUwCwYDVR0PBAQDAgXgMB0GA1UdDgQWBBRf2jT2b7qe
EpncAipMPowNFKGbKzAfBgNVHSMEGDAWgBToarvCkOpscCI+9vZIGwPmvremVTAm
BgNVHREEHzAdpBswGTEXMBUGA1UEAxMOVXNlciA2IFJvb3QgMTEwDQYJKoZIhvcN
AQEFBQADgYEAJK8Rthpc0b9wk4XALhCWTbetTtfEfoehOyDXvwQHzJETDK1mCNYu
ttCq0EUOwJI9fKaCGQQ8mrNe6P6eXNYXdXPjPGQMrl2SKusO7wT1zqV/Hy8dBaBw
9CSAwzg1LeWspxFKPqKy0RSRurDYX76AijQscvsAR4hHnjRlEq2f/5k=
-----END CERTIFICATE-----

View File

@ -0,0 +1,60 @@
Certificate:
Data:
Version: 3 (0x2)
Serial Number: 4104 (0x1008)
Signature Algorithm: sha1WithRSAEncryption
Issuer: C=DE, ST=Hamburg, O=OpenOffice.org, OU=Development, CN=Root 11
Validity
Not Before: Jan 18 16:14:05 2010 GMT
Not After : Jan 12 16:14:05 2035 GMT
Subject: C=DE, ST=Hamburg, O=OpenOffice.org, OU=Development, CN=\x00e\x00n\x00d\x00i\x00n\x00g\x00 \x00q\x00u\x00o\x00t\x00e\x00"
Subject Public Key Info:
Public Key Algorithm: rsaEncryption
RSA Public Key: (1024 bit)
Modulus (1024 bit):
00:a6:a8:3f:60:a7:9a:3b:20:c9:2c:8c:4f:cd:11:
1f:0d:a9:2a:2c:eb:12:80:0c:55:8a:4d:06:ef:b2:
5f:2e:47:be:0d:10:22:8a:15:57:29:4a:90:63:f9:
1c:13:85:47:c7:c9:b9:76:09:10:a9:b1:94:5c:8d:
c9:f4:01:26:43:e4:d4:98:d6:00:1a:d4:cd:2a:d1:
cd:7e:4c:4e:ab:18:78:5a:fb:b2:ec:a3:87:a1:0e:
84:3f:70:cf:ca:02:24:c8:d7:1b:83:a3:ac:a5:f0:
10:c5:de:b7:a2:6c:0b:0c:9d:ab:32:a3:1a:c9:ae:
9b:48:a8:65:cd:50:db:0b:cf
Exponent: 65537 (0x10001)
X509v3 extensions:
X509v3 Key Usage:
Digital Signature, Non Repudiation, Key Encipherment
X509v3 Subject Key Identifier:
91:32:56:26:62:63:A1:32:B0:BC:D0:91:F1:D8:F2:94:CB:10:F1:91
X509v3 Authority Key Identifier:
keyid:E8:6A:BB:C2:90:EA:6C:70:22:3E:F6:F6:48:1B:03:E6:BE:B7:A6:55
X509v3 Subject Alternative Name:
DirName:/CN=User 7 Root 11
Signature Algorithm: sha1WithRSAEncryption
4c:d5:2f:ab:fb:83:f8:11:c9:d2:df:aa:dc:e9:b8:38:2e:53:
e1:3a:5b:bb:0a:bf:72:f7:47:b5:57:de:82:8a:e6:bb:7d:62:
af:1b:9c:8e:4a:f5:cf:0b:ac:e9:06:16:ca:59:f1:7f:d7:45:
c0:88:84:ee:f4:c7:8b:e0:39:aa:c7:b7:95:b9:fe:a2:4a:3a:
41:df:d0:02:bf:6f:54:30:9a:9a:0a:a6:04:5f:f4:17:52:d6:
c2:39:43:5e:b9:a3:86:0f:3d:ad:eb:a3:81:f4:cc:90:29:17:
dc:46:5e:6b:9c:f6:70:0f:b2:0f:dc:0f:9c:9f:09:6c:fa:31:
6c:01
-----BEGIN CERTIFICATE-----
MIICwTCCAiqgAwIBAgICEAgwDQYJKoZIhvcNAQEFBQAwYDELMAkGA1UEBhMCREUx
EDAOBgNVBAgTB0hhbWJ1cmcxFzAVBgNVBAoTDk9wZW5PZmZpY2Uub3JnMRQwEgYD
VQQLEwtEZXZlbG9wbWVudDEQMA4GA1UEAxMHUm9vdCAxMTAeFw0xMDAxMTgxNjE0
MDVaFw0zNTAxMTIxNjE0MDVaMHMxCzAJBgNVBAYTAkRFMRAwDgYDVQQIEwdIYW1i
dXJnMRcwFQYDVQQKEw5PcGVuT2ZmaWNlLm9yZzEUMBIGA1UECxMLRGV2ZWxvcG1l
bnQxIzAhBgNVBAMeGgBlAG4AZABpAG4AZwAgAHEAdQBvAHQAZQAiMIGfMA0GCSqG
SIb3DQEBAQUAA4GNADCBiQKBgQCmqD9gp5o7IMksjE/NER8NqSos6xKADFWKTQbv
sl8uR74NECKKFVcpSpBj+RwThUfHybl2CRCpsZRcjcn0ASZD5NSY1gAa1M0q0c1+
TE6rGHha+7Lso4ehDoQ/cM/KAiTI1xuDo6yl8BDF3reibAsMnasyoxrJrptIqGXN
UNsLzwIDAQABo3cwdTALBgNVHQ8EBAMCBeAwHQYDVR0OBBYEFJEyViZiY6EysLzQ
kfHY8pTLEPGRMB8GA1UdIwQYMBaAFOhqu8KQ6mxwIj729kgbA+a+t6ZVMCYGA1Ud
EQQfMB2kGzAZMRcwFQYDVQQDEw5Vc2VyIDcgUm9vdCAxMTANBgkqhkiG9w0BAQUF
AAOBgQBM1S+r+4P4EcnS36rc6bg4LlPhOlu7Cr9y90e1V96Ciua7fWKvG5yOSvXP
C6zpBhbKWfF/10XAiITu9MeL4Dmqx7eVuf6iSjpB39ACv29UMJqaCqYEX/QXUtbC
OUNeuaOGDz2t66OB9MyQKRfcRl5rnPZwD7IP3A+cnwls+jFsAQ==
-----END CERTIFICATE-----

View File

@ -0,0 +1,60 @@
Certificate:
Data:
Version: 3 (0x2)
Serial Number: 4105 (0x1009)
Signature Algorithm: sha1WithRSAEncryption
Issuer: C=DE, ST=Hamburg, O=OpenOffice.org, OU=Development, CN=Root 11
Validity
Not Before: Jan 18 16:16:31 2010 GMT
Not After : Jan 12 16:16:31 2035 GMT
Subject: C=DE, ST=Hamburg, O=OpenOffice.org, OU=Development, CN=\x00m\x00i\x00d\x00d\x00l\x00e\x00 \x00"\x00q\x00u\x00o\x00t\x00e
Subject Public Key Info:
Public Key Algorithm: rsaEncryption
RSA Public Key: (1024 bit)
Modulus (1024 bit):
00:b4:3b:c7:b0:6c:b5:f2:b3:a5:79:89:54:de:af:
03:3c:0e:c9:57:15:8e:73:2a:48:83:18:59:ce:b4:
12:fb:5c:92:28:69:75:18:f9:0f:24:15:95:38:b2:
4c:81:07:90:97:3b:d7:3a:ab:a6:92:5a:9f:5a:1f:
fe:14:ac:4d:b5:5e:6a:a6:0f:98:55:08:07:09:07:
a5:fb:79:9e:a0:2d:73:99:92:ad:6e:bc:75:36:d0:
b5:f1:1c:91:3a:d4:49:8a:60:1e:a7:01:2f:bc:d9:
cd:b4:f4:70:b4:38:d1:3c:d3:ee:00:df:b3:83:45:
63:5c:5d:28:47:bc:b1:b9:57
Exponent: 65537 (0x10001)
X509v3 extensions:
X509v3 Key Usage:
Digital Signature, Non Repudiation, Key Encipherment
X509v3 Subject Key Identifier:
D6:18:38:7B:14:4B:D6:72:42:A9:53:E2:1D:BE:81:88:26:DB:0A:06
X509v3 Authority Key Identifier:
keyid:E8:6A:BB:C2:90:EA:6C:70:22:3E:F6:F6:48:1B:03:E6:BE:B7:A6:55
X509v3 Subject Alternative Name:
DirName:/CN=User 8 Root 11
Signature Algorithm: sha1WithRSAEncryption
98:f3:ac:db:7b:a0:00:d2:58:be:74:21:ff:09:29:4c:0c:1a:
7a:1f:dd:e2:f3:f4:9a:52:5d:da:ac:10:30:f9:b8:93:10:60:
46:bf:48:47:bd:af:87:a1:d9:c6:46:81:b3:0d:a4:f8:ba:ca:
17:7c:f2:f9:46:03:62:7f:32:6b:f0:7c:75:a4:05:44:cb:10:
42:36:ce:12:c0:b9:e5:5f:e0:7b:c6:c8:39:5c:0c:50:30:a0:
f6:fe:e1:a2:e6:00:b3:fc:86:56:11:66:d8:41:81:e3:4e:15:
e5:68:9d:1c:b0:c4:4f:ab:86:75:55:fa:39:58:3f:7c:68:03:
e0:76
-----BEGIN CERTIFICATE-----
MIICwTCCAiqgAwIBAgICEAkwDQYJKoZIhvcNAQEFBQAwYDELMAkGA1UEBhMCREUx
EDAOBgNVBAgTB0hhbWJ1cmcxFzAVBgNVBAoTDk9wZW5PZmZpY2Uub3JnMRQwEgYD
VQQLEwtEZXZlbG9wbWVudDEQMA4GA1UEAxMHUm9vdCAxMTAeFw0xMDAxMTgxNjE2
MzFaFw0zNTAxMTIxNjE2MzFaMHMxCzAJBgNVBAYTAkRFMRAwDgYDVQQIEwdIYW1i
dXJnMRcwFQYDVQQKEw5PcGVuT2ZmaWNlLm9yZzEUMBIGA1UECxMLRGV2ZWxvcG1l
bnQxIzAhBgNVBAMeGgBtAGkAZABkAGwAZQAgACIAcQB1AG8AdABlMIGfMA0GCSqG
SIb3DQEBAQUAA4GNADCBiQKBgQC0O8ewbLXys6V5iVTerwM8DslXFY5zKkiDGFnO
tBL7XJIoaXUY+Q8kFZU4skyBB5CXO9c6q6aSWp9aH/4UrE21XmqmD5hVCAcJB6X7
eZ6gLXOZkq1uvHU20LXxHJE61EmKYB6nAS+82c209HC0ONE80+4A37ODRWNcXShH
vLG5VwIDAQABo3cwdTALBgNVHQ8EBAMCBeAwHQYDVR0OBBYEFNYYOHsUS9ZyQqlT
4h2+gYgm2woGMB8GA1UdIwQYMBaAFOhqu8KQ6mxwIj729kgbA+a+t6ZVMCYGA1Ud
EQQfMB2kGzAZMRcwFQYDVQQDEw5Vc2VyIDggUm9vdCAxMTANBgkqhkiG9w0BAQUF
AAOBgQCY86zbe6AA0li+dCH/CSlMDBp6H93i8/SaUl3arBAw+biTEGBGv0hHva+H
odnGRoGzDaT4usoXfPL5RgNifzJr8Hx1pAVEyxBCNs4SwLnlX+B7xsg5XAxQMKD2
/uGi5gCz/IZWEWbYQYHjThXlaJ0csMRPq4Z1Vfo5WD98aAPgdg==
-----END CERTIFICATE-----

View File

@ -0,0 +1,61 @@
Certificate:
Data:
Version: 3 (0x2)
Serial Number: 4106 (0x100a)
Signature Algorithm: sha1WithRSAEncryption
Issuer: C=DE, ST=Hamburg, O=OpenOffice.org, OU=Development, CN=Root 11
Validity
Not Before: Jan 18 16:18:57 2010 GMT
Not After : Jan 12 16:18:57 2035 GMT
Subject: C=DE, ST=Hamburg, O=OpenOffice.org, OU=Development, CN=\x00d\x00o\x00u\x00b\x00l\x00e\x00 \x00"\x00"\x00m\x00i\x00d\x00d\x00l\x00e\x00 \x00q\x00u\x00o\x00t\x00e
Subject Public Key Info:
Public Key Algorithm: rsaEncryption
RSA Public Key: (1024 bit)
Modulus (1024 bit):
00:e5:3f:d4:e1:d6:26:2a:c9:40:1d:34:3c:1e:e8:
f4:54:67:6b:6c:a5:b7:fe:04:bb:cb:0e:c0:2d:26:
61:c1:81:80:9d:da:1b:fd:d3:7a:7a:57:78:c5:f6:
e6:4b:ad:2d:a2:8d:49:b3:ac:18:ca:1c:25:67:44:
7c:8e:b5:ab:ec:f7:a8:da:b7:37:ed:77:76:b2:8f:
bb:15:b2:e3:45:5f:b2:2a:aa:27:b7:f1:bc:37:8f:
b7:b4:c5:ff:45:fd:67:04:25:47:2c:1a:a7:63:1e:
97:f6:ac:d7:39:cf:ef:24:63:a1:87:9b:36:97:92:
fa:d9:4d:a9:fa:dd:c9:fb:75
Exponent: 65537 (0x10001)
X509v3 extensions:
X509v3 Key Usage:
Digital Signature, Non Repudiation, Key Encipherment
X509v3 Subject Key Identifier:
62:F1:43:E3:B1:7B:98:0D:69:A4:8F:CF:32:F7:6D:E6:88:D6:23:90
X509v3 Authority Key Identifier:
keyid:E8:6A:BB:C2:90:EA:6C:70:22:3E:F6:F6:48:1B:03:E6:BE:B7:A6:55
X509v3 Subject Alternative Name:
DirName:/CN=User 9 Root 11
Signature Algorithm: sha1WithRSAEncryption
ab:46:88:13:e8:02:63:4e:f2:a0:5a:48:7e:35:a4:c2:f8:55:
33:cb:ef:45:55:30:81:a1:9e:c2:c7:43:cd:19:23:1f:df:3f:
8b:b8:7e:69:5e:98:06:b1:47:dd:e5:05:e2:3a:19:cf:af:e3:
dd:7b:75:e5:53:b0:bc:4e:58:40:bf:3b:d2:9c:7f:9e:b1:66:
f8:3f:58:c4:5f:ab:be:1f:03:fb:89:47:a4:25:8a:1e:10:e0:
20:33:70:07:13:92:32:e1:bf:92:6a:d5:89:03:2c:ad:e1:85:
8c:b3:1d:ee:0c:35:70:2f:aa:e5:e0:77:97:b0:9b:a3:0d:22:
6f:dc
-----BEGIN CERTIFICATE-----
MIIC0jCCAjugAwIBAgICEAowDQYJKoZIhvcNAQEFBQAwYDELMAkGA1UEBhMCREUx
EDAOBgNVBAgTB0hhbWJ1cmcxFzAVBgNVBAoTDk9wZW5PZmZpY2Uub3JnMRQwEgYD
VQQLEwtEZXZlbG9wbWVudDEQMA4GA1UEAxMHUm9vdCAxMTAeFw0xMDAxMTgxNjE4
NTdaFw0zNTAxMTIxNjE4NTdaMIGDMQswCQYDVQQGEwJERTEQMA4GA1UECBMHSGFt
YnVyZzEXMBUGA1UEChMOT3Blbk9mZmljZS5vcmcxFDASBgNVBAsTC0RldmVsb3Bt
ZW50MTMwMQYDVQQDHioAZABvAHUAYgBsAGUAIAAiACIAbQBpAGQAZABsAGUAIABx
AHUAbwB0AGUwgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGBAOU/1OHWJirJQB00
PB7o9FRna2ylt/4Eu8sOwC0mYcGBgJ3aG/3TenpXeMX25kutLaKNSbOsGMocJWdE
fI61q+z3qNq3N+13drKPuxWy40VfsiqqJ7fxvDePt7TF/0X9ZwQlRywap2Mel/as
1znP7yRjoYebNpeS+tlNqfrdyft1AgMBAAGjdzB1MAsGA1UdDwQEAwIF4DAdBgNV
HQ4EFgQUYvFD47F7mA1ppI/PMvdt5ojWI5AwHwYDVR0jBBgwFoAU6Gq7wpDqbHAi
Pvb2SBsD5r63plUwJgYDVR0RBB8wHaQbMBkxFzAVBgNVBAMTDlVzZXIgOSBSb290
IDExMA0GCSqGSIb3DQEBBQUAA4GBAKtGiBPoAmNO8qBaSH41pML4VTPL70VVMIGh
nsLHQ80ZIx/fP4u4fmlemAaxR93lBeI6Gc+v4917deVTsLxOWEC/O9Kcf56xZvg/
WMRfq74fA/uJR6Qlih4Q4CAzcAcTkjLhv5Jq1YkDLK3hhYyzHe4MNXAvquXgd5ew
m6MNIm/c
-----END CERTIFICATE-----

View File

@ -0,0 +1,61 @@
Certificate:
Data:
Version: 3 (0x2)
Serial Number: 4107 (0x100b)
Signature Algorithm: sha1WithRSAEncryption
Issuer: C=DE, ST=Hamburg, O=OpenOffice.org, OU=Development, CN=Root 11
Validity
Not Before: Jan 19 09:02:37 2010 GMT
Not After : Jan 13 09:02:37 2035 GMT
Subject: C=DE, ST=Hamburg, O=OpenOffice.org, OU=Development, CN=\x00p\x00a\x00r\x00t\x00i\x00a\x00l\x00l\x00y\x00 \x00"\x00e\x00n\x00c\x00l\x00o\x00s\x00i\x00n\x00g\x00 \x00q\x00u\x00o\x00t\x00e\x00"
Subject Public Key Info:
Public Key Algorithm: rsaEncryption
RSA Public Key: (1024 bit)
Modulus (1024 bit):
00:ae:9f:8e:b8:88:8e:ed:53:aa:2a:2c:ed:f1:6c:
99:47:9f:ab:8b:4e:8e:d8:2e:c2:78:2c:54:f9:29:
14:27:b9:6a:3c:33:3f:06:51:ba:76:15:0a:16:60:
db:f2:f0:db:af:5b:38:be:18:42:b4:31:02:ba:6f:
19:00:57:be:d0:f3:7c:6b:34:36:e8:7c:45:77:0d:
f5:d0:7c:0e:23:64:7c:59:02:5c:54:15:71:82:be:
98:3f:c9:2d:f0:9e:d5:f0:32:02:44:61:5b:2f:71:
16:13:9a:b3:2b:28:ff:d5:d8:3d:00:9c:eb:ec:b7:
04:e2:b6:15:42:45:e5:ef:3f
Exponent: 65537 (0x10001)
X509v3 extensions:
X509v3 Key Usage:
Digital Signature, Non Repudiation, Key Encipherment
X509v3 Subject Key Identifier:
8C:2C:B6:8B:82:43:DC:41:EC:AC:D4:75:E8:DA:D8:3F:A9:A0:F5:31
X509v3 Authority Key Identifier:
keyid:E8:6A:BB:C2:90:EA:6C:70:22:3E:F6:F6:48:1B:03:E6:BE:B7:A6:55
X509v3 Subject Alternative Name:
DirName:/CN=User 10 Root 11
Signature Algorithm: sha1WithRSAEncryption
48:a6:51:46:5b:44:a5:be:18:ed:8f:d4:c6:d2:3c:86:8f:e7:
e5:f4:a2:5d:51:aa:00:9b:bc:d8:b1:d3:f4:24:a0:a1:0d:80:
2e:7e:62:26:ee:8c:4b:bd:79:0c:39:bd:6e:af:db:92:b6:03:
b1:b0:49:95:a7:59:28:54:30:33:fc:7e:2f:0f:a2:ce:90:27:
29:b9:d8:3f:99:36:e9:81:9f:f5:fa:cb:f9:f2:05:b5:48:60:
4d:50:4d:1e:ba:45:fd:f1:99:84:a6:79:0b:6b:76:eb:73:9d:
5c:47:27:be:0d:23:0b:97:cc:9d:5a:80:fa:9b:ff:66:e7:37:
60:a4
-----BEGIN CERTIFICATE-----
MIIC3zCCAkigAwIBAgICEAswDQYJKoZIhvcNAQEFBQAwYDELMAkGA1UEBhMCREUx
EDAOBgNVBAgTB0hhbWJ1cmcxFzAVBgNVBAoTDk9wZW5PZmZpY2Uub3JnMRQwEgYD
VQQLEwtEZXZlbG9wbWVudDEQMA4GA1UEAxMHUm9vdCAxMTAeFw0xMDAxMTkwOTAy
MzdaFw0zNTAxMTMwOTAyMzdaMIGPMQswCQYDVQQGEwJERTEQMA4GA1UECBMHSGFt
YnVyZzEXMBUGA1UEChMOT3Blbk9mZmljZS5vcmcxFDASBgNVBAsTC0RldmVsb3Bt
ZW50MT8wPQYDVQQDHjYAcABhAHIAdABpAGEAbABsAHkAIAAiAGUAbgBjAGwAbwBz
AGkAbgBnACAAcQB1AG8AdABlACIwgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGB
AK6fjriIju1Tqios7fFsmUefq4tOjtguwngsVPkpFCe5ajwzPwZRunYVChZg2/Lw
269bOL4YQrQxArpvGQBXvtDzfGs0Nuh8RXcN9dB8DiNkfFkCXFQVcYK+mD/JLfCe
1fAyAkRhWy9xFhOasyso/9XYPQCc6+y3BOK2FUJF5e8/AgMBAAGjeDB2MAsGA1Ud
DwQEAwIF4DAdBgNVHQ4EFgQUjCy2i4JD3EHsrNR16NrYP6mg9TEwHwYDVR0jBBgw
FoAU6Gq7wpDqbHAiPvb2SBsD5r63plUwJwYDVR0RBCAwHqQcMBoxGDAWBgNVBAMT
D1VzZXIgMTAgUm9vdCAxMTANBgkqhkiG9w0BAQUFAAOBgQBIplFGW0Slvhjtj9TG
0jyGj+fl9KJdUaoAm7zYsdP0JKChDYAufmIm7oxLvXkMOb1ur9uStgOxsEmVp1ko
VDAz/H4vD6LOkCcpudg/mTbpgZ/1+sv58gW1SGBNUE0eukX98ZmEpnkLa3brc51c
Rye+DSMLl8ydWoD6m/9m5zdgpA==
-----END CERTIFICATE-----

View File

@ -0,0 +1,61 @@
Certificate:
Data:
Version: 3 (0x2)
Serial Number: 4108 (0x100c)
Signature Algorithm: sha1WithRSAEncryption
Issuer: C=DE, ST=Hamburg, O=OpenOffice.org, OU=Development, CN=Root 11
Validity
Not Before: Jan 19 09:48:52 2010 GMT
Not After : Jan 13 09:48:52 2035 GMT
Subject: C=DE, ST=Hamburg, O=OpenOffice.org, OU=Development, CN=\x00"\x00U\x00s\x00e\x00r\x00 \x001\x001\x00,\x00 \x00s\x00t\x00a\x00r\x00t\x00i\x00n\x00g\x00 \x00q\x00u\x00o\x00t\x00e
Subject Public Key Info:
Public Key Algorithm: rsaEncryption
RSA Public Key: (1024 bit)
Modulus (1024 bit):
00:e2:8b:a9:94:06:b0:cb:e7:1b:a3:fd:7c:70:d1:
66:e6:2d:aa:c7:ec:2e:e3:08:c3:39:3f:48:47:fd:
09:67:2d:16:17:87:c0:e3:4d:c1:cc:6b:3f:c4:7b:
74:d5:71:70:d6:74:8a:a2:17:fd:39:78:f8:c7:b3:
42:54:ac:f7:07:d7:6f:55:da:03:15:11:e0:c2:d8:
95:d2:87:c3:9c:3d:94:96:9d:01:81:5d:61:43:aa:
4c:92:d5:68:aa:6c:73:88:52:7b:ee:9b:76:65:0d:
2a:ae:3d:83:71:41:44:8b:23:7d:a6:f9:3c:81:56:
6c:9b:52:96:87:c8:97:18:8d
Exponent: 65537 (0x10001)
X509v3 extensions:
X509v3 Key Usage:
Digital Signature, Non Repudiation, Key Encipherment
X509v3 Subject Key Identifier:
48:89:BE:3C:AA:C9:5A:38:6B:CA:FA:C8:B2:BB:F7:E1:44:4B:7B:08
X509v3 Authority Key Identifier:
keyid:E8:6A:BB:C2:90:EA:6C:70:22:3E:F6:F6:48:1B:03:E6:BE:B7:A6:55
X509v3 Subject Alternative Name:
DirName:/CN=User 11 Root 11
Signature Algorithm: sha1WithRSAEncryption
23:c9:5b:f5:9f:59:ff:97:0b:79:35:2d:32:db:b7:4b:b1:c9:
2b:1e:cf:88:7b:b4:4e:f0:ed:13:a3:64:85:8f:d6:70:b5:ed:
2a:57:92:a0:b4:14:96:48:7a:aa:a4:19:59:df:d9:a9:0f:86:
a3:e5:ec:b5:67:ef:c3:ee:23:dd:c3:3e:24:86:6c:09:03:59:
ab:93:d6:c7:0a:4c:ef:c5:4a:be:d6:ff:0f:2e:81:8e:18:d5:
44:21:3a:0e:86:04:aa:86:8a:38:1e:d6:07:75:d0:08:be:ef:
29:7d:d2:fc:85:8d:0c:d3:bd:ea:47:be:40:bb:fa:2f:29:fc:
c6:d8
-----BEGIN CERTIFICATE-----
MIIC2TCCAkKgAwIBAgICEAwwDQYJKoZIhvcNAQEFBQAwYDELMAkGA1UEBhMCREUx
EDAOBgNVBAgTB0hhbWJ1cmcxFzAVBgNVBAoTDk9wZW5PZmZpY2Uub3JnMRQwEgYD
VQQLEwtEZXZlbG9wbWVudDEQMA4GA1UEAxMHUm9vdCAxMTAeFw0xMDAxMTkwOTQ4
NTJaFw0zNTAxMTMwOTQ4NTJaMIGJMQswCQYDVQQGEwJERTEQMA4GA1UECBMHSGFt
YnVyZzEXMBUGA1UEChMOT3Blbk9mZmljZS5vcmcxFDASBgNVBAsTC0RldmVsb3Bt
ZW50MTkwNwYDVQQDHjAAIgBVAHMAZQByACAAMQAxACwAIABzAHQAYQByAHQAaQBu
AGcAIABxAHUAbwB0AGUwgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGBAOKLqZQG
sMvnG6P9fHDRZuYtqsfsLuMIwzk/SEf9CWctFheHwONNwcxrP8R7dNVxcNZ0iqIX
/Tl4+MezQlSs9wfXb1XaAxUR4MLYldKHw5w9lJadAYFdYUOqTJLVaKpsc4hSe+6b
dmUNKq49g3FBRIsjfab5PIFWbJtSlofIlxiNAgMBAAGjeDB2MAsGA1UdDwQEAwIF
4DAdBgNVHQ4EFgQUSIm+PKrJWjhryvrIsrv34URLewgwHwYDVR0jBBgwFoAU6Gq7
wpDqbHAiPvb2SBsD5r63plUwJwYDVR0RBCAwHqQcMBoxGDAWBgNVBAMTD1VzZXIg
MTEgUm9vdCAxMTANBgkqhkiG9w0BAQUFAAOBgQAjyVv1n1n/lwt5NS0y27dLsckr
Hs+Ie7RO8O0To2SFj9Zwte0qV5KgtBSWSHqqpBlZ39mpD4aj5ey1Z+/D7iPdwz4k
hmwJA1mrk9bHCkzvxUq+1v8PLoGOGNVEIToOhgSqhoo4HtYHddAIvu8pfdL8hY0M
073qR75Au/ovKfzG2A==
-----END CERTIFICATE-----

View File

@ -0,0 +1,61 @@
Certificate:
Data:
Version: 3 (0x2)
Serial Number: 4109 (0x100d)
Signature Algorithm: sha1WithRSAEncryption
Issuer: C=DE, ST=Hamburg, O=OpenOffice.org, OU=Development, CN=Root 11
Validity
Not Before: Jan 19 09:51:10 2010 GMT
Not After : Jan 13 09:51:10 2035 GMT
Subject: C=DE, ST=Hamburg, O=OpenOffice.org, OU=Development, CN=\x00U\x00s\x00e\x00r\x00 \x001\x002\x00,\x00 \x00e\x00n\x00d\x00i\x00n\x00g\x00 \x00q\x00u\x00o\x00t\x00e\x00"
Subject Public Key Info:
Public Key Algorithm: rsaEncryption
RSA Public Key: (1024 bit)
Modulus (1024 bit):
00:bf:4f:93:6b:6b:86:76:30:31:3b:0e:eb:b7:a6:
b9:a3:3e:84:ea:d5:31:50:5a:df:f4:3f:67:11:5a:
a5:28:23:58:37:67:a5:5c:72:6d:f2:fc:80:81:55:
78:86:28:e9:60:c2:0a:d0:17:3c:3a:e9:a8:01:71:
64:b8:27:f4:42:e0:d7:69:f5:4e:ef:14:07:69:fd:
de:7b:af:c8:a4:0c:9c:56:00:8b:76:67:d1:ba:a9:
e7:40:63:77:da:44:d3:89:5c:a7:5a:ea:d5:f3:9b:
15:43:f3:08:2d:bc:8a:bf:4a:5b:57:01:f0:c7:97:
fe:b0:93:b2:1b:79:a0:4e:ad
Exponent: 65537 (0x10001)
X509v3 extensions:
X509v3 Key Usage:
Digital Signature, Non Repudiation, Key Encipherment
X509v3 Subject Key Identifier:
0A:A2:A6:09:88:23:56:82:9E:60:8B:79:23:61:CA:BF:D4:F7:ED:A9
X509v3 Authority Key Identifier:
keyid:E8:6A:BB:C2:90:EA:6C:70:22:3E:F6:F6:48:1B:03:E6:BE:B7:A6:55
X509v3 Subject Alternative Name:
DirName:/CN=User 12 Root 11
Signature Algorithm: sha1WithRSAEncryption
64:3e:b6:a6:5e:0d:6f:b3:e7:f6:c7:1f:4a:48:96:4c:fe:13:
3c:4a:7b:e7:46:51:56:45:66:02:e4:79:1a:7f:15:a4:e9:5b:
f7:4c:68:cf:cf:b0:7b:e2:ba:57:37:23:c6:cd:ba:75:85:e8:
eb:d5:ca:a2:6d:9a:75:84:4b:7b:47:38:58:bc:0a:4b:cc:2c:
2a:0d:eb:7e:ac:36:6f:0b:a5:26:b7:d3:0b:0f:e7:cc:26:db:
bb:01:48:5b:38:49:f5:3e:2d:75:c0:d6:11:ad:3e:a0:b6:8a:
8e:7f:4d:10:2c:7b:d7:03:0d:de:da:6b:e0:07:06:90:73:1f:
dd:f1
-----BEGIN CERTIFICATE-----
MIIC1TCCAj6gAwIBAgICEA0wDQYJKoZIhvcNAQEFBQAwYDELMAkGA1UEBhMCREUx
EDAOBgNVBAgTB0hhbWJ1cmcxFzAVBgNVBAoTDk9wZW5PZmZpY2Uub3JnMRQwEgYD
VQQLEwtEZXZlbG9wbWVudDEQMA4GA1UEAxMHUm9vdCAxMTAeFw0xMDAxMTkwOTUx
MTBaFw0zNTAxMTMwOTUxMTBaMIGFMQswCQYDVQQGEwJERTEQMA4GA1UECBMHSGFt
YnVyZzEXMBUGA1UEChMOT3Blbk9mZmljZS5vcmcxFDASBgNVBAsTC0RldmVsb3Bt
ZW50MTUwMwYDVQQDHiwAVQBzAGUAcgAgADEAMgAsACAAZQBuAGQAaQBuAGcAIABx
AHUAbwB0AGUAIjCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEAv0+Ta2uGdjAx
Ow7rt6a5oz6E6tUxUFrf9D9nEVqlKCNYN2elXHJt8vyAgVV4hijpYMIK0Bc8Oumo
AXFkuCf0QuDXafVO7xQHaf3ee6/IpAycVgCLdmfRuqnnQGN32kTTiVynWurV85sV
Q/MILbyKv0pbVwHwx5f+sJOyG3mgTq0CAwEAAaN4MHYwCwYDVR0PBAQDAgXgMB0G
A1UdDgQWBBQKoqYJiCNWgp5gi3kjYcq/1PftqTAfBgNVHSMEGDAWgBToarvCkOps
cCI+9vZIGwPmvremVTAnBgNVHREEIDAepBwwGjEYMBYGA1UEAxMPVXNlciAxMiBS
b290IDExMA0GCSqGSIb3DQEBBQUAA4GBAGQ+tqZeDW+z5/bHH0pIlkz+EzxKe+dG
UVZFZgLkeRp/FaTpW/dMaM/PsHviulc3I8bNunWF6OvVyqJtmnWES3tHOFi8CkvM
LCoN636sNm8LpSa30wsP58wm27sBSFs4SfU+LXXA1hGtPqC2io5/TRAse9cDDd7a
a+AHBpBzH93x
-----END CERTIFICATE-----

View File

@ -0,0 +1,61 @@
Certificate:
Data:
Version: 3 (0x2)
Serial Number: 4110 (0x100e)
Signature Algorithm: sha1WithRSAEncryption
Issuer: C=DE, ST=Hamburg, O=OpenOffice.org, OU=Development, CN=Root 11
Validity
Not Before: Jan 19 09:53:08 2010 GMT
Not After : Jan 13 09:53:08 2035 GMT
Subject: C=DE, ST=Hamburg, O=OpenOffice.org, OU=Development, CN=\x00"\x00U\x00s\x00e\x00r\x00 \x001\x003\x00,\x00 \x00e\x00n\x00c\x00l\x00o\x00s\x00i\x00n\x00g\x00 \x00q\x00u\x00o\x00t\x00e\x00s\x00"
Subject Public Key Info:
Public Key Algorithm: rsaEncryption
RSA Public Key: (1024 bit)
Modulus (1024 bit):
00:e0:b2:b3:77:34:32:23:3c:45:ce:1f:5f:9a:60:
c5:59:af:2f:bf:73:8e:be:3d:88:8d:97:4f:fe:8a:
00:b9:71:7f:07:3a:1e:6a:5b:37:8a:ff:58:8f:f1:
b3:e5:0b:9d:35:58:57:6d:da:d1:15:cd:52:7f:e2:
15:25:16:d4:d6:1e:71:a6:f3:f7:c5:6d:01:64:fc:
20:d4:4e:6a:f2:f9:b9:2a:36:f8:ae:e6:17:a8:f9:
8e:7c:bb:75:e5:24:39:ad:4c:18:c8:bb:07:22:cd:
d1:a6:52:93:7f:24:5f:90:dd:0f:64:07:70:42:67:
39:9b:1f:ea:5e:bb:cd:df:ab
Exponent: 65537 (0x10001)
X509v3 extensions:
X509v3 Key Usage:
Digital Signature, Non Repudiation, Key Encipherment
X509v3 Subject Key Identifier:
75:49:D0:1F:A0:B3:A2:C6:F2:7F:CF:16:A3:4C:4B:DF:D6:4C:07:9D
X509v3 Authority Key Identifier:
keyid:E8:6A:BB:C2:90:EA:6C:70:22:3E:F6:F6:48:1B:03:E6:BE:B7:A6:55
X509v3 Subject Alternative Name:
DirName:/CN=User 13 Root 11
Signature Algorithm: sha1WithRSAEncryption
5d:60:60:06:aa:8a:2d:ee:20:2a:ee:fb:b5:99:8c:ed:d8:67:
28:30:d8:26:a7:e0:1c:6e:5d:e1:4c:5e:c8:f9:02:e2:2e:c4:
1e:58:e9:84:bc:d7:79:4e:d5:c5:ea:ba:74:aa:4e:30:9d:2b:
98:c8:0b:fe:7f:eb:fb:e9:24:5f:f8:17:27:a9:ce:7c:ff:4b:
88:15:3e:25:18:71:73:bf:b6:bf:c5:51:6b:1d:db:32:1d:ae:
00:bf:ed:a5:65:99:16:43:8d:d2:6d:27:53:fc:65:9a:91:94:
7b:44:c8:58:a1:f1:2b:95:86:0b:2d:2d:94:10:6f:5e:be:f8:
7b:8e
-----BEGIN CERTIFICATE-----
MIIC3zCCAkigAwIBAgICEA4wDQYJKoZIhvcNAQEFBQAwYDELMAkGA1UEBhMCREUx
EDAOBgNVBAgTB0hhbWJ1cmcxFzAVBgNVBAoTDk9wZW5PZmZpY2Uub3JnMRQwEgYD
VQQLEwtEZXZlbG9wbWVudDEQMA4GA1UEAxMHUm9vdCAxMTAeFw0xMDAxMTkwOTUz
MDhaFw0zNTAxMTMwOTUzMDhaMIGPMQswCQYDVQQGEwJERTEQMA4GA1UECBMHSGFt
YnVyZzEXMBUGA1UEChMOT3Blbk9mZmljZS5vcmcxFDASBgNVBAsTC0RldmVsb3Bt
ZW50MT8wPQYDVQQDHjYAIgBVAHMAZQByACAAMQAzACwAIABlAG4AYwBsAG8AcwBp
AG4AZwAgAHEAdQBvAHQAZQBzACIwgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGB
AOCys3c0MiM8Rc4fX5pgxVmvL79zjr49iI2XT/6KALlxfwc6HmpbN4r/WI/xs+UL
nTVYV23a0RXNUn/iFSUW1NYecabz98VtAWT8INROavL5uSo2+K7mF6j5jny7deUk
Oa1MGMi7ByLN0aZSk38kX5DdD2QHcEJnOZsf6l67zd+rAgMBAAGjeDB2MAsGA1Ud
DwQEAwIF4DAdBgNVHQ4EFgQUdUnQH6Czosbyf88Wo0xL39ZMB50wHwYDVR0jBBgw
FoAU6Gq7wpDqbHAiPvb2SBsD5r63plUwJwYDVR0RBCAwHqQcMBoxGDAWBgNVBAMT
D1VzZXIgMTMgUm9vdCAxMTANBgkqhkiG9w0BAQUFAAOBgQBdYGAGqoot7iAq7vu1
mYzt2GcoMNgmp+Acbl3hTF7I+QLiLsQeWOmEvNd5TtXF6rp0qk4wnSuYyAv+f+v7
6SRf+Bcnqc58/0uIFT4lGHFzv7a/xVFrHdsyHa4Av+2lZZkWQ43SbSdT/GWakZR7
RMhYofErlYYLLS2UEG9evvh7jg==
-----END CERTIFICATE-----

View File

@ -0,0 +1,61 @@
Certificate:
Data:
Version: 3 (0x2)
Serial Number: 4111 (0x100f)
Signature Algorithm: sha1WithRSAEncryption
Issuer: C=DE, ST=Hamburg, O=OpenOffice.org, OU=Development, CN=Root 11
Validity
Not Before: Jan 19 09:55:02 2010 GMT
Not After : Jan 13 09:55:02 2035 GMT
Subject: C=DE, ST=Hamburg, O=OpenOffice.org, OU=Development, CN=\x00U\x00s\x00e\x00r\x00 \x001\x004\x00 \x00"\x00,\x00m\x00i\x00d\x00d\x00l\x00e\x00 \x00q\x00u\x00o\x00t\x00e\x00"
Subject Public Key Info:
Public Key Algorithm: rsaEncryption
RSA Public Key: (1024 bit)
Modulus (1024 bit):
00:d7:b7:68:39:6e:80:18:83:2e:d7:0a:e5:f1:3f:
27:80:68:59:a8:05:ac:7f:d9:6e:5d:7f:1c:58:86:
b7:74:b5:51:3d:64:09:4a:a0:ff:e7:10:0e:bc:8a:
f0:d1:54:18:0a:ed:68:0a:a2:33:e5:9f:f0:3d:7f:
24:9c:46:34:ba:45:8f:05:59:51:2d:fb:32:1d:79:
51:37:1a:4b:f8:6e:c5:49:c0:49:9e:ef:2b:ae:aa:
03:fa:ff:55:08:69:85:0d:b4:06:53:ee:20:4e:74:
6c:ca:b8:98:8d:64:8f:b5:99:a9:06:37:32:ca:ca:
eb:31:16:ce:97:e8:17:0d:9d
Exponent: 65537 (0x10001)
X509v3 extensions:
X509v3 Key Usage:
Digital Signature, Non Repudiation, Key Encipherment
X509v3 Subject Key Identifier:
A7:D8:65:FB:E9:A1:F6:A4:16:76:1C:2E:5B:F3:1B:8E:08:B1:1D:7F
X509v3 Authority Key Identifier:
keyid:E8:6A:BB:C2:90:EA:6C:70:22:3E:F6:F6:48:1B:03:E6:BE:B7:A6:55
X509v3 Subject Alternative Name:
DirName:/CN=User 14 Root 11
Signature Algorithm: sha1WithRSAEncryption
35:54:0f:d2:d3:ec:9e:a6:ea:e6:51:69:27:a3:f1:ae:ea:ef:
f9:da:ca:2a:50:f1:9e:2a:7c:74:43:d6:7f:91:ad:5a:5c:e2:
da:f3:cb:27:a2:78:99:75:0b:9e:e9:3a:bd:3e:31:14:6a:06:
b7:3f:59:d1:0a:67:03:a4:32:63:cd:b1:b6:5c:68:bb:bb:e2:
23:a6:ff:8e:55:e5:92:a6:a8:b3:87:3d:25:21:9c:2a:6f:ab:
09:ad:f5:e6:e6:d8:37:62:f2:30:ac:51:da:f4:9c:1d:06:f6:
f3:73:2f:6a:3b:7f:53:0d:c0:2e:ad:cc:6e:81:fe:ce:e3:53:
0e:23
-----BEGIN CERTIFICATE-----
MIIC1zCCAkCgAwIBAgICEA8wDQYJKoZIhvcNAQEFBQAwYDELMAkGA1UEBhMCREUx
EDAOBgNVBAgTB0hhbWJ1cmcxFzAVBgNVBAoTDk9wZW5PZmZpY2Uub3JnMRQwEgYD
VQQLEwtEZXZlbG9wbWVudDEQMA4GA1UEAxMHUm9vdCAxMTAeFw0xMDAxMTkwOTU1
MDJaFw0zNTAxMTMwOTU1MDJaMIGHMQswCQYDVQQGEwJERTEQMA4GA1UECBMHSGFt
YnVyZzEXMBUGA1UEChMOT3Blbk9mZmljZS5vcmcxFDASBgNVBAsTC0RldmVsb3Bt
ZW50MTcwNQYDVQQDHi4AVQBzAGUAcgAgADEANAAgACIALABtAGkAZABkAGwAZQAg
AHEAdQBvAHQAZQAiMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDXt2g5boAY
gy7XCuXxPyeAaFmoBax/2W5dfxxYhrd0tVE9ZAlKoP/nEA68ivDRVBgK7WgKojPl
n/A9fyScRjS6RY8FWVEt+zIdeVE3Gkv4bsVJwEme7yuuqgP6/1UIaYUNtAZT7iBO
dGzKuJiNZI+1makGNzLKyusxFs6X6BcNnQIDAQABo3gwdjALBgNVHQ8EBAMCBeAw
HQYDVR0OBBYEFKfYZfvpofakFnYcLlvzG44IsR1/MB8GA1UdIwQYMBaAFOhqu8KQ
6mxwIj729kgbA+a+t6ZVMCcGA1UdEQQgMB6kHDAaMRgwFgYDVQQDEw9Vc2VyIDE0
IFJvb3QgMTEwDQYJKoZIhvcNAQEFBQADgYEANVQP0tPsnqbq5lFpJ6Pxrurv+drK
KlDxnip8dEPWf5GtWlzi2vPLJ6J4mXULnuk6vT4xFGoGtz9Z0QpnA6QyY82xtlxo
u7viI6b/jlXlkqaos4c9JSGcKm+rCa315ubYN2LyMKxR2vScHQb283Mvajt/Uw3A
Lq3MboH+zuNTDiM=
-----END CERTIFICATE-----

View File

@ -0,0 +1,60 @@
Certificate:
Data:
Version: 3 (0x2)
Serial Number: 4112 (0x1010)
Signature Algorithm: sha1WithRSAEncryption
Issuer: C=DE, ST=Hamburg, O=OpenOffice.org, OU=Development, CN=Root 11
Validity
Not Before: Jan 19 09:57:52 2010 GMT
Not After : Jan 13 09:57:52 2035 GMT
Subject: C=DE, ST=Hamburg, O=OpenOffice.org, OU=Development, CN=\x00\\x00e\x00n\x00c\x00l\x00o\x00s\x00i\x00n\x00g\x00 \x00q\x00u\x00o\x00t\x00e\x00s\x00\
Subject Public Key Info:
Public Key Algorithm: rsaEncryption
RSA Public Key: (1024 bit)
Modulus (1024 bit):
00:a1:cc:00:2b:07:2b:e7:ac:80:29:cb:40:37:e3:
1f:a3:c5:13:86:16:63:6b:cc:b8:c1:aa:54:fd:57:
0f:de:4c:69:2f:e5:5f:f0:a9:bb:25:74:48:ee:36:
77:6b:08:b5:95:a9:00:aa:15:31:9e:d8:f6:25:53:
78:9d:bc:2b:8f:7a:19:32:12:8c:13:60:7d:76:1e:
4e:b1:e4:51:c7:43:c0:e6:ee:d9:61:df:85:90:a0:
95:3c:a2:81:83:3d:22:f6:8d:42:ee:69:fa:5c:ae:
1c:b5:52:02:fb:ec:a6:12:2f:bb:fb:6c:a8:61:95:
08:6c:d2:e5:1e:90:61:a6:27
Exponent: 65537 (0x10001)
X509v3 extensions:
X509v3 Key Usage:
Digital Signature, Non Repudiation, Key Encipherment
X509v3 Subject Key Identifier:
2F:C9:F6:94:E6:1E:91:13:CE:75:A1:17:FD:1D:93:7E:45:CE:4D:67
X509v3 Authority Key Identifier:
keyid:E8:6A:BB:C2:90:EA:6C:70:22:3E:F6:F6:48:1B:03:E6:BE:B7:A6:55
X509v3 Subject Alternative Name:
DirName:/CN=User 15 Root 11
Signature Algorithm: sha1WithRSAEncryption
19:d0:dc:4c:c8:59:f0:7a:14:f2:51:54:e5:9e:5a:b3:27:0b:
d7:36:0f:74:38:07:26:65:1a:b5:94:1a:1f:b2:b7:3d:ee:b1:
90:05:83:41:6a:98:5f:25:b4:cb:5c:49:12:24:35:d6:97:cf:
50:2e:0a:17:41:0b:75:e9:6a:a4:fb:bb:c2:cc:c1:94:64:03:
81:c4:25:d2:3f:3e:8f:d1:29:44:db:a9:3c:7f:0c:2c:6d:48:
38:cb:8f:56:82:9c:d3:f3:f3:20:1f:45:19:8e:ea:91:9c:c1:
25:cf:20:1d:bb:70:7e:b9:a0:c5:34:78:93:5f:2b:d9:fd:d5:
de:ad
-----BEGIN CERTIFICATE-----
MIICzDCCAjWgAwIBAgICEBAwDQYJKoZIhvcNAQEFBQAwYDELMAkGA1UEBhMCREUx
EDAOBgNVBAgTB0hhbWJ1cmcxFzAVBgNVBAoTDk9wZW5PZmZpY2Uub3JnMRQwEgYD
VQQLEwtEZXZlbG9wbWVudDEQMA4GA1UEAxMHUm9vdCAxMTAeFw0xMDAxMTkwOTU3
NTJaFw0zNTAxMTMwOTU3NTJaMH0xCzAJBgNVBAYTAkRFMRAwDgYDVQQIEwdIYW1i
dXJnMRcwFQYDVQQKEw5PcGVuT2ZmaWNlLm9yZzEUMBIGA1UECxMLRGV2ZWxvcG1l
bnQxLTArBgNVBAMeJABcAGUAbgBjAGwAbwBzAGkAbgBnACAAcQB1AG8AdABlAHMA
XDCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEAocwAKwcr56yAKctAN+Mfo8UT
hhZja8y4wapU/VcP3kxpL+Vf8Km7JXRI7jZ3awi1lakAqhUxntj2JVN4nbwrj3oZ
MhKME2B9dh5OseRRx0PA5u7ZYd+FkKCVPKKBgz0i9o1C7mn6XK4ctVIC++ymEi+7
+2yoYZUIbNLlHpBhpicCAwEAAaN4MHYwCwYDVR0PBAQDAgXgMB0GA1UdDgQWBBQv
yfaU5h6RE851oRf9HZN+Rc5NZzAfBgNVHSMEGDAWgBToarvCkOpscCI+9vZIGwPm
vremVTAnBgNVHREEIDAepBwwGjEYMBYGA1UEAxMPVXNlciAxNSBSb290IDExMA0G
CSqGSIb3DQEBBQUAA4GBABnQ3EzIWfB6FPJRVOWeWrMnC9c2D3Q4ByZlGrWUGh+y
tz3usZAFg0FqmF8ltMtcSRIkNdaXz1AuChdBC3XpaqT7u8LMwZRkA4HEJdI/Po/R
KUTbqTx/DCxtSDjLj1aCnNPz8yAfRRmO6pGcwSXPIB27cH65oMU0eJNfK9n91d6t
-----END CERTIFICATE-----

View File

@ -0,0 +1,61 @@
Certificate:
Data:
Version: 3 (0x2)
Serial Number: 4113 (0x1011)
Signature Algorithm: sha1WithRSAEncryption
Issuer: C=DE, ST=Hamburg, O=OpenOffice.org, OU=Development, CN=Root 11
Validity
Not Before: Jan 19 09:59:22 2010 GMT
Not After : Jan 13 09:59:22 2035 GMT
Subject: C=DE, ST=Hamburg, O=OpenOffice.org, OU=Development, CN=\x00\\x00\\x00d\x00o\x00u\x00b\x00l\x00e\x00 \x00e\x00n\x00c\x00l\x00o\x00s\x00i\x00n\x00g\x00 \x00q\x00u\x00o\x00t\x00e\x00s\x00\\x00\
Subject Public Key Info:
Public Key Algorithm: rsaEncryption
RSA Public Key: (1024 bit)
Modulus (1024 bit):
00:a4:e3:64:10:9f:0a:e4:35:bb:e3:e1:f0:28:86:
8a:f2:6e:d3:f8:44:ac:58:7b:f5:dd:1c:71:17:bf:
3e:14:29:55:f0:5c:c9:ed:36:c0:7f:e7:cc:7c:a3:
c4:9a:13:4f:7d:6c:b3:1e:ab:24:ba:1a:ff:48:96:
67:a5:ca:e5:75:30:24:70:3a:94:d2:92:db:29:2b:
69:1f:1d:a4:da:37:91:57:03:79:d7:0a:c7:a9:09:
14:a8:70:60:b5:a3:62:4f:b8:bf:0a:22:0a:9c:83:
3a:4d:1a:47:06:97:f1:4a:38:78:95:45:10:9e:44:
90:fb:6e:13:ba:3a:1b:b7:4b
Exponent: 65537 (0x10001)
X509v3 extensions:
X509v3 Key Usage:
Digital Signature, Non Repudiation, Key Encipherment
X509v3 Subject Key Identifier:
A5:32:FD:E7:0D:90:82:17:34:E1:AD:2A:48:5D:78:27:2B:C9:2A:B8
X509v3 Authority Key Identifier:
keyid:E8:6A:BB:C2:90:EA:6C:70:22:3E:F6:F6:48:1B:03:E6:BE:B7:A6:55
X509v3 Subject Alternative Name:
DirName:/CN=User 16 Root 11
Signature Algorithm: sha1WithRSAEncryption
96:ee:46:fc:41:4f:55:0d:bc:46:27:5a:3c:09:7c:17:6c:e3:
9e:3a:85:eb:3b:e2:f7:a5:ab:b5:ae:aa:44:81:d7:b7:29:39:
b8:20:40:1e:36:da:a8:03:8b:3a:96:c3:2e:ba:cd:81:b9:af:
a0:a5:95:b0:3b:55:c1:85:9d:3d:c2:d0:7b:a4:d0:0e:16:7c:
26:ba:85:e5:96:f0:f9:cc:28:c4:ed:83:e8:6f:30:a8:22:7a:
7e:3b:99:d6:b2:3d:a2:90:1e:c9:9b:70:0a:af:04:d9:7c:46:
52:e2:5a:d3:57:d6:18:a9:e9:55:ee:00:e8:10:a1:84:ed:ca:
2b:bf
-----BEGIN CERTIFICATE-----
MIIC3zCCAkigAwIBAgICEBEwDQYJKoZIhvcNAQEFBQAwYDELMAkGA1UEBhMCREUx
EDAOBgNVBAgTB0hhbWJ1cmcxFzAVBgNVBAoTDk9wZW5PZmZpY2Uub3JnMRQwEgYD
VQQLEwtEZXZlbG9wbWVudDEQMA4GA1UEAxMHUm9vdCAxMTAeFw0xMDAxMTkwOTU5
MjJaFw0zNTAxMTMwOTU5MjJaMIGPMQswCQYDVQQGEwJERTEQMA4GA1UECBMHSGFt
YnVyZzEXMBUGA1UEChMOT3Blbk9mZmljZS5vcmcxFDASBgNVBAsTC0RldmVsb3Bt
ZW50MT8wPQYDVQQDHjYAXABcAGQAbwB1AGIAbABlACAAZQBuAGMAbABvAHMAaQBu
AGcAIABxAHUAbwB0AGUAcwBcAFwwgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGB
AKTjZBCfCuQ1u+Ph8CiGivJu0/hErFh79d0ccRe/PhQpVfBcye02wH/nzHyjxJoT
T31ssx6rJLoa/0iWZ6XK5XUwJHA6lNKS2ykraR8dpNo3kVcDedcKx6kJFKhwYLWj
Yk+4vwoiCpyDOk0aRwaX8Uo4eJVFEJ5EkPtuE7o6G7dLAgMBAAGjeDB2MAsGA1Ud
DwQEAwIF4DAdBgNVHQ4EFgQUpTL95w2Qghc04a0qSF14JyvJKrgwHwYDVR0jBBgw
FoAU6Gq7wpDqbHAiPvb2SBsD5r63plUwJwYDVR0RBCAwHqQcMBoxGDAWBgNVBAMT
D1VzZXIgMTYgUm9vdCAxMTANBgkqhkiG9w0BAQUFAAOBgQCW7kb8QU9VDbxGJ1o8
CXwXbOOeOoXrO+L3pau1rqpEgde3KTm4IEAeNtqoA4s6lsMuus2Bua+gpZWwO1XB
hZ09wtB7pNAOFnwmuoXllvD5zCjE7YPobzCoInp+O5nWsj2ikB7Jm3AKrwTZfEZS
4lrTV9YYqelV7gDoEKGE7corvw==
-----END CERTIFICATE-----

View File

@ -0,0 +1,61 @@
Certificate:
Data:
Version: 3 (0x2)
Serial Number: 4114 (0x1012)
Signature Algorithm: sha1WithRSAEncryption
Issuer: C=DE, ST=Hamburg, O=OpenOffice.org, OU=Development, CN=Root 11
Validity
Not Before: Jan 19 10:02:07 2010 GMT
Not After : Jan 13 10:02:07 2035 GMT
Subject: C=DE, ST=Hamburg, O=OpenOffice.org, OU=Development, CN=\x00\\x00\\x00t\x00w\x00o\x00 \x00s\x00t\x00a\x00r\x00t\x00i\x00n\x00g\x00 \x00o\x00n\x00e\x00 \x00e\x00n\x00d\x00i\x00n\x00g\x00 \x00q\x00u\x00o\x00t\x00e\x00\
Subject Public Key Info:
Public Key Algorithm: rsaEncryption
RSA Public Key: (1024 bit)
Modulus (1024 bit):
00:e9:8c:31:90:52:8d:ef:c6:6a:10:17:7d:37:a3:
ef:00:34:19:dd:a4:1a:f6:cc:37:b0:19:c8:9d:f6:
9f:f8:3d:15:c9:cf:73:ab:0a:42:f2:54:5b:cc:12:
fb:64:35:54:c9:50:36:18:6c:b6:b0:cf:d6:1e:30:
0b:0d:fa:f3:25:99:d7:49:20:dd:cc:04:d7:bb:07:
00:b9:b9:87:8c:75:e5:28:a6:74:a9:b4:96:36:b8:
15:62:84:0c:7a:a2:f3:07:9c:5c:8f:7a:22:3d:ba:
a4:06:69:f6:ce:d2:36:a0:62:e1:ae:67:aa:23:24:
ac:1d:53:ac:bf:b6:30:74:f7
Exponent: 65537 (0x10001)
X509v3 extensions:
X509v3 Key Usage:
Digital Signature, Non Repudiation, Key Encipherment
X509v3 Subject Key Identifier:
C0:28:3E:BA:44:88:99:A0:80:67:AA:3E:B6:D4:12:A7:35:DA:A6:BB
X509v3 Authority Key Identifier:
keyid:E8:6A:BB:C2:90:EA:6C:70:22:3E:F6:F6:48:1B:03:E6:BE:B7:A6:55
X509v3 Subject Alternative Name:
DirName:/CN=User 17 Root 11
Signature Algorithm: sha1WithRSAEncryption
06:5b:fb:65:55:34:ca:2c:1a:c2:2d:2a:97:1b:a1:68:f6:0c:
13:18:03:44:f9:0d:37:a1:8c:b1:f7:bc:b7:74:a8:aa:c1:e7:
36:e7:b9:e0:64:79:76:63:98:7b:1d:d8:80:8c:d9:26:61:a8:
e7:07:96:60:e9:8a:24:78:cb:9c:f3:35:15:c9:d9:0c:2e:68:
68:48:9c:df:6b:56:3f:aa:47:34:36:b0:ef:0e:d2:e0:ee:a9:
a9:6a:27:93:60:27:5f:42:76:9c:e0:aa:74:6c:b9:aa:de:fe:
86:98:5a:3d:73:c5:15:38:c8:ff:09:8e:ed:da:06:74:fb:67:
92:51
-----BEGIN CERTIFICATE-----
MIIC6TCCAlKgAwIBAgICEBIwDQYJKoZIhvcNAQEFBQAwYDELMAkGA1UEBhMCREUx
EDAOBgNVBAgTB0hhbWJ1cmcxFzAVBgNVBAoTDk9wZW5PZmZpY2Uub3JnMRQwEgYD
VQQLEwtEZXZlbG9wbWVudDEQMA4GA1UEAxMHUm9vdCAxMTAeFw0xMDAxMTkxMDAy
MDdaFw0zNTAxMTMxMDAyMDdaMIGZMQswCQYDVQQGEwJERTEQMA4GA1UECBMHSGFt
YnVyZzEXMBUGA1UEChMOT3Blbk9mZmljZS5vcmcxFDASBgNVBAsTC0RldmVsb3Bt
ZW50MUkwRwYDVQQDHkAAXABcAHQAdwBvACAAcwB0AGEAcgB0AGkAbgBnACAAbwBu
AGUAIABlAG4AZABpAG4AZwAgAHEAdQBvAHQAZQBcMIGfMA0GCSqGSIb3DQEBAQUA
A4GNADCBiQKBgQDpjDGQUo3vxmoQF303o+8ANBndpBr2zDewGcid9p/4PRXJz3Or
CkLyVFvMEvtkNVTJUDYYbLawz9YeMAsN+vMlmddJIN3MBNe7BwC5uYeMdeUopnSp
tJY2uBVihAx6ovMHnFyPeiI9uqQGafbO0jagYuGuZ6ojJKwdU6y/tjB09wIDAQAB
o3gwdjALBgNVHQ8EBAMCBeAwHQYDVR0OBBYEFMAoPrpEiJmggGeqPrbUEqc12qa7
MB8GA1UdIwQYMBaAFOhqu8KQ6mxwIj729kgbA+a+t6ZVMCcGA1UdEQQgMB6kHDAa
MRgwFgYDVQQDEw9Vc2VyIDE3IFJvb3QgMTEwDQYJKoZIhvcNAQEFBQADgYEABlv7
ZVU0yiwawi0qlxuhaPYMExgDRPkNN6GMsfe8t3SoqsHnNue54GR5dmOYex3YgIzZ
JmGo5weWYOmKJHjLnPM1FcnZDC5oaEic32tWP6pHNDaw7w7S4O6pqWonk2AnX0J2
nOCqdGy5qt7+hphaPXPFFTjI/wmO7doGdPtnklE=
-----END CERTIFICATE-----

View File

@ -0,0 +1,60 @@
Certificate:
Data:
Version: 3 (0x2)
Serial Number: 4115 (0x1013)
Signature Algorithm: sha1WithRSAEncryption
Issuer: C=DE, ST=Hamburg, O=OpenOffice.org, OU=Development, CN=Root 11
Validity
Not Before: Jan 19 10:04:36 2010 GMT
Not After : Jan 13 10:04:36 2035 GMT
Subject: C=DE, ST=Hamburg, O=OpenOffice.org, OU=Development, CN=\x00\\x00s\x00t\x00a\x00r\x00t\x00i\x00n\x00g\x00 \x00q\x00u\x00o\x00t\x00e
Subject Public Key Info:
Public Key Algorithm: rsaEncryption
RSA Public Key: (1024 bit)
Modulus (1024 bit):
00:bb:73:a4:4e:45:8e:80:b1:65:b6:d8:3b:96:c8:
3b:c4:2e:40:98:2a:a9:0d:2e:75:29:df:dd:28:8f:
dc:65:4e:2f:8b:24:55:f4:5b:95:5e:d8:29:c8:31:
aa:53:41:a6:1b:2a:cc:8d:67:b6:d8:5f:56:7d:bd:
0e:17:88:9b:28:b8:fc:54:ff:0e:1f:d9:59:f7:6f:
99:46:76:86:69:87:f7:07:51:f6:1a:76:91:37:40:
96:de:5a:0e:c1:20:7f:b5:1b:79:c2:63:13:50:dc:
f0:35:11:2c:4a:30:e0:68:8f:dc:51:4c:2b:61:ba:
a5:e6:ad:72:8b:c4:e1:2d:73
Exponent: 65537 (0x10001)
X509v3 extensions:
X509v3 Key Usage:
Digital Signature, Non Repudiation, Key Encipherment
X509v3 Subject Key Identifier:
31:AE:51:BD:37:3E:EB:D6:98:7D:BD:DF:45:0C:92:4E:73:58:35:AA
X509v3 Authority Key Identifier:
keyid:E8:6A:BB:C2:90:EA:6C:70:22:3E:F6:F6:48:1B:03:E6:BE:B7:A6:55
X509v3 Subject Alternative Name:
DirName:/CN=User 18 Root 11
Signature Algorithm: sha1WithRSAEncryption
51:34:24:4b:78:89:95:5d:43:15:3e:62:fc:40:a0:34:a5:6e:
83:b5:ee:f0:93:ae:8a:27:97:9c:66:54:c9:aa:f5:9b:96:88:
43:25:76:b6:0d:06:36:6c:0e:08:5f:15:45:c6:cc:d1:62:18:
6b:fa:cd:af:53:7c:7c:97:30:13:a7:03:ac:db:04:25:bb:22:
7d:49:70:30:69:9f:c8:22:94:32:40:83:d3:d1:9d:1c:2a:64:
cf:a9:42:0c:ce:0c:b8:3d:63:33:bb:e1:85:45:a7:79:89:ac:
0c:1b:b5:a4:e0:1d:4d:99:d6:68:9b:c2:67:97:9c:9d:2c:57:
12:fe
-----BEGIN CERTIFICATE-----
MIICxjCCAi+gAwIBAgICEBMwDQYJKoZIhvcNAQEFBQAwYDELMAkGA1UEBhMCREUx
EDAOBgNVBAgTB0hhbWJ1cmcxFzAVBgNVBAoTDk9wZW5PZmZpY2Uub3JnMRQwEgYD
VQQLEwtEZXZlbG9wbWVudDEQMA4GA1UEAxMHUm9vdCAxMTAeFw0xMDAxMTkxMDA0
MzZaFw0zNTAxMTMxMDA0MzZaMHcxCzAJBgNVBAYTAkRFMRAwDgYDVQQIEwdIYW1i
dXJnMRcwFQYDVQQKEw5PcGVuT2ZmaWNlLm9yZzEUMBIGA1UECxMLRGV2ZWxvcG1l
bnQxJzAlBgNVBAMeHgBcAHMAdABhAHIAdABpAG4AZwAgAHEAdQBvAHQAZTCBnzAN
BgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEAu3OkTkWOgLFlttg7lsg7xC5AmCqpDS51
Kd/dKI/cZU4viyRV9FuVXtgpyDGqU0GmGyrMjWe22F9Wfb0OF4ibKLj8VP8OH9lZ
92+ZRnaGaYf3B1H2GnaRN0CW3loOwSB/tRt5wmMTUNzwNREsSjDgaI/cUUwrYbql
5q1yi8ThLXMCAwEAAaN4MHYwCwYDVR0PBAQDAgXgMB0GA1UdDgQWBBQxrlG9Nz7r
1ph9vd9FDJJOc1g1qjAfBgNVHSMEGDAWgBToarvCkOpscCI+9vZIGwPmvremVTAn
BgNVHREEIDAepBwwGjEYMBYGA1UEAxMPVXNlciAxOCBSb290IDExMA0GCSqGSIb3
DQEBBQUAA4GBAFE0JEt4iZVdQxU+YvxAoDSlboO17vCTroonl5xmVMmq9ZuWiEMl
drYNBjZsDghfFUXGzNFiGGv6za9TfHyXMBOnA6zbBCW7In1JcDBpn8gilDJAg9PR
nRwqZM+pQgzODLg9YzO74YVFp3mJrAwbtaTgHU2Z1mibwmeXnJ0sVxL+
-----END CERTIFICATE-----

View File

@ -0,0 +1,60 @@
Certificate:
Data:
Version: 3 (0x2)
Serial Number: 4116 (0x1014)
Signature Algorithm: sha1WithRSAEncryption
Issuer: C=DE, ST=Hamburg, O=OpenOffice.org, OU=Development, CN=Root 11
Validity
Not Before: Jan 19 10:05:50 2010 GMT
Not After : Jan 13 10:05:50 2035 GMT
Subject: C=DE, ST=Hamburg, O=OpenOffice.org, OU=Development, CN=\x00e\x00n\x00d\x00i\x00n\x00g\x00 \x00q\x00u\x00o\x00t\x00e\x00\
Subject Public Key Info:
Public Key Algorithm: rsaEncryption
RSA Public Key: (1024 bit)
Modulus (1024 bit):
00:ca:cc:98:77:0c:10:dd:0e:87:a2:da:b6:e6:97:
91:36:71:54:de:2b:f8:de:18:b7:23:eb:e5:e3:57:
ae:cf:0b:6d:86:0f:63:f0:c4:4e:2a:66:48:33:c4:
e3:0b:2c:f5:e6:e5:e5:0f:f8:e0:a1:bc:11:06:a1:
19:16:ec:44:77:a6:db:7d:d6:78:29:1f:57:f1:9d:
3c:b4:3a:2b:3b:94:64:6d:e3:ce:b3:fa:d8:28:e2:
ed:76:9a:97:41:64:7c:0d:48:b8:1d:6a:56:e3:f9:
4c:88:e9:1a:3c:b8:af:7a:13:67:19:59:36:46:79:
52:72:ea:51:80:65:be:e2:0f
Exponent: 65537 (0x10001)
X509v3 extensions:
X509v3 Key Usage:
Digital Signature, Non Repudiation, Key Encipherment
X509v3 Subject Key Identifier:
D2:D8:8D:EE:39:D7:EA:15:23:00:7C:9D:48:1C:51:17:F8:80:86:CE
X509v3 Authority Key Identifier:
keyid:E8:6A:BB:C2:90:EA:6C:70:22:3E:F6:F6:48:1B:03:E6:BE:B7:A6:55
X509v3 Subject Alternative Name:
DirName:/CN=User 19 Root 11
Signature Algorithm: sha1WithRSAEncryption
6e:05:c4:48:32:4a:62:6f:a3:8c:23:af:47:dd:d4:c7:c1:91:
17:7e:cd:36:73:39:a3:7b:c9:ae:da:f6:e1:bd:82:d6:72:17:
78:20:a2:27:ad:f5:d2:3f:10:66:e0:d8:ba:10:00:c3:76:5b:
de:36:cb:2a:91:25:89:08:0e:2a:6a:81:d0:a7:49:70:42:f3:
94:a3:bf:6c:6b:b9:fa:fd:f9:d4:1f:6f:75:27:b9:0d:d3:d2:
fd:5d:0d:dc:f5:34:29:a2:3a:2f:04:ab:48:41:6d:d7:2b:fd:
42:02:99:3c:cf:aa:6b:98:66:17:83:39:4a:6f:47:36:ad:db:
22:6e
-----BEGIN CERTIFICATE-----
MIICwjCCAiugAwIBAgICEBQwDQYJKoZIhvcNAQEFBQAwYDELMAkGA1UEBhMCREUx
EDAOBgNVBAgTB0hhbWJ1cmcxFzAVBgNVBAoTDk9wZW5PZmZpY2Uub3JnMRQwEgYD
VQQLEwtEZXZlbG9wbWVudDEQMA4GA1UEAxMHUm9vdCAxMTAeFw0xMDAxMTkxMDA1
NTBaFw0zNTAxMTMxMDA1NTBaMHMxCzAJBgNVBAYTAkRFMRAwDgYDVQQIEwdIYW1i
dXJnMRcwFQYDVQQKEw5PcGVuT2ZmaWNlLm9yZzEUMBIGA1UECxMLRGV2ZWxvcG1l
bnQxIzAhBgNVBAMeGgBlAG4AZABpAG4AZwAgAHEAdQBvAHQAZQBcMIGfMA0GCSqG
SIb3DQEBAQUAA4GNADCBiQKBgQDKzJh3DBDdDoei2rbml5E2cVTeK/jeGLcj6+Xj
V67PC22GD2PwxE4qZkgzxOMLLPXm5eUP+OChvBEGoRkW7ER3ptt91ngpH1fxnTy0
Ois7lGRt486z+tgo4u12mpdBZHwNSLgdalbj+UyI6Ro8uK96E2cZWTZGeVJy6lGA
Zb7iDwIDAQABo3gwdjALBgNVHQ8EBAMCBeAwHQYDVR0OBBYEFNLYje451+oVIwB8
nUgcURf4gIbOMB8GA1UdIwQYMBaAFOhqu8KQ6mxwIj729kgbA+a+t6ZVMCcGA1Ud
EQQgMB6kHDAaMRgwFgYDVQQDEw9Vc2VyIDE5IFJvb3QgMTEwDQYJKoZIhvcNAQEF
BQADgYEAbgXESDJKYm+jjCOvR93Ux8GRF37NNnM5o3vJrtr24b2C1nIXeCCiJ631
0j8QZuDYuhAAw3Zb3jbLKpEliQgOKmqB0KdJcELzlKO/bGu5+v351B9vdSe5DdPS
/V0N3PU0KaI6LwSrSEFt1yv9QgKZPM+qa5hmF4M5Sm9HNq3bIm4=
-----END CERTIFICATE-----

View File

@ -0,0 +1,60 @@
Certificate:
Data:
Version: 3 (0x2)
Serial Number: 4117 (0x1015)
Signature Algorithm: sha1WithRSAEncryption
Issuer: C=DE, ST=Hamburg, O=OpenOffice.org, OU=Development, CN=Root 11
Validity
Not Before: Jan 19 10:07:07 2010 GMT
Not After : Jan 13 10:07:07 2035 GMT
Subject: C=DE, ST=Hamburg, O=OpenOffice.org, OU=Development, CN=\x00m\x00i\x00d\x00d\x00l\x00e\x00 \x00\\x00q\x00u\x00o\x00t\x00e
Subject Public Key Info:
Public Key Algorithm: rsaEncryption
RSA Public Key: (1024 bit)
Modulus (1024 bit):
00:f0:7c:07:f6:13:52:ce:13:cf:8a:5f:7f:5f:3c:
d4:93:c8:a0:43:1f:e2:fc:3f:62:63:be:b5:17:e0:
32:b0:d0:c2:9a:35:9e:3b:29:30:b4:13:78:18:ae:
80:ba:fb:f3:fc:81:ad:aa:47:18:eb:fc:d1:76:de:
b6:cf:55:65:5e:3e:15:93:8e:9c:39:4e:a3:ae:1d:
c0:49:22:dc:25:09:33:95:0d:b5:62:7c:96:0b:05:
b6:10:ae:ee:f8:18:24:9f:d4:ed:b3:4c:a9:4d:f2:
be:6c:66:37:b9:17:cb:14:df:52:b4:a8:de:63:0d:
4f:78:58:16:ab:f2:3f:f6:a9
Exponent: 65537 (0x10001)
X509v3 extensions:
X509v3 Key Usage:
Digital Signature, Non Repudiation, Key Encipherment
X509v3 Subject Key Identifier:
41:CC:3D:88:34:10:21:13:A2:34:24:B6:4E:F9:33:3C:B3:FA:56:BC
X509v3 Authority Key Identifier:
keyid:E8:6A:BB:C2:90:EA:6C:70:22:3E:F6:F6:48:1B:03:E6:BE:B7:A6:55
X509v3 Subject Alternative Name:
DirName:/CN=User 20 Root 11
Signature Algorithm: sha1WithRSAEncryption
a7:17:c3:92:37:10:ee:9a:12:65:32:82:56:93:82:fa:0e:40:
9f:ae:30:6a:b1:6f:85:18:7f:ff:9c:30:49:b7:56:bf:a3:86:
d7:dd:5d:79:d1:7f:9a:95:b6:bd:1d:43:cc:2c:aa:7a:40:c4:
de:17:02:22:74:ec:a9:cd:8d:93:f6:6c:98:7e:bb:6a:68:70:
66:d4:a0:8f:1a:7a:8e:9e:38:35:aa:87:6a:e5:db:80:69:51:
51:68:46:4f:3d:da:17:df:6f:22:60:77:95:55:d3:12:1b:11:
c1:6f:c1:96:78:00:47:61:af:53:c0:37:44:6b:92:67:7f:14:
79:80
-----BEGIN CERTIFICATE-----
MIICwjCCAiugAwIBAgICEBUwDQYJKoZIhvcNAQEFBQAwYDELMAkGA1UEBhMCREUx
EDAOBgNVBAgTB0hhbWJ1cmcxFzAVBgNVBAoTDk9wZW5PZmZpY2Uub3JnMRQwEgYD
VQQLEwtEZXZlbG9wbWVudDEQMA4GA1UEAxMHUm9vdCAxMTAeFw0xMDAxMTkxMDA3
MDdaFw0zNTAxMTMxMDA3MDdaMHMxCzAJBgNVBAYTAkRFMRAwDgYDVQQIEwdIYW1i
dXJnMRcwFQYDVQQKEw5PcGVuT2ZmaWNlLm9yZzEUMBIGA1UECxMLRGV2ZWxvcG1l
bnQxIzAhBgNVBAMeGgBtAGkAZABkAGwAZQAgAFwAcQB1AG8AdABlMIGfMA0GCSqG
SIb3DQEBAQUAA4GNADCBiQKBgQDwfAf2E1LOE8+KX39fPNSTyKBDH+L8P2JjvrUX
4DKw0MKaNZ47KTC0E3gYroC6+/P8ga2qRxjr/NF23rbPVWVePhWTjpw5TqOuHcBJ
ItwlCTOVDbVifJYLBbYQru74GCSf1O2zTKlN8r5sZje5F8sU31K0qN5jDU94WBar
8j/2qQIDAQABo3gwdjALBgNVHQ8EBAMCBeAwHQYDVR0OBBYEFEHMPYg0ECETojQk
tk75Mzyz+la8MB8GA1UdIwQYMBaAFOhqu8KQ6mxwIj729kgbA+a+t6ZVMCcGA1Ud
EQQgMB6kHDAaMRgwFgYDVQQDEw9Vc2VyIDIwIFJvb3QgMTEwDQYJKoZIhvcNAQEF
BQADgYEApxfDkjcQ7poSZTKCVpOC+g5An64warFvhRh//5wwSbdWv6OG191dedF/
mpW2vR1DzCyqekDE3hcCInTsqc2Nk/ZsmH67amhwZtSgjxp6jp44NaqHauXbgGlR
UWhGTz3aF99vImB3lVXTEhsRwW/BlngAR2GvU8A3RGuSZ38UeYA=
-----END CERTIFICATE-----

View File

@ -0,0 +1,61 @@
Certificate:
Data:
Version: 3 (0x2)
Serial Number: 4118 (0x1016)
Signature Algorithm: sha1WithRSAEncryption
Issuer: C=DE, ST=Hamburg, O=OpenOffice.org, OU=Development, CN=Root 11
Validity
Not Before: Jan 19 10:09:50 2010 GMT
Not After : Jan 13 10:09:50 2035 GMT
Subject: C=DE, ST=Hamburg, O=OpenOffice.org, OU=Development, CN=\x00d\x00o\x00u\x00b\x00l\x00e\x00 \x00\\x00\\x00m\x00i\x00d\x00d\x00l\x00e\x00 \x00q\x00u\x00o\x00t\x00e
Subject Public Key Info:
Public Key Algorithm: rsaEncryption
RSA Public Key: (1024 bit)
Modulus (1024 bit):
00:cd:22:93:9a:93:18:34:2f:50:e0:cc:23:f4:60:
bc:96:60:d5:a5:f9:da:45:9a:5b:a3:0a:fb:71:25:
4c:bd:60:84:19:f5:93:28:c1:5d:b9:8d:05:05:4d:
01:85:aa:9e:5b:08:9c:01:f8:32:90:fe:ef:7f:eb:
cb:b3:8b:b2:c8:d1:79:d6:47:a3:d8:df:f1:d0:56:
04:04:bd:41:72:fc:98:75:10:d2:9b:b5:bc:55:a1:
fa:19:01:67:93:09:48:0a:67:ec:4d:12:47:37:6f:
c2:53:0e:c9:7a:30:ec:1d:9d:a5:e2:64:d8:92:4d:
ed:ec:b2:bb:10:96:76:28:47
Exponent: 65537 (0x10001)
X509v3 extensions:
X509v3 Key Usage:
Digital Signature, Non Repudiation, Key Encipherment
X509v3 Subject Key Identifier:
DC:FF:9A:2B:49:51:1E:FB:A7:3A:90:94:1B:E0:3E:34:89:13:48:EE
X509v3 Authority Key Identifier:
keyid:E8:6A:BB:C2:90:EA:6C:70:22:3E:F6:F6:48:1B:03:E6:BE:B7:A6:55
X509v3 Subject Alternative Name:
DirName:/CN=User 21 Root 11
Signature Algorithm: sha1WithRSAEncryption
16:aa:a6:b7:0e:e3:d2:ba:7e:9b:59:f6:cc:ce:5d:4d:2a:f2:
95:60:46:24:dd:ea:e8:08:e6:60:9c:33:82:8c:34:a2:d8:38:
fb:75:fe:31:79:10:78:7d:93:44:3b:00:90:83:a4:15:52:8d:
3a:b4:9c:c0:6f:95:2c:4f:d8:b3:3b:cf:69:ab:3c:41:3a:43:
1b:0a:8b:b0:b4:aa:8b:bf:6f:96:e2:65:4a:00:3a:49:bc:9a:
a1:cd:13:b1:24:93:f6:44:cd:d3:71:91:da:4f:dd:75:3d:68:
5c:6b:49:14:8a:23:b5:b6:4f:b6:41:d0:a7:16:7c:67:4c:b3:
0a:88
-----BEGIN CERTIFICATE-----
MIIC0zCCAjygAwIBAgICEBYwDQYJKoZIhvcNAQEFBQAwYDELMAkGA1UEBhMCREUx
EDAOBgNVBAgTB0hhbWJ1cmcxFzAVBgNVBAoTDk9wZW5PZmZpY2Uub3JnMRQwEgYD
VQQLEwtEZXZlbG9wbWVudDEQMA4GA1UEAxMHUm9vdCAxMTAeFw0xMDAxMTkxMDA5
NTBaFw0zNTAxMTMxMDA5NTBaMIGDMQswCQYDVQQGEwJERTEQMA4GA1UECBMHSGFt
YnVyZzEXMBUGA1UEChMOT3Blbk9mZmljZS5vcmcxFDASBgNVBAsTC0RldmVsb3Bt
ZW50MTMwMQYDVQQDHioAZABvAHUAYgBsAGUAIABcAFwAbQBpAGQAZABsAGUAIABx
AHUAbwB0AGUwgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGBAM0ik5qTGDQvUODM
I/RgvJZg1aX52kWaW6MK+3ElTL1ghBn1kyjBXbmNBQVNAYWqnlsInAH4MpD+73/r
y7OLssjRedZHo9jf8dBWBAS9QXL8mHUQ0pu1vFWh+hkBZ5MJSApn7E0SRzdvwlMO
yXow7B2dpeJk2JJN7eyyuxCWdihHAgMBAAGjeDB2MAsGA1UdDwQEAwIF4DAdBgNV
HQ4EFgQU3P+aK0lRHvunOpCUG+A+NIkTSO4wHwYDVR0jBBgwFoAU6Gq7wpDqbHAi
Pvb2SBsD5r63plUwJwYDVR0RBCAwHqQcMBoxGDAWBgNVBAMTD1VzZXIgMjEgUm9v
dCAxMTANBgkqhkiG9w0BAQUFAAOBgQAWqqa3DuPSun6bWfbMzl1NKvKVYEYk3ero
COZgnDOCjDSi2Dj7df4xeRB4fZNEOwCQg6QVUo06tJzAb5UsT9izO89pqzxBOkMb
CouwtKqLv2+W4mVKADpJvJqhzROxJJP2RM3TcZHaT911PWhca0kUiiO1tk+2QdCn
FnxnTLMKiA==
-----END CERTIFICATE-----

View File

@ -0,0 +1,61 @@
Certificate:
Data:
Version: 3 (0x2)
Serial Number: 4119 (0x1017)
Signature Algorithm: sha1WithRSAEncryption
Issuer: C=DE, ST=Hamburg, O=OpenOffice.org, OU=Development, CN=Root 11
Validity
Not Before: Jan 19 10:11:53 2010 GMT
Not After : Jan 13 10:11:53 2035 GMT
Subject: C=DE, ST=Hamburg, O=OpenOffice.org, OU=Development, CN=\x00p\x00a\x00r\x00t\x00i\x00a\x00l\x00l\x00y\x00 \x00\\x00e\x00n\x00c\x00l\x00o\x00s\x00i\x00n\x00g\x00 \x00q\x00u\x00o\x00t\x00e\x00\
Subject Public Key Info:
Public Key Algorithm: rsaEncryption
RSA Public Key: (1024 bit)
Modulus (1024 bit):
00:e7:c9:bb:89:11:2f:2c:39:bc:d3:f5:d9:86:d4:
8e:d7:20:11:81:75:30:25:7e:2b:29:70:61:83:38:
24:d1:0f:cc:0b:88:71:29:06:05:a5:53:d2:00:2f:
12:0c:7d:42:e6:47:33:de:cc:f8:7b:2a:5d:d9:cb:
69:24:91:38:bf:0c:1a:12:cf:1e:f9:44:c2:1c:e8:
6f:ea:ab:8b:92:4c:93:8c:69:61:b9:57:b3:1d:d0:
03:3e:13:9d:30:bd:b2:b9:d9:c7:9b:4d:18:45:b0:
19:19:15:58:4c:bd:5a:a1:59:4f:f0:1f:99:26:3b:
4e:76:c6:bb:21:3c:94:bc:d9
Exponent: 65537 (0x10001)
X509v3 extensions:
X509v3 Key Usage:
Digital Signature, Non Repudiation, Key Encipherment
X509v3 Subject Key Identifier:
43:E4:70:39:E3:91:80:2A:C3:BC:1A:F4:A3:51:4B:99:C5:20:93:A6
X509v3 Authority Key Identifier:
keyid:E8:6A:BB:C2:90:EA:6C:70:22:3E:F6:F6:48:1B:03:E6:BE:B7:A6:55
X509v3 Subject Alternative Name:
DirName:/CN=User 22 Root 11
Signature Algorithm: sha1WithRSAEncryption
28:ce:8c:f0:bf:56:c6:a4:02:df:dd:1d:75:dc:cf:62:a0:92:
58:64:91:8c:bb:96:3c:52:d5:66:6c:31:7e:1c:d9:a8:e5:1c:
a6:9f:5e:26:3f:69:71:c6:d7:5d:02:4f:a7:42:a5:85:fa:38:
01:43:36:54:75:4c:51:a2:99:5d:72:05:9a:9b:fc:5e:83:9b:
a0:ef:11:b1:a4:dd:a5:50:2f:d0:14:dd:04:0f:8b:93:7e:4b:
3e:24:04:45:d0:98:46:49:74:9f:d7:b4:68:09:dc:b6:ac:35:
3f:5d:f9:ee:77:a4:35:46:75:a4:6a:d6:c1:53:4f:d2:0c:38:
3c:df
-----BEGIN CERTIFICATE-----
MIIC3zCCAkigAwIBAgICEBcwDQYJKoZIhvcNAQEFBQAwYDELMAkGA1UEBhMCREUx
EDAOBgNVBAgTB0hhbWJ1cmcxFzAVBgNVBAoTDk9wZW5PZmZpY2Uub3JnMRQwEgYD
VQQLEwtEZXZlbG9wbWVudDEQMA4GA1UEAxMHUm9vdCAxMTAeFw0xMDAxMTkxMDEx
NTNaFw0zNTAxMTMxMDExNTNaMIGPMQswCQYDVQQGEwJERTEQMA4GA1UECBMHSGFt
YnVyZzEXMBUGA1UEChMOT3Blbk9mZmljZS5vcmcxFDASBgNVBAsTC0RldmVsb3Bt
ZW50MT8wPQYDVQQDHjYAcABhAHIAdABpAGEAbABsAHkAIABcAGUAbgBjAGwAbwBz
AGkAbgBnACAAcQB1AG8AdABlAFwwgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGB
AOfJu4kRLyw5vNP12YbUjtcgEYF1MCV+KylwYYM4JNEPzAuIcSkGBaVT0gAvEgx9
QuZHM97M+HsqXdnLaSSROL8MGhLPHvlEwhzob+qri5JMk4xpYblXsx3QAz4TnTC9
srnZx5tNGEWwGRkVWEy9WqFZT/AfmSY7TnbGuyE8lLzZAgMBAAGjeDB2MAsGA1Ud
DwQEAwIF4DAdBgNVHQ4EFgQUQ+RwOeORgCrDvBr0o1FLmcUgk6YwHwYDVR0jBBgw
FoAU6Gq7wpDqbHAiPvb2SBsD5r63plUwJwYDVR0RBCAwHqQcMBoxGDAWBgNVBAMT
D1VzZXIgMjIgUm9vdCAxMTANBgkqhkiG9w0BAQUFAAOBgQAozozwv1bGpALf3R11
3M9ioJJYZJGMu5Y8UtVmbDF+HNmo5Rymn14mP2lxxtddAk+nQqWF+jgBQzZUdUxR
opldcgWam/xeg5ug7xGxpN2lUC/QFN0ED4uTfks+JARF0JhGSXSf17RoCdy2rDU/
Xfnud6Q1RnWkatbBU0/SDDg83w==
-----END CERTIFICATE-----

View File

@ -0,0 +1,61 @@
Certificate:
Data:
Version: 3 (0x2)
Serial Number: 4120 (0x1018)
Signature Algorithm: sha1WithRSAEncryption
Issuer: C=DE, ST=Hamburg, O=OpenOffice.org, OU=Development, CN=Root 11
Validity
Not Before: Jan 19 10:13:38 2010 GMT
Not After : Jan 13 10:13:38 2035 GMT
Subject: C=DE, ST=Hamburg, O=OpenOffice.org, OU=Development, CN=\x00\\x00U\x00s\x00e\x00r\x00 \x002\x003\x00,\x00 \x00s\x00t\x00a\x00r\x00t\x00i\x00n\x00g\x00 \x00q\x00u\x00o\x00t\x00e
Subject Public Key Info:
Public Key Algorithm: rsaEncryption
RSA Public Key: (1024 bit)
Modulus (1024 bit):
00:b9:e3:64:f8:02:be:98:47:de:c6:f4:22:14:4f:
22:fe:17:8c:14:7f:b8:27:44:51:9d:5a:79:33:b4:
d0:21:27:b0:ed:f9:9f:3d:54:ef:ba:3a:d8:89:2a:
ca:a8:8f:f3:f6:a7:6b:5f:0a:58:2d:a0:e3:05:3a:
26:a6:1e:b6:89:a1:e1:71:11:e7:16:93:29:69:f8:
14:a2:e3:d7:4e:e5:60:40:d7:40:c5:37:d6:95:7c:
4f:35:fd:a8:82:7f:90:32:1d:99:e7:8a:b9:93:a4:
f3:23:0a:a5:f9:56:31:73:d8:e3:cb:d6:0e:2f:2b:
ee:8e:b5:ca:eb:63:82:1c:0b
Exponent: 65537 (0x10001)
X509v3 extensions:
X509v3 Key Usage:
Digital Signature, Non Repudiation, Key Encipherment
X509v3 Subject Key Identifier:
80:A8:F7:13:E3:E8:F8:A6:60:94:21:C1:FE:54:54:89:AC:4B:DF:45
X509v3 Authority Key Identifier:
keyid:E8:6A:BB:C2:90:EA:6C:70:22:3E:F6:F6:48:1B:03:E6:BE:B7:A6:55
X509v3 Subject Alternative Name:
DirName:/CN=User 23 Root 11
Signature Algorithm: sha1WithRSAEncryption
be:31:bd:4a:56:80:64:f0:1e:ea:77:4a:f3:e3:ec:f0:ad:27:
cc:05:01:fa:d2:12:7c:8e:85:5b:37:54:9c:4f:96:2d:1c:81:
e4:21:3d:4b:d9:86:1a:6c:29:5e:88:f2:ae:04:f1:70:87:25:
b9:9a:4a:ef:dd:21:f9:17:33:ee:a1:eb:38:fb:c4:73:72:70:
0c:67:58:96:95:8c:2c:5a:4a:31:28:50:52:64:65:5c:63:60:
de:24:df:a0:e9:0d:c0:b6:d6:4c:51:a7:5a:e8:dd:f6:ff:49:
e6:6f:7f:86:38:5d:c7:f9:eb:55:f1:b2:89:3b:cd:41:f7:5d:
a8:b0
-----BEGIN CERTIFICATE-----
MIIC2TCCAkKgAwIBAgICEBgwDQYJKoZIhvcNAQEFBQAwYDELMAkGA1UEBhMCREUx
EDAOBgNVBAgTB0hhbWJ1cmcxFzAVBgNVBAoTDk9wZW5PZmZpY2Uub3JnMRQwEgYD
VQQLEwtEZXZlbG9wbWVudDEQMA4GA1UEAxMHUm9vdCAxMTAeFw0xMDAxMTkxMDEz
MzhaFw0zNTAxMTMxMDEzMzhaMIGJMQswCQYDVQQGEwJERTEQMA4GA1UECBMHSGFt
YnVyZzEXMBUGA1UEChMOT3Blbk9mZmljZS5vcmcxFDASBgNVBAsTC0RldmVsb3Bt
ZW50MTkwNwYDVQQDHjAAXABVAHMAZQByACAAMgAzACwAIABzAHQAYQByAHQAaQBu
AGcAIABxAHUAbwB0AGUwgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGBALnjZPgC
vphH3sb0IhRPIv4XjBR/uCdEUZ1aeTO00CEnsO35nz1U77o62IkqyqiP8/ana18K
WC2g4wU6JqYetomh4XER5xaTKWn4FKLj107lYEDXQMU31pV8TzX9qIJ/kDIdmeeK
uZOk8yMKpflWMXPY48vWDi8r7o61yutjghwLAgMBAAGjeDB2MAsGA1UdDwQEAwIF
4DAdBgNVHQ4EFgQUgKj3E+Po+KZglCHB/lRUiaxL30UwHwYDVR0jBBgwFoAU6Gq7
wpDqbHAiPvb2SBsD5r63plUwJwYDVR0RBCAwHqQcMBoxGDAWBgNVBAMTD1VzZXIg
MjMgUm9vdCAxMTANBgkqhkiG9w0BAQUFAAOBgQC+Mb1KVoBk8B7qd0rz4+zwrSfM
BQH60hJ8joVbN1ScT5YtHIHkIT1L2YYabCleiPKuBPFwhyW5mkrv3SH5FzPuoes4
+8RzcnAMZ1iWlYwsWkoxKFBSZGVcY2DeJN+g6Q3AttZMUada6N32/0nmb3+GOF3H
+etV8bKJO81B912osA==
-----END CERTIFICATE-----

View File

@ -0,0 +1,61 @@
Certificate:
Data:
Version: 3 (0x2)
Serial Number: 4121 (0x1019)
Signature Algorithm: sha1WithRSAEncryption
Issuer: C=DE, ST=Hamburg, O=OpenOffice.org, OU=Development, CN=Root 11
Validity
Not Before: Jan 19 10:14:50 2010 GMT
Not After : Jan 13 10:14:50 2035 GMT
Subject: C=DE, ST=Hamburg, O=OpenOffice.org, OU=Development, CN=\x00U\x00s\x00e\x00r\x00 \x002\x004\x00,\x00 \x00e\x00n\x00d\x00i\x00n\x00g\x00 \x00q\x00u\x00o\x00t\x00e\x00\
Subject Public Key Info:
Public Key Algorithm: rsaEncryption
RSA Public Key: (1024 bit)
Modulus (1024 bit):
00:9c:cd:78:e7:11:1d:61:d4:0c:c6:87:c9:28:47:
84:23:6b:86:c3:38:37:62:5a:9a:4b:50:fc:b7:f3:
d9:4b:1b:20:ff:06:42:bb:22:33:c5:22:12:2c:bb:
e6:c8:08:69:0e:af:e9:22:45:9f:ef:2c:26:46:d7:
1b:36:db:70:58:32:bc:3d:d7:7d:64:27:44:54:6c:
89:12:88:d7:31:3d:3f:5c:96:cb:69:9f:b1:a9:e0:
9a:de:50:b7:ad:d8:29:bf:bc:3c:21:e9:a2:79:21:
46:81:ea:90:df:44:0c:6c:bb:f8:47:c8:e9:79:d1:
8d:40:1b:5d:d3:75:9b:e4:0b
Exponent: 65537 (0x10001)
X509v3 extensions:
X509v3 Key Usage:
Digital Signature, Non Repudiation, Key Encipherment
X509v3 Subject Key Identifier:
81:14:09:35:7F:F6:7A:83:6B:19:C2:22:24:92:E6:D4:EF:52:1C:0B
X509v3 Authority Key Identifier:
keyid:E8:6A:BB:C2:90:EA:6C:70:22:3E:F6:F6:48:1B:03:E6:BE:B7:A6:55
X509v3 Subject Alternative Name:
DirName:/CN=User 24 Root 11
Signature Algorithm: sha1WithRSAEncryption
7c:65:0b:e2:cd:ca:00:e8:40:0f:37:70:a1:89:54:5d:03:06:
2c:60:56:dc:2f:b7:01:ac:75:58:f6:82:8f:91:63:e2:91:d1:
17:7b:bd:63:b9:9c:4e:46:86:3e:a6:f5:a6:56:ac:90:2a:f4:
d8:a0:6c:02:15:6e:d9:f6:2a:f8:9a:c4:48:bd:cd:54:82:55:
c6:d5:52:76:09:e3:3d:17:8d:5c:46:16:ae:9e:56:df:9f:c3:
05:15:6f:ae:d0:b5:76:67:48:2d:5a:3c:59:da:1b:13:c3:84:
5e:2a:57:8d:86:9a:f1:8a:5d:01:47:93:44:62:af:65:03:e1:
df:10
-----BEGIN CERTIFICATE-----
MIIC1TCCAj6gAwIBAgICEBkwDQYJKoZIhvcNAQEFBQAwYDELMAkGA1UEBhMCREUx
EDAOBgNVBAgTB0hhbWJ1cmcxFzAVBgNVBAoTDk9wZW5PZmZpY2Uub3JnMRQwEgYD
VQQLEwtEZXZlbG9wbWVudDEQMA4GA1UEAxMHUm9vdCAxMTAeFw0xMDAxMTkxMDE0
NTBaFw0zNTAxMTMxMDE0NTBaMIGFMQswCQYDVQQGEwJERTEQMA4GA1UECBMHSGFt
YnVyZzEXMBUGA1UEChMOT3Blbk9mZmljZS5vcmcxFDASBgNVBAsTC0RldmVsb3Bt
ZW50MTUwMwYDVQQDHiwAVQBzAGUAcgAgADIANAAsACAAZQBuAGQAaQBuAGcAIABx
AHUAbwB0AGUAXDCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEAnM145xEdYdQM
xofJKEeEI2uGwzg3YlqaS1D8t/PZSxsg/wZCuyIzxSISLLvmyAhpDq/pIkWf7ywm
RtcbNttwWDK8Pdd9ZCdEVGyJEojXMT0/XJbLaZ+xqeCa3lC3rdgpv7w8IemieSFG
geqQ30QMbLv4R8jpedGNQBtd03Wb5AsCAwEAAaN4MHYwCwYDVR0PBAQDAgXgMB0G
A1UdDgQWBBSBFAk1f/Z6g2sZwiIkkubU71IcCzAfBgNVHSMEGDAWgBToarvCkOps
cCI+9vZIGwPmvremVTAnBgNVHREEIDAepBwwGjEYMBYGA1UEAxMPVXNlciAyNCBS
b290IDExMA0GCSqGSIb3DQEBBQUAA4GBAHxlC+LNygDoQA83cKGJVF0DBixgVtwv
twGsdVj2go+RY+KR0Rd7vWO5nE5Ghj6m9aZWrJAq9NigbAIVbtn2KviaxEi9zVSC
VcbVUnYJ4z0XjVxGFq6eVt+fwwUVb67QtXZnSC1aPFnaGxPDhF4qV42GmvGKXQFH
k0Rir2UD4d8Q
-----END CERTIFICATE-----

View File

@ -0,0 +1,61 @@
Certificate:
Data:
Version: 3 (0x2)
Serial Number: 4122 (0x101a)
Signature Algorithm: sha1WithRSAEncryption
Issuer: C=DE, ST=Hamburg, O=OpenOffice.org, OU=Development, CN=Root 11
Validity
Not Before: Jan 19 10:16:10 2010 GMT
Not After : Jan 13 10:16:10 2035 GMT
Subject: C=DE, ST=Hamburg, O=OpenOffice.org, OU=Development, CN=\x00\\x00U\x00s\x00e\x00r\x00 \x002\x005\x00,\x00 \x00e\x00n\x00c\x00l\x00o\x00s\x00i\x00n\x00g\x00 \x00q\x00u\x00o\x00t\x00e\x00\
Subject Public Key Info:
Public Key Algorithm: rsaEncryption
RSA Public Key: (1024 bit)
Modulus (1024 bit):
00:ad:20:4a:85:d2:a8:2a:f8:0e:4c:b5:2d:72:a5:
1d:0e:b1:8a:76:2c:b0:bf:7a:48:b8:57:29:cb:40:
c5:8a:e8:0e:d3:f6:f9:b1:90:a6:4a:bb:82:45:fd:
c2:ff:03:fa:fc:4a:5d:93:0b:52:a2:17:10:b1:7e:
13:1d:9d:28:26:e3:44:bd:fd:26:da:b2:7b:47:e1:
c4:35:ea:53:1b:94:76:cc:f2:f6:c1:86:f2:18:46:
e1:71:c0:5d:e5:8f:0a:10:7a:ea:61:af:d0:ba:28:
22:13:77:0f:7d:9e:e0:0a:f0:92:ce:dd:b3:5d:a6:
df:c1:eb:a8:29:57:e6:71:65
Exponent: 65537 (0x10001)
X509v3 extensions:
X509v3 Key Usage:
Digital Signature, Non Repudiation, Key Encipherment
X509v3 Subject Key Identifier:
C3:EE:4A:7E:AC:46:2D:BA:42:F7:33:1F:E7:49:FA:21:D3:BC:DD:49
X509v3 Authority Key Identifier:
keyid:E8:6A:BB:C2:90:EA:6C:70:22:3E:F6:F6:48:1B:03:E6:BE:B7:A6:55
X509v3 Subject Alternative Name:
DirName:/CN=User 25 Root 11
Signature Algorithm: sha1WithRSAEncryption
bf:63:34:12:e3:4b:83:4e:e5:c5:08:c3:b3:ea:be:38:33:38:
3c:99:c3:ca:08:84:05:d4:21:53:7a:7d:43:86:c2:63:e2:d3:
7c:21:3c:72:fa:c6:f3:bf:2b:10:5e:ca:4b:2c:2c:1c:e3:10:
eb:7c:ff:b1:20:b2:47:1b:b3:3e:77:b6:74:fb:83:85:ac:b8:
c9:5b:ca:8a:14:2f:e4:81:6e:04:6f:c8:37:c0:9f:c0:41:0f:
b4:6e:21:82:69:51:e8:68:09:72:c4:8c:72:db:47:0b:a5:52:
d7:e7:b3:5d:10:9c:ed:14:af:1c:fd:0b:11:a3:fd:f9:b9:2d:
48:b5
-----BEGIN CERTIFICATE-----
MIIC3TCCAkagAwIBAgICEBowDQYJKoZIhvcNAQEFBQAwYDELMAkGA1UEBhMCREUx
EDAOBgNVBAgTB0hhbWJ1cmcxFzAVBgNVBAoTDk9wZW5PZmZpY2Uub3JnMRQwEgYD
VQQLEwtEZXZlbG9wbWVudDEQMA4GA1UEAxMHUm9vdCAxMTAeFw0xMDAxMTkxMDE2
MTBaFw0zNTAxMTMxMDE2MTBaMIGNMQswCQYDVQQGEwJERTEQMA4GA1UECBMHSGFt
YnVyZzEXMBUGA1UEChMOT3Blbk9mZmljZS5vcmcxFDASBgNVBAsTC0RldmVsb3Bt
ZW50MT0wOwYDVQQDHjQAXABVAHMAZQByACAAMgA1ACwAIABlAG4AYwBsAG8AcwBp
AG4AZwAgAHEAdQBvAHQAZQBcMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCt
IEqF0qgq+A5MtS1ypR0OsYp2LLC/eki4VynLQMWK6A7T9vmxkKZKu4JF/cL/A/r8
Sl2TC1KiFxCxfhMdnSgm40S9/SbasntH4cQ16lMblHbM8vbBhvIYRuFxwF3ljwoQ
euphr9C6KCITdw99nuAK8JLO3bNdpt/B66gpV+ZxZQIDAQABo3gwdjALBgNVHQ8E
BAMCBeAwHQYDVR0OBBYEFMPuSn6sRi26QvczH+dJ+iHTvN1JMB8GA1UdIwQYMBaA
FOhqu8KQ6mxwIj729kgbA+a+t6ZVMCcGA1UdEQQgMB6kHDAaMRgwFgYDVQQDEw9V
c2VyIDI1IFJvb3QgMTEwDQYJKoZIhvcNAQEFBQADgYEAv2M0EuNLg07lxQjDs+q+
ODM4PJnDygiEBdQhU3p9Q4bCY+LTfCE8cvrG878rEF7KSywsHOMQ63z/sSCyRxuz
Pne2dPuDhay4yVvKihQv5IFuBG/IN8CfwEEPtG4hgmlR6GgJcsSMcttHC6VS1+ez
XRCc7RSvHP0LEaP9+bktSLU=
-----END CERTIFICATE-----

View File

@ -0,0 +1,61 @@
Certificate:
Data:
Version: 3 (0x2)
Serial Number: 4123 (0x101b)
Signature Algorithm: sha1WithRSAEncryption
Issuer: C=DE, ST=Hamburg, O=OpenOffice.org, OU=Development, CN=Root 11
Validity
Not Before: Jan 19 10:17:45 2010 GMT
Not After : Jan 13 10:17:45 2035 GMT
Subject: C=DE, ST=Hamburg, O=OpenOffice.org, OU=Development, CN=\x00U\x00s\x00e\x00r\x00 \x002\x006\x00\\x00,\x00 \x00m\x00i\x00d\x00d\x00l\x00e\x00 \x00q\x00u\x00o\x00t\x00e
Subject Public Key Info:
Public Key Algorithm: rsaEncryption
RSA Public Key: (1024 bit)
Modulus (1024 bit):
00:ec:4c:2b:ba:b1:e5:ba:83:e8:64:6c:67:fe:f9:
84:9a:71:68:0b:10:b0:2e:2c:21:d8:6d:c8:cc:de:
82:76:15:b8:74:a0:4b:3c:39:f0:ee:3a:08:6c:0e:
0c:36:51:ed:44:04:ca:2b:76:30:6f:85:d4:f6:f0:
7e:53:2b:17:90:6a:7b:79:e0:c2:00:f2:5f:dd:19:
8f:09:7a:a2:c8:85:95:24:e0:41:39:ec:75:e1:c7:
03:ba:6d:e9:81:48:8b:36:38:e0:99:3e:58:04:e3:
03:8d:e4:3b:95:98:0a:23:96:f1:96:50:06:5d:71:
6f:02:e1:c5:cd:e0:5c:c4:7b
Exponent: 65537 (0x10001)
X509v3 extensions:
X509v3 Key Usage:
Digital Signature, Non Repudiation, Key Encipherment
X509v3 Subject Key Identifier:
1D:A3:64:F0:93:51:C2:F2:1A:BB:D0:2D:20:95:5E:19:94:4C:72:BB
X509v3 Authority Key Identifier:
keyid:E8:6A:BB:C2:90:EA:6C:70:22:3E:F6:F6:48:1B:03:E6:BE:B7:A6:55
X509v3 Subject Alternative Name:
DirName:/CN=User 26 Root 11
Signature Algorithm: sha1WithRSAEncryption
8c:c1:56:7d:d9:a8:f7:af:4b:57:4a:a5:2a:32:11:12:e0:d8:
0e:10:39:8f:17:53:25:f5:c6:57:55:e4:f0:16:f2:11:cc:af:
cc:44:6b:23:6f:8e:2a:df:ee:ff:f0:d4:3f:0a:85:7e:19:de:
f8:cf:69:be:8b:59:ad:3c:be:3c:d7:32:ac:ba:82:91:28:23:
71:ba:b5:29:05:e4:98:ee:2b:bb:56:04:7f:8b:69:c5:f9:4c:
1b:0b:2e:3a:46:41:8e:da:16:68:9f:c7:57:71:8e:97:0d:b0:
a1:92:ae:7c:75:46:ef:b4:6d:8e:e7:53:07:23:a4:e1:e0:f0:
e7:3b
-----BEGIN CERTIFICATE-----
MIIC1TCCAj6gAwIBAgICEBswDQYJKoZIhvcNAQEFBQAwYDELMAkGA1UEBhMCREUx
EDAOBgNVBAgTB0hhbWJ1cmcxFzAVBgNVBAoTDk9wZW5PZmZpY2Uub3JnMRQwEgYD
VQQLEwtEZXZlbG9wbWVudDEQMA4GA1UEAxMHUm9vdCAxMTAeFw0xMDAxMTkxMDE3
NDVaFw0zNTAxMTMxMDE3NDVaMIGFMQswCQYDVQQGEwJERTEQMA4GA1UECBMHSGFt
YnVyZzEXMBUGA1UEChMOT3Blbk9mZmljZS5vcmcxFDASBgNVBAsTC0RldmVsb3Bt
ZW50MTUwMwYDVQQDHiwAVQBzAGUAcgAgADIANgBcACwAIABtAGkAZABkAGwAZQAg
AHEAdQBvAHQAZTCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEA7EwrurHluoPo
ZGxn/vmEmnFoCxCwLiwh2G3IzN6CdhW4dKBLPDnw7joIbA4MNlHtRATKK3Ywb4XU
9vB+UysXkGp7eeDCAPJf3RmPCXqiyIWVJOBBOex14ccDum3pgUiLNjjgmT5YBOMD
jeQ7lZgKI5bxllAGXXFvAuHFzeBcxHsCAwEAAaN4MHYwCwYDVR0PBAQDAgXgMB0G
A1UdDgQWBBQdo2Twk1HC8hq70C0glV4ZlExyuzAfBgNVHSMEGDAWgBToarvCkOps
cCI+9vZIGwPmvremVTAnBgNVHREEIDAepBwwGjEYMBYGA1UEAxMPVXNlciAyNiBS
b290IDExMA0GCSqGSIb3DQEBBQUAA4GBAIzBVn3ZqPevS1dKpSoyERLg2A4QOY8X
UyX1xldV5PAW8hHMr8xEayNvjirf7v/w1D8KhX4Z3vjPab6LWa08vjzXMqy6gpEo
I3G6tSkF5JjuK7tWBH+LacX5TBsLLjpGQY7aFmifx1dxjpcNsKGSrnx1Ru+0bY7n
UwcjpOHg8Oc7
-----END CERTIFICATE-----

View File

@ -0,0 +1,60 @@
Certificate:
Data:
Version: 3 (0x2)
Serial Number: 4124 (0x101c)
Signature Algorithm: sha1WithRSAEncryption
Issuer: C=DE, ST=Hamburg, O=OpenOffice.org, OU=Development, CN=Root 11
Validity
Not Before: Jan 19 10:19:13 2010 GMT
Not After : Jan 13 10:19:13 2035 GMT
Subject: C=DE, ST=Hamburg, O=OpenOffice.org, OU=Development, CN=comma, comma, comma ,
Subject Public Key Info:
Public Key Algorithm: rsaEncryption
RSA Public Key: (1024 bit)
Modulus (1024 bit):
00:af:2e:02:1a:b8:ed:7e:6e:27:2f:6e:ca:dc:57:
11:17:88:37:38:37:26:d0:fb:d0:ee:ad:f3:a8:ad:
f5:8a:53:04:6a:82:a7:31:b5:e6:ce:88:24:fa:22:
75:84:1b:a8:8c:fd:7f:63:0c:fc:13:41:82:60:a3:
19:33:3d:d3:18:6e:09:c5:c7:e7:e9:9e:49:dd:f4:
77:ef:f1:06:91:9a:c5:57:68:e5:0f:59:19:8d:53:
ff:cb:ae:11:33:48:5c:eb:72:e8:2f:67:ae:94:42:
d3:5b:2e:31:e3:6f:a7:5e:5e:9c:ea:2c:d2:c3:af:
66:10:34:32:e5:2d:3f:55:c1
Exponent: 65537 (0x10001)
X509v3 extensions:
X509v3 Key Usage:
Digital Signature, Non Repudiation, Key Encipherment
X509v3 Subject Key Identifier:
A1:FB:82:9C:27:AD:83:67:5E:8C:CC:A2:BA:32:3C:30:26:74:F4:CE
X509v3 Authority Key Identifier:
keyid:E8:6A:BB:C2:90:EA:6C:70:22:3E:F6:F6:48:1B:03:E6:BE:B7:A6:55
X509v3 Subject Alternative Name:
DirName:/CN=User 27 Root 11
Signature Algorithm: sha1WithRSAEncryption
c6:72:8b:f8:57:9e:b7:bf:b1:f3:99:41:1c:8c:47:a1:93:d8:
62:8e:2d:68:6c:db:12:02:86:e0:66:65:c1:7c:c4:83:35:4c:
16:53:fd:34:c1:3c:60:15:fc:3d:3b:90:07:68:ca:af:a1:10:
39:c4:6b:15:a6:1a:71:51:20:ea:35:84:ef:8f:ac:51:bc:d7:
84:d8:35:71:44:8e:8c:4f:59:76:3d:b3:5f:5c:26:9e:bc:ee:
09:40:13:3b:38:85:02:56:7d:97:db:4d:3d:b5:a1:66:cf:df:
19:7a:2f:71:b7:a4:12:c3:9b:df:83:f9:a8:8a:00:68:e4:3a:
ee:25
-----BEGIN CERTIFICATE-----
MIICvTCCAiagAwIBAgICEBwwDQYJKoZIhvcNAQEFBQAwYDELMAkGA1UEBhMCREUx
EDAOBgNVBAgTB0hhbWJ1cmcxFzAVBgNVBAoTDk9wZW5PZmZpY2Uub3JnMRQwEgYD
VQQLEwtEZXZlbG9wbWVudDEQMA4GA1UEAxMHUm9vdCAxMTAeFw0xMDAxMTkxMDE5
MTNaFw0zNTAxMTMxMDE5MTNaMG4xCzAJBgNVBAYTAkRFMRAwDgYDVQQIEwdIYW1i
dXJnMRcwFQYDVQQKEw5PcGVuT2ZmaWNlLm9yZzEUMBIGA1UECxMLRGV2ZWxvcG1l
bnQxHjAcBgNVBAMTFWNvbW1hLCBjb21tYSwgY29tbWEgLDCBnzANBgkqhkiG9w0B
AQEFAAOBjQAwgYkCgYEAry4CGrjtfm4nL27K3FcRF4g3ODcm0PvQ7q3zqK31ilME
aoKnMbXmzogk+iJ1hBuojP1/Ywz8E0GCYKMZMz3TGG4Jxcfn6Z5J3fR37/EGkZrF
V2jlD1kZjVP/y64RM0hc63LoL2eulELTWy4x42+nXl6c6izSw69mEDQy5S0/VcEC
AwEAAaN4MHYwCwYDVR0PBAQDAgXgMB0GA1UdDgQWBBSh+4KcJ62DZ16MzKK6Mjww
JnT0zjAfBgNVHSMEGDAWgBToarvCkOpscCI+9vZIGwPmvremVTAnBgNVHREEIDAe
pBwwGjEYMBYGA1UEAxMPVXNlciAyNyBSb290IDExMA0GCSqGSIb3DQEBBQUAA4GB
AMZyi/hXnre/sfOZQRyMR6GT2GKOLWhs2xIChuBmZcF8xIM1TBZT/TTBPGAV/D07
kAdoyq+hEDnEaxWmGnFRIOo1hO+PrFG814TYNXFEjoxPWXY9s19cJp687glAEzs4
hQJWfZfbTT21oWbP3xl6L3G3pBLDm9+D+aiKAGjkOu4l
-----END CERTIFICATE-----

View File

@ -0,0 +1,60 @@
Certificate:
Data:
Version: 3 (0x2)
Serial Number: 4125 (0x101d)
Signature Algorithm: sha1WithRSAEncryption
Issuer: C=DE, ST=Hamburg, O=OpenOffice.org, OU=Development, CN=Root 11
Validity
Not Before: Jan 19 10:20:47 2010 GMT
Not After : Jan 13 10:20:47 2035 GMT
Subject: C=DE, ST=Hamburg, O=OpenOffice.org, OU=Development, CN=equal CN=User 28
Subject Public Key Info:
Public Key Algorithm: rsaEncryption
RSA Public Key: (1024 bit)
Modulus (1024 bit):
00:ae:df:12:64:ab:d9:2f:ee:21:64:b5:08:c5:c8:
8f:a1:ad:0e:b9:28:91:69:74:13:a5:aa:49:fe:fa:
02:9d:37:db:0a:3b:26:6a:20:25:3d:f9:2d:b2:3b:
39:c8:c6:e3:a7:aa:a1:0b:b2:1b:58:43:e6:3c:3f:
67:fe:bb:bd:9b:b5:d9:de:e9:ed:76:ab:fd:f5:c8:
15:b2:fb:a6:3f:23:ef:9f:5f:71:43:b3:be:55:1e:
85:5f:13:b1:6b:9d:42:d7:30:a8:d2:9b:fe:71:7a:
c7:d3:60:7a:cf:e2:83:75:83:b8:1c:d3:ef:ee:94:
3f:14:63:aa:7c:15:4e:42:1d
Exponent: 65537 (0x10001)
X509v3 extensions:
X509v3 Key Usage:
Digital Signature, Non Repudiation, Key Encipherment
X509v3 Subject Key Identifier:
3B:2D:2B:5F:2E:E6:32:23:AE:47:B7:30:25:CB:ED:B0:6D:0C:30:E4
X509v3 Authority Key Identifier:
keyid:E8:6A:BB:C2:90:EA:6C:70:22:3E:F6:F6:48:1B:03:E6:BE:B7:A6:55
X509v3 Subject Alternative Name:
DirName:/CN=User 28 Root 11
Signature Algorithm: sha1WithRSAEncryption
5b:cf:de:92:f8:ac:39:fb:0a:81:70:5b:17:d0:0d:0d:85:5e:
2e:7d:be:d1:1a:ad:1d:99:a4:a6:f0:48:5a:7b:04:39:e2:93:
ff:80:84:f6:a1:e6:8a:52:12:55:46:c0:57:84:d9:c3:13:92:
61:d7:41:af:39:09:57:05:25:01:90:68:7c:7c:5c:85:c6:f2:
fe:0e:37:e3:58:68:f9:32:fc:41:2c:35:36:f4:cf:ea:55:2d:
52:7c:fb:37:32:35:cf:82:eb:fc:f1:39:f1:51:f1:e1:5b:d6:
58:e1:7f:d4:50:ce:cf:07:f2:e5:f5:e2:dd:fe:55:3f:64:07:
90:4f
-----BEGIN CERTIFICATE-----
MIICuDCCAiGgAwIBAgICEB0wDQYJKoZIhvcNAQEFBQAwYDELMAkGA1UEBhMCREUx
EDAOBgNVBAgTB0hhbWJ1cmcxFzAVBgNVBAoTDk9wZW5PZmZpY2Uub3JnMRQwEgYD
VQQLEwtEZXZlbG9wbWVudDEQMA4GA1UEAxMHUm9vdCAxMTAeFw0xMDAxMTkxMDIw
NDdaFw0zNTAxMTMxMDIwNDdaMGkxCzAJBgNVBAYTAkRFMRAwDgYDVQQIEwdIYW1i
dXJnMRcwFQYDVQQKEw5PcGVuT2ZmaWNlLm9yZzEUMBIGA1UECxMLRGV2ZWxvcG1l
bnQxGTAXBgNVBAMTEGVxdWFsIENOPVVzZXIgMjgwgZ8wDQYJKoZIhvcNAQEBBQAD
gY0AMIGJAoGBAK7fEmSr2S/uIWS1CMXIj6GtDrkokWl0E6WqSf76Ap032wo7Jmog
JT35LbI7OcjG46eqoQuyG1hD5jw/Z/67vZu12d7p7Xar/fXIFbL7pj8j759fcUOz
vlUehV8TsWudQtcwqNKb/nF6x9Nges/ig3WDuBzT7+6UPxRjqnwVTkIdAgMBAAGj
eDB2MAsGA1UdDwQEAwIF4DAdBgNVHQ4EFgQUOy0rXy7mMiOuR7cwJcvtsG0MMOQw
HwYDVR0jBBgwFoAU6Gq7wpDqbHAiPvb2SBsD5r63plUwJwYDVR0RBCAwHqQcMBox
GDAWBgNVBAMTD1VzZXIgMjggUm9vdCAxMTANBgkqhkiG9w0BAQUFAAOBgQBbz96S
+Kw5+wqBcFsX0A0NhV4ufb7RGq0dmaSm8EhaewQ54pP/gIT2oeaKUhJVRsBXhNnD
E5Jh10GvOQlXBSUBkGh8fFyFxvL+DjfjWGj5MvxBLDU29M/qVS1SfPs3MjXPguv8
8TnxUfHhW9ZY4X/UUM7PB/Ll9eLd/lU/ZAeQTw==
-----END CERTIFICATE-----

View File

@ -0,0 +1,60 @@
Certificate:
Data:
Version: 3 (0x2)
Serial Number: 4126 (0x101e)
Signature Algorithm: sha1WithRSAEncryption
Issuer: C=DE, ST=Hamburg, O=OpenOffice.org, OU=Development, CN=Root 11
Validity
Not Before: Jan 19 10:22:13 2010 GMT
Not After : Jan 13 10:22:13 2035 GMT
Subject: C=DE, ST=Hamburg, O=OpenOffice.org, OU=Development, CN=User 29+OU=ooo
Subject Public Key Info:
Public Key Algorithm: rsaEncryption
RSA Public Key: (1024 bit)
Modulus (1024 bit):
00:ae:12:dc:26:fe:7f:b8:3f:47:a2:dc:83:a1:70:
6d:ab:db:e5:3c:28:d5:18:32:2c:8d:ee:85:c6:f9:
f4:8b:31:34:71:de:91:79:fb:56:b4:9c:af:3e:b1:
c6:de:06:3f:32:fc:45:9d:9b:dd:15:0f:b5:c3:98:
ab:8c:1e:3d:63:7c:2a:c5:b9:38:3d:50:6c:81:9e:
f0:b3:5b:41:1a:ec:15:b2:7f:2b:b4:d4:42:aa:ca:
e6:89:b0:c6:58:bd:2d:38:f3:4d:85:c3:08:d7:45:
48:42:d7:fe:ee:7a:c0:22:41:c0:c6:cb:77:7c:22:
43:07:35:dc:88:7c:49:3a:9b
Exponent: 65537 (0x10001)
X509v3 extensions:
X509v3 Key Usage:
Digital Signature, Non Repudiation, Key Encipherment
X509v3 Subject Key Identifier:
E0:19:7F:AC:F8:6A:42:7E:84:CA:8C:84:45:75:4E:9D:A1:D1:2A:72
X509v3 Authority Key Identifier:
keyid:E8:6A:BB:C2:90:EA:6C:70:22:3E:F6:F6:48:1B:03:E6:BE:B7:A6:55
X509v3 Subject Alternative Name:
DirName:/CN=User 29 Root 11
Signature Algorithm: sha1WithRSAEncryption
85:c9:ea:82:e2:ac:f6:b3:15:51:11:bd:69:81:31:8f:ee:d3:
f9:f4:8e:d5:27:34:20:89:76:eb:8a:5b:02:69:9b:97:89:d7:
6b:aa:03:7f:b5:40:f9:ac:54:ce:8f:30:fd:3e:78:72:91:96:
dc:a6:bd:64:42:f8:e4:18:1a:e3:b5:db:08:fe:1e:fc:3d:a2:
55:21:ad:0f:1a:87:df:f2:65:87:4d:91:52:c1:46:c1:c0:7c:
cc:81:79:97:dc:2e:41:cc:ae:8c:8e:79:4e:02:49:7c:c5:b0:
3e:8e:d9:f0:aa:6b:a6:2f:e7:d2:21:5b:7f:57:e8:f7:f6:00:
3c:ad
-----BEGIN CERTIFICATE-----
MIICtjCCAh+gAwIBAgICEB4wDQYJKoZIhvcNAQEFBQAwYDELMAkGA1UEBhMCREUx
EDAOBgNVBAgTB0hhbWJ1cmcxFzAVBgNVBAoTDk9wZW5PZmZpY2Uub3JnMRQwEgYD
VQQLEwtEZXZlbG9wbWVudDEQMA4GA1UEAxMHUm9vdCAxMTAeFw0xMDAxMTkxMDIy
MTNaFw0zNTAxMTMxMDIyMTNaMGcxCzAJBgNVBAYTAkRFMRAwDgYDVQQIEwdIYW1i
dXJnMRcwFQYDVQQKEw5PcGVuT2ZmaWNlLm9yZzEUMBIGA1UECxMLRGV2ZWxvcG1l
bnQxFzAVBgNVBAMTDlVzZXIgMjkrT1U9b29vMIGfMA0GCSqGSIb3DQEBAQUAA4GN
ADCBiQKBgQCuEtwm/n+4P0ei3IOhcG2r2+U8KNUYMiyN7oXG+fSLMTRx3pF5+1a0
nK8+scbeBj8y/EWdm90VD7XDmKuMHj1jfCrFuTg9UGyBnvCzW0Ea7BWyfyu01EKq
yuaJsMZYvS04802FwwjXRUhC1/7uesAiQcDGy3d8IkMHNdyIfEk6mwIDAQABo3gw
djALBgNVHQ8EBAMCBeAwHQYDVR0OBBYEFOAZf6z4akJ+hMqMhEV1Tp2h0SpyMB8G
A1UdIwQYMBaAFOhqu8KQ6mxwIj729kgbA+a+t6ZVMCcGA1UdEQQgMB6kHDAaMRgw
FgYDVQQDEw9Vc2VyIDI5IFJvb3QgMTEwDQYJKoZIhvcNAQEFBQADgYEAhcnqguKs
9rMVURG9aYExj+7T+fSO1Sc0IIl264pbAmmbl4nXa6oDf7VA+axUzo8w/T54cpGW
3Ka9ZEL45Bga47XbCP4e/D2iVSGtDxqH3/Jlh02RUsFGwcB8zIF5l9wuQcyujI55
TgJJfMWwPo7Z8Kprpi/n0iFbf1fo9/YAPK0=
-----END CERTIFICATE-----

View File

@ -0,0 +1,60 @@
Certificate:
Data:
Version: 3 (0x2)
Serial Number: 4127 (0x101f)
Signature Algorithm: sha1WithRSAEncryption
Issuer: C=DE, ST=Hamburg, O=OpenOffice.org, OU=Development, CN=Root 11
Validity
Not Before: Jan 19 10:26:01 2010 GMT
Not After : Jan 13 10:26:01 2035 GMT
Subject: C=DE, ST=Hamburg, O=OpenOffice.org, OU=Development, CN=\x00U\x00s\x00e\x00r\x00 \x003\x000\x00<\x00 \x00>\x00#\x00;\x00 \x00"\x00+\x00"
Subject Public Key Info:
Public Key Algorithm: rsaEncryption
RSA Public Key: (1024 bit)
Modulus (1024 bit):
00:cf:40:99:4d:a5:5d:73:2a:78:72:9c:32:94:15:
1e:01:40:b4:68:8f:b8:4e:38:aa:b9:82:96:5a:5c:
03:d5:db:09:42:46:d8:2d:f0:da:f8:1a:f0:85:10:
f2:cb:1f:be:50:b7:ae:6f:22:80:f2:bf:14:73:84:
da:30:b9:54:26:0d:72:1c:55:99:50:c6:78:a3:37:
15:b2:9c:03:22:dc:ea:8b:f5:07:32:f3:d9:76:64:
92:a3:4f:73:12:e2:43:79:0e:e6:44:17:99:79:49:
73:65:da:03:3d:be:db:e3:4f:ae:6c:d0:6c:e6:4a:
d3:83:45:5d:83:18:d5:cc:29
Exponent: 65537 (0x10001)
X509v3 extensions:
X509v3 Key Usage:
Digital Signature, Non Repudiation, Key Encipherment
X509v3 Subject Key Identifier:
D9:EA:10:1D:D3:F5:30:AD:30:0E:80:73:14:22:1A:26:35:90:DC:67
X509v3 Authority Key Identifier:
keyid:E8:6A:BB:C2:90:EA:6C:70:22:3E:F6:F6:48:1B:03:E6:BE:B7:A6:55
X509v3 Subject Alternative Name:
DirName:/CN=User 30 Root 11
Signature Algorithm: sha1WithRSAEncryption
42:3a:02:d5:7b:23:9f:cc:5b:b8:d4:c8:e8:0c:e3:0d:8a:17:
65:b6:87:ce:c9:dc:f7:84:95:e0:17:ea:11:8b:15:30:e1:a2:
42:6c:4e:f0:31:fa:fd:ff:03:37:d4:ec:4c:1d:29:8d:07:8a:
c8:de:0b:d6:df:d7:2e:12:8a:00:a0:ca:be:48:af:17:36:63:
8e:f2:cf:80:8b:a1:e2:33:ef:42:db:91:d3:8e:4b:02:55:5e:
f7:79:11:5c:6d:ef:64:8b:53:a6:af:f5:0f:e2:75:7a:d6:85:
f6:60:d5:7e:d6:8c:0e:37:84:a9:50:2b:c7:e6:63:bf:1d:14:
aa:bf
-----BEGIN CERTIFICATE-----
MIICyDCCAjGgAwIBAgICEB8wDQYJKoZIhvcNAQEFBQAwYDELMAkGA1UEBhMCREUx
EDAOBgNVBAgTB0hhbWJ1cmcxFzAVBgNVBAoTDk9wZW5PZmZpY2Uub3JnMRQwEgYD
VQQLEwtEZXZlbG9wbWVudDEQMA4GA1UEAxMHUm9vdCAxMTAeFw0xMDAxMTkxMDI2
MDFaFw0zNTAxMTMxMDI2MDFaMHkxCzAJBgNVBAYTAkRFMRAwDgYDVQQIEwdIYW1i
dXJnMRcwFQYDVQQKEw5PcGVuT2ZmaWNlLm9yZzEUMBIGA1UECxMLRGV2ZWxvcG1l
bnQxKTAnBgNVBAMeIABVAHMAZQByACAAMwAwADwAIAA+ACMAOwAgACIAKwAiMIGf
MA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDPQJlNpV1zKnhynDKUFR4BQLRoj7hO
OKq5gpZaXAPV2wlCRtgt8Nr4GvCFEPLLH75Qt65vIoDyvxRzhNowuVQmDXIcVZlQ
xnijNxWynAMi3OqL9Qcy89l2ZJKjT3MS4kN5DuZEF5l5SXNl2gM9vtvjT65s0Gzm
StODRV2DGNXMKQIDAQABo3gwdjALBgNVHQ8EBAMCBeAwHQYDVR0OBBYEFNnqEB3T
9TCtMA6AcxQiGiY1kNxnMB8GA1UdIwQYMBaAFOhqu8KQ6mxwIj729kgbA+a+t6ZV
MCcGA1UdEQQgMB6kHDAaMRgwFgYDVQQDEw9Vc2VyIDMwIFJvb3QgMTEwDQYJKoZI
hvcNAQEFBQADgYEAQjoC1Xsjn8xbuNTI6AzjDYoXZbaHzsnc94SV4BfqEYsVMOGi
QmxO8DH6/f8DN9TsTB0pjQeKyN4L1t/XLhKKAKDKvkivFzZjjvLPgIuh4jPvQtuR
045LAlVe93kRXG3vZItTpq/1D+J1etaF9mDVftaMDjeEqVArx+Zjvx0Uqr8=
-----END CERTIFICATE-----

View File

@ -0,0 +1,61 @@
Certificate:
Data:
Version: 3 (0x2)
Serial Number: 4128 (0x1020)
Signature Algorithm: sha1WithRSAEncryption
Issuer: C=DE, ST=Hamburg, O=OpenOffice.org, OU=Development, CN=Root 11
Validity
Not Before: Jan 19 10:28:47 2010 GMT
Not After : Jan 13 10:28:47 2035 GMT
Subject: C=DE, ST=Hamburg, O=OpenOffice.org, OU=Development, CN=\x00U\x00s\x00e\x00r\x00 \x003\x001\x00 \x00\\x00"\x00a\x00,\x00b\x00"\x00+\x00C\x00N\x00=\x00U\x00S\x00,\x00 \x00>\x00 \x00\\x00\\x00d\x00e\x00 \x00<
Subject Public Key Info:
Public Key Algorithm: rsaEncryption
RSA Public Key: (1024 bit)
Modulus (1024 bit):
00:ac:02:18:e0:1c:54:bb:76:97:2e:d3:67:78:b7:
14:78:46:83:7c:e9:5c:2b:2f:25:bb:bf:90:c0:52:
ea:2c:79:d6:9d:af:b5:f8:86:a2:bf:56:9b:0f:33:
ed:ef:d2:2c:57:c6:0a:25:b3:f7:9b:a1:7a:3b:75:
0b:18:86:23:64:2a:23:b0:60:f1:d8:05:b4:a6:7b:
77:21:30:b4:0d:f1:af:e1:fb:d6:88:a8:5b:5d:7e:
a2:bf:ce:20:f6:c0:7a:89:f2:0f:33:47:6d:49:0f:
3d:59:27:f9:95:c0:3b:a3:1c:18:a1:2d:95:09:e8:
d2:95:ac:10:92:fc:db:84:e3
Exponent: 65537 (0x10001)
X509v3 extensions:
X509v3 Key Usage:
Digital Signature, Non Repudiation, Key Encipherment
X509v3 Subject Key Identifier:
F8:BA:7E:78:BC:70:33:D3:45:68:37:59:3A:06:AC:65:B1:15:74:F0
X509v3 Authority Key Identifier:
keyid:E8:6A:BB:C2:90:EA:6C:70:22:3E:F6:F6:48:1B:03:E6:BE:B7:A6:55
X509v3 Subject Alternative Name:
DirName:/CN=User 31 Root 11
Signature Algorithm: sha1WithRSAEncryption
0f:a8:53:f0:56:76:df:a8:b3:5b:d1:e8:98:62:8f:a6:13:96:
c3:6b:ca:3f:e1:09:37:54:6f:ac:15:4b:74:0c:6c:3f:fe:de:
36:58:a2:9d:a0:1f:18:97:2c:1d:bc:c6:df:ee:aa:5b:d3:da:
2f:51:02:7a:ba:a9:7e:4d:cf:47:16:0b:f1:b1:e1:28:2b:fe:
a4:9d:50:96:cd:c5:45:09:35:50:93:9b:97:a9:23:2a:5e:f0:
2e:16:18:3f:50:7a:83:59:c5:6c:79:99:d3:ea:12:ef:15:a9:
b0:93:1e:4b:26:6c:63:13:7f:d3:5a:0c:4d:0b:f4:51:21:98:
4f:81
-----BEGIN CERTIFICATE-----
MIIC5TCCAk6gAwIBAgICECAwDQYJKoZIhvcNAQEFBQAwYDELMAkGA1UEBhMCREUx
EDAOBgNVBAgTB0hhbWJ1cmcxFzAVBgNVBAoTDk9wZW5PZmZpY2Uub3JnMRQwEgYD
VQQLEwtEZXZlbG9wbWVudDEQMA4GA1UEAxMHUm9vdCAxMTAeFw0xMDAxMTkxMDI4
NDdaFw0zNTAxMTMxMDI4NDdaMIGVMQswCQYDVQQGEwJERTEQMA4GA1UECBMHSGFt
YnVyZzEXMBUGA1UEChMOT3Blbk9mZmljZS5vcmcxFDASBgNVBAsTC0RldmVsb3Bt
ZW50MUUwQwYDVQQDHjwAVQBzAGUAcgAgADMAMQAgAFwAIgBhACwAYgAiACsAQwBO
AD0AVQBTACwAIAA+ACAAXABcAGQAZQAgADwwgZ8wDQYJKoZIhvcNAQEBBQADgY0A
MIGJAoGBAKwCGOAcVLt2ly7TZ3i3FHhGg3zpXCsvJbu/kMBS6ix51p2vtfiGor9W
mw8z7e/SLFfGCiWz95uhejt1CxiGI2QqI7Bg8dgFtKZ7dyEwtA3xr+H71oioW11+
or/OIPbAeonyDzNHbUkPPVkn+ZXAO6McGKEtlQno0pWsEJL824TjAgMBAAGjeDB2
MAsGA1UdDwQEAwIF4DAdBgNVHQ4EFgQU+Lp+eLxwM9NFaDdZOgasZbEVdPAwHwYD
VR0jBBgwFoAU6Gq7wpDqbHAiPvb2SBsD5r63plUwJwYDVR0RBCAwHqQcMBoxGDAW
BgNVBAMTD1VzZXIgMzEgUm9vdCAxMTANBgkqhkiG9w0BAQUFAAOBgQAPqFPwVnbf
qLNb0eiYYo+mE5bDa8o/4Qk3VG+sFUt0DGw//t42WKKdoB8YlywdvMbf7qpb09ov
UQJ6uql+Tc9HFgvxseEoK/6knVCWzcVFCTVQk5uXqSMqXvAuFhg/UHqDWcVseZnT
6hLvFamwkx5LJmxjE3/TWgxNC/RRIZhPgQ==
-----END CERTIFICATE-----

View File

@ -0,0 +1,61 @@
Certificate:
Data:
Version: 3 (0x2)
Serial Number: 4129 (0x1021)
Signature Algorithm: sha1WithRSAEncryption
Issuer: C=DE, ST=Hamburg, O=OpenOffice.org, OU=Development, CN=Root 11
Validity
Not Before: Jan 19 10:40:59 2010 GMT
Not After : Jan 13 10:40:59 2035 GMT
Subject: C=DE, ST=Hamburg, O=OpenOffice.org, OU=Development, CN=\x00U\x00s\x00e\x00r\x00 \x001\x004\x00 \x00"\x00,\x00m\x00i\x00d\x00d\x00l\x00e\x00 \x00q\x00u\x00o\x00t\x00e
Subject Public Key Info:
Public Key Algorithm: rsaEncryption
RSA Public Key: (1024 bit)
Modulus (1024 bit):
00:da:7a:30:0d:63:da:74:05:ef:3e:d2:f4:2b:1b:
50:e3:64:67:98:7d:2f:83:e7:77:7b:b8:72:9b:c8:
9e:65:de:cc:2a:7b:76:c2:08:05:7a:ce:88:3e:ed:
b5:75:89:36:d2:4a:bb:3b:66:ac:57:2b:15:99:c9:
d4:74:ca:f5:eb:ff:80:b7:9f:6b:48:2f:3b:a7:51:
c4:12:af:96:ca:ac:b9:ea:23:fd:93:f7:7d:5b:d1:
ab:7c:24:1e:fe:48:dc:33:de:45:d6:8c:86:5a:b9:
56:3c:e4:a9:f1:8c:d7:41:01:da:04:2a:7d:06:c3:
5b:a4:cc:5f:6c:ef:7c:4e:ef
Exponent: 65537 (0x10001)
X509v3 extensions:
X509v3 Key Usage:
Digital Signature, Non Repudiation, Key Encipherment
X509v3 Subject Key Identifier:
49:E2:AE:12:D7:EF:C3:B5:02:65:DD:CF:B2:62:E6:25:ED:3D:10:9C
X509v3 Authority Key Identifier:
keyid:E8:6A:BB:C2:90:EA:6C:70:22:3E:F6:F6:48:1B:03:E6:BE:B7:A6:55
X509v3 Subject Alternative Name:
DirName:/CN=User 14 Root 11
Signature Algorithm: sha1WithRSAEncryption
8b:ca:d2:93:cb:d1:cc:a9:67:a3:be:75:cf:ca:cd:22:78:cc:
7c:f9:f1:2c:94:2c:60:bd:0f:18:16:26:fe:de:0d:19:5a:87:
de:34:8c:1f:eb:89:37:74:63:d4:d9:cd:59:35:06:24:a5:6f:
f2:c6:69:f4:b5:37:6d:ae:8b:d3:5d:5e:43:8f:36:7d:f8:0c:
30:3f:74:3d:e2:85:89:75:58:36:0f:df:72:17:47:22:c6:fd:
47:e3:d6:73:d1:40:89:e8:9a:ba:53:14:5c:3a:de:a9:85:a8:
8f:b0:27:81:4d:87:ef:bb:6b:bf:8c:8a:71:9b:94:1d:30:d5:
12:ed
-----BEGIN CERTIFICATE-----
MIIC1TCCAj6gAwIBAgICECEwDQYJKoZIhvcNAQEFBQAwYDELMAkGA1UEBhMCREUx
EDAOBgNVBAgTB0hhbWJ1cmcxFzAVBgNVBAoTDk9wZW5PZmZpY2Uub3JnMRQwEgYD
VQQLEwtEZXZlbG9wbWVudDEQMA4GA1UEAxMHUm9vdCAxMTAeFw0xMDAxMTkxMDQw
NTlaFw0zNTAxMTMxMDQwNTlaMIGFMQswCQYDVQQGEwJERTEQMA4GA1UECBMHSGFt
YnVyZzEXMBUGA1UEChMOT3Blbk9mZmljZS5vcmcxFDASBgNVBAsTC0RldmVsb3Bt
ZW50MTUwMwYDVQQDHiwAVQBzAGUAcgAgADEANAAgACIALABtAGkAZABkAGwAZQAg
AHEAdQBvAHQAZTCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEA2nowDWPadAXv
PtL0KxtQ42RnmH0vg+d3e7hym8ieZd7MKnt2wggFes6IPu21dYk20kq7O2asVysV
mcnUdMr16/+At59rSC87p1HEEq+Wyqy56iP9k/d9W9GrfCQe/kjcM95F1oyGWrlW
POSp8YzXQQHaBCp9BsNbpMxfbO98Tu8CAwEAAaN4MHYwCwYDVR0PBAQDAgXgMB0G
A1UdDgQWBBRJ4q4S1+/DtQJl3c+yYuYl7T0QnDAfBgNVHSMEGDAWgBToarvCkOps
cCI+9vZIGwPmvremVTAnBgNVHREEIDAepBwwGjEYMBYGA1UEAxMPVXNlciAxNCBS
b290IDExMA0GCSqGSIb3DQEBBQUAA4GBAIvK0pPL0cypZ6O+dc/KzSJ4zHz58SyU
LGC9DxgWJv7eDRlah940jB/riTd0Y9TZzVk1BiSlb/LGafS1N22ui9NdXkOPNn34
DDA/dD3ihYl1WDYP33IXRyLG/Ufj1nPRQInomrpTFFw63qmFqI+wJ4FNh++7a7+M
inGblB0w1RLt
-----END CERTIFICATE-----

Some files were not shown because too many files have changed in this diff Show More