diff options
Diffstat (limited to 'xmlsecurity/source/xmlsec')
-rw-r--r-- | xmlsecurity/source/xmlsec/biginteger.cxx | 149 | ||||
-rw-r--r-- | xmlsecurity/source/xmlsec/makefile.mk | 5 | ||||
-rw-r--r-- | xmlsecurity/source/xmlsec/mscrypt/securityenvironment_mscryptimpl.cxx | 120 | ||||
-rw-r--r-- | xmlsecurity/source/xmlsec/nss/securityenvironment_nssimpl.cxx | 82 |
4 files changed, 156 insertions, 200 deletions
diff --git a/xmlsecurity/source/xmlsec/biginteger.cxx b/xmlsecurity/source/xmlsec/biginteger.cxx new file mode 100644 index 000000000000..b4c985cd2e0f --- /dev/null +++ b/xmlsecurity/source/xmlsec/biginteger.cxx @@ -0,0 +1,149 @@ +/************************************************************************* + * + * $RCSfile: biginteger.cxx,v $ + * + * $Revision: 1.1 $ + * + * last change: $Author: mmi $ $Date: 2004-07-26 06:15:41 $ + * + * The Contents of this file are made available subject to the terms of + * either of the following licenses + * + * - GNU Lesser General Public License Version 2.1 + * - Sun Industry Standards Source License Version 1.1 + * + * Sun Microsystems Inc., October, 2000 + * + * GNU Lesser General Public License Version 2.1 + * ============================================= + * Copyright 2000 by Sun Microsystems, Inc. + * 901 San Antonio Road, Palo Alto, CA 94303, USA + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License version 2.1, as published by the Free Software Foundation. + * + * This library 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 for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, + * MA 02111-1307 USA + * + * + * Sun Industry Standards Source License Version 1.1 + * ================================================= + * The contents of this file are subject to the Sun Industry Standards + * Source License Version 1.1 (the "License"); You may not use this file + * except in compliance with the License. You may obtain a copy of the + * License at http://www.openoffice.org/license.html. + * + * Software provided under this License is provided on an "AS IS" basis, + * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, + * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS, + * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING. + * See the License for the specific provisions governing your rights and + * obligations concerning the Software. + * + * The Initial Developer of the Original Code is: Sun Microsystems, Inc. + * + * Copyright: 2000 by Sun Microsystems, Inc. + * + * All Rights Reserved. + * + * Contributor(s): _______________________________________ + * + * + ************************************************************************/ +#include <xmlsec/xmlsec.h> +#include <xmlsec/bn.h> +#include <com/sun/star/uno/Sequence.hxx> + +using namespace ::com::sun::star::uno ; +using ::rtl::OUString ; + +Sequence< sal_Int8 > numericStringToBigInteger ( + OUString numeral +) { + if( numeral.getStr() != NULL ) { + xmlChar* chNumeral ; + const xmlSecByte* bnInteger ; + xmlSecSize length ; + xmlSecBn bn ; + + rtl::OString onumeral = rtl::OUStringToOString( numeral , RTL_TEXTENCODING_ASCII_US ) ; + + chNumeral = xmlStrndup( ( const xmlChar* )onumeral.getStr(), ( int )onumeral.getLength() ) ; + + if( xmlSecBnInitialize( &bn, 0 ) < 0 ) { + xmlFree( chNumeral ) ; + return NULL ; + } + + if( xmlSecBnFromDecString( &bn, chNumeral ) < 0 ) { + xmlFree( chNumeral ) ; + xmlSecBnFinalize( &bn ) ; + return NULL ; + } + + xmlFree( chNumeral ) ; + + length = xmlSecBnGetSize( &bn ) ; + if( length <= 0 ) { + xmlSecBnFinalize( &bn ) ; + return NULL ; + } + + bnInteger = xmlSecBnGetData( &bn ) ; + if( bnInteger == NULL ) { + xmlSecBnFinalize( &bn ) ; + return NULL ; + } + + Sequence< sal_Int8 > integer( length ) ; + for( unsigned int i = 0 ; i < length ; i ++ ) + integer[i] = *( bnInteger + i ) ; + // integer[i] = *( bb + sizeof( bb ) - len + i ) ; + + xmlSecBnFinalize( &bn ) ; + return integer ; + } + + return NULL ; +} + +OUString bigIntegerToNumericString ( + Sequence< sal_Int8 > integer +) { + OUString aRet ; + + if( integer.getLength() ) { + xmlSecBn bn ; + xmlChar* chNumeral ; + + if( xmlSecBnInitialize( &bn, 0 ) < 0 ) + return aRet ; + + if( xmlSecBnSetData( &bn, ( const unsigned char* )&integer[0], integer.getLength() ) < 0 ) { + xmlSecBnFinalize( &bn ) ; + return aRet ; + } + + chNumeral = xmlSecBnToDecString( &bn ) ; + if( chNumeral == NULL ) { + xmlSecBnFinalize( &bn ) ; + return aRet ; + } + + aRet = OUString::createFromAscii( ( const char* )chNumeral ) ; + + xmlSecBnFinalize( &bn ) ; + xmlFree( chNumeral ) ; + } + + return aRet ; +} + diff --git a/xmlsecurity/source/xmlsec/makefile.mk b/xmlsecurity/source/xmlsec/makefile.mk index 30ce4ae84a8a..72a646e0a8a7 100644 --- a/xmlsecurity/source/xmlsec/makefile.mk +++ b/xmlsecurity/source/xmlsec/makefile.mk @@ -2,9 +2,9 @@ # # $RCSfile: makefile.mk,v $ # -# $Revision: 1.2 $ +# $Revision: 1.3 $ # -# last change: $Author: mmi $ $Date: 2004-07-23 03:12:26 $ +# last change: $Author: mmi $ $Date: 2004-07-26 06:15:42 $ # # The Contents of this file are made available subject to the terms of # either of the following licenses @@ -83,6 +83,7 @@ CDEFS += -DXMLSEC_CRYPTO_NSS -DXMLSEC_NO_XSLT # --- Files -------------------------------------------------------- SLOFILES = \ $(SLO)$/baseencoding.obj \ + $(SLO)$/biginteger.obj \ $(SLO)$/saxhelper.obj \ $(SLO)$/xmldocumentwrapper_xmlsecimpl.obj \ $(SLO)$/xmlelementwrapper_xmlsecimpl.obj \ diff --git a/xmlsecurity/source/xmlsec/mscrypt/securityenvironment_mscryptimpl.cxx b/xmlsecurity/source/xmlsec/mscrypt/securityenvironment_mscryptimpl.cxx index 5053a6a9cd49..633f30fecb6e 100644 --- a/xmlsecurity/source/xmlsec/mscrypt/securityenvironment_mscryptimpl.cxx +++ b/xmlsecurity/source/xmlsec/mscrypt/securityenvironment_mscryptimpl.cxx @@ -2,9 +2,9 @@ * * $RCSfile: securityenvironment_mscryptimpl.cxx,v $ * - * $Revision: 1.2 $ + * $Revision: 1.3 $ * - * last change: $Author: mmi $ $Date: 2004-07-19 11:36:23 $ + * last change: $Author: mmi $ $Date: 2004-07-26 06:15:42 $ * * The Contents of this file are made available subject to the terms of * either of the following licenses @@ -1237,119 +1237,3 @@ X509Certificate_MSCryptImpl* MswcryCertContextToXCert( PCCERT_CONTEXT cert ) return xcert ; } -/*- - * This is just one temporary conversion - */ -Sequence< sal_Int8 > numericStringToBigInteger ( - OUString serialNumber -) { - xmlChar* chSerial ; - unsigned long ui ; - unsigned char bb[5] ; - int len ; - - rtl::OString oseri = rtl::OUStringToOString( serialNumber , RTL_TEXTENCODING_ASCII_US ) ; - - chSerial = xmlStrndup( ( const xmlChar* )oseri.getStr(), ( int )oseri.getLength() ) ; - ui = atoi( ( const char* )chSerial ) ; - xmlFree( chSerial ) ; - - bb[0] = 0; - bb[1] = (unsigned char) (ui >> 24); - bb[2] = (unsigned char) (ui >> 16); - bb[3] = (unsigned char) (ui >> 8); - bb[4] = (unsigned char) (ui); - - /* - ** Small integers are encoded in a single byte. Larger integers - ** require progressively more space. - */ - if( ui > 0x7f ) { - if( ui > 0x7fff ) { - if( ui > 0x7fffffL ) { - if( ui >= 0x80000000L ) { - len = 5 ; - } else { - len = 4 ; - } - } else { - len = 3 ; - } - } else { - len = 2 ; - } - } else { - len = 1 ; - } - - Sequence< sal_Int8 > serial( len ) ; - for( int i = 0 ; i < len ; i ++ ) - serial[i] = *( bb + sizeof( bb ) - len + i ) ; - - return serial ; -} - -/*- - * This is just one temporary conversion - */ -OUString bigIntegerToNumericString( Sequence< sal_Int8 > serial ) -{ - OUString aRet; - - if( serial.getLength() ) - { - long ival = 0; - - { - unsigned len = serial.getLength() ; - unsigned char *cp = ( unsigned char* )&serial[0] ; - unsigned long overflow = 0x1ffUL << (((sizeof(ival) - 1) * 8) - 1); - unsigned long ofloinit; - - if (*cp & 0x80) - ival = -1L; - ofloinit = ival & overflow; - - while (len) { - if ((ival & overflow) != ofloinit) { - return aRet; - } - ival = ival << 8; - ival |= *cp++; - --len; - } - } - - /*---------------------- - { - unsigned len = serial.getLength() ; - unsigned char *cp = ( unsigned char* )&serial[len-1] ; - unsigned long overflow = 0x1ffUL << (((sizeof(ival) - 1) * 8) - 1); - unsigned long ofloinit; - - if (*cp & 0x80) - ival = -1L; - ofloinit = ival & overflow; - - while (len) { - if ((ival & overflow) != ofloinit) { - return aRet; - } - ival = ival << 8; - ival |= *cp--; - --len; - } - } - ----------------------*/ - - { - char str[10] ; - int len ; - len = sprintf( str, "%d", ival ) ; - aRet = OUString::createFromAscii( str ) ; - } - } - - return aRet; -} - diff --git a/xmlsecurity/source/xmlsec/nss/securityenvironment_nssimpl.cxx b/xmlsecurity/source/xmlsec/nss/securityenvironment_nssimpl.cxx index 976a69254aae..9f83de2a9342 100644 --- a/xmlsecurity/source/xmlsec/nss/securityenvironment_nssimpl.cxx +++ b/xmlsecurity/source/xmlsec/nss/securityenvironment_nssimpl.cxx @@ -2,9 +2,9 @@ * * $RCSfile: securityenvironment_nssimpl.cxx,v $ * - * $Revision: 1.3 $ + * $Revision: 1.4 $ * - * last change: $Author: mmi $ $Date: 2004-07-25 07:29:01 $ + * last change: $Author: mmi $ $Date: 2004-07-26 06:15:42 $ * * The Contents of this file are made available subject to the terms of * either of the following licenses @@ -919,81 +919,3 @@ X509Certificate_NssImpl* NssPrivKeyToXCert( SECKEYPrivateKey* priKey ) return xcert ; } -/*- - * This is just one temporary conversion - */ -Sequence< sal_Int8 > numericStringToBigInteger ( - OUString serialNumber -) { - char* chSerial ; - unsigned long ui ; - unsigned char bb[5] ; - int len ; - - rtl::OString oseri = rtl::OUStringToOString( serialNumber , RTL_TEXTENCODING_ASCII_US ) ; - - chSerial = PL_strndup( ( char* )oseri.getStr(), ( int )oseri.getLength() ) ; - ui = PORT_Atoi( chSerial ) ; - PL_strfree( chSerial ) ; - - bb[0] = 0; - bb[1] = (unsigned char) (ui >> 24); - bb[2] = (unsigned char) (ui >> 16); - bb[3] = (unsigned char) (ui >> 8); - bb[4] = (unsigned char) (ui); - - /* - ** Small integers are encoded in a single byte. Larger integers - ** require progressively more space. - */ - if (ui > 0x7f) { - if (ui > 0x7fff) { - if (ui > 0x7fffffL) { - if (ui >= 0x80000000L) { - len = 5; - } else { - len = 4; - } - } else { - len = 3; - } - } else { - len = 2; - } - } else { - len = 1; - } - - Sequence< sal_Int8 > serial( len ) ; - for( int i = 0 ; i < len ; i ++ ) - serial[i] = *( bb + sizeof( bb ) - len + i ) ; - - return serial ; -} - -/*- - * This is just one temporary conversion - */ -OUString bigIntegerToNumericString ( Sequence< sal_Int8 > serial) -{ - OUString aRet; - - if ( serial.getLength() ) - { - SECItem snItem ; - long sn ; - - snItem.data = ( unsigned char* )&serial[0] ; - snItem.len = serial.getLength() ; - - sn = DER_GetInteger( &snItem ) ; - if( sn != ULONG_MAX ) - { - char str[10] ; - int len ; - len = sprintf( str, "%d", sn ) ; - aRet = OUString::createFromAscii( str ) ; - } - } - return aRet; -} |